Начало MIP в Гуроби - PullRequest
       5

Начало MIP в Гуроби

0 голосов
/ 22 сентября 2018

Я пытаюсь начать MIP с помощью Gurobi MILP solver.У меня есть набор двоичных переменных:

tupledict_m = master.addVars(list_m, name="m", vtype=GRB.BINARY)

, где master - модель Gurobi, list_m - кортеж целых чисел.Я запускаю следующее, чтобы установить начальные значения:

for i in list_m: tupledict_m[i].start = bool(m_values[i])

, где m_values ​​[i] равно либо 1,0, либо 0,0 с типом данных с плавающей запятой.Сразу после этого, если я напечатаю: print([tupledict_m[i].start for i in list_m]) я получаю 1e + 101 везде.Любая идея о том, почему и как это исправить?

1 Ответ

0 голосов
/ 22 сентября 2018

Из документов:

[...] Напомним, что оптимизатор Gurobi использует метод отложенного обновления, поэтому изменения атрибутов не вступают в силу до следующеговызовите Model.update, Model.optimize или Model.write для связанной модели.

Так что после того, как вы установите mip start для ваших переменных, вам нужно запустить master.update().

Пример:

In [1]: from gurobipy import *

In [2]: m = Model()
Academic license - for non-commercial use only

In [3]: x = m.addVars(3, vtype=GRB.BINARY, name="x")

In [4]: x[2].start = 0

In [5]: print(x[2].start)
1e+101

In [6]: m.update()

In [7]: print(x[2].start)
0.0
...