回调
回调
例子:打回来我们考虑的最后一个例子打回来
,这表明使用Gurobi回调。回调用于报告优化的进度或修改Gurobi求解器的行为。手机万博登录要使用回调,用户会写入实现所需行为的例程。优化开始时,程序将传递给Gurobi优化器,并且在优化过程中定期调用例程。用户例程的一个参数是一个在哪里
值,它指示从优化过程中的位置调用回调。用户回调例程可以调用优化库来查询某些值。我们将读者提交给回调部分Gurobi参考手册有关更多精确的细节。
我们的回调示例实现了一个简单的终止方案:用户将节点计数传递到回调中,并且回调要求优化器终止该节点计数时终止。这是如下所实施的:
GRBCBGET(CBDATA,where,grb_cb_mip_nodcnt,&nodecnt);if(nodecnt>限制)grbterminate(模型);在Python中,这是:
nodeCnt = model.cbget(grb.callback.mip_nodcnt)如果nodeCnt> model._mynodelimit:model.terminate()要获取当前节点计数,用户例程调用
CBGE.
常规(这是grbcbet.
在c中的功能,或CBGE.
C ++,C#,Java和Python中的模型对象的方法。我们的回调示例还会打印进度信息。在c:
GRBCBGET(CBDATA,where,grb_cb_mip_nodcnt,&nodecnt);if(nodeCnt - mydata-> lastmsg> = 100){... printf(“%7.0f ...”,nodecnt,......);}在Python:
NodeCnt = model.cbget(grb.callback.mip_nodcnt)如果nodeCnt%100 == 0:print(int(nodecnt),“...”)再次,用户回调调用
CBGE.
例程查询优化状态。