定制通过回调

定制通过回调

我们想简单介绍的另一种定制可以通过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参考手册