求高手指点lingo错误!运行显示下标越界!不胜感激!

sets:
legs/1..4/:t;
modes/1,2,3/;

link1(modes,legs):ctrans,use;
link3(modes,modes,legs):y;
link2(modes,modes):cchg;
endsets
data:
ctrans=30 25 40 60
25 40 45 50
40 20 50 45;
cchg=0 5 12
8 0 10
15 10 0;
enddata

@for(legs(i):
@sum(modes(j):use(i,j))=1);

@for(legs(i):
@sum(link2(j,k)|j#ne#k #and# i#le#3:
y(i,j,k))=1);
@for(legs(i)| i#le#3 :
@for(link2(j,k)|j#ne#k :
use(j,i)+use(k,i+1)>=2*y(j,k,i)););
min=@sum(link1:ctrans*use)+@sum(link3(i,j,k)|k#le#3:cchg(j,k)*y(i,j,k));
!定义X为0\1变量;
@for( link1(i,j): @bin( use(i,j)));
!定义X为0\1变量;
@for( link3(i,j,k)|k#le#3: @bin(y(i,j,k)));

end

改了一下,@for(legs(i):
@sum(modes(j):use(i,j))=1);

将use(i,j)改成use(j,i)与集合的定义匹配
但是没有可行性解
这是模型的问题
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-31
你这个有好多问题,其中集的定义里面 link1 link2 link3 与下面的使用有很大的冲突。
要不你把整个的约束条件和目标函数贴出来。

求高手指点lingo错误!运行显示下标越界!不胜感激!
sum(modes(j):use(i,j))=1);将use(i,j)改成use(j,i)与集合的定义匹配 但是没有可行性解 这是模型的问题

LINGO程序问题
A会报错,报错代码为70,错误原因属性的下标越界详解:for循环,i取1到4,当i=4时,s(i+1)=s(5),而根据前面集的定义知道s只有4个元素而已,不存在s(5),也就是下标越界正确写法应该是@for(yuefen(i)|i#LT#4:s(i+1)=s(i)+x(i)-d(i));或@for(yuefen(i)|i#LE#3:s(i+1)=...

急!运行lingo8.0提示属性下标越界,请高人改改,有其他错误的话也一并改...
a为7*5矩阵,而b是6*6矩阵,阶数不一样,没法相乘的

LINGO 运行显示错误70:下标越界,@for(rp(r): @sum(link1(j,l):x...
for(rp(r): @sum(link1(j,l)|@in(links5,r,j,l):x(r,j,l))<=1);

lingo 限制条件 下标越界 急急急!!!在线
改成这样 最后一句要限制下标大于1 还有目标函数里面的括号位置不对 MODEL:sets:Stock\/1..4\/;Day\/1..221\/:C,T,R;Link(Stock,Day):X,B,S;endsets data:B=@ole('C:\\Documents and Settings\\user\\桌面\\stock(lingo)',B);S=@ole('C:\\Documents and Settings\\user\\桌面\\stock(lingo)',S...

一个LINGO的程序结果运行不出,求高手帮忙指点下,谢谢,急!!
我回答过你的体温 你还是没改我怎么给你看 请你直接用数字表示下标 比如 Y(1) Y(2)先改过这些来再看 否则没法看

lingo下标问题
看你的也没啥规律,大概就这样吧,比较通用的做法,用了 @if 函数, sets:set1\/1..11\/:;set2(set1, set1): C, D;endsets@for(set2(I, J): @gin(C(I,J)));@for(set2(I, J): @gin(D(I,J)));@for(set2(I, J): D(I, J) = @if(C(I, J) #lt# 300, 20,...

LINGO请问这段程式错误 @@
我看你的后面的约束语句都没有写错。应该是数据错了。你仔细检查一下输入的数据是否错了。尤其是A集的这个数据,因为它的成员数与输入数据有关。

lingo程序出错啦...跪求高手指点迷津!急、急、急、急啊啊
这样改 model:sets:w1\/1..18\/:x,c,s;link(w1,w1):u,d,t;endsets data:x=25 35 30 45 80 55 40 180 70 60 50 60 60 150 40 100 35 55;s=30 40 40 50 120 60 50 200 90 70 60 70 80 180 50 110 40 60;c=5700 4850 4300 5500 6400 6500 5500 4500 5800 6000 6100 ...

lingo1017错误
1.@for(guandao(j):l(j)=z(j+1)+y(j)); --- z下标越界;2.Y= @sum(link(i,j):a(i,j)*x(i,j)); ---Y在guandao\/1..14\/:b,l,n,z,y; 里面已经使用过了,不能再使用;

相似回答
大家正在搜