2

我使用 Matlab 的fminsearch函数来找到 Nelder-Mead 的最小值。fminsearch 自动计算初始单纯形的大小。就我而言,初始单纯形太小,因此性能不佳。

fminsearch 使用长度为每个变量大小 5% 的边,对于零变量,其值为 0.00025。但是,我已阅读以下内容(来源):

但是,以单纯形几乎涵盖整个可能范围的方式设置点可能是一个合理的策略。Nelder-Mead 算法会自动收缩单纯形并逼近最优。该策略的实际优势是您将对响应函数有更好的全面了解。

我必须选择多长(百分比)才能接受这项政策?

请记住,第一个单纯形运算是一种反射。如果起始单纯形覆盖了整个允许范围,则反射必然会给出一个限制点。但是 HillStormer 允许使用线性约束并且可以避免这个问题。

我必须使用哪些线性约束来避免这个问题?我正在使用允许此类约束的fminsearchbnd 和 fminsearchcon 。

最后但并非最不重要的一点是,我在 Numerical Recipes 中读到,当算法卡在局部最小值时,它有助于在卡住的点重新初始化单纯形。当然,如果 fminsearch 终止,我可以以新点作为起点重新运行它。在这种情况下,我应该将初始单纯形大小设置为什么值?

4

0 回答 0