Для каждого значения создайте логическую переменную selected_value
, которая имеет значение true, если для нее назначено хотя бы одно значение.
Для этого вам понадобятся 2 набора ограничений:
слева направо: selected_value
означает, что выбрано значение
model.AddBoolOr([var_i_equals_value, ...]).OnlyEnforcedIf(selected_value)
и справа налево, выбранное значение подразумевает, что selected_value
истинно
for var_i_equals_value in ...:
model.AddImplication(var_i_equals_value, selected_value)
И тогда вам просто нужно ограничить сумму выбранных значений
model.Add(sum(selected_value_array) <= 10)
Теперь вам нужно спросить, действительно ли вам нужно целочисленные переменные или просто матрица булевых переменных. Я предлагаю последнее.