2016-12-05 16 views
0

Я решения задачи целочисленного программирования с условиемЕсли условие в Integer Программирование

если а = 0, то Ь = 0 еще б = 1

где это целое число, а Ь двоичный

Я посмотрел на предыдущий вопрос, похожий на это, но не смог найти решение. , пожалуйста, помогите определить уравнение ограничения в целочисленном программировании для вышеуказанных условий.

+0

Какие типы? – harold

+0

a целое число, в то время как b является двоичным –

ответ

0

Первое ограничение легко: a = 0 ⇒ b = 0 может быть записано как ≥ b. Второе ограничение (a b = 1) является более сложным. Если a ≤ M, где M относительно мало, вы можете записать это как M ⋅ b ≥ a. В противном случае вам нужно будет использовать функцию решателя, которая называется indicator constraints.

+0

спасибо за ответ, ограничение a ≥ b не выполняется, если a - отрицательное целое число –

+1

Как правило, в Integer Programming нет отрицательных целых чисел. Нижняя граница нуля принимается, если не указано иначе. – mattmilten

0

Используйте эти два ограничения:

a<=bM 
b<=aM 

, где М представляет собой большое количество (М> а). Когда a = 0, первое ограничение является избыточным, второе - b = 0. Если a> 0, то 2-ое ограничение является избыточным, но 1-й будет заставлять b получать значение 1 (если M достаточно велико).

+0

Поскольку b является двоичным, вы должны упростить второе ограничение до b <= a. –

+0

Грег. Это было мое неправильное объяснение вашего предыдущего ответа, хотя я (точка) вы положили после того, как M - это двоеточие. В принципе, я просто сделал то, что вы уже сделали. В 2-ом ограничении, как вы упомянули, не обязательно. –