大连理工优化方法增广拉格朗日方法MATLAB程序.docVIP

大连理工优化方法增广拉格朗日方法MATLAB程序.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
上机大作业II 定义目标函数fun function f=fun(x) x1=x(1); x2=x(2); f=4*x1-x2^2-12; 定义目标函数梯度函数dfun function f=dfun(x) x2=x(2); f=[4;-2*x2]; 定义等式约束函数hf function qua=hf(x) qua=25-x(1)^2-x(2)^2; 定义等式约束函数梯度函数dhf function qua=dhf(x) qua=[-2*x(1);-2*x(2)]; 定义不等式约束函数gfun function inq=gfun(x) inq=10*x(1)-x(1)^2+10*x(2)-x(2)^2-34; 定义不等式约束梯度数dgf function inq=dgf(x) inq=[10-2*x(1);10-2*x(2)]; 定义增广拉格朗日函数mpsi function psi=mpsi(x,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma) f=feval(fun,x); he=feval(hf,x); gi=feval(gfun,x); l=length(he); m=length(gi); psi=f; s1=0; for i=1:l psi=psi-he(i)*mu(i); s1=s1+he(i)^2; end psi=psi+0.5*sigma*s1; s2=0.0; for i=1:m s3=max(0.0, lambda(i) - sigma*gi(i)); s2=s2+s3^2-lambda(i)^2; end psi=psi+s2/(2.0*sigma); 定义增广拉格朗日函数梯度函数dmpsi function dpsi=dmpsi(x,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma) dpsi=feval(dfun,x); he=feval(hf,x); gi=feval(gfun,x); dhe=feval(dhf,x); dgi=feval(dgf,x); l=length(he); m=length(gi); for i=1:l dpsi=dpsi+(sigma*he(i)-mu(i))*dhe(:,i); end for i=1:m dpsi=dpsi+(sigma*gi(i)-lambda(i))*dgi(:,i); end 定义BFGS法函数函数bfgs function [x,val,k]=bfgs(mpsi,dmpsi,x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma) maxk=1000; rho=0.5; sigma1=0.4; epsilon1=1e-4; k=0; n=length(x0); Bk=eye(n); while(kmaxk) gk=feval(dmpsi,x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma); if(norm(gk)epsilon1) break; end dk=-Bk\gk; m=0; mk=0; while(m20) newf=feval(mpsi,x0+rho^m*dk,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma); oldf=feval(mpsi,x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma); if(newfoldf+sigma1*rho^m*gk*dk) mk=m; break; end m=m+1; end x=x0+rho^mk*dk; sk=x-x0; yk=feval(dmpsi,x,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma)-gk; if(yk*sk0) Bk=Bk-((Bk*sk)*sk*Bk)/(sk*Bk*sk)+(yk*yk)/(yk*sk); end k=k+1; x0=x; end val=feval(mpsi,x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma); 定义增广拉格朗日乘子法函数multphr function answer=multphr

文档评论(0)

dashewan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档