Реализация ограничения ИЛИ в Google OR-tools?
Я пытаюсь решить вариант транспортной проблемы с ограничением, которое позволяет мне указывать объем поставок, которые должен доставить грузовик из определенного источника в определенный пункт назначения.
Например:
Source S1 has a supply of 40.
Source S2 has a supply of 40.
Source S3 has a supply of 20.
Destination D1 has a a demand of 40.
Я хочу быть в состоянии сделать так, чтобы спрос на D1 выполнялся ДВА поставщиками, каждый из которых поставляет 20.
В форме ограничения я думаю, что это будет:
S1D1 = 0 OR 20
S2D1 = 0 OR 20
S3D1 = 0 or 20
S1D1 + S2D1 + S3D1 = 40
Но я понятия не имею, как реализовать ограничение OR в Google OR-tools. Я думаю, что мне нужно взглянуть на смешанный целочисленный решатель, но я не могу найти примеры или документацию, которая бы решала мою проблему.
1 ответ
Эрвин, ты прав.
Я использовал смешанный целочисленный решатель и использовал следующие ограничения.
Ограничения:
Переменная - это целое число от 0 до 1 (то есть 1 или 0).
20 S1D1 + 20 S2D1 + 20 S3D1 = 40
это был упрощенный пример, в моей задаче у меня больше направлений. Чтобы убедиться, что источник не предоставляет больше, чем он имел, использовалось следующее ограничение (например, используйте 2 пункта назначения, пункт назначения 2 имеет запрос 40, предоставленный одним источником):
20 S1D1 + 40 S1D2 <= 40 (повторите это для всех источников)
Спасибо за вашу помощь.