问题标题:
【运行如下lingo程序时,出现indexvariablesmaynotsharenameswithothersvariables,这是为什么?model:sets:m/1..1000/;n/1..100/;numbers/v1..v100/:demand;links(m,n):a,x,y;endsetsmax=@sum(links:0.8*a(I,J)*x(I,J)+0.8*a(I-400,J)*y(I,J)-demand(】
问题描述:
运行如下lingo程序时,出现indexvariablesmaynotsharenameswithothersvariables,这是为什么?
model:
sets:
m/1..1000/;
n/1..100/;
numbers/v1..v100/:demand;
links(m,n):a,x,y;
endsets
max=@sum(links:0.8*a(I,J)*x(I,J)+0.8*a(I-400,J)*y(I,J)-demand(J));
@for(links:x(I,J)+y(I,J)
谭志强回答:
集循环函数的集名后面和变量名后面都带上下标
另外你的a(I-400,J)在I小于400的时候怎么办你考虑过吗
卢彦辉回答:
帅哥,你是专门回答lingo问题的吗?昨天也是你回答我的问题,昨天那个有1000X100变量的问题lingo居然算出来了。我的集名和变量名后面都加了下标,但还是出错了,那个a(I-400,J)方面,我的目标是让a*y只计算i=1...600而不是i=1...1000,然后我就这样编了
谭志强回答:
那也不对你考虑i小于400的时候而且你限制i小于600也要写出来啊你在哪出现600这个数了
卢彦辉回答:
我现在就是不知道那个i小于600怎么在程序中体现
谭志强回答:
你先想清楚i小于600行不行i小于600能保证i-400在合适的范围内吗如果不能你的表达要改好吗
卢彦辉回答:
题目的要求就是a(I,J)*y(I,J)中i的范围是1-600,不能超过600;a(I,J)*x(I,J)中的i还是1-1000。程序应该怎么改?
谭志强回答:
那我问你i=1的时候是什么样的就因为你那里不对我才问你的好不
谭志强回答:
那我问你i=1的时候是什么样的就因为你那里不对我才问你的好不