С gurobi, как я могу ограничить область переменной в наборе значений
Вот как я использую addVar
добавить переменную в модель:
my_set[j, t] = self.m.addVar(vtype=GRB.INTEGER, lb=min_value, ub=max_value, name='test')
И это может только ограничить значение как целое число, попадающее между min_value и max_value, но на самом деле я хотел бы ограничить возможное значение в определенном наборе целых чисел. Как я могу это сделать?
1 ответ
Я не знаю, возможно ли это напрямую (это невозможно в стандартном ILP, возможно, в качестве расширения gurobi), но вы можете добавить некоторые ограничения в свою программу. Предполагая, что переменная, которую вы хотите ограничить, равна y, а набор переменных равен D y = {v 1, v 2,..., v | D y | }, вы можете добавить следующие переменные и ограничения x i:
- y = x i для i в 1... | D y |
- сумма (x i для i в 1... | D y |) = 1
- х я = 0 или 1