или какое-то другое волшебство 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)
Подробнее здесь: https://stackoverflow.com/questions/791 ... rom-a-list
Мобильная версия