【问题标题】:MIP start in GurobiMIP 从 Gurobi 开始
【发布时间】:2018-09-22 13:10:41
【问题描述】:

我正在尝试使用 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 。关于为什么以及如何解决这个问题的任何想法?

【问题讨论】:

    标签: python gurobi


    【解决方案1】:

    From the docs:

    [...] 回想一下,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
    

    【讨论】:

      猜你喜欢
      • 2018-01-26
      • 2017-03-01
      • 1970-01-01
      • 2014-09-09
      • 2018-03-04
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      相关资源
      最近更新 更多