最优化理论——线搜索技术·Armijo准则

最优化理论——线搜索技术·Armijo准则

  • 算法思想
  • 算法步骤
  • 代码
  • 示例

算法思想

最优化理论——线搜索技术·Armijo准则_第1张图片
最优化理论——线搜索技术·Armijo准则_第2张图片

算法步骤

最优化理论——线搜索技术·Armijo准则_第3张图片

代码

Matlab代码如下:

function mk=armijo(xk,dk )
beta=0.5;  sigma=0.2;
m=0; mmax=20;
while (m<=mmax)
    if(fun(xk+beta^m*dk)<=fun(xk)+sigma*beta^m*gfun(xk)'*dk)
        mk=m;  break;
    end
    m=m+1;
end
alpha=beta^mk
newxk=xk+alpha*dk
fk=fun(xk)
newfk=fun(newxk)

示例

考虑无约束优化问题
m i n f ( x ) = 100 ( x 1 2 − x 2 ) 2 + ( x 1 − 1 ) 2 minf(x)=100(x_1^2-x_2)^2+(x_1-1)^2 minf(x)=100(x12x2)2+(x11)2
设当前迭代点x=(-1,1)T,下降方向 d k = ( 1 , − 2 ) T d_k=(1,-2)T dk=(1,2)T,求步长 α k \alpha_k αk.

fun函数文件:

%目标函数
function f=fun(x)
f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;

gfun函数文件:

%梯度
function gf=gfun(x)
gf=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1), -200*(x(1)^2-x(2))];

交互界面输入:

xk=[-1,1];
dk=[1,-2]; mk=armijo(xk,dk)

结果:
m k = 2 m_k= 2 mk=2;
α k = 0.25 \alpha_k= 0.25 αk=0.25;
x k + 1 = ( − 0.75 , 0.5 ) T x_{k+1}=(−0.75,0.5)T xk+1=(0.75,0.5)T
f ( x k ) = 4 f(x_k) = 4 f(xk)=4;
f ( x k + 1 ) = 3.4531 f(x_{k+1}) = 3.4531 f(xk+1)=3.4531

你可能感兴趣的:(最优化,matlab)