从用户的“猜测”顶点初始化单纯形以用于 Nelder-Mead 单纯形搜索的最佳方法是什么?
2 回答
我不确定是否有在 Nelder-Mead 方法中选择初始单纯形的最佳方法,但以下是常见做法。
初始单纯形的构造是通过在维度空间中围绕您所谓的用户“猜测”顶点S
生成n+1
顶点而获得的。最常见的选择是x0,..,xn
xin
N
x0=xin
然后生成剩余的n
顶点,以便
xj=x0+hj*ej
其中ej
是j
第 -th 坐标轴的单位向量R^n
,hj
是 方向上的步长ej
。
hj = 0.05 if (x0)j is non-zero
hj = 0.00025 if (x0)j=0
其中 (x0)j 是 x0 的第 j 个分量。请注意,这是 Matlab 的fminsearch例程中的选择,它基于 Nelder-Mead 方案。
您可以在中找到更多信息
F. Gao,L. Han,“使用自适应参数实现 Nelder-Mead 单纯形算法”,Comput。优化。应用程序。, DOI 10.1007/s10589-010-9329-3
我认为没有一般规则可以确定最佳 Nelder-Mead 优化的初始单纯形,因为这至少需要对响应面有模糊的了解。
但是,以单纯形几乎涵盖整个可能范围的方式设置点可能是一个合理的策略。Nelder-Mead 算法会自动收缩单纯形并逼近最优。该策略的实际优势是您将对响应函数有更好的全面了解。
我们用 HillStormer(“http://www.berkutec.com”)做了一些测试。这个程序允许在 testfunctons 上测试这些策略,我们发现这个 plicy 工作得很好。
请记住,第一个单纯形运算是一种反射。如果起始单纯形覆盖了整个允许范围,则反射必然会给出一个限制点。但是 HillStormer 允许使用线性约束并且可以避免这个问题。
您可以在 HillStormer 的系统帮助中找到更多信息。
B.Kühne