定制通过回调

定制通过回调

我们想简要介绍的另一种类型的定制可以通过Gurobi回调来实现。回调允许您跟踪优化过程的进度。为了我们的示例,假设您希望MIP优化器在退出前运行10秒钟,但不希望它在找到可行的解决方案之前终止。下面的回调方法将实现这个条件:

从gurobipy中导入* def mycallback(model, where): if where == GRB. callback . mip: time = model. cbget (GRB. callback . mip_objbst) if time > 10 and best < GRB. objbst;无穷:model.terminate ()

一旦您导入此函数(从自定义导入*),你就可以说m.optimize (mycallback)以获得所需的终止行为。或者,你可以定义你自己的自定义优化方法,它总是调用回调:

def myopt(模型):model.optimize (mycallback)
这让你可以说myopt (m)

您可以通过模型对象将任意数据传递到回调中。例如,如果你设置m._mydata = 1在调用之前优化(),你可以查询m._mydata在回调函数中。注意,用户数据字段的名称必须以下划线开头。

这个回调示例包含在< installdir > / / python / custom.py例子.类型从自定义导入*导入回调函数和myopt ()函数。

你可以输入帮助(GRB.Callback)有关回调的更多信息。你也可以参考回调类文档中的manbet体育手机客户端Gurobi参考手册