【问题标题】:Get best-known feasible answer after time limit在时限后获得最知名的可行答案
【发布时间】:2014-12-18 14:36:27
【问题描述】:
我正在 Gurobi 6.0 中解决一个大型 MIP。我的顾问想为这个问题设定一个 12 小时的时间限制。我发现我可以设置 TimeLimit 参数,这将在分配的时间后杀死求解器,但我不知道当时如何检索最佳可行解决方案,只是目标值和最优性差距。有没有办法获得最佳可行的解决方案?
【问题讨论】:
标签:
python
mathematical-optimization
linear-programming
gurobi
integer-programming
【解决方案1】:
要获得迄今为止最好的可行答案,您应该首先通过检查模型对象的 Status 属性来验证是否存在可行的解决方案,然后查询变量对象的 X 属性。如果你已经命名了你的变量(使用 name 参数,使用 python api 的巧妙方法是创建一个具有非零值的字典。
import math
epsilon = 1e-6
m = grb.Model()
# .....
if m.SolCount > 0:
solution = {v.varName: v.X for v in m.getVars() if math.abs(v.X) > epsilon}