请问lingo中如何表示这样的约束?
变量x(i), 或者等于0,或者大于400 x(i)=@if(x(i)#gt#400,400,0) 小伙子你知道01函数吧?扩大400倍就好了!:)另一种方法
首先先定义一个和x(i)一样的函数y(i)x(i)=400*y(i)
@bin(y) 上面写的都错了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 非常感谢上面的。
还有个问题: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. 正确的是@for(sets(i):x(i)÷(x(i)-400)>=0);
页:
[1]