VRP с OR-Tools: как определить приоритетность транспортных средств, получающих маршруты, если решение включает пустые маPython

Программы на Python
Anonymous
VRP с OR-Tools: как определить приоритетность транспортных средств, получающих маршруты, если решение включает пустые ма

Сообщение Anonymous »

Я использую решатель VRP OR-Tools (на Python) для планирования маршрутов транспортных средств для следующей задачи:
Существует список местоположений клиентов, которые необходимо посетить в пределах заданная неделя (пн-вс), но нам не важно, в какой день их посещают.
У нас есть несколько команд, которые каждый день могут отправлять клиентам (каждая команда имеет один автомобиль ), и мы можем отправить любую команду любому клиенту.
Поэтому в моей модели «транспортное средство» определяется как командный день; например, команда 1 в понедельник — это транспортное средство, а команда 2 во вторник рассматривается как отдельное транспортное средство и т. д. Итак, если в неделе 6 команд и 7 дней, я сообщаю решателю, что у меня есть 42 доступных транспортных средства, чтобы охватить все локации. Я оптимизирую время в пути, и у каждого из этих «транспортных средств» может быть разное максимальное время в пути, поскольку доступность команды меняется изо дня в день.
Все это я работаю с OR. -Инструменты.
В некоторых моих тестовых случаях, когда общее доступное время значительно превышает потребность, возвращаемое решение включает некоторые транспортные средства, которым назначен пустой маршрут (т. е. у команды есть день выключенный). Это нормально, но зачастую неназначенный день приходится на середину недели. Таким образом, решение может предоставить команде 1 клиентов по понедельникам, вторникам, средам, субботам и воскресеньям, а команду 1 оставить неназначенной в четверг и пятницу.
Я бы предпочел загрузить работу заранее. неделю, поэтому в этом сценарии, если это возможно, я бы хотел, чтобы команда 1 работала с понедельника по пятницу, а суббота/воскресенье были выходными. Есть ли способ включить это (мягкое) ограничение в OR-Tools?
Это не вопрос простой замены расписания одного дня на другое, потому что команда может быть доступна меньше часов один день против другого. например Если доступность команды такова:
Пн: 6 часов
Вторник: 6 часов
Ср: 8 часов
и решатель возвращает решение со следующим временем в пути
Пн: 0 часов
Вторник: 0 часов
Ср: 8 часов
Я бы предпочел, чтобы оно вернулось
Пн: 6 часов
Вторник: 2+ часа
Ср: 0 часов
Я предполагаю, что это может быть решается путем «приоритизации» транспортных средств (например, при назначении местоположений Team-1-Monday и Team-2-Monday имеют приоритет над Team-1-Tuesday и Team-2-Tuesday), но я не уверен, как это указать в OR-Tools.

Подробнее здесь: https://stackoverflow.com/questions/716 ... lution-inc

Вернуться в «Python»