帮我检查一下这个lingo程序,出现下标越界,怎么修改?

model:
sets:
store/1..8/;
goods/1..10/:V,T,C,R;
warehouse/1..5/:Z;
factory/1,2,3/;
transportation1(factory,warehouse):E;
transportation2(warehouse,store):F;
price(factory,goods):D,H;
stockpile(warehouse,goods):Q;
order(factory,stockpile):X,M;
QuantityDemand(store,goods):K;
carriage(warehouse,QuantityDemand):Y,N;
endsets
min=@sum(order(a,b,j):X(a,b,j)*D(a,j))+@sum(order(a,b,j):X(a,b,j)*E(a,b))+
@sum(carriage(b,c,j):Y(b,c,j)*F(b,c))+@sum(stockpile(b,j):0.5*C*T*Q(b,j)+C*R*(L-T))+
I*@sum(order(a,b,j):M(a,b,j)*d(a,j))+I*@sum(order(a,b,j):M(a,b,j)*E(a,b))+I*
@sum(carriage(b,c,j):N(b,c,j)*F(b,c))+I*@sum(stockpile(b,j):0.5*C*T*Q(b,j)+C*R*(L-T))+(I+1)*10^4;
@for(goods(j): @for(factory(a):[FACTORY_CON] @sum(warehouse(b):X(a,b,j))=T(j)*R(j);););
@for(goods(j):@for(store(c):[STORE_CON] @sum(warehouse(b):M(a,b,j)+Y(b,c,j))=T(j)*R(j)+R(j)*T;););
@for(factory(a):@for(goods(j): @sum(warehouse(b):X(a,b,j)+r*M(a,b,j))<=H(a,j);););
@for(warehouse(b):[WAREHOUSE_CON]@sum(goods:Q(b,j)*Vj)<=Z(b););
@for(warehouse(b):@for(store(c):@for(goods(j):[GOODS_CON]@sum(factory(a):X(a,b,j)*D(a,j)+X(a,b,j)*E(a,b)+Y(b,c,j)*F(b,c)+0.5*Cj*T(j)*R(j)*T(j)+Cj*R(j)*(T-T(j))^2+10^4)<=10^6;);););
@for(goods(j):@for(warehouse(b):@for(store(c):@sum(factory(a):M(a,b,j)*D(a,j)+M(a,b,j)*E(a,b)+N(b,c,j)*F(b,c)+0.5*Cj*T(j)*R(j)*T(j)+Cj*R(j)*(T-T(j))^2+10^4)<=10^6;);););
@for(goods:@sum(store(c):K(c,j))<=360*R(j););
@for(goods:@for(warehouse(b):@sum(store(c):Y(b,c,j)+r*N(b,c,j))<=K(c,j);););
@for(factory:@gin(M);@gin(X););
@for(store(c):@for(goods(j):@bin(K(c,j));););
@for(factory(a):@for(warehouse(b):@bin(E(a,b));););
@for(warehouse(b):@for(store(c):@bin(F(b,c));););
@for(factory(a):@for(goods(j):@bin(D(a,j));););
@for(goods(j):@for(factory(a):@bin(H(a,j));););
data:
E= 0 10 14 17 13
10 8 0 9 16
15 16 9 15 0 ;
F= 3 2 3 6 3 1 4 5
0 3 3 0 5 2 5 3
5 0 2 5 0 5 0 4
4 1 4 4 2 0 2 0
2 2 5 3 5 2 5 2;
C= 40 70 90 100 120 120 150 160 180 200;
V= 1.5 1 1.5 2 1.5 0.5 1.5 2 1 0.5;
Z= 800 600 1000 700 800;
H= 2000 0 3000 1000 3200 1000 0 2000 1500 1500
2000 1300 0 1000 0 1500 2000 1500 0 1200
0 2500 800 1500 0 1000 1400 0 2500 1500;
D= 100 0 210 250 290 300 0 430 450 500
90 180 0 240 0 305 380 435 0 490
0 170 210 245 0 285 400 0 450 480;
K= 60 300 800 100 200 600 400 80 150 600
90 800 500 1200 500 400 200 100 800 500
150 500 400 800 600 0 800 800 400 0
300 400 200 400 150 800 500 150 1500 400
400 0 150 100 200 300 0 400 90 800
500 200 1000 0 400 150 1000 1000 200 400
800 1200 90 150 90 1000 90 500 100 1000
1500 200 500 500 1000 90 150 200 500 200;
enddata
end

这个主要是因为你用的变量名和指标名重了
C你已经定义是变量名了 在指标中你也用了 所以错了 lingo是不分大小写的

而且你的分号也用的不对 一个约束只要一个分号就行了 不是每个括号都要用分号的
温馨提示:内容为网友见解,仅供参考
无其他回答

帮我检查一下这个lingo程序,出现下标越界,怎么修改?
这个主要是因为你用的变量名和指标名重了 C你已经定义是变量名了 在指标中你也用了 所以错了 lingo是不分大小写的 而且你的分号也用的不对 一个约束只要一个分号就行了 不是每个括号都要用分号的

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

lingo集合下标越界
可以换一种写法啊。原来提示报错的行,for(xf(i):down(i)=@sum(jg(j):e(i,j)*up(j)-eab(i,j)*up(j)));换成,for(xf(i):down(i) = @sum(jg(j) | i #eq# j:e(i,j)*up(j)) + eab(3, 4) + eab(4, 3));报告,结果,

lingo说我@for语句出错,程序如下,求大神改正倒数两行的for语句
下标越界了 注意你集定义里面对j和j关系的限制

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)=...

请帮忙看下下面lingo程序错在哪里?
改成这样 enddata没写 括号写的有问题 下标越界等等 model:sets:num_i\/1..8\/:a;num_j\/1..5\/;link_ij(num_i,num_j):x;endsets data:a=0.1,0.11,0.125,0.135,0.15,0.167,0.2,0.183;enddata max=@sum(num_i(i):a(i)*(@sum(num_j(j):x(i,j)));for(num_j(j)...

急!运行lingo8.0提示属性下标越界,请高人改改,有其他错误的话也一并改...
问题不小,把数学表达式列出来看看,才有办法改 矩阵阶数不一样是无法相乘的 例如:@sum(material2(j):(@sum(material2(j):a(i,j)*x(j)*b(i,j))*g(j)))a为7*5矩阵,而b是6*6矩阵,阶数不一样,没法相乘的

lingo 出现error70 问题,subscript out of range求解决
下标索引没有用对,link是a和b衍生出来的集,其中a是第一个指标 ,b是第二个指标,所以后面在引用e的时候,注意i和j的顺序。修改后的程序见附件,如下是运行结果:Global optimal solution found.Objective value: 36.00000 Objective bound: 36.00000 Infeasibilities: 0.000000 Extended solv...

lingo中for的用法,说我下标越界,就是那个a的值有问题,可就是找不...
说清楚你要做的东西 我只能给你改成这样 是不是跟你的题目符合没法知道 model:sets:gong\/1..8\/;shou\/1..8\/;links(gong,shou):x,m;endsets max=x(1,3)+x(2,4);for(gong(I):@for(shou(J):@bnd(0,x(I,J),m(I,J)));for(links(I,a)|a#ge#3 #and# a#le#5:x(I,a...

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

相似回答