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