【问题标题】: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}
    

    【讨论】:

      【解决方案2】:

      您是否尝试过使用Xn 属性,可能与SolutionNumber 参数结合使用?尽管对于您的情况,您应该保留默认的 0 值 SolutionNumber。 你可以从这里开始:http://www.gurobi.com/documentation/6.0/reference-manual/xn

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多