LINGO问题求解:Error Text:Index variables may not share names with other variables.

最近在学习数学建模的相关内容,在使用LINGO解决优化模型问题是,出现了上面的报错,经过我的研究,我认为有两种情况会出现上面的报错。

  1. 你在函数中使用的索引变量或者其他任何变量在你前面的代码中都已经被定义成了全局变量,无法继续在函数中为其赋予新的意义,所以报错,这种情况较为常见,可以很容易地判断全局变量与局部变量,不再提供代码示例。
  2. LINGO解析过程中自己出现的问题。
model:
sets:
person/1..14/:y,s;
item/1..5/;
assign(item,person):x,A;
endsets
data:
A=10 1 4 10 5 5 4 6 2 4 8 6 10 9
9 5 6 4 4 7 4 7 8 6 7 8 1 4
7 5 5 6 7 7 8 8 7 10 2 6 4 5
3 5 9 5 8 6 9 10 6 6 5 4 2 4
3 10 8 2 8 7 7 5 8 6 9 8 3 7;
enddata
max=z;
z=z1+z2;
z1=0.8*@sum(person(j):s(j)*y(j));
z2=@sum(assign(i,j):A(i,j)*x(i,j));
@for(person(j):@sum(item(i):x(i,j))>=1-y(j));
@for(person(j):@sum(item(i):x(i,j))<=3);
@for(person(j):@sum(item(i):x(i,j))<=6);
@for(assign(i,j):x(i,j)<=1-y(j));
@sum(person(j):y(j))=3;
@for(person(j):s(j)=@sum(item(j):A(i,j)));
@for(assign(i,j):@bin(x(i,j)));
@for(person(j):@bin(y(j)));
end

我个人不认为上面的一段代码在LINGO中有什么问题,但LINGO给出了报错,我尝试为每一个ij更换为不同的变量,最终都能够成功,最后我将代码中的i,j全部替换为m,n,最终解决问题,我发现只要不是i,j就能够编译成功但可以发现,代码中并未将i,j定义为全局变量,所以问题出在解析器内部。遇到的错误提示表明 LINGO 解释器将 i 和 j 视为了变量,而不是纯粹的索引变量。这可能是因为 LINGO 的解析规则或模型的某些特性导致了这种冲突。在 LINGO 中,索引变量必须与模型中定义的变量名不冲突。

这种问题通常源于模型的复杂性、Lingo 解析器的内部规则,或两者之间的相互作用。在处理大型或复杂的模型时,保持良好的命名约定,避免使用常见的变量名(如 i 和 j),可以减少解析错误的风险。使用描述性更强的变量名,不仅有助于避免此类问题,还能提高代码的可读性和可维护性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

badabada_henu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值