AMPL: большой набор данных и спецификация данных

В данный момент я делаю модель, которую мне нужно настроить очень сильно. По сути, мне нужно расширить мой текущий набор V, который представляет собой набор городов, чтобы стать набором городов и времени. Например, элемент Kir в V должен быть расширен от простого "Kir" до "Kir1", "Kir2",...,"Kir72", чтобы представить город Kir, а также период времени, указанный числом.

Я начал определять это как (в файле.mod): set V; установить K в пределах V;

и в файле.dat я совершенно не уверен, как написать это. Если нет простого способа включить "строку" Кир в набор K, я думаю, я напишу:

set V := 1 2 3 4 5;
set K := 1 2;

например. Мой вопрос: как мне это сделать? Могу ли я включить название города Кир? В частности, я определил сводную таблицу расстояний между городами в исходном наборе V. Расстояния в исходном наборе V между, скажем, городами Кир и Сто должны быть такими же, как расстояние между Кир1 и Сто1 в расширенном наборе. Также должно быть одинаковое расстояние между Kir1 и Sto72. Исходное расстояние должно быть таким же, независимо от того, к какому времени оно относится. Есть ли простой способ сделать это в AMPL?

РЕДАКТИРОВАТЬ: Добавлен тег Python. Я думаю, это может быть достигнуто и в Python. Мне удалось определить новые наборы, используя:

text = 'Kir'
string2 = [i for i in range(1,49)]
for i in string2:
    print (text+str(i))

например. Я застрял в отношении матрицы расстояния, хотя

1 ответ

Решение

Хотя вы можете создать набор, объединив название города и время, я думаю, что лучше использовать двумерный набор с первым индексом, представляющим город, и вторым:

set K dimen 2;

data;

set K :=
Kir 1
Kir 2
Kir 3;

Набор K будет содержать пары ('Kir', 1), ('Kir', 2), ('Kir', 3),

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