数学建模社区-数学中国

标题: 大侠们帮我看看这个程序有什么问题 [打印本页]

作者: 埃利门特    时间: 2011-10-28 15:15
标题: 大侠们帮我看看这个程序有什么问题
  1. model:
  2. sets:
  3. pn/x6,x7,x9/:x;
  4. on/u6..u14/:u;
  5. endsets
  6. @for(pn:@bin(x));
  7. @for(on:@bin(u));
  8. max=u6+u7+u8+u9+u10+u11+u12+u13+u14;
  9. x6>=u6;
  10. x7+x9>=u7;
  11. x7>=u8;
  12. x7+x9>=u9;
  13. x9>=u10;
  14. x6>=u11;
  15. x6>=u12;
  16. x6>=u13;
  17. x9>=u14;
  18. x6+x7+x9=2;
  19. end
  20. 我明明限制变量为二进制,可结果出来
  21. Variable           Value        Reduced Cost
  22. U6        2.000000            0.000000
  23. U7        0.000000            0.000000
  24. U8        0.000000            0.000000
  25. U9        0.000000            0.000000
  26. U10        0.000000            0.000000
  27. U11        2.000000            0.000000
  28. U12        2.000000            0.000000
  29. U13        2.000000            0.000000
  30. U14        0.000000            0.000000
  31. 应该是最后一条约束的问题,可要怎么改啊 求大侠们帮帮忙啊
复制代码

作者: qlb061    时间: 2011-10-30 21:04
结果并没有违反0-1约束!两个约束@for(pnbin(x));@for(onbin(u));只是限制x(x6),x(x7),x(x9)为0-1,同理u也一样。注意x6和x(x6)是不同的变量,事实上你的集合声明以及两个@for约束和下面的模型根本没有联系,所以删除仍然可以得到你的结果!
如果不明白,可以将模型展开:点击Lingo—>Generate—>Dispaly Model.


作者: shengshengchina    时间: 2011-10-30 23:57
哈哈,二楼正解,其实可以看得出,楼主是刚学的




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