GRBCallback
GRBCallback
Gurobi回调类。这是一个抽象类。要实现回调,您应该创建该类的子类并实现回调()
方法。如果你将这个子类的一个对象传递给方法GRBModel.setCallback在调用之前GRBModel.optimize,回调()
方法将定期调用。根据调用回调的位置,您将能够获得关于优化过程的各种信息。
注意,这个类包含一个受保护的int成员变量:在哪里
.您可以从您的回调()
方法确定从何处调用回调。
可以使用Gurobi回调来监视优化的进程,并修改Gurobi优化器的行为。一个简单的用户回调函数可以调用GRBCallback.getIntInfo或GRBCallback.getDoubleInfo方法生成自定义显示,或者可能提前终止优化(使用GRBCallback.abort).更复杂的MIP回调可能使用GRBCallback.getNodeRel或GRBCallback.getSolution将解决方案中的值检索到当前节点,然后使用GRBCallback.addCut或GRBCallback.addLazy添加一个约束条件来截断那个解,或者GRBCallback.setSolution导入由该解决方案构建的启发式解决方案。对于多目标问题,您可以使用GRBCallback.stopOneMultiObj在多目标MIP问题中,在不停止分层优化过程的情况下中断其中一个优化步骤的优化过程。
当使用多个线程解决模型时,用户回调只从单个线程调用,因此您不需要担心回调的线程安全。
注意,不支持从回调中更改参数,这样做可能会导致未定义的行为。
你可以看看Callback.java
示例详细说明如何使用Gurobi回调。
部分