Numerical Recipes的原始版本中对这种“下坡单纯形算法”的描述特别清晰和有帮助。因此,我将引用其中的相关部分。这是背景:
在一维最小化中,可以将最小值括起来...... 唉! 在多维空间中没有类似的过程。...我们能做的最好的就是给我们的算法一个开始的猜测;也就是说,一个N-vector 的自变量作为第一个尝试点。然后,该算法应该通过难以想象的复杂性走下坡路N维地形,直到它遇到(至少是局部的)最小值。
下坡单纯形法不仅要从一个点开始,而且要从一个点开始N+1点,定义初始单纯形。【你可以把这些点作为初始的起点P0随着]Pi=P0+λei(10.4.1)
在哪里ei是N单位向量和哪里λ是一个常数,它是您对问题特征长度尺度的猜测。...
大多数步骤只是将单纯形的函数最大的点(“最高点”)通过单纯形的相对面[移动]到较低的点。...
现在解决手头的问题,终止算法。 请注意该帐户的一般性:作者为终止任何多维优化器提供了直观且有用的建议,然后具体说明了它如何应用于此特定算法。第一段回答了我们面前的问题:
终止标准可能很微妙...... 我们通常可以识别多维算法的一个“循环”或“步骤”。然后,当在该步骤中移动的矢量距离在幅度上比某个容差小一点时,就有可能终止TOL
。或者,我们可以要求终止步骤中函数值的减少比某个容差小一点FTOL
。...
请注意,上述任何一个标准都可能被一个异常步骤所愚弄,由于某种原因,该步骤未能到达任何地方。因此,在声称已找到最小值的点重新启动多维最小化例程通常是一个好主意。对于此重新启动,您应该重新初始化任何辅助输入量。例如,在下坡单纯形法中,您应该重新初始化N的N+1单纯形的顶点再次由方程(10.4.1), 和P0是要求的最小值的顶点之一。
重新启动永远不应该非常昂贵;毕竟,您的算法确实收敛到重新启动点一次,现在您已经在那里启动了算法。
[第 290-292 页。]
Numerical Recipes中此文本随附的代码阐明了“分数更小”的含义:值之间的差异x和y(参数的值或函数的值)“略小于”阈值T>0什么时候
|x|−|y|f(x,y)=2|x|−|y||x|+|y|<T(1)
和f(x,y)=(|x|+|y|)/2.
的左侧(1)有时称为“相对绝对差”。在某些领域,它以百分比表示,称为“相对百分比误差”。有关更多选项和术语,请参阅有关相对变化和差异的 Wikipedia 文章。
参考
威廉 H. Press等人。,数字食谱:科学计算的艺术。 剑桥大学出版社(1986 年)。访问http://numerical.recipes/获取最新版本。