GNU MathProg: набор символов и набор целых

Мой упрощенный набор данных в 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 элементов в таблице?

1 ответ

Решение

Установить выражения, такие как .. не распознаются в режиме данных AMPL (или MathProg, который является подмножеством AMPL). Вы должны перечислить все члены набора явно или переместить

set Verts := 1..4;

к модели.

Другие вопросы по тегам