数学建模社区-数学中国

标题: 多阶段生产的lingo问题 [打印本页]

作者: 1449128037    时间: 2014-5-5 17:32
标题: 多阶段生产的lingo问题
将一个lingo程序用集的形式改写之后结果有点儿出入,烦请大神帮忙看看,指正指正!
model:
sets :      
week_i/1..4/:x,y,z,a,b,c,m,n,q;
endsets
[OBJ]max=@Sum (week_i(i):350*y(i)+470*b(i)+610*n(i)-9*z(i)-10*c(i)-18*q(i));!目标函数;
@for(week_i(i):x(i)+a(i)<=120);
@for(week_i(i):m(i)<=48);
@for(week_i(i):10*x(i)+15*a(i)+20*m(i)<=2000);
z(1)=22+x(1)-y(1); z(2)=z(1)+x(2)-y(2);
z(3)=z(2)+x(3)-y(3);  z(4)=z(3)+x(4)-y(4);
c(1)=42+a(1)-b(1); c(2)=c(1)+a(2)-b(2);
c(3)=c(2)+a(3)-b(3);c(4)=c(3)+a(4)-b(4);
q(1)=36+m(1)-n(1); q(2)=q(1)+m(2)-n(2);
q(3)=q(2)+m(3)-n(3); q(4)=q(3)+m(4)-n(4);   
@for(week_i(i):@gin(x(i));@gin(y(i));@gin(z(i));@gin(a(i));@gin(b(i));
@gin(c(i));@gin(m(i));@gin(n(i));@gin(q(i)););
@for(week_i(i):@bnd(20,b(i),40););
@bnd(20,y(1),60);
@bnd(20,y(2),80);
@bnd(20,y(3),120);
@bnd(20,y(4),140);
@bnd(20,n(1),50);
@bnd(20,n(2),40);
@bnd(20,n(3),30);
@bnd(20,n(4),70);  
end
改写后的lingo程序: 2.xlsx (9.3 KB, 下载次数: 3)





MODEL:
SETS:
   constraints/A,B,MP/: pp;
   products / 1,2,3/:
    price,cost,s0;
       month/1..4/:;
   link11( constraints, products): lk;
   link2(month,products):x,d,s,dmin,dmax;
ENDSETS

DATA:
   pp = @OLE('\2.XLSX');
   price = @OLE('\2.XLSX');
   lk = @OLE('\2.XLSX');
   dmin = @OLE('\2.XLSX');
   dmax = @OLE('\2.XLSX');
    s0 = @OLE('\2.XLSX');
   cost = @OLE('\2.XLSX');
ENDDATA

MAX = @SUM( link2( k,j):
price( j) * d( k,j)-cost(j)*s(k,j));
@for(month(k):@for( constraints( i):
@SUM( products( j):
lk( i, j) *x(k,j)) <= pp(i)
));
@for(month(k)|k#gt#1:@for(products(j):s(k,j)=s(k-1,j)+x(k,j)-d(k,j)));
@for(products(j):s(1,j)=s0(j)+x(1,j)-d(1,j));
@for(link2(k,j):@bnd(dmin(k,j),d(k,j),dmax(k,j)););
@for(link2(k,j):@gin(x(k,j));@gin(s(k,j)););
END



作者: madio    时间: 2014-5-6 08:09
  1. MODEL:
  2. SETS:
  3.    constraints/A,B,MP/: pp;
  4.    products / 1,2,3/:
  5.     price,cost,s0;
  6.        month/1..4/:;
  7.    link11( constraints, products): lk;
  8.    link2(month,products):x,d,s,dmin,dmax;
  9. ENDSETS

  10. DATA:
  11.    pp = @OLE('2.XLSX');
  12.    price = @OLE('2.XLSX');
  13.    lk = @OLE('2.XLSX');
  14.    dmin = @OLE('2.XLSX');
  15.    dmax = @OLE('2.XLSX');
  16.     s0 = @OLE('2.XLSX');
  17.    cost = @OLE('2.XLSX');
  18. ENDDATA

  19. MAX = @SUM( link2( k,j):
  20. price( j) * d( k,j)-cost(j)*s(k,j));
  21. @for(month(k):@for( constraints( i):
  22. @SUM( products( j):
  23. lk( i, j) *x(k,j)) <= pp(i)
  24. ));
  25. @for(month(k)|k#gt#1:@for(products(j):s(k,j)=s(k-1,j)+x(k,j)-d(k,j)));
  26. @for(products(j):s(1,j)=s0(j)+x(1,j)-d(1,j));
  27. @for(link2(k,j):@bnd(dmin(k,j),d(k,j),dmax(k,j)););
  28. @for(link2(k,j):@gin(x(k,j));@gin(s(k,j)););
  29. END
复制代码
没有问题,就是链接xlsx文件的路径不对,把2.xlsx文件放到和代码同一个目录下,使用上面的程序就可以了运行出结果,而且是全局最优解。

Global optimal solution found.
  Objective value:                              301944.0
  Objective bound:                              301944.0
  Infeasibilities:                              0.000000
  Extended solver steps:                               0
  Total solver iterations:                            94

  Model Class:                                      MILP

  Total variables:                     36
  Nonlinear variables:                  0
  Integer variables:                   24

  Total constraints:                   25
  Nonlinear constraints:                0

  Total nonzeros:                      93
  Nonlinear nonzeros:                   0


                                Variable           Value        Reduced Cost
                                  PP( A)        120.0000            0.000000
                                  PP( B)        48.00000            0.000000
                                 PP( MP)        2000.000            0.000000
                               PRICE( 1)        350.0000            0.000000
                               PRICE( 2)        470.0000            0.000000
                               PRICE( 3)        610.0000            0.000000
                                COST( 1)        9.000000            0.000000
                                COST( 2)        10.00000            0.000000
                                COST( 3)        18.00000            0.000000
                                  S0( 1)        22.00000            0.000000
                                  S0( 2)        42.00000            0.000000
                                  S0( 3)        36.00000            0.000000
                               LK( A, 1)        1.000000            0.000000
                               LK( A, 2)        1.000000            0.000000
                               LK( A, 3)        0.000000            0.000000
                               LK( B, 1)        0.000000            0.000000
                               LK( B, 2)        0.000000            0.000000
                               LK( B, 3)        1.000000            0.000000
                              LK( MP, 1)        10.00000            0.000000
                              LK( MP, 2)        15.00000            0.000000
                              LK( MP, 3)        20.00000            0.000000
                                X( 1, 1)        18.00000           -350.0000
                                X( 1, 2)        100.0000           -470.0000
                                X( 1, 3)        16.00000           -610.0000
                                X( 2, 1)        40.00000           -350.0000
                                X( 2, 2)        56.00000           -470.0000
                                X( 2, 3)        38.00000           -610.0000
                                X( 3, 1)        40.00000           -350.0000
                                X( 3, 2)        80.00000           -470.0000
                                X( 3, 3)        20.00000           -610.0000
                                X( 4, 1)        40.00000           -350.0000
                                X( 4, 2)        80.00000           -470.0000
                                X( 4, 3)        20.00000           -610.0000
                                D( 1, 1)        40.00000            0.000000
                                D( 1, 2)        60.00000            0.000000
                                D( 1, 3)        50.00000            0.000000
                                D( 2, 1)        40.00000            0.000000
                                D( 2, 2)        80.00000            0.000000
                                D( 2, 3)        40.00000            0.000000
                                D( 3, 1)        40.00000            0.000000
                                D( 3, 2)        120.0000            0.000000
                                D( 3, 3)        20.00000            0.000000
                                D( 4, 1)        40.00000            0.000000
                                D( 4, 2)        98.00000            0.000000
                                D( 4, 3)        20.00000            0.000000
                                S( 1, 1)        0.000000            9.000000
                                S( 1, 2)        82.00000            10.00000
                                S( 1, 3)        2.000000            18.00000
                                S( 2, 1)        0.000000            9.000000
                                S( 2, 2)        58.00000            10.00000
                                S( 2, 3)        0.000000            18.00000
                                S( 3, 1)        0.000000            9.000000
                                S( 3, 2)        18.00000            10.00000
                                S( 3, 3)        0.000000            18.00000
                                S( 4, 1)        0.000000            359.0000
                                S( 4, 2)        0.000000            480.0000
                                S( 4, 3)        0.000000            628.0000
                             DMIN( 1, 1)        20.00000            0.000000
                             DMIN( 1, 2)        20.00000            0.000000
                             DMIN( 1, 3)        20.00000            0.000000
                             DMIN( 2, 1)        20.00000            0.000000
                             DMIN( 2, 2)        20.00000            0.000000
                             DMIN( 2, 3)        20.00000            0.000000
                             DMIN( 3, 1)        20.00000            0.000000
                             DMIN( 3, 2)        20.00000            0.000000
                             DMIN( 3, 3)        20.00000            0.000000
                             DMIN( 4, 1)        20.00000            0.000000
                             DMIN( 4, 2)        20.00000            0.000000
                             DMIN( 4, 3)        20.00000            0.000000
                             DMAX( 1, 1)        40.00000            0.000000
                             DMAX( 1, 2)        60.00000            0.000000
                             DMAX( 1, 3)        50.00000            0.000000
                             DMAX( 2, 1)        40.00000            0.000000
                             DMAX( 2, 2)        80.00000            0.000000
                             DMAX( 2, 3)        40.00000            0.000000
                             DMAX( 3, 1)        40.00000            0.000000
                             DMAX( 3, 2)        120.0000            0.000000
                             DMAX( 3, 3)        30.00000            0.000000
                             DMAX( 4, 1)        40.00000            0.000000
                             DMAX( 4, 2)        140.0000            0.000000
                             DMAX( 4, 3)        70.00000            0.000000

                                     Row    Slack or Surplus      Dual Price
                                       1        301944.0            1.000000
                                       2        2.000000            0.000000
                                       3        32.00000            0.000000
                                       4        0.000000            0.000000
                                       5        24.00000            0.000000
                                       6        10.00000            0.000000
                                       7        0.000000            0.000000
                                       8        0.000000            0.000000
                                       9        28.00000            0.000000
                                      10        0.000000            0.000000
                                      11        0.000000            0.000000
                                      12        28.00000            0.000000
                                      13        0.000000            0.000000
                                      14        0.000000            350.0000
                                      15        0.000000            470.0000
                                      16        0.000000            610.0000
                                      17        0.000000            350.0000
                                      18        0.000000            470.0000
                                      19        0.000000            610.0000
                                      20        0.000000            350.0000
                                      21        0.000000            470.0000
                                      22        0.000000            610.0000
                                      23        0.000000            350.0000
                                      24        0.000000            470.0000
                                      25        0.000000            610.0000






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5