С 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
Другие вопросы по тегам