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