最优化算法确定迭代步长【线搜索技术】
无约束问题最优化算法框架
\(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程序设计》