我在 GNU MathProg 中的简化数据集如下,Verts
是顶点的一组索引,coords
是这些顶点的坐标表:
data;
set Indices := X Y;
set Verts := 1 2 3 4;
param Coords : X Y :=
1 1.2 0.3
2 4.2 13.0
3 1.5 1.0
4 0.5 0.8;
end;
这有效,但是如果我按如下方式替换 Verts 的定义:
set Verts := (1..4);
编译在此阶段成功,但Verts
现在无法Coords
索引参数表。具体来说,glpsol
返回Coords[1,X] out of domain
。
直观地说,我会假设使用速记的定义定义了一个整数集,而对于索引,我需要某种符号的"字符串"类型。我的直觉正确吗?如果是这样,如果我表中没有 4 个元素,而是 10 000 个元素,我应该如何写set Verts := ?;
?
在 AMPL(或 MathProg,它是 AMPL 的一个子集)数据模式中无法识别 ..
等集合表达式。您应该显式列出所有集合成员或移动
set Verts := 1..4;
到模型。