欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-31 08:18:16
...

基本思想

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

一个简单的例子及程序

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

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], 但实验结果显示其收敛速度很慢, 经过71 次迭代,xeps,\Vert x\Vert \leq eps, 故我们要使用非精确的线搜索来解决此类问题。

相关标签: 计算数学