定制通过回调

定制通过回调

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

从gurobipy导入* def mycallback(model, where): if where == GRB. callback . mip: time = model. cbget (GRB. callback . runtime) best = model. cbget (GRB. callback . mip_objbst) if time > 10 and best < GRB。无穷: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参考手册