无约束问题最优化算法框架
(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程序设计》