lingo学习
在lingo中>与>=等价
@gin,整数变量限制
@bin,0-1变量限制
@bnd(取值范围)
1.整数规划
model:
max=z;
z=5*x1+8*x2;
x1+x2<6;
5*x1+9*x2<45;
x1>0;x2>0;
@gin(x1);@gin(x2);
end
2.非线性规划
model:
min=3*x^2+y^2-x*y+0.4*y;
1.2*x+0.9*y>1.1;
x+y=1;
y<0.7;
end
model:
min=z;
z=@abs(pi-((a*b)/(c*d)))+1;
@bnd(20,a,100);
@bnd(20,b,100);
@bnd(20,c,100);
@bnd(20,d,100);
@gin(a);
@gin(b);
@gin(c);
@gin(d);
end
3.复杂问题求解
Model:
Sets: !定义集合;
CK/1..10/:d,y; !10个仓库,y和d都是10维的变量,其中y是01变量,d由下面数据给定;
KH/1..20/; !20个客户;
SS(CK,KH):x,c; !x和c都是10*20的变量,x表示供应百分数,c表示全部供应的费用;
EndSets
Min=@Sum(SS(i,j):c(i,j)*x(i,j))+@Sum(CK(i):d(i)*y(i));
@For(CK(i):@Sum(KH(j):x(i,j))<20*y(i)); !若不建某仓库,是没有物资的;
@For(KH(j):@Sum(CK(i):x(i,j))=1); !每个客户需要供应的百分数之和都为1;
@For(CK(i):@Bin(y(i))); !y是0、1变量限制;
Data: !数据部分;
d=2 3 4 2 3 4 2 3 4 5
;
c=
9 14 6 15 6 19 11 19 4 5 3 6 4 10 12 19 8 7 10 4
10 16 9 12 8 14 4 20 9 13 2 17 18 19 15 18 16 9 8 8
2 10 2 18 4 19 8 13 15 9 4 8 16 2 15 11 8 8 3 14
6 4 1 9 3 3 5 15 6 10 9 13 6 4 8 5 2 9 13 8
7 10 20 17 7 9 13 16 9 15 13 10 12 12 4 16 6 16 6 17
15 18 14 18 11 4 20 20 13 1 10 19 6 4 12 20 20 1 20 7
15 14 20 12 6 15 20 3 1 16 6 6 6 20 3 17 6 11 17 12
1 1 5 2 2 5 16 8 7 7 12 9 5 12 6 4 17 11 11 20
18 16 20 18 5 20 8 6 17 20 9 19 1 10 9 5 8 9 17 15
6 7 17 4 12 4 19 4 13 16 7 6 1 14 11 5 7 9 11 13
;
EndData
End
Global optimal solution found.
Objective value: 69.00000
Objective bound: 69.00000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 427
Elapsed runtime seconds: 0.55
Model Class: MILP
Total variables: 210
Nonlinear variables: 0
Integer variables: 10
Total constraints: 31
Nonlinear constraints: 0
Total nonzeros: 620
Nonlinear nonzeros: 0
Variable Value Reduced Cost
D( 1) 2.000000 0.000000
D( 2) 3.000000 0.000000
D( 3) 4.000000 0.000000
D( 4) 2.000000 0.000000
D( 5) 3.000000 0.000000
D( 6) 4.000000 0.000000
D( 7) 2.000000 0.000000
D( 8) 3.000000 0.000000
D( 9) 4.000000 0.000000
D( 10) 5.000000 0.000000
Y( 1) 1.000000 2.000000
Y( 2) 0.000000 -17.00000
Y( 3) 1.000000 4.000000
Y( 4) 1.000000 2.000000
Y( 5) 0.000000 3.000000
Y( 6) 1.000000 4.000000
Y( 7) 1.000000 2.000000
Y( 8) 1.000000 3.000000
Y( 9) 0.000000 -56.00000
Y( 10) 0.000000 -55.00000
X( 1, 1) 0.000000 8.000000
X( 1, 2) 0.000000 13.00000
X( 1, 3) 0.000000 5.000000
X( 1, 4) 0.000000 13.00000
X( 1, 5) 0.000000 4.000000
X( 1, 6) 0.000000 16.00000
X( 1, 7) 0.000000 6.000000
X( 1, 8) 0.000000 16.00000
X( 1, 9) 0.000000 3.000000
X( 1, 10) 0.000000 4.000000
X( 1, 11) 1.000000 0.000000
X( 1, 12) 0.000000 0.000000
X( 1, 13) 1.000000 0.000000
X( 1, 14) 0.000000 8.000000
X( 1, 15) 0.000000 9.000000
X( 1, 16) 0.000000 15.00000
X( 1, 17) 0.000000 6.000000
X( 1, 18) 0.000000 6.000000
X( 1, 19) 0.000000 7.000000
X( 1, 20) 1.000000 0.000000
X( 2, 1) 0.000000 10.00000
X( 2, 2) 0.000000 16.00000
X( 2, 3) 0.000000 9.000000
X( 2, 4) 0.000000 11.00000
X( 2, 5) 0.000000 7.000000
X( 2, 6) 0.000000 12.00000
X( 2, 7) 0.000000 0.000000
X( 2, 8) 0.000000 18.00000
X( 2, 9) 0.000000 9.000000
X( 2, 10) 0.000000 13.00000
X( 2, 11) 0.000000 0.000000
X( 2, 12) 0.000000 12.00000
X( 2, 13) 0.000000 15.00000
X( 2, 14) 0.000000 18.00000
X( 2, 15) 0.000000 13.00000
X( 2, 16) 0.000000 15.00000
X( 2, 17) 0.000000 15.00000
X( 2, 18) 0.000000 9.000000
X( 2, 19) 0.000000 6.000000
X( 2, 20) 0.000000 5.000000
X( 3, 1) 0.000000 1.000000
X( 3, 2) 0.000000 9.000000
X( 3, 3) 0.000000 1.000000
X( 3, 4) 0.000000 16.00000
X( 3, 5) 0.000000 2.000000
X( 3, 6) 0.000000 16.00000
X( 3, 7) 0.000000 3.000000
X( 3, 8) 0.000000 10.00000
X( 3, 9) 0.000000 14.00000
X( 3, 10) 0.000000 8.000000
X( 3, 11) 0.000000 1.000000
X( 3, 12) 0.000000 2.000000
X( 3, 13) 0.000000 12.00000
X( 3, 14) 1.000000 0.000000
X( 3, 15) 0.000000 12.00000
X( 3, 16) 0.000000 7.000000
X( 3, 17) 0.000000 6.000000
X( 3, 18) 0.000000 7.000000
X( 3, 19) 1.000000 0.000000
X( 3, 20) 0.000000 10.00000
X( 4, 1) 0.000000 5.000000
X( 4, 2) 0.000000 3.000000
X( 4, 3) 1.000000 0.000000
X( 4, 4) 0.000000 7.000000
X( 4, 5) 0.000000 1.000000
X( 4, 6) 1.000000 0.000000
X( 4, 7) 1.000000 0.000000
X( 4, 8) 0.000000 12.00000
X( 4, 9) 0.000000 5.000000
X( 4, 10) 0.000000 9.000000
X( 4, 11) 0.000000 6.000000
X( 4, 12) 0.000000 7.000000
X( 4, 13) 0.000000 2.000000
X( 4, 14) 0.000000 2.000000
X( 4, 15) 0.000000 5.000000
X( 4, 16) 0.000000 1.000000
X( 4, 17) 1.000000 0.000000
X( 4, 18) 0.000000 8.000000
X( 4, 19) 0.000000 10.00000
X( 4, 20) 0.000000 4.000000
X( 5, 1) 0.000000 6.000000
X( 5, 2) 0.000000 9.000000
X( 5, 3) 0.000000 19.00000
X( 5, 4) 0.000000 15.00000
X( 5, 5) 0.000000 5.000000
X( 5, 6) 0.000000 6.000000
X( 5, 7) 0.000000 8.000000
X( 5, 8) 0.000000 13.00000
X( 5, 9) 0.000000 8.000000
X( 5, 10) 0.000000 14.00000
X( 5, 11) 0.000000 10.00000
X( 5, 12) 0.000000 4.000000
X( 5, 13) 0.000000 8.000000
X( 5, 14) 0.000000 10.00000
X( 5, 15) 0.000000 1.000000
X( 5, 16) 0.000000 12.00000
X( 5, 17) 0.000000 4.000000
X( 5, 18) 0.000000 15.00000
X( 5, 19) 0.000000 3.000000
X( 5, 20) 0.000000 13.00000
X( 6, 1) 0.000000 14.00000
X( 6, 2) 0.000000 17.00000
X( 6, 3) 0.000000 13.00000
X( 6, 4) 0.000000 16.00000
X( 6, 5) 0.000000 9.000000
X( 6, 6) 0.000000 1.000000
X( 6, 7) 0.000000 15.00000
X( 6, 8) 0.000000 17.00000
X( 6, 9) 0.000000 12.00000
X( 6, 10) 1.000000 0.000000
X( 6, 11) 0.000000 7.000000
X( 6, 12) 0.000000 13.00000
X( 6, 13) 0.000000 2.000000
X( 6, 14) 0.000000 2.000000
X( 6, 15) 0.000000 9.000000
X( 6, 16) 0.000000 16.00000
X( 6, 17) 0.000000 18.00000
X( 6, 18) 1.000000 0.000000
X( 6, 19) 0.000000 17.00000
X( 6, 20) 0.000000 3.000000
X( 7, 1) 0.000000 14.00000
X( 7, 2) 0.000000 13.00000
X( 7, 3) 0.000000 19.00000
X( 7, 4) 0.000000 10.00000
X( 7, 5) 0.000000 4.000000
X( 7, 6) 0.000000 12.00000
X( 7, 7) 0.000000 15.00000
X( 7, 8) 1.000000 0.000000
X( 7, 9) 1.000000 0.000000
X( 7, 10) 0.000000 15.00000
X( 7, 11) 0.000000 3.000000
X( 7, 12) 1.000000 0.000000
X( 7, 13) 0.000000 2.000000
X( 7, 14) 0.000000 18.00000
X( 7, 15) 1.000000 0.000000
X( 7, 16) 0.000000 13.00000
X( 7, 17) 0.000000 4.000000
X( 7, 18) 0.000000 10.00000
X( 7, 19) 0.000000 14.00000
X( 7, 20) 0.000000 8.000000
X( 8, 1) 1.000000 0.000000
X( 8, 2) 1.000000 0.000000
X( 8, 3) 0.000000 4.000000
X( 8, 4) 1.000000 0.000000
X( 8, 5) 1.000000 0.000000
X( 8, 6) 0.000000 2.000000
X( 8, 7) 0.000000 11.00000
X( 8, 8) 0.000000 5.000000
X( 8, 9) 0.000000 6.000000
X( 8, 10) 0.000000 6.000000
X( 8, 11) 0.000000 9.000000
X( 8, 12) 0.000000 3.000000
X( 8, 13) 0.000000 1.000000
X( 8, 14) 0.000000 10.00000
X( 8, 15) 0.000000 3.000000
X( 8, 16) 1.000000 0.000000
X( 8, 17) 0.000000 15.00000
X( 8, 18) 0.000000 10.00000
X( 8, 19) 0.000000 8.000000
X( 8, 20) 0.000000 16.00000
X( 9, 1) 0.000000 20.00000
X( 9, 2) 0.000000 18.00000
X( 9, 3) 0.000000 22.00000
X( 9, 4) 0.000000 19.00000
X( 9, 5) 0.000000 6.000000
X( 9, 6) 0.000000 20.00000
X( 9, 7) 0.000000 6.000000
X( 9, 8) 0.000000 6.000000
X( 9, 9) 0.000000 19.00000
X( 9, 10) 0.000000 22.00000
X( 9, 11) 0.000000 9.000000
X( 9, 12) 0.000000 16.00000
X( 9, 13) 0.000000 0.000000
X( 9, 14) 0.000000 11.00000
X( 9, 15) 0.000000 9.000000
X( 9, 16) 0.000000 4.000000
X( 9, 17) 0.000000 9.000000
X( 9, 18) 0.000000 11.00000
X( 9, 19) 0.000000 17.00000
X( 9, 20) 0.000000 14.00000
X( 10, 1) 0.000000 8.000000
X( 10, 2) 0.000000 9.000000
X( 10, 3) 0.000000 19.00000
X( 10, 4) 0.000000 5.000000
X( 10, 5) 0.000000 13.00000
X( 10, 6) 0.000000 4.000000
X( 10, 7) 0.000000 17.00000
X( 10, 8) 0.000000 4.000000
X( 10, 9) 0.000000 15.00000
X( 10, 10) 0.000000 18.00000
X( 10, 11) 0.000000 7.000000
X( 10, 12) 0.000000 3.000000
X( 10, 13) 0.000000 0.000000
X( 10, 14) 0.000000 15.00000
X( 10, 15) 0.000000 11.00000
X( 10, 16) 0.000000 4.000000
X( 10, 17) 0.000000 8.000000
X( 10, 18) 0.000000 11.00000
X( 10, 19) 0.000000 11.00000
X( 10, 20) 0.000000 12.00000
C( 1, 1) 9.000000 0.000000
C( 1, 2) 14.00000 0.000000
C( 1, 3) 6.000000 0.000000
C( 1, 4) 15.00000 0.000000
C( 1, 5) 6.000000 0.000000
C( 1, 6) 19.00000 0.000000
C( 1, 7) 11.00000 0.000000
C( 1, 8) 19.00000 0.000000
C( 1, 9) 4.000000 0.000000
C( 1, 10) 5.000000 0.000000
C( 1, 11) 3.000000 0.000000
C( 1, 12) 6.000000 0.000000
C( 1, 13) 4.000000 0.000000
C( 1, 14) 10.00000 0.000000
C( 1, 15) 12.00000 0.000000
C( 1, 16) 19.00000 0.000000
C( 1, 17) 8.000000 0.000000
C( 1, 18) 7.000000 0.000000
C( 1, 19) 10.00000 0.000000
C( 1, 20) 4.000000 0.000000
C( 2, 1) 10.00000 0.000000
C( 2, 2) 16.00000 0.000000
C( 2, 3) 9.000000 0.000000
C( 2, 4) 12.00000 0.000000
C( 2, 5) 8.000000 0.000000
C( 2, 6) 14.00000 0.000000
C( 2, 7) 4.000000 0.000000
C( 2, 8) 20.00000 0.000000
C( 2, 9) 9.000000 0.000000
C( 2, 10) 13.00000 0.000000
C( 2, 11) 2.000000 0.000000
C( 2, 12) 17.00000 0.000000
C( 2, 13) 18.00000 0.000000
C( 2, 14) 19.00000 0.000000
C( 2, 15) 15.00000 0.000000
C( 2, 16) 18.00000 0.000000
C( 2, 17) 16.00000 0.000000
C( 2, 18) 9.000000 0.000000
C( 2, 19) 8.000000 0.000000
C( 2, 20) 8.000000 0.000000
C( 3, 1) 2.000000 0.000000
C( 3, 2) 10.00000 0.000000
C( 3, 3) 2.000000 0.000000
C( 3, 4) 18.00000 0.000000
C( 3, 5) 4.000000 0.000000
C( 3, 6) 19.00000 0.000000
C( 3, 7) 8.000000 0.000000
C( 3, 8) 13.00000 0.000000
C( 3, 9) 15.00000 0.000000
C( 3, 10) 9.000000 0.000000
C( 3, 11) 4.000000 0.000000
C( 3, 12) 8.000000 0.000000
C( 3, 13) 16.00000 0.000000
C( 3, 14) 2.000000 0.000000
C( 3, 15) 15.00000 0.000000
C( 3, 16) 11.00000 0.000000
C( 3, 17) 8.000000 0.000000
C( 3, 18) 8.000000 0.000000
C( 3, 19) 3.000000 0.000000
C( 3, 20) 14.00000 0.000000
C( 4, 1) 6.000000 0.000000
C( 4, 2) 4.000000 0.000000
C( 4, 3) 1.000000 0.000000
C( 4, 4) 9.000000 0.000000
C( 4, 5) 3.000000 0.000000
C( 4, 6) 3.000000 0.000000
C( 4, 7) 5.000000 0.000000
C( 4, 8) 15.00000 0.000000
C( 4, 9) 6.000000 0.000000
C( 4, 10) 10.00000 0.000000
C( 4, 11) 9.000000 0.000000
C( 4, 12) 13.00000 0.000000
C( 4, 13) 6.000000 0.000000
C( 4, 14) 4.000000 0.000000
C( 4, 15) 8.000000 0.000000
C( 4, 16) 5.000000 0.000000
C( 4, 17) 2.000000 0.000000
C( 4, 18) 9.000000 0.000000
C( 4, 19) 13.00000 0.000000
C( 4, 20) 8.000000 0.000000
C( 5, 1) 7.000000 0.000000
C( 5, 2) 10.00000 0.000000
C( 5, 3) 20.00000 0.000000
C( 5, 4) 17.00000 0.000000
C( 5, 5) 7.000000 0.000000
C( 5, 6) 9.000000 0.000000
C( 5, 7) 13.00000 0.000000
C( 5, 8) 16.00000 0.000000
C( 5, 9) 9.000000 0.000000
C( 5, 10) 15.00000 0.000000
C( 5, 11) 13.00000 0.000000
C( 5, 12) 10.00000 0.000000
C( 5, 13) 12.00000 0.000000
C( 5, 14) 12.00000 0.000000
C( 5, 15) 4.000000 0.000000
C( 5, 16) 16.00000 0.000000
C( 5, 17) 6.000000 0.000000
C( 5, 18) 16.00000 0.000000
C( 5, 19) 6.000000 0.000000
C( 5, 20) 17.00000 0.000000
C( 6, 1) 15.00000 0.000000
C( 6, 2) 18.00000 0.000000
C( 6, 3) 14.00000 0.000000
C( 6, 4) 18.00000 0.000000
C( 6, 5) 11.00000 0.000000
C( 6, 6) 4.000000 0.000000
C( 6, 7) 20.00000 0.000000
C( 6, 8) 20.00000 0.000000
C( 6, 9) 13.00000 0.000000
C( 6, 10) 1.000000 0.000000
C( 6, 11) 10.00000 0.000000
C( 6, 12) 19.00000 0.000000
C( 6, 13) 6.000000 0.000000
C( 6, 14) 4.000000 0.000000
C( 6, 15) 12.00000 0.000000
C( 6, 16) 20.00000 0.000000
C( 6, 17) 20.00000 0.000000
C( 6, 18) 1.000000 0.000000
C( 6, 19) 20.00000 0.000000
C( 6, 20) 7.000000 0.000000
C( 7, 1) 15.00000 0.000000
C( 7, 2) 14.00000 0.000000
C( 7, 3) 20.00000 0.000000
C( 7, 4) 12.00000 0.000000
C( 7, 5) 6.000000 0.000000
C( 7, 6) 15.00000 0.000000
C( 7, 7) 20.00000 0.000000
C( 7, 8) 3.000000 0.000000
C( 7, 9) 1.000000 0.000000
C( 7, 10) 16.00000 0.000000
C( 7, 11) 6.000000 0.000000
C( 7, 12) 6.000000 0.000000
C( 7, 13) 6.000000 0.000000
C( 7, 14) 20.00000 0.000000
C( 7, 15) 3.000000 0.000000
C( 7, 16) 17.00000 0.000000
C( 7, 17) 6.000000 0.000000
C( 7, 18) 11.00000 0.000000
C( 7, 19) 17.00000 0.000000
C( 7, 20) 12.00000 0.000000
C( 8, 1) 1.000000 0.000000
C( 8, 2) 1.000000 0.000000
C( 8, 3) 5.000000 0.000000
C( 8, 4) 2.000000 0.000000
C( 8, 5) 2.000000 0.000000
C( 8, 6) 5.000000 0.000000
C( 8, 7) 16.00000 0.000000
C( 8, 8) 8.000000 0.000000
C( 8, 9) 7.000000 0.000000
C( 8, 10) 7.000000 0.000000
C( 8, 11) 12.00000 0.000000
C( 8, 12) 9.000000 0.000000
C( 8, 13) 5.000000 0.000000
C( 8, 14) 12.00000 0.000000
C( 8, 15) 6.000000 0.000000
C( 8, 16) 4.000000 0.000000
C( 8, 17) 17.00000 0.000000
C( 8, 18) 11.00000 0.000000
C( 8, 19) 11.00000 0.000000
C( 8, 20) 20.00000 0.000000
C( 9, 1) 18.00000 0.000000
C( 9, 2) 16.00000 0.000000
C( 9, 3) 20.00000 0.000000
C( 9, 4) 18.00000 0.000000
C( 9, 5) 5.000000 0.000000
C( 9, 6) 20.00000 0.000000
C( 9, 7) 8.000000 0.000000
C( 9, 8) 6.000000 0.000000
C( 9, 9) 17.00000 0.000000
C( 9, 10) 20.00000 0.000000
C( 9, 11) 9.000000 0.000000
C( 9, 12) 19.00000 0.000000
C( 9, 13) 1.000000 0.000000
C( 9, 14) 10.00000 0.000000
C( 9, 15) 9.000000 0.000000
C( 9, 16) 5.000000 0.000000
C( 9, 17) 8.000000 0.000000
C( 9, 18) 9.000000 0.000000
C( 9, 19) 17.00000 0.000000
C( 9, 20) 15.00000 0.000000
C( 10, 1) 6.000000 0.000000
C( 10, 2) 7.000000 0.000000
C( 10, 3) 17.00000 0.000000
C( 10, 4) 4.000000 0.000000
C( 10, 5) 12.00000 0.000000
C( 10, 6) 4.000000 0.000000
C( 10, 7) 19.00000 0.000000
C( 10, 8) 4.000000 0.000000
C( 10, 9) 13.00000 0.000000
C( 10, 10) 16.00000 0.000000
C( 10, 11) 7.000000 0.000000
C( 10, 12) 6.000000 0.000000
C( 10, 13) 1.000000 0.000000
C( 10, 14) 14.00000 0.000000
C( 10, 15) 11.00000 0.000000
C( 10, 16) 5.000000 0.000000
C( 10, 17) 7.000000 0.000000
C( 10, 18) 9.000000 0.000000
C( 10, 19) 11.00000 0.000000
C( 10, 20) 13.00000 0.000000
Row Slack or Surplus Dual Price
1 69.00000 -1.000000
2 17.00000 0.000000
3 0.000000 1.000000
4 18.00000 0.000000
5 16.00000 0.000000
6 0.000000 0.000000
7 18.00000 0.000000
8 16.00000 0.000000
9 15.00000 0.000000
10 0.000000 3.000000
11 0.000000 3.000000
12 0.000000 -1.000000
13 0.000000 -1.000000
14 0.000000 -1.000000
15 0.000000 -2.000000
16 0.000000 -2.000000
17 0.000000 -3.000000
18 0.000000 -5.000000
19 0.000000 -3.000000
20 0.000000 -1.000000
21 0.000000 -1.000000
22 0.000000 -3.000000
23 0.000000 -6.000000
24 0.000000 -4.000000
25 0.000000 -2.000000
26 0.000000 -3.000000
27 0.000000 -4.000000
28 0.000000 -2.000000
29 0.000000 -1.000000
30 0.000000 -3.000000
31 0.000000 -4.000000