Как установить express огромных целочисленных ограничений в CpModel ortools - PullRequest
1 голос
/ 07 августа 2020

Я использую 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)
...