最优化理论线搜索技术Armijo准则
目录
最优化理论——线搜索技术·Armijo准则
最优化理论——线搜索技术·Armijo准则
算法思想
算法步骤
代码
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
m
i
n
f
(
x
)
=
1
0
0
(
x
1
2
−
x
2
)
2
(
x
1
−
1
)
2
设当前迭代点x=(-1,1)T,下降方向
d k
( 1 , − 2 ) T d_k=(1,-2)T
d
k
=
(
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
m
k
=
2 ;
α k
0.25 \alpha_k= 0.25
α
k
=
0
.
2
5 ;
x k + 1
( − 0.75 , 0.5 ) T x_{k+1}=(−0.75,0.5)T
x
k
1
=
(
−
0
.
7
5
,
0
.
5
)
T
f ( x k )
4 f(x_k) = 4
f
(
x
k
)
=
4 ;
f ( x k + 1 )
3.4531 f(x_{k+1}) = 3.4531
f
(
x
k
1
)
=
3
.
4
5
3
1