如果我在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找到的当前最佳解决方案。我该怎么做?你知道吗
您可以使用
pulp.GUROBI
或pulp.GUROBI_CDM
。主要区别在于
pulp.GUROBI
是gurobipy(Gurobi-Python接口)的包装,而pulp.GUROBI_CDM
使用命令行(即,它在文件中写入LP/ILP,然后调用解算器)。你知道吗我们来区分这两种情况:
案例1:
pulp.GUROBI
:在这种情况下,可以访问solverModel对象。对于字段,您可以直接参考文档。但是,对于您的特定用例,您需要的是ObjBound。
一个小例子:
案例2:
pulp.GUROBI_CDM
:在这种情况下,通过命令行解决问题,并从结果文件(即here)读取解决方案
请注意,GUROBI\u CMD确实提供了良好的解决方案状态[see here],因此即使解决方案不是,您也可以读取Optimal,因为GUROBI解决方案文件没有提供有关状态的信息。
相关问题 更多 >
编程相关推荐