Как реализовать пользовательские мягкие ограничения в OR-Tools Routing Solver? - PullRequest
1 голос
/ 28 апреля 2020

Я работал с решателем маршрутизации OR-Tools в Python в течение нескольких месяцев, и я до сих пор не понимаю, как реализовать настраиваемые мягкие ограничения или даже если это возможно в решателе маршрутизации.

Я знаю, что следующие методы добавляют штрафы к совокупным значениям:

SetCumulVarSoftUpperBound(self, index: int64, upper_bound: int64, coefficient: int64)
SetCumulVarSoftLowerBound(self, index: int64, upper_bound: int64, coefficient: int64)

Одно из ограничений, которые я не могу реализовать, заключается в следующем:

  • Я хочу штрафовать расстояние / время в пустых транспортных средств. Например, в сценарии погрузки и доставки, если транспортное средство выполняет доставку и становится пустым, я хочу оштрафовать на расстояние, пройденное пустым, пока не достигнете узла получения (следующего узла) или не завершите маршрут.

С помощью описанных выше методов я могу штрафовать фиксированное значение только при превышении границы, но я хотел бы штрафовать с помощью расстояния или времени для перехода к следующему узлу.

Между тем, есть ли способ реализовать пользовательские мягкие ограничения с явным значением штрафа, учитывающим состояние найденного решения (например, следующий узел и совокупное количество измерений)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...