资源描述:
《第7章 MATLAB辅助优化设计1.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章MATLAB辅助优化设计7.1辅助优化设计7.2线性规划7.3无约束非线性规划7.4约束最优化7.5多目标规划7.6最小二乘优化7.7方程求解7.1辅助优化设计设x=(x1,x2,…xn)T为n维欧氏空间En的一点,f(x),gi(x)(i=1,2,…m),hi(x)(i=m+1,…p)为给定的n元函数,则一般最优化问题的提法是在约束条件:gi(x)<=0,i=1…m和hi(x)=0,i=m+1…p之下,求向量x使函数f(x)取最小值(或极大值)。这里f(x)称为目标函数,gi(x)<=0称为不等式
2、约束条件。hi(x)称为等式约束条件。x=(x1,x2,…xn)T称为设计变量和决策变量。优化问题可分为:线性规划、无约束非线性规划、约束最优化、多目标规划、最小二乘优化。7.2线性规划线性规划问题的标准形式:minz=c1x1+c2x2+…cnxna11x1+a12x2+…a11xn=b1a21x1+a22x2+…a22xn=b2…am1x1+am2x2+…amnxn=bmx1,x2,…xn>=0;线性规划的标准形式要求目标函数最小化,不符合条件的线性模型首先转换成标准形式。在MATLAB工具箱中,可用
3、linprog函数求解线性规划问题数学建模如下minf(x)A*x<=bAeq*x=beqlb<=x<=ub函数格式:x=linprog(f,A,b)求解问题minf(x),约束条件A*x<=bx=linprog(f,A,b,Aeq,beq)求解上面问题但增加了约束Aeq*x=beq,若无不等式存在则:A=[],b=[]x=linprog(f,A,b,Aeq,beq,lb,ub)定义x的上下界若无等式存在则:Aeq=[],beq=[]x=linprog(f,A,b,Aeq,beq,lb,ub,x0)设置初
4、始值x0。该选项只适合中型问题,大型算法将忽略初值。x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)用options指定的优化参数进行最小化计算。[x,fval]=linprog(…)返回解x处的目标值[x,lambda,exitflag]=linprog(…)返回exitflag值,描述函数计算退出的条件[x,lambda,exitflag,output]=linprog(…)返回包含优化信息的输出变量output[x,fval,exitflag,lambda]=lin
5、prog(…)将解x处的拉格郎日乘子返回到lambda参数中例求使函数f(x)=-5x1-4x2-6x3取最小的x值,且满足:x1-x2-x3<=203x1+2x2+4x3<=423x1+2x2<=30x1,x2,x3>=0f=[-5,-4,-6];A=[1,-1,1;3,2,4;3,2,0];b=[20;42;30];lb=[0,0,0];[x,fval]=linprog(f,A,b,[],[],lb)Optimizationterminatedsuccessfully.x=0.000015.00003
6、.0000fval=-78.0000某人要用一笔资金投资,现在有四个项目,各项目的净收益(占投入资金的百分比)如下所示:由于特殊原因用于A的投资不能大于其他各项投资之和,用于项目B和C的投资要大于项目D的投资。试确定该人收益的最大值。投资项目ABCD收益(%)1510812设x1,x2,x3,x4分别代表用于A、B、C、D的投资百分数,则根据提议则可建立如下数学模型f(x)=0.15x1+0.1x2-0.08x3+0.12x4x1>=x2+x3+x4x2+x3>=x4x1+x2+x3+x4=1x1,x2,
7、x3,x4>=0f(x)=-(0.15x1+0.1x2-0.08x3+0.12x4)-x1+x2+x3+x4<=0-x2-x3+x4<=0x1+x2+x3+x4=1x1,x2,x3,x4>=0f=[-0.15,-0.1,-0.08,-0.12];A=[1,-1,-1,-1;0,-1,-1,1];b=[0;0];Aeq=[1111];beq=[1];lb=[0,0,0,0];[x,fval]=linprog(f,A,b,Aeq,beq,lb)Optimizationterminatedsuccessfull
8、y.x=0.50000.25000.00000.2500fval=-0.13007.3无约束非线性规划目标函数或约束条件中包含自变量的非线性函数,则这类问题属于非线性规划。求解无约束非线性规划的常用方法为数值解法,数值解法中常用的是迭代法,它的基本思想是在给出极小点位置的一个初始估计x0后,计算一系列的xk(k=1,2,…),希望点列xk的极限x*就是f(x)的极小点。迭代法一般用xk+1-xk=ckdk其中dk为一个向量,c