数学建模社区-数学中国

标题: lingo求问 [打印本页]

作者: SeleneH    时间: 2014-8-21 22:30
标题: lingo求问
lingo如何限制条件使@SUM等于0或者2:
我是这么写的:@for(sender(i):(@sum(receiver(j):x(i,j))-2 )* @sum(receiver(j):x(i,j)));
但编译错误了..求大侠指导

作者: madio    时间: 2014-8-22 10:15
你这个是一个互补约束,要乘起来大于等于零吧,你没有右端的项
作者: SeleneH    时间: 2014-8-22 15:32
madio 发表于 2014-8-22 10:15
你这个是一个互补约束,要乘起来大于等于零吧,你没有右端的项

再请教一下:
sets:
!sender:始发点;
sender/1..6/;
!receiver:接受地点;
receiver/1..6/;
!time:消耗时间;
link(sender,receiver):time,x;
endsets
!目标函数;
min=@sum(link:time*x)/27;
!约束条件;
@for(link:@bin(x));
@for(receiver(j):@sum(sender(i):x(i,j))=1);
@for(sender(i):@sum(receiver(j):x(i,j))=2#or#@sum(receiver(j):x(i,j))=0);
data:
time=
5 64 36 77 35 32
40 8 18 99 56 32
60 144 4.5 66 21 8
80 112 12 5.5 56 24
90 128 30 22 7 4
80 144 12 66 7 4;

!probability:5/27 8/27 3/27 5.5/27 3.5/27 2/27;
enddata

应该怎么改呢?运行错误显示是说等式关系太多。

作者: madio    时间: 2014-8-23 09:14
  1. sets:
  2. !sender:始发点;
  3. sender/1..6/;
  4. !receiver:接受地点;
  5. receiver/1..6/;
  6. !time:消耗时间;
  7. link(sender,receiver):time,x;
  8. endsets
  9. !目标函数;
  10. min=@sum(link:time*x)/27;
  11. !约束条件;
  12. @for(link:@bin(x));
  13. @for(receiver(j):@sum(sender(i):x(i,j))=1);
  14. @for(sender(i):(@sum(receiver(j):x(i,j))-2)*@sum(receiver(j):x(i,j))=0);
  15. data:
  16. time=
  17. 5 64 36 77 35 32
  18. 40 8 18 99 56 32
  19. 60 144 4.5 66 21 8
  20. 80 112 12 5.5 56 24
  21. 90 128 30 22 7 4
  22. 80 144 12 66 7 4;

  23. !probability:5/27 8/27 3/27 5.5/27 3.5/27 2/27;
  24. enddata
复制代码





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