AMPL: модельные терминалы в городе назначения
Я столкнулся с проблемой, которую я не нашел решения для чтения документации AMPL наборов.
То, что я хочу смоделировать, это то, что город, скажем Кир, должен иметь, например, 9 поставок из другого города, например, Сто. Однако эти поставки должны поступать в Кир на некоторых определенных терминалах, причем каждый терминал открыт только в течение небольшого промежутка времени (около 2 минут) каждый день. То же самое должно быть верно для исходного узла. Маршрут из Sto должен быть указан от конкретного терминала (чтобы в результатах можно было "следовать").
Я начал моделировать, используя операцию "набор V в K" для наборов, но для этого необходимо, чтобы V был тем же набором, или подмножеством K, где K - набор, представляющий "узлы" - Kir, Sto и т. Д. и V - это набор имен терминалов "Terminal1", "Terminal2" и т. д.
Я начал проверять, например, "установить K измерение 4", определенный как, например:
set K dimension 4;
data;
set K:=
Sto Kir Terminal1 Terminal2
Bod Kir Terminal3 Terminal2;
Где набор K представляет, из какого города (например, Sto) должна быть осуществлена доставка (например, в Kir), где исходящий терминал в Sto - это Terminal1, а терминал доставки в Kir - это Terminal2. Недостатком является то, что приходится указывать большое количество комбинаций (в одном только Kir и т. Д. Около 22 терминалов) вручную. Я тоже не знаю, как смоделировать ограничения. Например, набор "одно измерение", который у меня был ранее:
subject to yvar{i in V, j in V}:
sum{k in H} x[i,j,k] <= maxVisits[i,j];
где V - это набор только городов, а H - набор транспортных средств, maxVisits представляет максимальное количество доставок из города i в город j, а x равно 1, если доставка осуществляется из i в j с использованием транспортного средства k. Я не понимаю, как это можно смоделировать, используя четырехмерный набор К.
С Уважением,
1 ответ
Один из способов моделирования это индексировать x
над K
а также H
и измените суммирование, чтобы включить терминалы:
var x{K, H} binary;
subject to yvar{i in V, j in V}:
sum{(i,j,t,u) in K, k in H} x[i,j,t,u,k] <= maxVisits[i,j];
Индексация (i,j,t,u) in K
при суммировании будут перебирать пары терминалов, которые являются конечными точками маршрутов из города i
в город j
, Обратите внимание, что i
а также j
фиксируются здесь, потому что они определены в индексации ограничений {i in V, j in V}
,