主要内容

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算法的图形表示,显示反射、展开、收缩和收缩点。

另请参阅

相关的话题

Baidu
map