#constraint-programming #or-tools
#ограничение-программирование #или-tools
Вопрос:
У меня есть модель для нахождения определенного класса целых чисел («числа Кейта»), которая работает хорошо, но довольно медленно, поскольку требует многократного построения новой модели. Есть ли способ обновить модель, в частности изменить коэффициент в ограничении. Другими словами, измените модель, чтобы она соответствовала другой mat
, без полной реконструкции?
def _construct_model(self, mat):
model = cp_model.CpModel()
digit = [model.NewIntVar(0, 9, f'digit[{i}]') for i in range(self.k)]
# Creates the constraint.
model.Add(sum([mat[i] * digit[i] for i in range(self.k)]) == 0)
model.Add(digit[0] != 0)
return model, digit
Ответ №1:
Да, но вы предоставлены сами себе.
Вы можете получить доступ к базовому cp_model_proto
protobuf из модели и изменить его напрямую.
В настоящее время у него нет плана добавлять API модификации поверх cp_model
API.