目录

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

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

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

算法思想

https://i-blog.csdnimg.cn/blog_migrate/d3c19a7511c6b7989f962ea8e3595c7b.png

https://i-blog.csdnimg.cn/blog_migrate/61c3002921872d5e283b595dbba9cfd4.png

算法步骤

https://i-blog.csdnimg.cn/blog_migrate/99247d6235e7b35739f3f840ed8de1df.png

代码

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