Навыки работы с транспортными средствами, использующие or-инструменты с C#

#c# #traveling-salesman #or-tools #vehicle-routing

#c# #коммивояжер #или-инструменты #маршрутизация транспортных средств

Вопрос:

Я пытаюсь решить маршрутизацию транспортных средств с помощью пикапов и доставок, используя or-инструмент с C #. Возможно ли добавить какие-либо навыки (тип продукта) к транспортному средству? пример:

  • vehicle1 — навыки [жидкость]
  • vehicle2 — навыки [жидкость, газ]
  • vehicle3 — навыки [твердые]
  • пикап1 — типа [газ]
  • пикап2 — типа [жидкость]

Таким образом, pickup1 может быть получен только с помощью vehicle2, но pickup2 может быть получен с помощью vehicle1 или vehicle2.

Ответ №1:

Вы можете ограничить var транспортного средства каждого узла для фильтрации неквалифицированных транспортных средств.

Для данного узла var транспортного средства имеет домен [-1, 0, .., num_vehicle - 1] .

-1 присваивается переменной транспортного средства, если узел не посещается.

Итак, если у вас есть n транспортное средство, и вы хотите запретить транспортному средству i посещать узел j , вам нужно удалить i из домена var транспортного средства j .

После этого удаления домен var транспортного средства должен быть, [0, .., i - 1, i 1, .. , n - 1] если узел не является необязательным, или [-1, .., i - 1, i 1, .. , n - 1] если узел является необязательным.

Комментарии:

1. не могли бы вы объяснить эту -1 вещь еще раз, пожалуйста? Я этого не понял.