bill8341 发表于 2007-9-8 22:30:15

请问lingo中如何表示这样的约束?

变量x(i),   或者等于0,或者大于400

qingquan1 发表于 2007-9-9 11:32:03

x(i)=@if(x(i)#gt#400,400,0)

shao396450556 发表于 2007-9-10 20:19:46

小伙子你知道01函数吧?扩大400倍就好了!:)

shao396450556 发表于 2007-9-10 20:23:56

另一种方法

首先先定义一个和x(i)一样的函数y(i)
x(i)=400*y(i)
@bin(y)

libicong00 发表于 2007-9-11 07:10:12

上面写的都错了x(i)=@if(x(i)#gt#400,400,0),想法很好,但是表示错误,后面两位的意识是一样的。正确的应该是:
@for(some(i):x(i)=0#or#x(i)>400);但是#or#我没见过用在非条件限制器中,这个值得疑问。用if的朋友可以改成:
c>400;
x=@if(x=0,0,c);但是我还是不会验证。但是后面这两位明显把意思理解成了x要么等于0要么等于400

bill8341 发表于 2007-9-12 22:03:38

非常感谢上面的。

还有个问题:y是一个二维数组:YS(GCs,GLs): y;   下面我用y(I,J)来表示
现在想表示对每一个I,将所有的J相加,得到的结果,或者等于0,或者大于400

我写了两个,但都有错,我实在不知道该如何来修改了,谢谢大家。

@for (GCs(I): @sum(GLs(J) : Y(I,J)) = 0 #OR# @sum(GLs(J) : Y(I,J)) > 400);
错误是:Too many inequality or equality relations.

@for (GCs(I): @sum(GLs(J) : Y(I,J)) = 0 #OR# > 400);
这个的错误是:Invalid input. A syntax error has occurred.

zhutanchao 发表于 2007-9-14 23:48:49

正确的是@for(sets(i):x(i)÷(x(i)-400)>=0);
页: [1]
查看完整版本: 请问lingo中如何表示这样的约束?