回调


回调

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回调的详细信息。