1

我在 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.

直观地说,我会假设使用速记的定义定义了一个整数集,而对于索引,我需要某种符号的“字符串”类型。我的直觉正确吗?set Verts := ?;如果是这样,如果表中没有 4 个,而是 10 000 个元素,我应该怎么写?

4

1 回答 1

1

在 AMPL(或作为 AMPL 的子集的 MathProg)数据模式..中无法识别的集合表达式。您应该明确列出所有集合成员或移动

set Verts := 1..4;

到模型。

于 2017-01-03T14:22:04.217 回答