最优化算法确定迭代步长【线搜索技术】

无约束问题最优化算法框架

\(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;

精确搜索和非精确搜索比较

  1. 精确搜索所求\(\alpha\) 使得\(f(x_{k+1})\)在搜索区间取得最小值,
    非精确搜索仅仅使得所求\(\alpha\)满足收敛条件
  2. 非精确搜索计算量小的多

参考资料

《最优化方法及其Matlab程序设计》

posted @ 2020-08-05 17:14  ldfm  阅读(1316)  评论(0编辑  收藏  举报