建模最后就是知道结果套过程。。
线性规划
model:
title 求解线性规划;
max=2*x1+3*x2;
2*x1+x2<8;
4*x1+3*x2<15;
end
结果:
Global optimal solution found.
Objective value: 15.00000
Infeasibilities: 0.000000
Total solver iterations: 1
Model Class: LP
Total variables: 2
Nonlinear variables: 0
Integer variables: 0
Total constraints: 3
Nonlinear constraints: 0
Total nonzeros: 6
Nonlinear nonzeros: 0
Model Title: 求解线性规划
Variable Value Reduced Cost
X1 0.000000 2.000000
X2 5.000000 0.000000
Row Slack or Surplus Dual Price
1 15.00000 1.000000
2 3.000000 0.000000
3 0.000000 1.000000
当x1=0,x2=5时, 取最大值。
二次规划
model:
title 求解二次规划;
[opt]max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;
[st1]x1+x2<100;
[st2]x1<2*x2;
@gin(x1);@gin(x2);
end
Global optimal solution found.
Objective value: 11077.50
Objective bound: 11077.50
Infeasibilities: 0.000000
Extended solver steps: 4
Total solver iterations: 583
Model Class: PINLP
Total variables: 2
Nonlinear variables: 2
Integer variables: 2
Total constraints: 3
Nonlinear constraints: 1
Total nonzeros: 6
Nonlinear nonzeros: 2
Model Title: 求解二次规划
Variable Value Reduced Cost
X1 35.00000 -8.500002
X2 65.00000 -6.500004
Row Slack or Surplus Dual Price
OPT 11077.50 1.000000
ST1 0.000000 0.000000
ST2 95.00000 0.000000
下方state是全局最优解,如果是local则是局部最优,那么此时需要在options里面勾选Use Global Solver 。
集合段
50件商品供顾客选择,商品i占用空间为 ,价值为 ,车得容量为1000,怎么选择价值最大?
1.一种物品只能选一件,选或不选,利用01标致变量,放进车的体积加起来。
model:
title 购物;
sets:
s/1..50/:w,v,x;
endsets
data:
V= 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115,
110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60,
58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1;
W=80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35,32,
25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1;
enddata
max=@sum(s(i):v(i)*x(i));
@sum(s(i):w(i)*x(i))<1000;
@for(s(i):@bin(x(i)));
end
Global optimal solution found.
Objective value: 3103.000
Objective bound: 3103.000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 0
Model Class: PILP
Total variables: 50
Nonlinear variables: 0
Integer variables: 50
Total constraints: 2
Nonlinear constraints: 0
Total nonzeros: 100
Nonlinear nonzeros: 0
Model Title: 购物
Variable Value Reduced Cost
W( 1) 80.00000 0.000000
W( 2) 82.00000 0.000000
W( 3) 85.00000 0.000000
W( 4) 70.00000 0.000000
W( 5) 72.00000 0.000000
W( 6) 70.00000 0.000000
W( 7) 66.00000 0.000000
W( 8) 50.00000 0.000000
W( 9) 55.00000 0.000000
W( 10) 25.00000 0.000000
W( 11) 50.00000 0.000000
W( 12) 55.00000 0.000000
W( 13) 40.00000 0.000000
W( 14) 48.00000 0.000000
W( 15) 50.00000 0.000000
W( 16) 32.00000 0.000000
W( 17) 22.00000 0.000000
W( 18) 60.00000 0.000000
W( 19) 30.00000 0.000000
W( 20) 32.00000 0.000000
W( 21) 40.00000 0.000000
W( 22) 38.00000 0.000000
W( 23) 35.00000 0.000000
W( 24) 32.00000 0.000000
W( 25) 25.00000 0.000000
W( 26) 28.00000 0.000000
W( 27) 30.00000 0.000000
W( 28) 22.00000 0.000000
W( 29) 50.00000 0.000000
W( 30) 30.00000 0.000000
W( 31) 45.00000 0.000000
W( 32) 30.00000 0.000000
W( 33) 60.00000 0.000000
W( 34) 50.00000 0.000000
W( 35) 20.00000 0.000000
W( 36) 65.00000 0.000000
W( 37) 20.00000 0.000000
W( 38) 25.00000 0.000000
W( 39) 30.00000 0.000000
W( 40) 10.00000 0.000000
W( 41) 20.00000 0.000000
W( 42) 25.00000 0.000000
W( 43) 15.00000 0.000000
W( 44) 10.00000 0.000000
W( 45) 10.00000 0.000000
W( 46) 10.00000 0.000000
W( 47) 4.000000 0.000000
W( 48) 4.000000 0.000000
W( 49) 2.000000 0.000000
W( 50) 1.000000 0.000000
V( 1) 220.0000 0.000000
V( 2) 208.0000 0.000000
V( 3) 198.0000 0.000000
V( 4) 192.0000 0.000000
V( 5) 180.0000 0.000000
V( 6) 180.0000 0.000000
V( 7) 165.0000 0.000000
V( 8) 162.0000 0.000000
V( 9) 160.0000 0.000000
V( 10) 158.0000 0.000000
V( 11) 155.0000 0.000000
V( 12) 130.0000 0.000000
V( 13) 125.0000 0.000000
V( 14) 122.0000 0.000000
V( 15) 120.0000 0.000000
V( 16) 118.0000 0.000000
V( 17) 115.0000 0.000000
V( 18) 110.0000 0.000000
V( 19) 105.0000 0.000000
V( 20) 101.0000 0.000000
V( 21) 100.0000 0.000000
V( 22) 100.0000 0.000000
V( 23) 98.00000 0.000000
V( 24) 96.00000 0.000000
V( 25) 95.00000 0.000000
V( 26) 90.00000 0.000000
V( 27) 88.00000 0.000000
V( 28) 82.00000 0.000000
V( 29) 80.00000 0.000000
V( 30) 77.00000 0.000000
V( 31) 75.00000 0.000000
V( 32) 73.00000 0.000000
V( 33) 72.00000 0.000000
V( 34) 70.00000 0.000000
V( 35) 69.00000 0.000000
V( 36) 66.00000 0.000000
V( 37) 65.00000 0.000000
V( 38) 63.00000 0.000000
V( 39) 60.00000 0.000000
V( 40) 58.00000 0.000000
V( 41) 56.00000 0.000000
V( 42) 50.00000 0.000000
V( 43) 30.00000 0.000000
V( 44) 20.00000 0.000000
V( 45) 15.00000 0.000000
V( 46) 10.00000 0.000000
V( 47) 8.000000 0.000000
V( 48) 5.000000 0.000000
V( 49) 3.000000 0.000000
V( 50) 1.000000 0.000000
X( 1) 1.000000 -220.0000
X( 2) 1.000000 -208.0000
X( 3) 0.000000 -198.0000
X( 4) 1.000000 -192.0000
X( 5) 0.000000 -180.0000
X( 6) 1.000000 -180.0000
X( 7) 0.000000 -165.0000
X( 8) 1.000000 -162.0000
X( 9) 1.000000 -160.0000
X( 10) 1.000000 -158.0000
X( 11) 1.000000 -155.0000
X( 12) 0.000000 -130.0000
X( 13) 1.000000 -125.0000
X( 14) 1.000000 -122.0000
X( 15) 0.000000 -120.0000
X( 16) 1.000000 -118.0000
X( 17) 1.000000 -115.0000
X( 18) 0.000000 -110.0000
X( 19) 1.000000 -105.0000
X( 20) 1.000000 -101.0000
X( 21) 0.000000 -100.0000
X( 22) 1.000000 -100.0000
X( 23) 1.000000 -98.00000
X( 24) 1.000000 -96.00000
X( 25) 1.000000 -95.00000
X( 26) 1.000000 -90.00000
X( 27) 1.000000 -88.00000
X( 28) 1.000000 -82.00000
X( 29) 0.000000 -80.00000
X( 30) 1.000000 -77.00000
X( 31) 0.000000 -75.00000
X( 32) 0.000000 -73.00000
X( 33) 0.000000 -72.00000
X( 34) 0.000000 -70.00000
X( 35) 1.000000 -69.00000
X( 36) 0.000000 -66.00000
X( 37) 1.000000 -65.00000
X( 38) 0.000000 -63.00000
X( 39) 0.000000 -60.00000
X( 40) 1.000000 -58.00000
X( 41) 1.000000 -56.00000
X( 42) 0.000000 -50.00000
X( 43) 0.000000 -30.00000
X( 44) 0.000000 -20.00000
X( 45) 0.000000 -15.00000
X( 46) 0.000000 -10.00000
X( 47) 1.000000 -8.000000
X( 48) 0.000000 -5.000000
X( 49) 0.000000 -3.000000
X( 50) 0.000000 -1.000000
Row Slack or Surplus Dual Price
1 3103.000 1.000000
2 0.000000 0.000000
2.一种物品可以选多件。利用整数变量。
model:
title 购物;
sets:
s/1..50/:w,v,x;
endsets
data:
V= 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115,
110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60,
58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1;
W=80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35,32,
25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1;
enddata
max=@sum(s(i):v(i)*x(i));
@sum(s(i):w(i)*x(i))<1000;
@for(s(i):@gin(x(i)));
end
Global optimal solution found.
Objective value: 6320.000
Objective bound: 6320.000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 0
Model Class: PILP
Total variables: 50
Nonlinear variables: 0
Integer variables: 50
Total constraints: 2
Nonlinear constraints: 0
Total nonzeros: 100
Nonlinear nonzeros: 0
Model Title: 购物
Variable Value Reduced Cost
W( 1) 80.00000 0.000000
W( 2) 82.00000 0.000000
W( 3) 85.00000 0.000000
W( 4) 70.00000 0.000000
W( 5) 72.00000 0.000000
W( 6) 70.00000 0.000000
W( 7) 66.00000 0.000000
W( 8) 50.00000 0.000000
W( 9) 55.00000 0.000000
W( 10) 25.00000 0.000000
W( 11) 50.00000 0.000000
W( 12) 55.00000 0.000000
W( 13) 40.00000 0.000000
W( 14) 48.00000 0.000000
W( 15) 50.00000 0.000000
W( 16) 32.00000 0.000000
W( 17) 22.00000 0.000000
W( 18) 60.00000 0.000000
W( 19) 30.00000 0.000000
W( 20) 32.00000 0.000000
W( 21) 40.00000 0.000000
W( 22) 38.00000 0.000000
W( 23) 35.00000 0.000000
W( 24) 32.00000 0.000000
W( 25) 25.00000 0.000000
W( 26) 28.00000 0.000000
W( 27) 30.00000 0.000000
W( 28) 22.00000 0.000000
W( 29) 50.00000 0.000000
W( 30) 30.00000 0.000000
W( 31) 45.00000 0.000000
W( 32) 30.00000 0.000000
W( 33) 60.00000 0.000000
W( 34) 50.00000 0.000000
W( 35) 20.00000 0.000000
W( 36) 65.00000 0.000000
W( 37) 20.00000 0.000000
W( 38) 25.00000 0.000000
W( 39) 30.00000 0.000000
W( 40) 10.00000 0.000000
W( 41) 20.00000 0.000000
W( 42) 25.00000 0.000000
W( 43) 15.00000 0.000000
W( 44) 10.00000 0.000000
W( 45) 10.00000 0.000000
W( 46) 10.00000 0.000000
W( 47) 4.000000 0.000000
W( 48) 4.000000 0.000000
W( 49) 2.000000 0.000000
W( 50) 1.000000 0.000000
V( 1) 220.0000 0.000000
V( 2) 208.0000 0.000000
V( 3) 198.0000 0.000000
V( 4) 192.0000 0.000000
V( 5) 180.0000 0.000000
V( 6) 180.0000 0.000000
V( 7) 165.0000 0.000000
V( 8) 162.0000 0.000000
V( 9) 160.0000 0.000000
V( 10) 158.0000 0.000000
V( 11) 155.0000 0.000000
V( 12) 130.0000 0.000000
V( 13) 125.0000 0.000000
V( 14) 122.0000 0.000000
V( 15) 120.0000 0.000000
V( 16) 118.0000 0.000000
V( 17) 115.0000 0.000000
V( 18) 110.0000 0.000000
V( 19) 105.0000 0.000000
V( 20) 101.0000 0.000000
V( 21) 100.0000 0.000000
V( 22) 100.0000 0.000000
V( 23) 98.00000 0.000000
V( 24) 96.00000 0.000000
V( 25) 95.00000 0.000000
V( 26) 90.00000 0.000000
V( 27) 88.00000 0.000000
V( 28) 82.00000 0.000000
V( 29) 80.00000 0.000000
V( 30) 77.00000 0.000000
V( 31) 75.00000 0.000000
V( 32) 73.00000 0.000000
V( 33) 72.00000 0.000000
V( 34) 70.00000 0.000000
V( 35) 69.00000 0.000000
V( 36) 66.00000 0.000000
V( 37) 65.00000 0.000000
V( 38) 63.00000 0.000000
V( 39) 60.00000 0.000000
V( 40) 58.00000 0.000000
V( 41) 56.00000 0.000000
V( 42) 50.00000 0.000000
V( 43) 30.00000 0.000000
V( 44) 20.00000 0.000000
V( 45) 15.00000 0.000000
V( 46) 10.00000 0.000000
V( 47) 8.000000 0.000000
V( 48) 5.000000 0.000000
V( 49) 3.000000 0.000000
V( 50) 1.000000 0.000000
X( 1) 0.000000 -220.0000
X( 2) 0.000000 -208.0000
X( 3) 0.000000 -198.0000
X( 4) 0.000000 -192.0000
X( 5) 0.000000 -180.0000
X( 6) 0.000000 -180.0000
X( 7) 0.000000 -165.0000
X( 8) 0.000000 -162.0000
X( 9) 0.000000 -160.0000
X( 10) 40.00000 -158.0000
X( 11) 0.000000 -155.0000
X( 12) 0.000000 -130.0000
X( 13) 0.000000 -125.0000
X( 14) 0.000000 -122.0000
X( 15) 0.000000 -120.0000
X( 16) 0.000000 -118.0000
X( 17) 0.000000 -115.0000
X( 18) 0.000000 -110.0000
X( 19) 0.000000 -105.0000
X( 20) 0.000000 -101.0000
X( 21) 0.000000 -100.0000
X( 22) 0.000000 -100.0000
X( 23) 0.000000 -98.00000
X( 24) 0.000000 -96.00000
X( 25) 0.000000 -95.00000
X( 26) 0.000000 -90.00000
X( 27) 0.000000 -88.00000
X( 28) 0.000000 -82.00000
X( 29) 0.000000 -80.00000
X( 30) 0.000000 -77.00000
X( 31) 0.000000 -75.00000
X( 32) 0.000000 -73.00000
X( 33) 0.000000 -72.00000
X( 34) 0.000000 -70.00000
X( 35) 0.000000 -69.00000
X( 36) 0.000000 -66.00000
X( 37) 0.000000 -65.00000
X( 38) 0.000000 -63.00000
X( 39) 0.000000 -60.00000
X( 40) 0.000000 -58.00000
X( 41) 0.000000 -56.00000
X( 42) 0.000000 -50.00000
X( 43) 0.000000 -30.00000
X( 44) 0.000000 -20.00000
X( 45) 0.000000 -15.00000
X( 46) 0.000000 -10.00000
X( 47) 0.000000 -8.000000
X( 48) 0.000000 -5.000000
X( 49) 0.000000 -3.000000
X( 50) 0.000000 -1.000000
Row Slack or Surplus Dual Price
1 6320.000 1.000000
2 0.000000 0.000000