问题:
搜索该方程的合适步长,如今问题已知,。
为被求函数对向量的梯度。
下面介绍Armijo准则:
Amijo准则是给定,令步长,其中符合下面的公式:
,因为函数是连续可微的,且符合,就是函数是符合下降梯度的。
根据以上理论解下面的无约束优化问题:
,,
其中,
代码流程图:
给出matlab代码如下:
clear
clc
xk=[-1;1];
dk=[1;-2];
mknum=armijo(xk,dk);
function mk=armijo(xk,dk)
a=0.5;
sigma=0.2;
m=0;
while m<=20
if (fun(xk+(a^m)*dk)<=fun(xk)+sigma*(a^m)*gfun(xk)'*dk)
mk=m;
break;
end
m=m+1;
end
a=a^mk;
newxk=xk+a*dk
fk=fun(xk)
newfk=fun(newxk)
end
function f=fun(x)
f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;
end
function g=gfun(x)
g=[400*(x(1)^3-x(1)*x(2))+2*(x(1)-1);-200*(x(1)^2-x(2))];
end