回调
回调
Gurobi回调类。回调是由Gurobi Optimizer周期性地调用的用户函数,以便允许用户查询或修改优化状态。更确切地说,如果传递有两个参数的函数(模型
和在哪里
)作为论证Model.Optimize.,您的功能将在优化期间调用。然后可以调用你的回调函数model.cbget.查询优化器以获取有关优化状态的详细信息。
Gurobi回调可以使用都使用,以监视优化的进度,并修改Gurobi Optimizer的行为。一个简单的用户回调函数可能会调用model.cbget.要生产自定义显示,或者可能提前终止优化(使用Model.Terminate.)。更复杂的MIP回调可能会使用model.cbgetnoderel或者model.cbgetsolution.从解决方案检索到当前节点的值,然后使用模型.CBCUT.或者model.cblazy.添加约束以切断该解决方案,或model.cbsetsolution.导入从该解决方案构建的启发式解决方案。
Gurobi回调类提供了一组在用户回调函数中使用的常量。本课程中的第一组常量列出了该课程的选项在哪里
对用户回调函数的参数。这在哪里
参数从优化过程中指示正在调用用户回调。选项列于其中回调代码本文件的一部分。
此类中的其他一组常量列出了该选项什么
争论model.cbget.。这什么
用户回调使用参数以指示它想要检索的哪些状态信息。可以在中找到完整的选项列表回调代码部分。和我们一样在哪里
论证,你指的是一个什么
常数通过grb.callback.
。例如,将请求单纯x客观值grb.callback.spx_objval.
。
如果您想将数据传递给您的回调函数,您可以通过此操作模型目的。例如,如果您的程序包含该声明model._value = 1
在优化开始之前,那么您的回调函数可以查询值model._value.
。请注意,用户数据字段的名称必须以下划线开头。
使用多个线程解决模型时,请注意用户回调仅从单个线程调用,因此您不需要担心回调的线程安全。
你可以看看Callback.py.
在示例目录中,有关如何使用Gurobi回调的详细信息。