0 一维搜索法
最优化的目的是优化目标:,优化思路是迭代计算:
(1)计算优化方向
(2)计算优化步长
优化方向一般是负梯度方向或者设计二阶偏导数,但是某些情况下导数很难计算。这时需要自己设计一个优化方向,或者不需要知道优化方向,采用猜测的方法,当结果为函数减小的方向时,继续在此方向搜索;结果为函数增大的方向,沿着反方向搜索。这种方法称为搜索法。
搜索法有直接搜索法,进行函数的计算和比较确定优化的方向和步长,间接搜索法需要用到一阶导数、二阶导数、偏导数矩阵确定最优方向与步长。本文介绍直接搜索法。
这种当优化方向已知或者采用猜测优化方向时,如何得到优化步长即为一维搜索法解决的问题。等价于:
1 进退法
进退法的基本思想是:每次搜索都要改变搜索的步长。对于求极小值问题,如果在第K次迭代沿某方向搜索成功, 则函数值一定下降,下一步仍可按该方向搜索,而且可大步向前搜索;如果在第K次迭代沿某方向搜索失败,则函数值上升,应退回原地,下一步便按其相反方向,即向后退小步搜索。
具体流程如下:
(1)如果,则搜索成功,下一步步长取2d。第k步的步长为2nd并且搜索成功,则k+1步的步长设置为2nd。
(2)如果,则搜索不成功,退回到处,并以步长搜索,制导步长小于设定阈值停止。
2 黄金分割法
黄金分割法的基本思路:通过不断缩小单峰区间的长度来 搜索目标函数的极小点,且是按可行域全长的黄金点—— 0.618(及0.382)选取两个新点,更新区间,这种寻优方法 比任意取两点的消去法效果更好,寻优区间缩短的速度更快。
此方法是逐步缩小优化区间,即不知道优化的方向,采用尝试的方法逐渐缩小优化区间满足自己设置的阈值。具体流程如下:
step1:给定区间,阈值
step2:区间中间取两个试验点,分别位于区间的0.328与0.618位置处
step3:如果,表明最优点,令,开始区间的计算。
如果,表明最优点,令,开始区间的计算。
step4:如果,表明该区间足够小,满足设置阈值,最优化结果值取:
3 二次插值法
二次插值法利用一个多项式去逼近目标函数,用解析法求解的根。不需要求解f(x)的导数。多项式可以是二次或三次多项式,就可以完成对目标函数的局部近似。
二次插值法又称抛物线法,利用二次多项式去近似,适合两边大中间小的函数。
算法流程如下:(图中虚线为目标函数,实线为多项式,[A,C]为估计区间)
step1:在优化区间任取一点B,构造一个过三点的多项式:
step2:三点列方程组:
多项式最小值满足:
求解的得到:
setp3:如果,最小值为
如果,则再按目标函数极小点位于两点中间的原则, 构造新区间,继续迭代。