我正在尝试从Gurobi MILP解算器开始设置MIP。我有一组二进制变量:
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。是否知道为什么以及如何解决该问题?
答案 0 :(得分:1)
[...]回想一下,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