最優化七:一維搜索法

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,則再按目標函數極小點位於兩點中間的原則, 構造新區間,繼續迭代。

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