Я использую cp_model
из ortools
. Одна из моих проблем заключается в том, что мне нужно увеличивать число с плавающей запятой с 6 десятичными точками, но если я рассчитаю все на 1000000, у меня начнутся переполнения. Кроме того, я не могу произвести умножение на меньший множитель, потому что, хотя это нормально, иметь меньшую точность, чем шестая десятичная точка, для каждого отдельного члена мне потребуется 6 десятичных знаков. комбинации с логическими переменными. m[i]
- это массив чисел, который я увеличиваю на 1000000, но sum(m)
вызовет переполнение 64-битного целого числа.
model = cp_model.CpModel()
x = [model.NewBoolVar('x' + str(i)) for i in range(n)]
model.Add(sum(x[i]*m[i] for i in range(n))==M)