基于精确线搜索的最速下降法及实例

基本思想

对于给定的一个无约束优化问题
min ⁡ x ∈ R n f ( x ) \min \limits_{x\in\mathbb{R}^n} \quad f(x) xRnminf(x)
选择搜索方向为 p k = − ∇ f ( x k ) p_k=-\nabla f(x_k) pk=f(xk) , 步长为 α k \alpha_k αk 是如下子问题
min ⁡ α k > 0 f ( x k + α k p k ) \min \limits_{\alpha_k>0}\quad f(x_k+\alpha_k p_k) αk>0minf(xk+αkpk) 的解。

一个简单的例子及程序

考虑这样一个函数 f ( x ) = 5 x 1 2 + 1 2 x 2 2 , f(x)=5x_1^2+\frac{1}{2}x_2^2, f(x)=5x12+21x22,
设其初值为 [ 0.1 , 1 ] T [0.1,1]^T [0.1,1]T, 进度为 1 e − 6 1e-6 1e6,
其优化程序为
下面展示一些 内联代码片

function x = SteepestDescent(f,x0,eps)
%% Steepest Descent Method
%f:objective function
%x0:initial value
%eps:accuracy
if nargin<1
    f = @(x1,x2)5*x1^2+0.5*x2^2;
    x0 = [0.1;1];
    eps = 1e-6;
end
maxiter= 10000;
x = x0;
syms x1 x2 l;
grad = jacobian(f,[x1 x2]);
i=0;
while i<maxiter
    g = subs(grad,[x1 x2],[x(1) x(2)]);
    g = g';
    if norm(g)<= eps
        disp(i);
        break;
    end
    p = -g;
    h = l.*p+x;
    phi = subs(f,[x1 x2],[h(1) h(2)]);
    df = diff(phi);
    p = solve(df);
    x = subs(h,p);
    i = i+1;
end
x = vpa(x);
end

理论最优解为 [ 0 , 0 ] , [0,0], [0,0], 但实验结果显示其收敛速度很慢, 经过71 次迭代, ∥ x ∥ ≤ e p s , \Vert x\Vert \leq eps, xeps, 故我们要使用非精确的线搜索来解决此类问题。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值