主要内容

fminsearch算法

fminsearch使用Nelder-Mead单纯形算法中描述Lagarias et al。[57]。这个算法使用单纯形n+ 1分n维向量x。首先让一个单纯形算法在初始猜测x0通过添加5%的每个组件x0()x0,使用这些n向量作为单纯形除了的元素x0。(该算法使用0.00025组件如果x0()= 0)。然后,该算法根据下列程序修改反复单形。

请注意

的关键字fminsearch迭代显示出现在大胆的后一步的描述。

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

  2. 订单的分单形函数值最低f(x(1)最高f(x(n+ 1)。在每一步迭代中,该算法丢弃当前坏点x(n+ 1),接受另一个点到单纯形。(或者,在下面步骤7,它改变了一切n点值高于f(x(1))。

  3. 生成反映了

    r= 2- - - - - -x(n+ 1),

    在哪里

    x()/n,= 1…n,

    和计算f(r)。

  4. 如果f(x(1)≤)f(r)<f(x(n)),接受r并终止迭代。反映

  5. 如果f(r)<f(x(1)),计算扩张点年代

    年代=+ 2 (- - - - - -x(n+ 1)),

    和计算f(年代)。

    1. 如果f(年代)<f(r),接受年代和终止迭代。扩大

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

  6. 如果f(r)≥f(x(n),执行收缩之间的,要么x(n+ 1)或r根据目标函数值越低。

    1. 如果f(r)<f(x(n+ 1)(即,rx(n+ 1))计算

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

      和计算f(c)。如果f(c)<f(r),接受c和终止迭代。合同外的

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

    2. 如果f(r)≥f(x(n+ 1),计算

      cc=+ (x(n+ 1)-)/ 2

      和计算f(cc)。如果f(cc)<f(x(n+ 1),接受cc和终止迭代。合同内

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

  7. 计算n

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

    和计算f(v()),= 2,…,n+ 1。在下一次迭代单纯形x(1),v(2)、…v(n+ 1)。缩小

下面的图显示了分fminsearch可能计算的过程,以及每个可能的新单形。原始单纯形有一个大胆的轮廓。迭代进行直到满足停止条件。

fminsearch算法的图形表示形式显示反射、扩张、收缩,缩小点。

另请参阅

相关的话题