最优控制大作业_第1页
最优控制大作业_第2页
最优控制大作业_第3页
最优控制大作业_第4页
最优控制大作业_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最优控制大作业最优控制大作业最优控制大作业最优控制大作业编制仅供参考审核批准生效日期地址:电话:传真:邮编:单纯行法第一题和第二题采用了单纯形法进行解决,单纯形法的理论依据是:线形规划问题的可行域是n维向量空间Rn中的多面凸集,其最优值如果存在必在该凸集的某顶点处达到。顶点所对应的可行解称为基本可行解。单纯形法的基本思想是:先找出一个基本可行解,对它进行鉴别,看是否是最优解;若不是,则按照一定法则转换到另一改进的基本可行解,再鉴别;若仍不是,则再转换,按此重复进行。因基本可行解的个数有限,故经有限次转换必能得出问题的最优解。如果问题无最优解也可用此法判别。单纯形法的一般解题步骤可归纳如下:1.把线性规划问题的约束方程组表达成典范型方程组,找出基本可行解作为初始基本可行解。2.若基本可行解不存在,即约束条件有矛盾,则问题无解。3.若基本可行解存在,从初始基本可行解作为起点,根据最优性条件和可行性条件,引入非基变量取代某一基变量,找出目标函数值更优的另一基本可行解。4.按步骤3进行迭代,直到对应检验数满足最优性条件(这时目标函数值不能再改善),即得到问题的最优解。5.若迭代过程中发现问题的目标函数值无界,则终止迭代。用单纯形法求解线性规划问题所需的迭代次数主要取决于约束条件的个数。1某工厂生产A和B两种产品。已知制造A产品,每公斤要用煤9吨、电力4千万、劳力3个;制造产品B,每公斤要用煤4吨、电力5千瓦-劳力10个。又知制成产品A每公斤的产值是7万元;B每公斤的产值是12万元。现该厂只有煤360吨、电力200千瓦、劳力300个。问在这种条件下,应该生产A、B产品各多少才能使产值为最高。试写出其数学模型,即约束方程和目标函数,并利用单纯形法求解该线性规划问题。解:设生产A、B产品各吨使引入附加变量,使不等式约束变为等式约束程序清单如下:#include<iostream>#include<iomanip>usingnamespacestd;intvarIn(doubledelta[5]);定问题的决策对象。2.对决策过程划分阶段。3.对各阶段确定状态变量。4.根据状态变量确定费用函数和目标函数。5.建立各阶段状态变量的转移过程,确定状态转移方程。多极决策过程的最优策略具有这样的性质,不论初始状态和初始决策如何,当把其中的任何一级和状态再作为初始级和初始状态时,其余决策对此必定也是一个最优决策。3要求从城市1到12建立一条客运线。各段路所能获得的利润如下表,注意:从一个给定的城市出发只能直接到达某些城市。问从城市1到12应走怎样的路线,才能获得最大利润。到达城市23456789101112利润出发城市15422810573638104896458436527741068125297103116程序清单如下:#include<iostream>#include<map>#include<vector>usingnamespacestd;constintN=11;constintM=12;staticintA[N][M];intmain(){A[1][2]=5;A[1][3]=4;A[1][4]=2;A[2][5]=8;A[2][6]=10;A[2][7]=5;A[2][8]=7;A[3][5]=6;A[3][6]=3;A[3][7]=8;A[3][8]=10; A[4][5]=8;A[4][6]=9;A[4][7]=6;A[4][8]=4;A[5][9]=8;A[5][10]=4;A[5][11]=3;A[6][9]=5;A[6][10]=2;A[6][11]=7;A[7][9]=4;A[7][10]=10;A[7][11]=6;A[8][9]=12;A[8][10]=5;A[8][11]=2;A[9][12]=7; A[10][12]=3; A[11][12]=6;轭梯度法:程序清单如下:#include<iostream>#include<>usingnamespacestd;doubleb[4];double*G(doublea[6]);doublef(doublex[2],doublea[6]);//目标函数f(x)doublepartDriver1(doublex[2],doublea[6]);//x1对f(x)偏导数doublepartDriver2(doublex[2],doublea[6]);//x2对f(x)偏导数intmain(){ doublea[6];//目标函数的系数 doublex[2];//初始值 inti=0; cout<<"请输入你的题号(1,2,3):"; cin>>i; if(i>=1&&i<=3){ switch(i){ case1:a[0]=1;a[1]=2;a[2]=-4;a[3]=0;a[4]=-2;a[5]=0; x[0]=1;x[1]=1; break; case2:a[0]=1;a[1]=2;a[2]=-4;a[3]=-4;a[4]=0;a[5]=6; x[0]=1;x[1]=1; break; case3:a[0]=2;a[1]=1;a[2]=3;a[3]=-4;a[4]=2;a[5]=0; x[0]=3;x[1]=4; break; } } else{cout<<"你输入的题号不正确!!!";} doubled=0;//步长 doublewc=;//共轭梯度法的精度 double*g=G(a); doublep1,p2; doubles1=partDriver1(x,a); doubles2=partDriver2(x,a); doublec=0; doubleh=0; while(sqrt(s1*s1+s2*s2)>=wc){ p1=-s1+c*p1; p2=-s2+c*p2;d=-(s1*p1+s2*p2)/(p1*p1*g[0]+p1*p2*(g[1]+g[2])+p2*p2*g[3]); x[0]+=p1*d; x[1]+=p2*d; h=s1*s1+s2*s2; s1=partDriver1(x,a); s2=partDriver2(x,a); c=(s1*s1+s2*s2)/h; } cout<<"******************************"<<endl; cout<<"目标函数的极小值:f(x)="<<f(x,a)<<endl;cout<<"目标函数的极小值点:"<<"x1="<<x[0]<<",x2="<<x[1]<<endl;cout<<"******************************"<<endl;return0;}double*G(doublea[6]){b[0]=2*a[0];b[1]=a[4];b[2]=a[4];b[3]=2*a[1];returnb;}doublef(doublex[2],doublea[6]){ returna[0]*x[0]*x[0]+a[1]*x[1]*x[1]+a[2]*x[0]+ a[3]*x[1]+a[4]*x[0]*x[1]+a[5];}doublepartDriver1(doublex[2],doublea[6]){return2*a[0]*x[0]+a[2]+a[4]*x[1];}doublepartDriver2(doublex[2],doublea[6]){return2*a[1]*x[1]+a[3]+a[4]*x[0];}运算结果如下:(a)(b)(c)拉格朗日乘子法第六题采用的是拉格朗日乘子法,拉格朗日乘子法可用于求解具有等式约束和不等式约束的非线性规划问题,基本思想是通过引入拉格朗日乘子,将有等式约束的最优化问题转化为无约束的最优化问题,从而按照无约束的多变量函数的最优化方法对目标函数求极小值点。6已知目标函数为f(x)=+2+-2+等式约束条件为:++=42-+=2试用拉格朗日乘子法求目标函数f(x)的极小值。解:设拉格朗日乘子分别为x4,x5f(x)=+2+-2++x4*(++-4)+x5*(2-+-2)程序清单如下:#include<>#include<>#include<>#include<>intmain(){ staticdoublearray[21]={1,2,1,0,0,-2,0,1,2,0,1,-1,1,1,0,0,0,1,-4,-2,0}; intcounter=0; longdoublea;longdoubled1,d2,d3,d4,d5,b; longdoublex1=1,x2=1,x3=1,x4=1,x5=1; longdoubles1,s2,s3,s4,s5,g1,g2,g3,g4,g5; s1=2*array[0]*x1+array[5]*x2+array[6]*x3+array[7]*x4+array[8]*x5+array[15]; s2=2*array[1]*x2+array[5]*x1+array[9]*x3+array[10]*x4+array[11]*x5+array[16]; s3=2*array[2]*x3+array[6]*x1+array[9]*x2+array[12]*x4+array[13]*x5+array[17];s4=2*array[3]*x4+array[7]*x1+array[10]*x2+array[12]*x3+array[14]*x5+array[18]; s5=2*array[4]*x5+array[8]*x1+array[11]*x2+array[13]*x3+array[14]*x4+array[19];longdoublecoef1,coef2; coef1=s1*s1+s2*s2+s3*s3+s4*s4+s5*s5; while(sqrt(s1*s1+s2*s2+s3*s3+s4*s4+s5*s5)>= { g1=-1*s1+a*d1; g2=-1*s2+a*d2; g3=-1*s3+a*d3; g4=-1*s4+a*d4; g5=-1*s5+a*d5; d1=g1; d2=g2; d3=g3; d4=g4; d5=g5; b=-1*((s1*g1+s2*g2+s3*g3+s4*g4+s5*g5)/(2*(array[0]*g1*g1+array[1]*g2*g2+ array[2]*g3*g3+array[3]*g4*g4+array[4]*g5*g5+array[5]*g1*g2+ array[6]*g1*g3+array[7]*g1*g4+array[8]*g1*g5+array[9]*g2*g3+ array[10]*g2*g4+array[11]*g2*g5+array[12]*g3*g4+ array[13]*g3*g5+array[14]*g4*g5))); x1=x1+b*g1; x2=x2+b*g2; x3=x3+b*g3; x4=x4+b*g4; x5=x5+b*g5; coef2=coef1; s1=2*array[0]*x1+array[5]*x2+array[6]*x3+array[7]*x4+array[8]*x5+array[15]; s2=2*array[1]*x2+array[5]*x1+array[9]*x3+array[10]*x4+array[11]*x5+array[16]; s3=2*array[2]*x3+array[6]*x1+array[9]*x2+array[12]*x4+array[13]*x5+array[17];s4=2*array[3]*x4+array[7]*x1+array[10]*x2+array[12]*x3+array[14]*x5+array[18]; s5=2*array[4]*x5+array[8]*x1+array[11]*x2+array[13]*x3+array[14]*x4+array[19]; coef1=s1*s1+s2*s2+s3*s3+s4*s4+s5*s5; counter++; if(counter==5) { a=0; } else { a=coef1/coef2; } } longdoublemin; min=array[0]*x1*x1+array[1]*x2*x2+array[2]*x3*x3+array[3]*x4*x4+array[4]*x5*x5+ array[5]*x1*x2+array[6]*x1*x3+array[7]*x1*x4+array[8]*x1*x5+ array[9]*x2*x3+array[10]*x2*x4+array[11]*x2*x5+array[12]*x3*x4+ array[13]*x3*x5+array[14]*x4*x5+array[15]*x1+array[16

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论