Условные ограничения в OR SAT Google не работают должным образом - PullRequest
2 голосов
/ 31 марта 2019

Я новичок в Google OR SAT на python, и документация не очень ясна.Я пытаюсь сделать следующее: есть такой список:

desk[1] = 3
desk[2] = 5
desk[3] = 4
desk[4] = 2
desk[5] = 1

и переменная с именем person_la_croix со значением = 4, скажем так.Я хотел бы создать логический список (t) из этого t [i] = 1, если desk [i]! = Person_la_croix и 0 в противном случае.И тогда я хотел бы взять i из t [i], который t [i] == 1, и присвоить его переменной desk_la_croix

Я пробовал это:

for i in s:
    model.Add(desk[i] == person_la_croix).OnlyEnforceIf(t[i])
for i in s:
    model.Add(desk_la_croix == i).OnlyEnforceIf(t[i])

Это неработает ... Может кто-нибудь помочь мне с этим кодом или предложить более разумный способ сделать это?

1 Ответ

0 голосов
/ 31 марта 2019

Вы читали

https://github.com/google/or-tools/blob/stable/ortools/sat/doc/channeling.md?

Полагаю, вы упускаете противоположность OnlyEnforceIf, поскольку это только следствия, а не эквивалентности.

...