数学建模社区-数学中国

标题: 请教各位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