Cp-Sat AddAllDifferent против добавления ограничения - PullRequest
0 голосов
/ 24 марта 2020

Уважаемые,
У меня есть модель с двумя булевыми переменными решения, только одна может быть равна ti 1.

Это решатель быстрее, если я использую AddAllDifferent или Я использую простое ограничение ( ДОБАВИТЬ) x + y = 1?

1 Ответ

1 голос
/ 24 марта 2020

В этом случае я бы отбросил обе идеи и придерживался булевых выражений:

x.Not() OR y.Not()
AND
x OR y

или, если ortools это поддерживает:

x XOR y

(= псевдокод -> не обязательно любой здравомыслящий синтаксис)

Это так просто, как может, и может быть очень эффективно рассмотрено при распространении юнитов. Более того, 2-SAT-объекты могут работать внутренне (implication-graph и т. Д.).

Нет необходимости рассуждать о целочисленных арифметических значениях c (включая потенциальные каналы bool / int) или глобальных ограничениях. .

Вышесказанное иногда используется в SAT, когда разлагает все по-разному, запрещая все возможные пары.

(ortools может быть умным, чтобы проанализировать свои подходы, чтобы получить ту же самую формулировку, но, возможно, нет -> почему бы не помочь, если это так просто)

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