Добавим две двоичные переменные y_0 и y_1:
y = m.addVars(2, vtype=GRB.BINARY, name="y")
Теперь вы можете добавить два ограничения индикатора :
# If y[0] == 1, then quicksum(x.select(8, '*')) == 2
m.addConstr((y[0] == 1) >> (quicksum(x.select(8, '*')) == 2))
# If y[1] == 1, then quicksum(x.select(8, '*')) == 3
m.addConstr((y[1] == 1) >> (quicksum(x.select(8, '*')) == 3))
Затем вы добавляете ограничение
m.addConstr(y[0] + y[1] == 1)
Это гарантирует, что только одна из этих двух переменных может быть 1, и, следовательно, сумма равна либо 2, либо 3.