
二次规划与非线性规划.ppt
22页单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,二次规划与非线性规划,1,一、二次规划(Quadratic Program) 概念,2,,2.二次规划研究的意义,,,(1) 二次规划问题简单,便于求解.某些较复杂的非线性规划问题可以转化为求解一系列二次规问题.,,,(2) 实际应用广泛:,,工作计划,时间调度,规模经济学,工程设计以及控制领域,设施分配问题,选址问题,二次分配问题,微观经济学的很多问题.化学工程建模.,3,,二、Matlab中求解二次规划,4,,5,,转化为matlab求解格式:,6,,7,,定义,如果目标函数或约束条件中至少有一个是非线性函数,则最优化问题就叫做,非线性规划问题,.,四、非线性规划的基本概念,一般形式,:,,,,,,(1),,其中 , 是定义在,R,n,,上的实值函数,(,),n,T,n,R,x,x,x,X,Î,=,,,,,,,2,1,L,(,),(,),ï,î,ï,í,ì,=,=,=,³,.,,...,,2,,,1,0,m,;,1,2,...,,0,.,.,l,j,X,h,i,X,g,t,s,j,i,8,,,,,定义,把满足问题(1)中条件的解 称为,可行解(或可行点),,所有可行点的集合称为,可行集(或可行域),.记为,D,.即,,问题(1)可简记为 .,,,),(,n,R,X,Î,(,),(,),{,},n,j,i,R,X,X,h,X,g,X,D,Î,=,³,=,,,0,,,0,|,9,,五、非线性规划的基本解法,SUTM外点法,SUTM内点法(障碍罚函数法),1. 罚函数法,2.,近似线性规划法,10,,1、,罚函数法,,罚函数法,基本思想是通过构造罚函数把约束问题转化为一系列无约束最优化问题,进而用无约束最优化方法去求解.这类方法称为,序列无约束最小化方法,.简称为,SUMT法,.,,其一为,SUMT外点法,,其二为,SUMT内点法,.,11,,,,,近似规划法的基本思想,:将问题中的目标函数 和约束条件 近似为线性函数,并对变量的取值范围加以限制,从而得到一个近似线性规划问题,再用单纯形法求解之,把其符合原始条件的最优解作为解的近似.,2、近似规划法,每得到一个近似解,都从这点出发,重复以上步骤.,这样,通过求解一系列线性规划问题,产生一个由线性规划最优解组成的序列,经验表明,这样的序列往往收敛于非线性规划问题的解.,12,,13,,六、Matlab求解非线性规划问题,其中,X,为,n,维变元向量,,G(X,),与,Ceq,(,X,),均为非线性函数组成的向量。
14,,,1.,首先建立M文件fun.m,用来定义目标函数,F,(,X,):,,function f=fun(X);,,f=F(X);,MATLAB,求解上述问题,基本步骤分三步,15,,3. 建立主程序.求解非线性规划的函数是fmincon,命令的基本格式如下:,,,(1),x=fmincon(‘fun’,X0,A,b),,,(2),x=fmincon(‘fun’,X0,A,b,Aeq,beq),,,(3),x=fmincon(‘fun’,X0,A,b, Aeq,beq,VLB,VUB),,,(4),x=fmincon(‘fun’,X,0,,A,,b,,Aeq,beq,VLB,VUB,’nonlcon’),,(5),x=fmincon(‘fun’,X,0,,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options),,,,,,,,,(6),[x,fval]= fmincon(,…,),,,(7),[x,fval,exitflag]= fmincon(,…,),,(8)[x,fval,exitflag,output]= fmincon(,…,),输出极值点,M,文件,迭代的初值,参数说明,变量上下限,fmincon函数可能会给出局部最优解,这与初值X0的选取有关.,16,,1.,写成标准形式,:,,,,,,,,,,,s.t.,,,,,,,2,x,1,+3,x,2,6,,,s.t.,,x,1,+4,x,2,5,,,x,1,,,x,2,0,例,17,,2,.,先建立M-文件 fun3.m:,,,function f=fun3(x);,,f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2,MATLAB(youh2),3.再建立主程序,youh2.m,:,,,x0=[1;1];,,A=[2 3 ;1 4]; b=[6;5];,,Aeq=[];beq=[];,,VLB=[0;0]; VUB=[];,,[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB),4.,运算结果为:,,,x = 0.7647 1.0588,,fval = -2.0294,18,,1.,先建立M文件fun4.m定义目标函数:,,function f=fun4(x);,,f=exp(x(1)),,*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);,,x,1,+,x,2,0,,s.t. 1.5+,x,1,x,2,-,x,1,-,x,2,0,,-,x,1,x,2,–10,,0,,例,2.再建立M文件mycon.m定义非线性约束:,,,function [g,ceq]=mycon(x),,g=[,x(1)+x(2);,,1.5+x(1)*x(2)-x(1)-x(2);,,-x(1)*x(2)-10];,,ceq=[];,19,,3.主程序,youh3.m,为:,,x0=[-1;1];,,A=[];b=[];,,Aeq=[1 1];beq=[0];,,vlb=[];vub=[];,,[x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,vlb,,,vub,'mycon'),MATLAB(youh3),4.,运算结果为,:,,,,x = -1.2250 1.2250,,fval = 1.8951,,20,,例,,,,,1.先建立M文件fun.m定义目标函数:,,function f=fun(x);,,f=-2*x(1)-x(2);,,2.再建立M文件,mycon2.m,定义非线性约束:,,function [g,ceq]=mycon2(x),,g=[x(1)^2+x(2)^2-25;x(1)^2-x(2)^2-7];,,ceq=[ ];,,,21,,3. 主程序,fxx.m,为:,,,x0=[3;2.5];,,VLB=[0 0];VUB=[5 10];,,[x,fval,exitflag,output],,=fmincon('fun',x0,[],[],[],[],,,VLB,VUB,'mycon2'),,MATLAB(fxx(fun)),22,,。
