f1subsyxx1elseax1x1x2f1f2x2a0618bastep5f2subsyxx2e
de
dwhilebest_xab2最优的x值best_fxsubsyxbest_x最优的函数值ji
tuifam进退法,用于确定下单峰区间根据最优化方法(天津大学出版社)20页算法143编写。v10authorliuxiBITleftright为下单峰区间,为函数,为函数y的变量,为初始点yxx0(默认为0)step(0)为初始步长(默认为001)fu
ctio
leftrightji
tuifayxx0stepif
argi
3当只有三个参数时,默认设置步长为001step001e
dif
argi
2x00当只有两个参数时,默认设置初始点为0step001e
d
ff0subsyxx0step1求fx0将函数y中变量x替换为x0x1x0stepstep2f1subsyxx1iff1f0step3step4step2stepx2x1stepf2subsyxx2whilef1f2x0x1x1x2f0f1f1f2step2stepx2x1stepf2subsyxx2e
dleftx0rightx2elsestep5step6step2stepx2x1stepf2subsyxx2whilef0f2x1x0x0x2f1f0f0f2step2stepx2x1stepf2subsyxx2e
dleftx2rightx1e
d
paowuxia
fam
f抛物线法(二次插值法)。根据最优化方法(天津大学出版社)22页算法145编写。v10authorliuxiBITbest_x为最优的x值,best_fx为最优的函数值,y为函数,x为函数y的变量,x1x0x2为已知的三点且满足f1f0f2epsilo
为精确度fu
ctio
best_xbest_fxpaowuxia
fayxx1x0x2epsilo
1epsilo
2if
argi
5epsilo
100000001epsilo
200000001e
d求fx1fx0fx2f1subsyxx1f0subsyxx0f2subsyxx2k0whileabsx1x2epsilo
1absx2x0f1x1x2f0x0x1f2epsilo
2step1step2x305x22x02f1x12x22f0x02x12f2x2x0f1x1x2f0x0x1f2step3x3对应算法中的x一拔,就是x上面有一个“”
f3subsyxx3iff0f30转step6ifx0x3x2x3f2f3elsex1x3f1f3e
difx0x3elseiff0f30转step7ifx0x3x1x0x2x3x005x1x2f1f0f2f3f0subsyxx0elseifx0x3转step8x405x1x0f4subsyxx4x4对应算法中的x一冒,就是x上面有一个“”iff4f0x2x0x0x4f2f0f0f4elseiff4f0x1x4x2x0x005x1x2
ff1f4f2f0f0subsyxx0elsex1x4f1f4e
diff4f0else转step9x1x3x2x0x005x1x2f1f3f2f0f0subsyxx0e
difx0x3else转step5ifx0x3x2x0x0x3f2f0f0f3elsex1x0x0x3f1f0f0f3e
de
diff0f30kk1e
dwhilebest_xx0best_fxf0
wolfemWolfe不精确一维搜索。根据最优化方法(天津大学出版社)24页算法146编写。v10authorliuxiBITalpha为要求的步长,xk1为xk1是得出的下一个点,xk为初始点pk为方向,mu和sigma为参数,一般mu属于(0,12)sigma属于mu1fu
ctio
alphaxk1wolfexkpkmusigmaif
argi
2mu01r