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)

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功