Старт MIP в Гуроби

Я пытаюсь установить запуск MIP с помощью решателя Gurobi MILP. У меня есть набор бинарных переменных:

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

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

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

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


person Xb19    schedule 22.09.2018    source источник


Ответы (1)


Из документации:

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

Итак, после того, как вы установили начало mip для своих переменных, вам нужно запустить 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
person joni    schedule 22.09.2018