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;
к модели.