Код: Выделить всё
model.add_bool_or(b1, b2, b3) # b1 or b2 or b3 must be true
model.add_at_least_one([b1, b2, b3]) # Alternative notation
model.add(b1 + b2 + b3 >= 1) # Alternative linear notation using '+' for OR
Вопрос в том, при каких обстоятельствах мы можем это предположить? Является ли профиль производительности add_at_least_one таким же, как профиль sum(...) >= 1?
Естественно, я говорю во время решения и ожидаю, что явный add_at_least_one будет сложнее анализировать и интерпретировать решателю.
Такие вопросы можно обобщить на другие формы (например, будет ли a + b >= 1 - c рассматриваться для переупорядочения и оптимизации?). Итак, общий вопрос: каково поведение решателя CPSAT с точки зрения оптимизации линейных ограничений для извлечения ограничений CP более высокого уровня?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -behaviour
Мобильная версия