数学建模社区-数学中国
标题: 请教各位lingo编程高手们,看下我的程序哪里有问题,不胜感激!!!急 [打印本页]
作者: 王群 时间: 2010-12-30 23:28
标题: 请教各位lingo编程高手们,看下我的程序哪里有问题,不胜感激!!!急
model:
sets:
factory/1..7/:a;
warhouse/1..4/:v,f,z,b;
customer/1..11/:c;
link1(factory,warhouse):m,x;
link2(warhouse,customer):n,y;
endsets
data:
a=130 24 82 60 1130 50 330;
c=96.42 353.2 174.19 102.6 51.67
282.9 230.5 53.4 198.1 77.00 85.7;
v=3 2 4 5;
f=4000 3000 2000 1000;
b=30000 2000 15000 10000;
m=0 228 203 434 334 120 280 228 0 361 244 102 151 210 280 210 483 162 123 330 0 334 102 472 133 0 281 123;
n=20 43 0 14 491 22 14 577 31 12 52
36 24 228 29 389 0 19 387 16 15 40
48 16 280 42 199 21 13 271 49 28 23
47 13 334 42 322 10 19 288 74 28 42;
enddata
min=@sum(warhouse(j):@sum(factory(i):m(i,j)*x(i,j)*z(j)))
+@sum(customer(k):@sum(warhouse(j):n(j,k)*y(j,k)*z(j)))
+@sum(warhouse(j):@sum(factory(i):v(j)*x(i,j)*z(j)))+@sum(warhouse(j):f(j)*z(j));
@for(factory(i):@sum(warhouse(j):x(i,j))<=a(i));
@for(warhouse(j):@sum(link2(j,k):y(j,k))=@sum(link1(i,j):x(i,j)));
@for(customer(k):@sum(warhouse(j):y(j,k))>=c(k));
@for(warhouse:@bin(Z));
@for(warhouse(j):@sum(factory(i):x(i,j))<=999999999*z(j));
@for(warhouse(j):@sum(factory(i):x(i,j))<=b(j));
作者: 刘益富 时间: 2010-12-30 23:37
看看先。。。。
作者: 王群 时间: 2010-12-31 00:56
ok 谢谢啊 
作者: madio 时间: 2010-12-31 08:02
程序没有问题,可以找到局部最优解!
Local optimal solution found.
Objective value: 201547.2
Objective bound: 201547.2
Infeasibilities: 0.4419576E-11
Extended solver steps: 15
Total solver iterations: 1844
Variable Value Reduced Cost
A( 1) 130.0000 0.000000
A( 2) 24.00000 0.000000
A( 3) 82.00000 0.000000
A( 4) 60.00000 0.000000
A( 5) 1130.000 0.000000
A( 6) 50.00000 0.000000
A( 7) 330.0000 0.000000
V( 1) 3.000000 0.000000
V( 2) 2.000000 0.000000
V( 3) 4.000000 0.000000
V( 4) 5.000000 0.000000
F( 1) 4000.000 0.000000
F( 2) 3000.000 0.000000
F( 3) 2000.000 0.000000
F( 4) 1000.000 0.000000
Z( 1) 1.000000 5861.340
Z( 2) 1.000000 7725.600
Z( 3) 1.000000 14555.20
Z( 4) 0.000000 -0.1399991E+12
B( 1) 30000.00 0.000000
B( 2) 2000.000 0.000000
B( 3) 15000.00 0.000000
B( 4) 10000.00 0.000000
C( 1) 96.42000 0.000000
C( 2) 353.2000 0.000000
C( 3) 174.1900 0.000000
C( 4) 102.6000 0.000000
C( 5) 51.67000 0.000000
C( 6) 282.9000 0.000000
C( 7) 230.5000 0.000000
C( 8) 53.40000 0.000000
C( 9) 198.1000 0.000000
C( 10) 77.00000 0.000000
C( 11) 85.70000 0.000000
M( 1, 1) 0.000000 0.000000
M( 1, 2) 228.0000 0.000000
M( 1, 3) 203.0000 0.000000
M( 1, 4) 434.0000 0.000000
M( 2, 1) 334.0000 0.000000
M( 2, 2) 120.0000 0.000000
M( 2, 3) 280.0000 0.000000
M( 2, 4) 228.0000 0.000000
M( 3, 1) 0.000000 0.000000
M( 3, 2) 361.0000 0.000000
M( 3, 3) 244.0000 0.000000
M( 3, 4) 102.0000 0.000000
M( 4, 1) 151.0000 0.000000
M( 4, 2) 210.0000 0.000000
M( 4, 3) 280.0000 0.000000
M( 4, 4) 210.0000 0.000000
M( 5, 1) 483.0000 0.000000
M( 5, 2) 162.0000 0.000000
M( 5, 3) 123.0000 0.000000
M( 5, 4) 330.0000 0.000000
M( 6, 1) 0.000000 0.000000
M( 6, 2) 334.0000 0.000000
M( 6, 3) 102.0000 0.000000
M( 6, 4) 472.0000 0.000000
M( 7, 1) 133.0000 0.000000
M( 7, 2) 0.000000 0.000000
M( 7, 3) 281.0000 0.000000
M( 7, 4) 123.0000 0.000000
X( 1, 1) 130.0000 0.000000
X( 1, 2) 0.000000 228.9997
X( 1, 3) 0.000000 202.9998
X( 1, 4) 0.000000 123.0000
X( 2, 1) 0.000000 212.9998
X( 2, 2) 24.00000 0.000000
X( 2, 3) 0.000000 158.9999
X( 2, 4) 0.000000 1.999951
X( 3, 1) 82.00000 0.000000
X( 3, 2) 0.000000 361.9996
X( 3, 3) 0.000000 243.9998
X( 3, 4) 0.000000 122.9997
X( 4, 1) 60.00000 28.00007
X( 4, 2) 0.000000 87.99998
X( 4, 3) 0.000000 157.0000
X( 4, 4) 0.000000 0.000000
X( 5, 1) 0.000000 359.9996
X( 5, 2) 0.000000 39.99990
X( 5, 3) 1029.680 0.000000
X( 5, 4) 0.000000 0.000000
X( 6, 1) 50.00000 0.000000
X( 6, 2) 0.000000 334.9996
X( 6, 3) 0.000000 101.9999
X( 6, 4) 0.000000 123.0000
X( 7, 1) 0.000000 131.9999
X( 7, 2) 330.0000 0.000000
X( 7, 3) 0.000000 279.9998
X( 7, 4) 0.000000 121.9997
N( 1, 1) 20.00000 0.000000
N( 1, 2) 43.00000 0.000000
N( 1, 3) 0.000000 0.000000
N( 1, 4) 14.00000 0.000000
N( 1, 5) 491.0000 0.000000
N( 1, 6) 22.00000 0.000000
N( 1, 7) 14.00000 0.000000
N( 1, 8) 577.0000 0.000000
N( 1, 9) 31.00000 0.000000
N( 1, 10) 12.00000 0.000000
N( 1, 11) 52.00000 0.000000
N( 2, 1) 36.00000 0.000000
N( 2, 2) 24.00000 0.000000
N( 2, 3) 228.0000 0.000000
N( 2, 4) 29.00000 0.000000
N( 2, 5) 389.0000 0.000000
N( 2, 6) 0.000000 0.000000
N( 2, 7) 19.00000 0.000000
N( 2, 8) 387.0000 0.000000
N( 2, 9) 16.00000 0.000000
N( 2, 10) 15.00000 0.000000
N( 2, 11) 40.00000 0.000000
N( 3, 1) 48.00000 0.000000
N( 3, 2) 16.00000 0.000000
N( 3, 3) 280.0000 0.000000
N( 3, 4) 42.00000 0.000000
N( 3, 5) 199.0000 0.000000
N( 3, 6) 21.00000 0.000000
N( 3, 7) 13.00000 0.000000
N( 3, 8) 271.0000 0.000000
N( 3, 9) 49.00000 0.000000
N( 3, 10) 28.00000 0.000000
N( 3, 11) 23.00000 0.000000
N( 4, 1) 47.00000 0.000000
N( 4, 2) 13.00000 0.000000
N( 4, 3) 334.0000 0.000000
N( 4, 4) 42.00000 0.000000
N( 4, 5) 322.0000 0.000000
N( 4, 6) 10.00000 0.000000
N( 4, 7) 19.00000 0.000000
N( 4, 8) 288.0000 0.000000
N( 4, 9) 74.00000 0.000000
N( 4, 10) 28.00000 0.000000
N( 4, 11) 42.00000 0.000000
Y( 1, 1) 96.42000 5.999989
Y( 1, 2) 0.000000 29.00000
Y( 1, 3) 174.1900 0.000000
Y( 1, 4) 51.39000 0.000000
Y( 1, 5) 0.000000 476.9992
Y( 1, 6) 0.000000 23.99994
Y( 1, 7) 0.000000 0.2300000E-04
Y( 1, 8) 0.000000 562.9992
Y( 1, 9) 0.000000 16.99995
Y( 1, 10) 0.000000 0.000000
Y( 1, 11) 0.000000 37.99996
Y( 2, 1) 0.000000 20.00001
Y( 2, 2) 0.000000 8.000053
Y( 2, 3) 0.000000 225.9998
Y( 2, 4) 0.000000 13.00002
Y( 2, 5) 0.000000 372.9994
Y( 2, 6) 155.9000 0.000000
Y( 2, 7) 0.000000 3.000052
Y( 2, 8) 0.000000 370.9994
Y( 2, 9) 198.1000 0.000000
Y( 2, 10) 0.000000 1.000031
Y( 2, 11) 0.000000 24.00001
Y( 3, 1) 0.000000 34.99994
Y( 3, 2) 353.2000 3.000003
Y( 3, 3) 0.000000 280.9997
Y( 3, 4) 51.21000 28.99995
Y( 3, 5) 51.67000 185.9995
Y( 3, 6) 127.0000 23.99992
Y( 3, 7) 230.5000 0.000000
Y( 3, 8) 53.40000 257.9995
Y( 3, 9) 0.000000 35.99991
Y( 3, 10) 77.00000 16.99996
Y( 3, 11) 85.70000 9.999967
Y( 4, 1) 0.000000 0.000000
Y( 4, 2) 0.000000 0.000000
Y( 4, 3) 0.000000 14.00028
Y( 4, 4) 0.000000 0.000000
Y( 4, 5) 0.000000 0.000000
Y( 4, 6) 0.000000 15.99992
Y( 4, 7) 0.000000 0.000000
Y( 4, 8) 0.000000 0.000000
Y( 4, 9) 0.000000 0.000000
Y( 4, 10) 0.000000 1.999984
Y( 4, 11) 0.000000 0.000000
Row Slack or Surplus Dual Price
1 201547.2 -1.000000
2 0.000000 122.9999
3 0.000000 2.000053
4 0.000000 122.9999
5 0.000000 0.1200000E-03
6 100.3200 0.000000
7 0.000000 122.9999
8 0.000000 121.9999
9 0.000000 125.9999
10 0.000000 123.9999
11 0.000000 126.9999
12 0.000000 139.9998
13 0.000000 -139.9999
14 0.000000 -139.9999
15 0.000000 -125.9999
16 0.000000 -139.9999
17 0.000000 -140.0002
18 0.000000 -123.9999
19 0.000000 -139.9999
20 0.000000 -140.0001
21 0.000000 -139.9999
22 0.000000 -137.9999
23 0.000000 -139.9999
24 0.9999997E+09 0.000000
25 0.9999996E+09 0.000000
26 0.9999990E+09 0.000000
27 0.000000 139.9995
28 29678.00 0.000000
29 1646.000 0.000000
30 13970.32 0.000000
31 10000.00 0.000000
作者: 王群 时间: 2010-12-31 11:16
嗯 谢谢这位仁兄的解答,这个结果我在lingo11.0里面也运行出来过,你算的迭代次数是1844( Total solver iterations: 1844),但是你发现没有多运行几次他的迭代次数是在变化的,我运行的是Total solver iterations: 1941),还有(Total solver iterations: 1746) 这是怎么回事呢???????
还有我这个程序在lingo9.0运行不出来。???
作者: 王群 时间: 2010-12-31 11:19
还有个问题想请教,帮忙看下这个程序,我始终都找不到解,目标规划的,谢谢啦!!!
sets:
Level/1..4/: P, z, Goal;
S_Con_Num/1..10/: dplus, dminus;
Plant /1..3/: a;
Customer /1..4/: b;
Routes(Plant, Customer): c, x;
endsets
data:
P= ? ? ? ?;
Goal = ? ? ? 0;
a = 100 150 120;
b = 100 100 100 100;
c = 7 9 12 5
6 8 15 5
12 6 9 7;
enddata
min=@sum(Level: P * z);
z(1) = dminus(1)+dminus(2)+dminus(3)+dminus(4);
z(2) = dminus(5)+dminus(6)+dminus(7)+dminus(8);
z(3) = dplus(9);
z(4) = dplus(10);
@for(Plant(i):
@sum(Customer(j): x(i,j)) <= a(i));
@for(Customer(j):
@sum(Plant(i): x(i,j))+dminus(j)-dplus(j)=0.8*b(j);
@sum(Plant(i): x(i,j))+dminus(4+j)-dplus(4+j)=b(j);
);
@sum(Routes: c*x)+dminus(9)-dplus(9)=2673;
@sum(Routes: c*x)+dminus(10)-dplus(10)=2430;
@for(Level(i)|i #lt# @size(Level):
@bnd(0,z(i),Goal(i));
作者: 王群 时间: 2010-12-31 11:20
sets:
Level/1..4/: P, z, Goal;
S_Con_Num/1..10/: dplus, dminus;
Plant /1..3/: a;
Customer /1..4/: b;
Routes(Plant, Customer): c, x;
endsets
data:
P= ? ? ? ?;
Goal = ? ? ? 0;
a = 100 150 120;
b = 100 100 100 100;
c = 7 9 12 5
6 8 15 5
12 6 9 7;
enddata
min=@sum(Level: P * z);
z(1) = dminus(1)+dminus(2)+dminus(3)+dminus(4);
z(2) = dminus(5)+dminus(6)+dminus(7)+dminus(8);
z(3) = dplus(9);
z(4) = dplus(10);
@for(Plant(i):
@sum(Customer(j): x(i,j)) <= a(i));
@for(Customer(j):
@sum(Plant(i): x(i,j))+dminus(j)-dplus(j)=0.8*b(j);
@sum(Plant(i): x(i,j))+dminus(4+j)-dplus(4+j)=b(j);
);
@sum(Routes: c*x)+dminus(9)-dplus(9)=2673;
@sum(Routes: c*x)+dminus(10)-dplus(10)=2430;
@for(Level(i)|i #lt# @size(Level):
@bnd(0,z(i),Goal(i));
);
作者: tiant0928 时间: 2011-1-10 11:17
如何保证求解结果是全局最优解吗?qq:173268297,欢迎大家交流
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) |
Powered by Discuz! X2.5 |