您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > DFP算法+wolfe性非线性搜索解决无约束问题的matlab程序
function[x,val,k]=dfp(fun,gfun,x0)%功能:用DFP算法求解无约束问题:minf(x)%输入:x0是初始点,fun,gfun分别是目标函数及其梯度%输出:x,val分别是近似最优点和最优值,k是迭代次数maxk=1e5;rho=0.25;sigma=0.75;epsilon=1e-3;alpha=1;a=0;b=Inf;k=0;n=length(x0);Hk=eye(n);while(kmaxk)gk=feval(gfun,x0);%计算梯度if(norm(gk)epsilon),break;end%检验终止准则dk=-Hk*gk;%解方程组,计算搜索方向while(1)if(feval(fun,x0+alpha*dk)=feval(fun,x0)+rho*alpha*gk'*dk)b=alpha;alpha=(alpha+a)/2;continue;endif(feval(gfun,x0+alpha*dk)'*dk=sigma*gk'*dk)a=alpha;alpha=min([2*alpha,(b+alpha)/2]);continue;endbreak;endx=x0+alpha*dk;sk=x-x0;yk=feval(gfun,x)-gk;if(sk'*yk0)Hk=Hk-(Hk*yk*yk'*Hk)/(yk'*Hk*yk)+(sk*sk')/(sk'*yk);endk=k+1;x0=x;endval=feval(fun,x0);functionf=fun(x)f=100*(x(1)^2-x(2))^2+(x(1)-1)^2;functiongf=gfun(x)gf=[400*x(1)*(x(1)^2-x(2))+2*(x(1)-1),-200*(x(1)^2-x(2))]';clearx0=[0,0]';[x,val,k]=dfp('fun','gfun',x0)
本文标题:DFP算法+wolfe性非线性搜索解决无约束问题的matlab程序
链接地址:https://www.777doc.com/doc-2909897 .html