主要内容

fminsearch算法

fminsearch使用Lagarias等人所描述的Nelder-Mead单纯形算法。[57].该算法使用的是的单纯形n+ 1分n维向量x.该算法首先在初始猜想周围做一个单纯形x0每一种成分加5%x0)x0,并使用这些n作为单形元素的向量x0.(算法以0.00025为分量如果x0) = 0.)然后,算法按照如下步骤对单纯形进行重复修改。

请注意

的关键字fminsearch迭代显示出现在大胆的步骤说明完成后。

  1. x)表示当前单形中点的列表,= 1,…,n+ 1。

  2. 将单形中的点按最低函数值排序fx(1)最高fxn+ 1)。在迭代的每一步,算法都抛弃当前的最坏点xn+ 1),并接受另一个点进入单形。[或者,在下面的步骤7中,它会全部改变n以上值的点fx(1))。

  3. 生成反映了

    r= 2- - - - - -xn+ 1),

    在哪里

    x)/n= 1…n

    和计算fr).

  4. 如果fx(1)≤)fr) <fxn)),接受r并终止此迭代。反映

  5. 如果fr) <fx(1)、计算膨胀点年代

    年代+ 2 (- - - - - -xn+ 1)),

    和计算f年代).

    1. 如果f年代) <fr),接受年代并终止迭代。扩大

    2. 否则,接受r并终止迭代。反映

  6. 如果fr)≥fxn),执行收缩之间的,要么xn+ 1)或r,其目标函数值较低。

    1. 如果fr) <fxn+ 1)(即,rxn+ 1))计算

      c+ (r- - - - - -) / 2

      和计算fc).如果fc) <fr,接受c并终止迭代。合同外的

      否则,继续步骤7(收缩)。

    2. 如果fr)≥fxn+ 1),计算

      cc+ (xn+ 1) -) / 2

      和计算fcc).如果fcc) <fxn+ 1),接受cc并终止迭代。合同内

      否则,继续步骤7(收缩)。

  7. 计算n

    v) =x(1) + (x) - - -x(1) / 2

    和计算fv)),= 2,…,n+ 1。下一个迭代的单纯形是x(1),v(2)、…vn+ 1)。缩小

下图显示了fminsearch可以在程序中计算,以及每个可能的新单形。原来的单元体有一个大胆的轮廓。迭代继续进行,直到满足停止标准。

显示反射、扩展、收缩和收缩点的fminsearch算法的图形表示。

另请参阅

相关的话题