楼主: 沉默丶
1028 3

[问答] lingo报错,实在看不出来了 [推广有奖]

  • 0关注
  • 0粉丝

小学生

42%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
133 点
帖子
4
精华
0
在线时间
5 小时
注册时间
2024-7-9
最后登录
2024-12-1

楼主
沉默丶 发表于 2024-7-10 09:48:55 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
model:
sets:
E/1..28/;
F/1..20/;
H/1..20/;
link1(F,H):a,x,b,c;
link2(F,E):d;
endsets
min=@sum(link1(i,j):x(i,j)*c(i,j));
@for(link1(i,j):a*x=b);
@for(link1(i,j):@sum(H(j):@sum(F(i):b(i,j)))=-9);
@for(H(j):@sum(F(i):b(i,j))=d(i,1));
@for(link1(i,j):@gin(x);
i  报错       错误情况:  INDEX VARIABLES MAY NOT SHARE NAMES WITH OTHER VARIABLES
@for(link2(i,j):@free(d));
@for(link1(i,j):@free(a));
@for(link1(i,j):@free(b));
@for(link1(i,j)|i#eq#j:x(i,j)=0);
@for(link1(i,j)|i#eq#j:a(i,j)=0);
data:
c=数据太大,没粘贴
d=数据太大,没粘贴
enddata
end


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:lingo ING Lin NGO Variables

沙发
Killua609 发表于 2024-7-10 10:17:35
错误地方是

藤椅
沉默丶 发表于 2024-7-10 10:29:37
Killua609 发表于 2024-7-10 10:17
错误地方是
@for(link1(i,j):@gin(x);    这一行,中间标出来了

板凳
赵安豆 发表于 2024-7-14 12:20:44
在Lingo中遇到的“INDEX VARIABLES MAY NOT SHARE NAMES WITH OTHER VARIABLES”错误通常意味着你在一个集(set)中的变量名和索引名重合了。从你的模型代码来看,问题出现在使用`i`和`j`作为循环内的变量命名,而这些名称同时用作链接(link1, link2)的索引。

在Lingo中定义约束或目标函数时,如果使用集合中的元素作为变量的一部分,这些变量名不能与集的索引相同。例如,在你的代码段:

```lingo
@for(link1(i,j):a*x=b);
```

这里`i`和`j`是`link1`集的索引,而你又定义了`a`、`b`等变量,并且试图使用这些索引来引用它们。这在Lingo中是不允许的。

### 解决方案:

你应该避免使用索引名(如`i`, `j`)作为变量名的一部分。正确的做法是在约束或目标函数内部为变量明确指定索引,例如:

```lingo
@for(link1(i,j):a(i,j)*x(i,j)=b(i,j));
```

这确保了即使在`link1`集的循环中,你也能正确引用每个元素上的`a`, `x`, 和 `b`。

对于你的整个模型代码,请确保:

- 在使用`@for`语句时,所有变量都明确指定了其对应的索引。
- 不要重复使用集合中的索引名作为变量名的一部分。

按照这些修改后重新运行你的Lingo程序,应该可以避免“INDEX VARIABLES MAY NOT SHARE NAMES WITH OTHER VARIABLES”的错误。如果还有其他语法或逻辑问题,请检查数据定义和模型结构是否一致且无误。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-3 23:27