fminsearch
算法
fminsearch
使用Nelder-Mead单纯形算法中描述Lagarias et al。[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
可能计算的过程,以及每个可能的新单形。原始单纯形有一个大胆的轮廓。迭代进行直到满足停止条件。