本文介绍如何用lingo实现非线性的目标规划问题
lingo较matlab简单 参考例题学习,语句功能不再叙述。
编程求解下面的非线性规划模型 , |
程序代码:(不允许粘图,重点语句加上注释) MODEL: MAX=2*X1+3*X1^2+3*X2+X2^2+X3; X1+2*X1^2+X2+2*X2^2+X3<10; X1+X1^2+X2+X2^2-X3<50; 2*X1+X1^2+2*X2+X3<40; X1^2+X3=2; X1+2*X2>1; @FREE(X2); %不限制x2 @FREE(X3); |
程序运行结果: Local optimal solution found. Objective value: 18.08333 Variable Value Reduced Cost X1 2.333333 0.000000 X2 0.1666667 0.000000 X3 -3.444444 0.000000 |
程序运行结果解读 当x1等于2.333333, x2等于0.1666667, x3等于-3.444444时 z取得最大为18.08333 |
编程求解下面的0-1规划模型 |
程序代码:(不允许粘图,重点语句加上注释) MODEL: MAX=3*X1-2*X2+5*X3; X1+2*X2-X3<2; X1+4*X2+X3<4; X1+X2<3; 4*X2+X3<5; @BIN(X1); @BIN(X2); @BIN(X3); |
程序运行结果: Global optimal solution found. Objective value: 8.000000 Variable Value Reduced Cost X1 1.000000 -3.000000 X2 0.000000 2.000000 X3 1.000000 -5.000000 |
程序运行结果解读 当x1取1, x2取0, x3取1时, z取得最大值8. |
|
程序代码:(不允许粘图,重点语句加上注释) MODEL: MAX=X1^2+X2^2+3*X3^2+4*X4^2+2*X5^2-8*X1-2*X2-3*X3-X4-2*X5; X1+X2+X3+X4+X5<400; X1+2*X2+2*X3+X4+5*X5<800; 2*X1+X2+6*X3<200; X3+X4+5*X5<200; @BND(0,X1,99); @BND(0,X2,99); @BND(0,X3,99); @BND(0,X4,99); @BND(0,X5,99); @GIN(X1); @GIN(X2); @GIN(X3); @GIN(X4); @GIN(X5); END |
程序运行结果: Local optimal solution found. Objective value: 49428.00 Variable Value Reduced Cost X1 0.000000 8.000000 X2 99.00000 -196.0000 X3 16.00000 -93.00001 X4 99.00000 -791.0000 X5 0.000000 2.000000 |
程序运行结果解读: 当x1等于0, x2等于99, x3等于16, x4等于99, x5等于0时z最大值是49428.00 |
上面都是基础知识,实践重点掌握下面即可
编程求解下面的优化模型非线性规划模型 某钻井队要从10个可供选择的井位中确定5个钻井探油,使总的钻探费用为最小。若10个井位的代号为s1,s2,⋯,s10 (1) 或选择s1 (2) 选择了s3 (3) 在s5, s6, s7, s8 试建立这个问题的整数规划模型,确定选择的井位。取0-1变量si | ||||||||||||||||||||
程序代码:(不允许粘图,重点语句加上注释) MODEL: SETS: HANG/1..10/:S,C; DATA: C=5,8,10,6,9,5,7,6,10,8; ENDDATA; MIN=@SUM(HANG(I):S(I)*C(I)); (S(1)+S(7)-2)*(S(9)-1)=0; S(3)*S(5)+S(4)*S(5)=0; S(5)+S(6)+S(7)+S(8)<2; @SUM(HANG(I):S(I))=5); @FOR(HANG(I):@BIN(S)); END | ||||||||||||||||||||
程序运行结果: Global optimal solution found. Objective value: 31.00000 Variable Value Reduced Cost S( 1) 1.000000 5.000000 S( 4) 1.000000 6.000000 S( 6) 1.000000 5.000000 S( 7) 1.000000 7.000000 S( 10) 1.000000 8.000000 | ||||||||||||||||||||
程序运行结果解读: 根据程序运行结果: 确定钻井为s1,s4,s6,s7,s10。 其费用分别为5,6,5,7,8。 使总费用z最少为31 | ||||||||||||||||||||
编程求解下面的运输问题模型 某食品公司经销的主要产品之一是糖果,他下面设有三个加工厂,每天的糖果生产量分别为A1-7t, A2-4t,A3-9t.该公司把这些糖果分别运往四个地区的门市部销售,各地区每天的销售量为B1-3t,B2-6t,B3-5t,B4-6t,已知每个加工厂到各销售门市部每吨糖果的运价如下表所示,问该食品公司应如何调运,在满足各门市部销售的情况下,使总的运费支出为最少。
设cij,xij min z=i=13j=14cijxij | ||||||||||||||||||||
程序代码:(不允许粘图,重点语句加上注释) MODEL: SETS: HANG/1..3/:P; LIE/1..4/:D; LINK(HANG,LIE):C,X; ENDSETS DATA: P=7,4,9; D=3,6,5,6; C= 3,11,3,10 1,9,2,8 7,4,10,5; ENDDATA MIN=@SUM(LINK(I,J):C(I,J)*X(I,J)); @FOR(HANG(I):@SUM(LIE(J):X(I,J))=P(I)); @FOR(LIE(J):@SUM(HANG(I):X(I,J))=D(J)); | ||||||||||||||||||||
程序运行结果: Global optimal solution found. Objective value: 85.00000 Variable Value Reduced Cost X( 1, 1) 2.000000 0.000000 X( 1, 3) 5.000000 0.000000 X( 2, 1) 1.000000 0.000000 X( 2, 4) 3.000000 0.000000 X( 3, 2) 6.000000 0.000000 X( 3, 4) 3.000000 0.000000 | ||||||||||||||||||||
程序运行结果解读: 根据程序运行结果: 可知A1工厂向B1地区运送2吨糖果; 可知A1工厂向B3地区运送5吨糖果; 可知A2工厂向B1地区运送1吨糖果; 可知A2工厂向B4地区运送3吨糖果; 可知A3工厂向B2地区运送6吨糖果; 可知A3工厂向B4地区运送3吨糖果; 得到最少运费为85 |