数学建模社区-数学中国

标题: 求大神帮我看看这个程序问题出在哪 [打印本页]

作者: lyfsky    时间: 2017-3-16 22:34
标题: 求大神帮我看看这个程序问题出在哪
model:
sets:
house/1,2,3/:m,v;
cargo/1,2,3,4/:p,q,c;
link(house,cargo):x;
endsets
data:
!每个货舱所能容纳的最大质量;
m=10,16,8;
!每个货舱所能容纳的最大体积;
v=6800,8700,5300;
!每种货物的质量;
p=18,15,23,12;
!每种货物的体积(m^3*t^-1);
q=480,650,580,390;
!每种货物的利润;
c=3100,3800,3500,2850;
enddata
!目标;
max=@sum(link(i,j):x(i,j)*c(j));
!约束条件;
@for(house(i):@sum(cargo(j):x(i,j)/m(i))=@sum(cargo(j):x(i+1,j)/m(i+1)));
@for(house(i):@sum(cargo(j): x(i,j)<=m(i));
@for(house(i):@sum(cargo(j):x(i,j)*q(j)<=v(i)));
@for(cargo(j):@sum(house(i):x(i,j)<=p(j)));



作者: liwenhui    时间: 2017-3-17 09:28
这样就可以了:
  1. model:
  2. sets:
  3. house/1,2,3/:m,v;
  4. cargo/1,2,3,4/:p,q,c;
  5. link(house,cargo):x;
  6. endsets
  7. data:
  8. !每个货舱所能容纳的最大质量;
  9. m=10,16,8;
  10. !每个货舱所能容纳的最大体积;
  11. v=6800,8700,5300;
  12. !每种货物的质量;
  13. p=18,15,23,12;
  14. !每种货物的体积(m^3*t^-1);
  15. q=480,650,580,390;
  16. !每种货物的利润;
  17. c=3100,3800,3500,2850;
  18. enddata
  19. !目标;
  20. max=@sum(link(i,j):x(i,j)*c(j));
  21. !约束条件;
  22. @for(house(i):@sum(cargo(j):x(i,j)/m(i))=@sum(cargo(j)|i#le#2:x(i+1,j)/m(i+1)));
  23. @for(house(i):@sum(cargo(j): x(i,j))<=m(i));
  24. @for(house(i):@sum(cargo(j):x(i,j)*q(j))<=v(i));
  25. @for(cargo(j):@sum(house(i):x(i,j))<=p(j));
  26. end
复制代码
运行结果:
  1.   Global optimal solution found.
  2.   Objective value:                              0.000000
  3.   Infeasibilities:                              0.000000
  4.   Total solver iterations:                             0

  5.   Model Class:                                        LP

  6.   Total variables:                     12
  7.   Nonlinear variables:                  0
  8.   Integer variables:                    0

  9.   Total constraints:                   14
  10.   Nonlinear constraints:                0

  11.   Total nonzeros:                      68
  12.   Nonlinear nonzeros:                   0

  13.                                 Variable           Value        Reduced Cost
  14.                                    M( 1)        10.00000            0.000000
  15.                                    M( 2)        16.00000            0.000000
  16.                                    M( 3)        8.000000            0.000000
  17.                                    V( 1)        6800.000            0.000000
  18.                                    V( 2)        8700.000            0.000000
  19.                                    V( 3)        5300.000            0.000000
  20.                                    P( 1)        18.00000            0.000000
  21.                                    P( 2)        15.00000            0.000000
  22.                                    P( 3)        23.00000            0.000000
  23.                                    P( 4)        12.00000            0.000000
  24.                                    Q( 1)        480.0000            0.000000
  25.                                    Q( 2)        650.0000            0.000000
  26.                                    Q( 3)        580.0000            0.000000
  27.                                    Q( 4)        390.0000            0.000000
  28.                                    C( 1)        3100.000            0.000000
  29.                                    C( 2)        3800.000            0.000000
  30.                                    C( 3)        3500.000            0.000000
  31.                                    C( 4)        2850.000            0.000000
  32.                                 X( 1, 1)        0.000000            700.0000
  33.                                 X( 1, 2)        0.000000            0.000000
  34.                                 X( 1, 3)        0.000000            300.0000
  35.                                 X( 1, 4)        0.000000            950.0000
  36.                                 X( 2, 1)        0.000000            700.0000
  37.                                 X( 2, 2)        0.000000            0.000000
  38.                                 X( 2, 3)        0.000000            300.0000
  39.                                 X( 2, 4)        0.000000            950.0000
  40.                                 X( 3, 1)        0.000000            700.0000
  41.                                 X( 3, 2)        0.000000            0.000000
  42.                                 X( 3, 3)        0.000000            300.0000
  43.                                 X( 3, 4)        0.000000            950.0000

  44.                                      Row    Slack or Surplus      Dual Price
  45.                                        1        0.000000            1.000000
  46.                                        2        0.000000            38000.00
  47.                                        3        0.000000            98800.00
  48.                                        4        0.000000            129200.0
  49.                                        5        10.00000            0.000000
  50.                                        6        16.00000            0.000000
  51.                                        7        8.000000            0.000000
  52.                                        8        6800.000            0.000000
  53.                                        9        8700.000            0.000000
  54.                                       10        5300.000            0.000000
  55.                                       11        18.00000            0.000000
  56.                                       12        15.00000            0.000000
  57.                                       13        23.00000            0.000000
  58.                                       14        12.00000            0.000000
复制代码


作者: liwenhui    时间: 2017-3-17 09:31
好像解都是0。你再考虑一下你的模型吧。





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