数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 6478|回复: 6

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

[复制链接]
发表于 2007-9-8 22:30:15 | 显示全部楼层 |阅读模式
变量x(i),   或者等于0,或者大于400
发表于 2007-9-9 11:32:03 | 显示全部楼层
x(i)=@if(x(i)#gt#400,400,0)
发表于 2007-9-10 20:19:46 | 显示全部楼层
小伙子  你知道0  1函数吧?扩大400倍就好了!
发表于 2007-9-10 20:23:56 | 显示全部楼层

另一种方法

首先先定义一个和x(i)一样的函数y(i)
x(i)=400*y(i)
@bin(y)
发表于 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
 楼主| 发表于 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.
发表于 2007-9-14 23:48:49 | 显示全部楼层
正确的是@for(sets(i):x(i)÷(x(i)-400)>=0);
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 07:43 , Processed in 0.088384 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表