vs2010调用matlab的m文件所生产的dll实现二次规划算法

vs2010调用matlab的m文件所生产的dll实现二次规划算法

ID:18445104

大小:586.52 KB

页数:14页

时间:2018-09-18

vs2010调用matlab的m文件所生产的dll实现二次规划算法_第1页
vs2010调用matlab的m文件所生产的dll实现二次规划算法_第2页
vs2010调用matlab的m文件所生产的dll实现二次规划算法_第3页
vs2010调用matlab的m文件所生产的dll实现二次规划算法_第4页
vs2010调用matlab的m文件所生产的dll实现二次规划算法_第5页
资源描述:

《vs2010调用matlab的m文件所生产的dll实现二次规划算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VS2010调用Matlab的m文件所生产的dll实现二次规划算法引言二次规划算法可在SQP算法中成为通用的二次规划子问题程序。二次规划算法设计到众多的矩阵运算,用C++代码编程需要较大工作量,而矩阵运算在Matlab下则相当方便。但SQP多用于非线性系统的优化,如航空发动机的优化,航空发动机模型通常在C代码下更为方便。所以本文采用的策略是在Matlab下编写实现二次规划算法的m文件,使用Matlab编译器将m文件编译成dll动态链接库,然后在VS下调用dll来实现二次规划算法。1系统环境说明操作系统:Wi

2、ndow8X64.Matlab版本:Matlab2012b(Matlab8.0).VS版本:VS2010.添加系统环境变量:Path变量中增加:C:ProgramFilesMATLABR2012bbinwin64;重启电脑。2二次规划算法的Matlab实现2.1编程准备工作首先为本文建立一个单独的文件夹QPTEST,再在该文件夹下建立子文件夹QPMAT。然后启动Matlab并将工作目录指定到QPMAT下。2.2m文件编程新建m文件并保存文件名为qpsubp.m,编辑内容如下,代码分析参考文献

3、[1]程序12.1:function[d,mu,lam]=qpsubp(dfk,Bk,Ae,hk,Ai,gk)n=length(dfk);l=length(hk);m=length(gk);gamma=0.05;epsilon=1.0e-6;rho=0.5;sigma=0.2;ep0=0.05;mu0=0.05*zeros(l,1);lam0=0.05*zeros(m,1);d0=ones(n,1);u0=[ep0;zeros(n+l+m,1)];z0=[ep0;d0;mu0;lam0];k=0;z=z0;

4、ep=ep0;d=d0;mu=mu0;lam=lam0;while(k<=150)dh=dah(ep,d,mu,lam,dfk,Bk,Ae,hk,Ai,gk);if(norm(dh)0&&m>0)de=dz(1);dd=dz(2:n+1);du=dz(n+2:n+l

5、+1);dl=dz(n+l+2:n+l+m+1);endif(l==0)de=dz(1);dd=dz(2:n+1);dl=dz(n+2:n+m+1);endif(m==0)de=dz(1);dd=dz(2:n+1);du=dz(n+2:n+l+1);endi=0;while(i<=20)if(l>0&&m>0)dh1=dah(ep+rho^i*de,d+rho^i*dd,mu+rho^i*du,lam+rho^i*dl,...dfk,Bk,Ae,hk,Ai,gk);endif(l==0)dh1=dah(ep

6、+rho^i*de,d+rho^i*dd,mu,lam+rho^i*dl,...dfk,Bk,Ae,hk,Ai,gk);endif(m==0)dh1=dah(ep+rho^i*de,d+rho^i*dd,mu+rho^i*du,lam,...dfk,Bk,Ae,hk,Ai,gk);endif(norm(dh1)<=(1-sigma*(1-gamma*ep0)*rho^i)*norm(dh))mk=i;break;endi=i+1;if(i==20)mk=10;endendalpha=rho^mk;if(l>

7、0&&m>0)ep=ep+alpha*de;d=d+alpha*dd;mu=mu+alpha*du;lam=lam+alpha*dl;endif(l==0)ep=ep+alpha*de;d=d+alpha*dd;lam=lam+alpha*dl;endif(m==0)ep=ep+alpha*de;d=d+alpha*dd;mu=mu+alpha*du;endk=k+1;end%val=0.5*d'*Bk*d+dfk'*d;functionp=phi(ep,a,b)p=a+b-sqrt(a^2+b^2+2*e

8、p^2);functionbet=beta(ep,d,mu,lam,dfk,Bk,Ae,hk,Ai,gk,gamma)dh=dah(ep,d,mu,lam,dfk,Bk,Ae,hk,Ai,gk);bet=gamma*norm(dh)*min(1,norm(dh));function[dd1,dd2,v1]=ddv(ep,d,lam,Ai,gk)m=length(gk);dd1=zeros(m,m);dd2=zer

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。