Я пытаюсь построить линейное ограничение, следующее за этим логом c
, если либо x1 = 1, либо x2 = 1, то y1 = 1
, но если x1 = 0 и x2 = 0, тогда y1 = 0
, если оба x1 = 1 и x2 = 1, тогда y1 = 1
Допущения :
x1, x2 are binary-variables / integer-variables in [0, 1]
Таблица истинности выглядит так:
x1 x2 || y1 ---------------- 0 0 || 0 0 1 || 1 1 0 || 1 1 1 || 1
Это просто:
y1 = x1 OR x2
Это тривиально линеаризовано (см. соответствующий ответ на cs.stackexchange.com ):
y1 = binary-var / (could be integer-var too) y1 <= x1 + x2 y1 >= x1 y1 >= x2