当前位置:文档之家› 非线性规划及matlab应用

非线性规划及matlab应用

非线性规划及matlab 应用目录1.概念 ............................................................................................................................................... 1 2.二次规划........................................................................................................................................ 1 3.一般非线性规划 ............................................................................................................................ 2 4. 案例:供应与选址 . (4)1.概念定义:如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题.其它情况: 求目标函数的最大值或约束条件为小于等于零的情况,都可通过取其相反数化为上述一般形式.2.二次规划用MATLAB 软件求解,其输入格式如下: 1. x=quadprog(H,C,A,b); 2. 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]=quadprog(...); 7. [x,fval,exitflag]=quaprog(...); 实例1:2212121122121212min (,)2622..2220,0=--+-++≤-+≤≥≥f x x x x x x x x s tx x x x x x写成标准形式标准型为: Min Z= 21X T HX+c T Xs.t. AX<=b beq X Aeq =⋅ VLB ≤X ≤VUB111222 1 -12min (,) 1 26Tx x z x x x x ⎛⎫⎛⎫⎛⎫⎛⎫-=+ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪--⎝⎭⎝⎭⎝⎭⎝⎭1212 1 121 2200x x x x ⎛⎫⎛⎫⎛⎫≤ ⎪ ⎪ ⎪ ⎪-⎝⎭⎝⎭⎝⎭⎛⎫⎛⎫≤ ⎪ ⎪ ⎪⎝⎭⎝⎭Matlab 命令H=[1 -1; -1 2]; c=[-2 ;-6]; A=[1 1; -1 2]; b=[2;2]; Aeq=[]; beq=[]; VLB=[0;0]; VUB=[];[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)运算结果为:x =0.6667 1.3333 z = -8.22223.一般非线性规划标准型为:min ()..()0()0≤≤=≤≤F X s t AX bG X Ceq X VLB X VUB其中X 为n 维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.非线性规划求解的函数是fmincon,命令的基本格式如下: ● x=fmincon(‘fun’,X0,A,b)● x=fmincon(‘fun’,X0,A,b,Aeq,beq)● x=fmincon(‘fun’,X0,A,b, Aeq,beq,VLB,VUB)● x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)● x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options) ● [x,fval]= fmincon(...)● [x,fval,exitflag]= fmincon(...)● [x,fval,exitflag,output]= fmincon(...) 1.fun 为目标函数2.x0为初始值3.A 是不等式约束AX<=b 的系数矩阵4.b 是不等式约束AX<=b 的常数项4.Aeq 是等式约束AeqX=beq 的系数矩阵,5.beq 是等式约束AeqX=beq 的常数项,6.lb 是X 的下限,7.ub 是X 的上限,8.nonlcon 为非线性不等式约束 9.option 为设置fmincon 的参数 注意:fmincon 函数提供了大型优化算法和中型优化算法。

默认时,若在fun 函数中提供了梯度(options 参数的GradObj 设置为’on ’),并且只有上下界存在或只有等式约束,fmincon 函数将选择大型算法。

当既有等式约束又有梯度约束时,使用中型算法。

fmincon 函数的中型算法使用的是序列二次规划法。

在每一步迭代中求解二次规划子问题,并用BFGS 法更新拉格朗日Hessian 矩阵。

fmincon 函数可能会给出局部最优解,这与初值X0的选取有关。

实例222121211min 222f x x x x =--++s.t. 12122360450x x x x ⎛⎫+-⎛⎫≤⎪ ⎪ ⎪+-⎝⎭⎝⎭1200x x ⎛⎫⎛⎫≤ ⎪ ⎪ ⎪⎝⎭⎝⎭先建立M -文件 ex2.m: function f=ex2(x);f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2 再建立主程序main2.m : x0=[1;1];A=[2 3 ;1 4]; b=[6;5]; Aeq=[];beq=[]; VLB=[0;0]; VUB=[];[x,fval]=fmincon('ex2',x0,A,b,Aeq,beq,VLB,VUB)运算结果为: x = 0.7647 1.0588 fval = -2.0294实例312212122()(42421)x f x e x x x x x =++++s.t.12121212x x01.5x x x x0 x x100+=+--≤--≤先建立M文件ex3.m,定义目标函数:function f=ex3(x);f=exp(x(1)) *(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);再建立M文件ex31.m定义非线性约束:function [g,ceq]=ex31(x)g=[x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];主程序main3.m为:x0=[-1;1];A=[];b=[];Aeq=[1 1];beq=[0];vlb=[];vub=[];[x,fval]=fmincon('ex3',x0,A,b,Aeq,beq,vlb,vub,'ex31')运算结果为:x = -1.2250 1.2250 fval = 1.8951实例4function f=ex4(x)f=x(1)^2+x(2)^2+10;function [g,h]=ex40(x)g=-x(1)^2+x(2);h=-x(1)-x(2)^2+5; %约束等式options=optimset;[x,y]=fmincon('ex4',rand(2,1),[],[],[],[],zeros(2,1),[],'ex40',options)输出结果:x = 1.3794 1.9028 y = 15.52344. 案例:供应与选址某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:千米)及水泥日用量d(吨)由下表给出。

目前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。

假设从料场到工地之间均有直线道路相连。

(1)试制定每天的供应计划,即从A ,B 两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。

(2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?情形1:模型构建记工地的位置为(a i ,b i ),水泥日用量为d i ,i=1,…,6;料场位置为(x j ,y j ),日储量为e j ,j=1,2;从料场j 向工地i 的运送量为X ij 。

当用临时料场时决策变量为:x ij ,当不用临时料场时决策变量为:x ij ,x j ,y j 。

情形2:使用临时料场的情形使用两个临时料场A(5,1),B(2,7).求从料场j 向工地i 的运送量为X ij ,在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性规划问题. 线性规划模型为:设X 11=X 1, X 21= X 2,, X 31= X 3, X 41= X 4, X 51= X 5,, X 61= X 6,X 12= X 7, X 22= X 8,, X 32= X 9, X 42= X 10, X 52= X 11,, X 62= X 12Matlab 程序 cleara=[1.25 8.75 0.5 5.75 3 7.25]; b=[1.25 0.75 4.75 5 6.5 7.75]; d=[3 5 4 7 6 11]; x=[5 2];目标函数为:∑∑==-+-=216122)()(min j i i j i j ij b y a x X f 约束条件为:2,1 ,6,,2,1 ,6121=≤==∑∑==j e X i d X j i ij i j ij Λ ∑∑===2161),(min j i ij X j i aa f 2,1 , 6,,2,1 , s.t.6121=≤==∑∑==j e X i d X j i ij i j ij Λ 其中 22)()(),(i j i j b y a x j i aa -+-=,i=1,2,…,6,j=1,2,为常数。

y=[1 7]; e=[20 20]; for i=1:6 for j=1:2aa(i,j)=sqrt((x(j)-a(i))^2+(y(j)-b(i))^2); end endCC=[aa(:,1); aa(:,2)]'; A=[1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1]; B=[20;20];Aeq=[1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 ];beq=[d(1);d(2);d(3);d(4);d(5);d(6)]; VLB=[0 0 0 0 0 0 0 0 0 0 0 0];VUB=[]; x0=[1 2 3 0 1 0 0 1 0 1 0 1];[xx,fval]=linprog(CC,A,B,Aeq,beq,VLB,VUB,x0)计算结果为:x =[ 3.0000 5.0000 0.0000 7.0000 0.0000 1.00000.0000 0.0000 4.0000 0.0000 6.0000 10.0000]’ fval = 136.2275情形3:改建两个新料场的情形改建两个新料场,要同时确定料场的位置(x j ,y j )和运送量X ij ,在同样条件下使总吨千米数最小。

相关主题