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

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

  • транспортное средство1 - навыки [жидкость]
  • транспортное средство2 - навыки [жидкость, газ]
  • транспортное средство3 - навыки [твердые]
  • pickup1 - тип [газ]
  • pickup2 - тип [жидкость]

Таким образом, пикап1 может забрать только автомобиль2, а пикап2 может забрать автомобиль1 или автомобиль2.


person Smyk L.    schedule 31.08.2020    source источник


Ответы (1)


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

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

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

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

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

person Laurent Perron    schedule 31.08.2020
comment
не могли бы вы объяснить эту -1 вещь еще раз, пожалуйста? Я не понял. - person Smyk L.; 02.09.2020