最优化七:一维搜索法

0 一维搜索法

最优化的目的是优化目标:minf(x),优化思路是迭代计算:

                                                                      x_{i+1} = x_i - \alpha_i d_i

(1)计算优化方向d_i

(2)计算优化步长\alpha _i

优化方向一般是负梯度方向或者设计二阶偏导数,但是某些情况下导数很难计算。这时需要自己设计一个优化方向,或者不需要知道优化方向,采用猜测的方法,当结果为函数减小的方向时,继续在此方向搜索;结果为函数增大的方向,沿着反方向搜索。这种方法称为搜索法。

搜索法有直接搜索法,进行函数的计算和比较确定优化的方向和步长,间接搜索法需要用到一阶导数、二阶导数、偏导数矩阵确定最优方向与步长。本文介绍直接搜索法。

这种当优化方向已知或者采用猜测优化方向时,如何得到优化步长即为一维搜索法解决的问题。等价于:

                                                        f(x_{i+1}) = f(x_i + \alpha_i d_i) = \varphi (\alpha_i)

1 进退法

进退法的基本思想是:每次搜索都要改变搜索的步长。对于求极小值问题,如果在第K次迭代沿某方向搜索成功, 则函数值一定下降,下一步仍可按该方向搜索,而且可大步向前搜索;如果在第K次迭代沿某方向搜索失败,则函数值上升,应退回原地,下一步便按其相反方向,即向后退小步搜索。

具体流程如下:

(1)如果f(x_0)>f(x_0+d),则搜索成功,下一步步长取2d。第k步的步长为2nd并且搜索成功,则k+1步的步长设置为2nd。

(2)如果f(x_0) < f(x_0 + d),则搜索不成功,退回到x_0处,并以d/4步长搜索,制导步长小于设定阈值停止。

2 黄金分割法

黄金分割法的基本思路:通过不断缩小单峰区间的长度来 搜索目标函数的极小点,且是按可行域全长的黄金点—— 0.618(及0.382)选取两个新点,更新区间,这种寻优方法 比任意取两点的消去法效果更好,寻优区间缩短的速度更快。

此方法是逐步缩小优化区间,即不知道优化的方向,采用尝试的方法逐渐缩小优化区间满足自己设置的阈值。具体流程如下:

step1:给定区间[a_0,b_0],阈值\varepsilon

step2:区间[a_0,b_0]中间取两个试验点,分别位于区间的0.328与0.618位置处

                                                    \lambda_1 = a + 0.328(b-a),\lambda_2=a+0.618(b-a)

step3:如果f(\lambda_1) > f(\lambda_2),表明最优点x^* \in [\lambda_1,b_0],令a_1 = \lambda_1, b_1 = b_0,开始区间[a_1,b_1]的计算。

          如果f(\lambda_1) <= f(\lambda_2),表明最优点x^* \in [a_0, \lambda_2],令a_1 = a_0, b_1 = \lambda_2,开始区间[a_1,b_1]的计算。

step4:如果b_n - a_n < \varepsilon,表明该区间足够小,满足设置阈值,最优化结果值取:x^* = \frac{a_n+b_n}{2}

                                                    

3 二次插值法

二次插值法利用一个多项式\varphi (x)去逼近目标函数f(x),用解析法求解\varphi ^{'} (x) =0的根。不需要求解f(x)的导数。多项式可以是二次或三次多项式,就可以完成对目标函数的局部近似。

二次插值法又称抛物线法,利用二次多项式去近似,适合两边大中间小的函数。

算法流程如下:(图中虚线为目标函数,实线为多项式,[A,C]为估计区间)

step1:在优化区间[A,C]任取一点B,构造一个过三点的多项式:

                                                                     \varphi (x) = a_0 + a_1x + a_2x^2

step2:三点列方程组:

多项式最小值x_0满足:

求解的得到:

setp3:如果\left | x_0 - x_b \right | < \varepsilon,最小值为min(f(x_0),f(x_b))

             如果\left | x_0 - x_b \right | >= \varepsilon,则再按目标函数极小点位于两点中间的原则, 构造新区间,继续迭代。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章