通过回调进行定制

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

from gurobipy import * def mycallback(model, where): if where == GRB. callback . mip: time = model. cbget (GRB. callback . runtime) best = model. cbget (GRB. callback . mip_objbst) if time bbb10 and best < GRB。无穷:model.terminate ()

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

Def myopt(model): model.optimize(mycallback)
这可以让你说myopt (m)

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

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

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