最优化理论——线搜索技术·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 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

  • 25
    点赞
  • 161
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值