大连理工优化方法增广拉格朗日方法MATLAB程序
《大连理工优化方法增广拉格朗日方法MATLAB程序》由会员分享,可在线阅读,更多相关《大连理工优化方法增广拉格朗日方法MATLAB程序(4页珍藏版)》请在装配图网上搜索。
1、上机大作业 II定义目标函数 funfunction f=fun(x) x1=x(1); x2=x(2);f=4*x1-x2A2-12;定义目标函数梯度函数 dfun function f=dfun(x) x2=x(2);f=4;-2*x2;定义等式约束函数 hf function qua=hf(x) qua=25-x(1)A2-x(2)A2;定义等式约束函数梯度函数 dhf function qua=dhf(x) qua=-2*x(1);-2*x(2);定义不等式约束函数 gfun function inq=gfun(x) inq=10*x(1)-x(1)A2+10*x(2)-x(2)A2-
2、34;定义不等式约束梯度数 dgf function inq=dgf(x)inq=10-2*x(1);10-2*x(2);定义增广拉格朗日函数 mpsifunction 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)A2;endpsi=psi+0.5*sigma*s1;s2=0.0;
3、for i=1:ms3=max(0.0, lambda(i) - sigma*gi(i);s2=s2+s3A2-lambda(i)A2;endpsi=psi+s2/(2.0*sigma);定义增广拉格朗日函数梯度函数 dmpsifunction 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:ldp
4、si=dpsi+(sigma*he(i)-mu(i)*dhe(:,i);endfor i=1:m dpsi=dpsi+(sigma*gi(i)-lambda(i)*dgi(:,i);end定义BFGS法函数函数bfgsfunction 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,
5、dfun,dhf,dgf,mu,lambda,sigma); if(norm(gk)epsilon1)break;enddk=-Bkgk;m=0;mk=0; while(m20)newf=feval(mpsi,x0+rhoAm*dk,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma); oldf=feval(mpsi,x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma);if(n ewf0)Bk=Bk-(Bk*sk)*sk*Bk)/(sk*Bk*sk)+(yk*yk)/(yk*sk);endk=k+1;x0=x;end val
6、=feval(mpsi,x0,fun,hf,gfun,dfun,dhf,dgf,mu,lambda,sigma);定义增广拉格朗日乘子法函数 multphrfunction answer=multphr(fun,hf,gfun,dfun,dhf,dgf,x0) maxk=5000;sigma=2.0;eta=2.0;theta=0.8;k=0;ink=0;epsilon=1e-4;x=x0;he=feval(hf,x);gi=feval(gfun,x);l=length(he);m=length(gi);mu=0.1*ones(l,1);lambda=0.1*ones(m,1);btak=10
7、;btaold=10;while(btakepsilon&kepsilonif(k=2&btak theta*btaold) sigma=eta*sigma;endfor i=1:l mu(i)=mu(i)-sigma*he(i);endfor i=1:m lambda(i)=max(0.0,lambda(i)-sigma*gi(i);endendk=k+1;btaold=btak;x0=x;endf=feval(fun,x);xfmulambdak运行求解 x0=0;0x0 =00 multphr(fun,hf,gfun,dfun,dhf,dgf,x0)x =1.001281489564374.89871784708758f =-31.9923105871169mu =1.01559644571312lambda =0.7544511679772284
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。