Я надеюсь, что кто-нибудь может мне помочь. Я смоделировал проблему маршрутизации автомобиля с временными окнами и опцией аутсорсинга, кроме того, я хочу сделать модель зависимой от времени. Для этого я сделал несколько часовых поясов, которые нужно подключить
{<0,120>,<120,600>,<600,720>,<720,1400>}.
Эти часовые пояса необходимы, потому что в каждом часовом поясе автомобиль движется с разной скоростью.
Проблема, с которой я сталкиваюсь, заключается в моделировании ограничения, при котором время отправления транспортного средства k
у клиента i
<code>a[i][k]</code>
должен быть связан с правильным часовым поясом.
Как только я инициализирую часовые пояса, модель дает мне неправильное решение.
tuple timezone{
int m;
int mend;
};
{timezone} timezones = {<0,120>,<120,600>,<600,720>,<720,1400>};
forall (i in N, k in K, m in timezones)
a[i][k] <= m.mend * sum (j in N) G[i][j][k][m];
forall (i in N, k in K, m in timezones)
a[i][k] >= m.m * sum (j in N) G[i][j][k][m];
Где G[i][j][k][m]
- логическая переменная, сообщающая, проходит ли дуга с транспортным средством k
в часовом поясе m
. И m.m
- это начало часового пояса, а m.mend
- это конец часового пояса.
Кортеж работает, когда я заявляю, что есть только один часовой пояс, как
{timezone} timezones = {<0,900>};
Но только для первого ограничения
a[i][k] >= m.m * sum (j in N) G[i][j][k][m];
Когда я добавляю это ограничение к модели:
a[i][k] >= m.m * sum (j in N) G[i][j][k][m];
Модель больше не работает
Я ожидаю, что у некоторых клиентов у меня есть работа на стороне, а некоторые доставляются с частным парком. Как только я пытаюсь работать с часовыми поясами, модель прямо говорит, что каждый клиент передается на внешний подряд.
Кто-нибудь знает, что не так с кортежем? Потому что я думаю, что само ограничение довольно простое и должно работать.