Построение линейного сдвига с 3-мя двоичными переменными - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь построить линейное ограничение, следующее за этим логом c

, если либо x1 = 1, либо x2 = 1, то y1 = 1

, но если x1 = 0 и x2 = 0, тогда y1 = 0

, если оба x1 = 1 и x2 = 1, тогда y1 = 1

1 Ответ

1 голос
/ 11 апреля 2020

Допущения :

  • Мы говорим здесь о целочисленном программировании
  • 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
...