本文介绍如何用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);
END
程序运行结果:
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);
END
程序运行结果:
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相应的钻探费用c1,c2,⋯,c10
为5,8,10,6,9,5,7,6,10,8.并且井位选择上要满足下列限制条件:
(1) 或选择s1和s7, 或选择钻探s9;
(2) 选择了s3或s4就不能选s5,或反过来也一样;
(3) 在s5, s6, s7, s8中最多只能选两个.
试建立这个问题的整数规划模型,确定选择的井位。取0-1变量si,若si=1,则表示选取第i个井,若si=0,则表示不选取第i个井。建立数学模型如下:
程序代码:(不允许粘图,重点语句加上注释)
MODEL:
SETS:
HANG/1..10/:S,C;
ENDSETS
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,已知每个加工厂到各销售门市部每吨糖果的运价如下表所示,问该食品公司应如何调运,在满足各门市部销售的情况下,使总的运费支出为最少。
B1
B2
B3
B4
A1
3
11
3
10
A2
1
9
2
8
A3
7
4
10
5
设cij,xij分别为各工厂向各门市部的单位运价及运送量,pi为第i个工厂的产量,dj为第j个门市部的销售量,则这个运输问量的数学模型为
min z=i=13j=14cijxij
s.t.&j=14xij=pi,i=1,2,3&j=13xij=dj,j=1,2,3,4&xij≥0,i=1,2,3,j=1,2,3,4
程序代码:(不允许粘图,重点语句加上注释)
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));
END
程序运行结果:
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