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