• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: Matlab
  • 标签: matlab  

资源简介

最优化问题中乘子法在matlab中是实现。

资源截图

代码片段和文件信息

function [xvalk]=bfgs(fungfunx0varargin)
%功能: 用BFGS算法求解无约束问题:  min f(x)
%输入: x0是初始点 fun gfun分别是目标函数及其梯度;
% varargin是输入的可变参数变量 简单调用bfgs时可以忽略它
% 但若其它程序循环调用该程序时将发挥重要的作用
%输出:  x val分别是近似最优点和最优值  k是迭代次数.
maxk=500;   %给出最大迭代次数
rho=0.55; sigma1=0.4; epsilon1=1e-5; 
k=0;   n=length(x0); 
Bk=eye(n);   %Bk=feval(‘Hess‘x0); 
while(k    gk=feval(gfunx0varargin{:}); %计算梯度
    if(norm(gk)    dk=-Bk\gk;  %解方程组 计算搜索方向
    m=0; mk=0;
    while(m<20)   % 用Armijo搜索求步长 
        newf=feval(funx0+rho^m*dkvarargin{:});
        oldf=feval(funx0varargin{:});
        if(newf            mk=m; break;
        end
        m=m+1;
    end
    %BFGS校正
    x=x0+rho^mk*dk;  
    sk=x-x0;  yk=feval(gfunxvarargin{:})-gk;
    if(yk‘*sk>0)
        Bk=Bk-(Bk*sk*sk‘*Bk)/(sk‘*Bk*sk)+(yk*yk‘)/(yk‘*sk);
    end
    k=k+1;     x0=x;
end
val=feval(funx0varargin{:}); 


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1083  2009-10-15 20:56  乘子法程序\bfgs.m

     文件         57  2009-10-15 20:26  乘子法程序\df1.m

     文件         53  2009-10-15 21:49  乘子法程序\dg1.m

     文件         42  2009-10-15 20:26  乘子法程序\dh1.m

     文件        311  2009-10-15 17:55  乘子法程序\dmpsi.m

     文件         46  2009-10-15 20:26  乘子法程序\f1.m

     文件         44  2009-10-15 21:50  乘子法程序\g1.m

     文件         40  2009-10-15 20:26  乘子法程序\h1.m

     文件        365  2009-10-15 17:51  乘子法程序\mpsi.m

     文件       1676  2015-06-09 20:22  乘子法程序\multphr.m

     目录          0  2015-06-05 10:00  乘子法程序

----------- ---------  ---------- -----  ----

                 3717                    11


评论

共有 条评论