Как создать ограничение модели в cpmpy из списка?Python

Программы на Python
Ответить
Anonymous
 Как создать ограничение модели в cpmpy из списка?

Сообщение Anonymous »

У меня есть список фильтров, которые мне нужно применить к моей модели как ИЛИ, чтобы их нельзя было добавить в модель отдельно. Я ищу синтаксис, чтобы сделать это. Есть ли способ расширить ограничение, добавленное в модель, и добавить параметры OR в цикле?
или какое-то другое волшебство cpmpy, которое может это сделать?
Я пытаюсь написать генератор ограничений чтобы упростить процесс. У меня есть куча массивов с логическими значениями и «масками», которые можно применить к проблеме. Возможно, у меня их будут сотни

Код: Выделить всё

p = cp.intvar(-1, 1, shape=(6, 6), name="test")
m = cp.Model()
m += (p != 0)

#applying one mask is trivial:
m += (abs(sum(puzzle[mask_array])) == 3)

# but I need to do it for many

# this is what I want in the end:
foo = some_list_of_numpy_arays
m += (abs(sum(p[foo[0]])) == 3) | (abs(sum(p[foo[1]])) == 3) | (abs(sum(p[foo[2]])) == 3)

# but in a loop as I do not know the number of elements in the list
for foo in some_iterator:
# and I'm stuck with syntax here?
m += (abs(sum(puzzle[foo[0]])) == 3)
Я мог бы создавать строки и запускать eval, но это кажется слишком хакерским для этой задачи высокого уровня.

Подробнее здесь: https://stackoverflow.com/questions/791 ... rom-a-list
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»