LINGO@for(@sum(ss2:b*x1)
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/01 08:34:20
目标函数那句括号没有配对另外你的那些x到底是一维的还是二维的
model:titlelocationproblem;sets:demand/1..15/:a,b,d;supply/1..5/:x,y,e;link(demand,supply):c;endsets
model:sets:row/1,2,3/:b;arrange/1..5/:x,c;link(row,arrange):a;endsetsdata:b=100,100,100;c=0,0.1,0.2,
这个实际上写的不好既然里面@sum只有k=1的情况直接写y1(i,1)就行了何必写个求和呢这句的意思就是对于所有的iq(i)*y1(i,1)求和是不超过capacity的
没有任何语法错误再问:for函数的问题解决了,我想问下在运行到for那一行时候,提示错误63是怎么回事再答:具体提示是什么反正我运行没有任何错误再问:我运行的时候出现下面问题能帮我看看是什么问题吗,谢
@FOR(product(J):SUM(WORKER(I):X(I,J))=@if(W(J)#gt#0,1,SUM(WORKER(I):X(I,J)));这样试试
从代码看是没错,具体还得看你的集合定义
@sum()
注意lingo主模型段写的是约束不是赋值语句你这样写肯定不行可以用一个中间变量来过渡吧或者用一个0-1变量乘上你这个量
@sum(setname(index):x(index));代表对setname这个集里面的元素的x属性求和@for(setname(index):约束);代表对setname中每个下标都满足这个约束
1.@for该函数用来产生对集成员的约束.基于建模语言的标量需要显式输入每个约束,不过@for函数允许只输入一个约束,然后LINGO自动产生每个集成员的约束.例产生序列{1,4,9,16,25}mod
for循环里面的指标都是局部的只在这句里面生效其它句子里面使用的下标跟这个重复没关系具体怎么写去找教程有具体的格式
for语句的格式为:@For(中间是具体的语言);中间具体的语言是:你定义的集合变量申明,然后冒号之后就是你的运算表达式,表达式方式和正常的方式相同.比如sets:ww/w1..w6/:x,y;end
学过高中数学应该很容易得到min是z的平方根根本不需要用lingo这并不具有很高的说服力即使你画的点再密也得不到上面的结论非要用lingo的话建议看一下lingo的usermanual具体看submo
sets:r/1..8/:d;c/1..8/:;link(r,c):x,y;endsets@for(r(i):@for(c(j):x(i,j)
sets:r/1..100/:;endsetscalc:sum=0;@for(s(i):sum=sum+i);endcalc单用sum函数sets:r/1..100/:;endsetssum=@sum
@for(var(i):k(i)==@sum(var_1:c*w));
@for()
你@for是对谁循环的?按照你说的我找不到对谁循环很可能就应该是@sum(shuliang(i):u(i))