【发布时间】:2019-11-30 19:12:25
【问题描述】:
如果我在 gurobi 求解器中使用交互式求解器,我可以执行以下操作:
gurobi> m = read('model.mp')
gurobi> m.optimize()
[...]
Found heuristic solution: objective 821425.00000
然后中止并通过
获取当前解决方案gurobi> m.printAttr('X')
我希望在纸浆中具有相同的行为。特别是,在调用之后:
prob = pulp.LpProblem(name="MIPProblem", sense=pulp.LpMaximize)
[...]
status = prob.solve(pulp.GUROBI_CMD(msg=True, keepFiles=1))
我想等到在某个时间跨度后找到/中止第一个启发式解决方案,然后获得 Gurobi 找到的当前最佳解决方案。我该怎么做?
【问题讨论】:
-
prob.objective有效吗?我认为您应该删除status =部分并尝试单独解决,然后通过prob.objective得到答案 -
欢迎来到 SO!如果您查看
pulp.solvers- pythonhosted.org/PuLP/solvers.html 的文档,您可以设置时间限制或允许的最优差距。要停止在第一个可行的解决方案上,请设置一个非常大的最优差距。 -
@kabdulla 但是,例如,我可以每隔 t 时间打印当前的最佳解决方案,然后继续解决以获得更好的解决方案(重复此操作直到我得到最好的解决方案)?如果我设置了时间限制或最优差距,然后再次调用 .solve(),它会从头开始,是吗?