無約束問題最優化算法框架
\(step0:\)
輸入優化函數,確定迭代起始點x0,容許誤差 epsilon;
\(step1:\)
if 容許誤差條件滿足,終止迭代;輸出當前x值;
else 計算迭代方向dk;迭代步長 alpha_k; // dk必須滿足收斂條件;關於迭代步長的計算,就是線搜索技術解決問題
to step 2;
\(step2:\)
計算x_{k+1}=x_k+alpha_k*dk;
to step 1;
一、精確線搜索技術
之前介紹的黃金分割法就是一種精確線搜索技術
線搜索-黃金分割法
二、非精確線搜索技術
Armijo准則
算法:
\(step0:\)
給定beta屬於(0,1),sigma 屬於(0,0.5),m=0;
\(step1:\)
對於不等式 f(x_k+betam*dk)<=f(x_k)+sigma*betamg_k^Tdk
成立,alpha_k=beta^mk; stop;
不成立,to step 2;
\(step2:\)
m=m+1;to step 1;
精確搜索和非精確搜索比較
- 精確搜索所求\(\alpha\) 使得\(f(x_{k+1})\)在搜索區間取得最小值,
非精確搜索僅僅使得所求\(\alpha\)滿足收斂條件 - 非精確搜索計算量小的多
參考資料
《最優化方法及其Matlab程序設計》