资源描述:
《第6讲 非线性规划99469》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数学建模与数学实验后勤工程学院数学教研室非线性规划1实验目的实验内容2、掌握用数学软件求解优化问题。1、直观了解非线性规划的基本内容。1、非线性规划的基本理论。4、实验作业。2、用数学软件求解非线性规划。3、钢管订购及运输优化模型2*非线性规划的基本解法非线性规划的基本概念非线性规划返回3定义如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题.非现性规划的基本概念一般形式:(1)其中,是定义在En上的实值函数,简记:其它情况:求目标函数的最大值或约束条件为小于等于零的情况,
2、都可通过取其相反数化为上述一般形式.4定义1把满足问题(1)中条件的解称为可行解(或可行点),所有可行点的集合称为可行集(或可行域).记为D.即问题(1)可简记为.定义2对于问题(1),设,若存在,使得对一切,且,都有,则称X*是f(X)在D上的局部极小值点(局部最优解).特别地当时,若,则称X*是f(X)在D上的严格局部极小值点(严格局部最优解).定义3对于问题(1),设,对任意的,都有则称X*是f(X)在D上的全局极小值点(全局最优解).特别地当时,若,则称X*是f(X)在D上的严格全局极小值点(严
3、格全局最优解).返回5非线性规划的基本解法SUTM外点法SUTM内点法(障碍罚函数法)1、罚函数法2、近似规划法返回6罚函数法罚函数法基本思想是通过构造罚函数把约束问题转化为一系列无约束最优化问题,进而用无约束最优化方法去求解.这类方法称为序列无约束最小化方法.简称为SUMT法.其一为SUMT外点法,其二为SUMT内点法.7其中T(X,M)称为罚函数,M称为罚因子,带M的项称为罚项,这里的罚函数只对不满足约束条件的点实行惩罚:当时,满足各,故罚项=0,不受惩罚.当时,必有的约束条件,故罚项>0,要受惩罚
4、.SUTM外点法8罚函数法的缺点是:每个近似最优解Xk往往不是容许解,而只能近似满足约束,在实际问题中这种结果可能不能使用;在解一系列无约束问题中,计算量太大,特别是随着Mk的增大,可能导致错误.1、任意给定初始点X0,取M1>1,给定允许误差,令k=1;2、求无约束极值问题的最优解,设为Xk=X(Mk),即;3、若存在,使,则取Mk>M()令k=k+1返回(2),否则,停止迭代.得最优解.计算时也可将收敛性判别准则改为.SUTM外点法(罚函数法)的迭代步骤9SUTM内点法(障碍函数法)10内点法的迭代
5、步骤11近似规划法的基本思想:将问题(3)中的目标函数和约束条件近似为线性函数,并对变量的取值范围加以限制,从而得到一个近似线性规划问题,再用单纯形法求解之,把其符合原始条件的最优解作为(3)的解的近似.近似规划法每得到一个近似解后,都从这点出发,重复以上步骤.这样,通过求解一系列线性规划问题,产生一个由线性规划最优解组成的序列,经验表明,这样的序列往往收敛于非线性规划问题的解。12近似规划法的算法步骤如下13返回14用MATLAB软件求解,其输入格式如下:1.x=quadprog(H,C,A,b);2
6、.x=quadprog(H,C,A,b,Aeq,beq);3.x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB);4.x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0);5.x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0,options);6.[x,fval]=quaprog(...);7.[x,fval,exitflag]=quaprog(...);8.[x,fval,exitflag,output]=quaprog(...);
7、1、二次规划15例1minf(x1,x2)=-2x1-6x2+x12-2x1x2+2x22s.t.x1+x2≤2-x1+2x2≤2x1≥0,x2≥0MATLAB(youh1)1、写成标准形式:2、输入命令:H=[1-1;-12];c=[-2;-6];A=[11;-12];b=[2;2];Aeq=[];beq=[];VLB=[0;0];VUB=[];[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)3、运算结果为:x=0.66671.3333z=-8.2222s.t.161.首
8、先建立M文件fun.m,定义目标函数F(X):functionf=fun(X);f=F(X);2、一般非线性规划其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab求解上述问题,基本步骤分三步:173.建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:(1)x=fmincon(‘fun’,X0,A,b)(2)x=fmincon(‘fun’,X0,A