fminsearch
算法fminsearch
使用Lagarias等人所描述的Nelder-Mead单纯形算法。[57].该算法使用的是的单纯形n+ 1分n维向量x.该算法首先在初始猜想周围做一个单纯形x0每一种成分加5%x0(我)x0,并使用这些n作为单形元素的向量x0.(算法以0.00025为分量我如果x0(我) = 0.)然后,算法按照如下步骤对单纯形进行重复修改。
请注意
的关键字fminsearch
迭代显示出现在大胆的步骤说明完成后。
让x(我)表示当前单形中点的列表,我= 1,…,n+ 1。
将单形中的点按最低函数值排序f(x(1)最高f(x(n+ 1)。在迭代的每一步,算法都抛弃当前的最坏点x(n+ 1),并接受另一个点进入单形。[或者,在下面的步骤7中,它会全部改变n以上值的点f(x(1))。
生成反映了点
r= 2米- - - - - -x(n+ 1),
在哪里
米=Σx(我)/n,我= 1…n,
和计算f(r).
如果f(x(1)≤)f(r) <f(x(n)),接受r并终止此迭代。反映
如果f(r) <f(x(1)、计算膨胀点年代
年代=米+ 2 (米- - - - - -x(n+ 1)),
和计算f(年代).
如果f(年代) <f(r),接受年代并终止迭代。扩大
否则,接受r并终止迭代。反映
如果f(r)≥f(x(n),执行收缩之间的米,要么x(n+ 1)或r,其目标函数值较低。
如果f(r) <f(x(n+ 1)(即,r比x(n+ 1))计算
c=米+ (r- - - - - -米) / 2
和计算f(c).如果f(c) <f(r),接受c并终止迭代。合同外的
否则,继续步骤7(收缩)。
如果f(r)≥f(x(n+ 1),计算
cc=米+ (x(n+ 1) -米) / 2
和计算f(cc).如果f(cc) <f(x(n+ 1),接受cc并终止迭代。合同内
否则,继续步骤7(收缩)。
计算n点
v(我) =x(1) + (x(我) - - -x(1) / 2
和计算f(v(我)),我= 2,…,n+ 1。下一个迭代的单纯形是x(1),v(2)、…v(n+ 1)。缩小
下图显示了fminsearch
可以在程序中计算,以及每个可能的新单形。原来的单元体有一个大胆的轮廓。迭代继续进行,直到满足停止标准。