Python 在时间限制后获得最著名的可行答案

Python 在时间限制后获得最著名的可行答案,python,mathematical-optimization,linear-programming,gurobi,integer-programming,Python,Mathematical Optimization,Linear Programming,Gurobi,Integer Programming,我正在解决Gurobi6.0中的一个大型MIP。我的顾问想对这个问题设定12小时的时限。我发现我可以设置TimeLimit参数,这将在分配的时间后终止解算器,但我不知道如何在那个时候检索最佳可行解,只是目标值和最优性差距。有没有办法得到最佳可行的解决方案 要获得迄今为止最好的可行答案,您应该首先检查模型对象上的Status属性,然后查询变量对象上的X属性,以验证是否存在可行的解决方案。若您已经命名了变量(使用e上的name参数),那个么使用python api进行命名的一个好方法就是创建一个具有

我正在解决Gurobi6.0中的一个大型MIP。我的顾问想对这个问题设定12小时的时限。我发现我可以设置TimeLimit参数,这将在分配的时间后终止解算器,但我不知道如何在那个时候检索最佳可行解,只是目标值和最优性差距。有没有办法得到最佳可行的解决方案

要获得迄今为止最好的可行答案,您应该首先检查模型对象上的Status属性,然后查询变量对象上的
X
属性,以验证是否存在可行的解决方案。若您已经命名了变量(使用e上的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}

您是否尝试过使用
Xn
属性,可能与
SolutionNumber
参数组合使用?尽管对于您的情况,您应该保留
SolutionNumber
的默认0值。 您可以从这里开始: