Ortools - VRP Разрешить за нарушение ограничений - PullRequest
3 голосов
/ 23 марта 2020

Возможно ли в vrp модели ortool допустить нарушение ограничения (иногда называемого мягким ограничением)? Например, скажем, каждый маршрут должен набрать минимальный объем x в каком-либо блоке. Могу ли я настроить или-инструменты так, чтобы он также возвращал мне туры, при условии, что это ограничение не всегда выполняется?

Глядя на раздел штрафов У меня создается впечатление, что при настройке с addDisjunction or-tools отбросит визит, если это сделает решение выполнимым. Однако проблема, с которой я столкнулся, совершенно противоположна: посещение не должно быть отброшено, и вместо этого должно быть нарушено ограничение, наложено некоторое наказание.

1 Ответ

2 голосов
/ 23 марта 2020

Вы должны создать измерение «Объем» и использовать на конечном узле:

void RoutingDimension::SetCumulVarSoftLowerBound(int64 index, int64 lower_bound, int64 coefficient);

ref: https://github.com/google/or-tools/blob/858fa626959f7e386153af82756384b79f983b5a/ortools/constraint_solver/routing.h#L2236 -L2249

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