manbet体育手机客户端
回调
例子:打回来我们考虑的最终示例是打回来
,这证明了Gurobi回调的使用。回调用于报告优化的进度或修改Gurobi求解器的行为。手机万博登录要使用回调,用户会写入实现所需行为的例程。当优化开始时,例程将传递到Gurobi优化器,并且在优化过程中定期调用例程。用户例程的一个论点是一个在哪里
值,它指示从优化过程中的位置调用回调。用户回调例程可以调用优化库来查询某些值。我们将读者提交给回调部分Gurobi参考手册更精确的细节。
我们的回调示例实现了一个简单的终止方案:用户将节点计数传递到回调中,并且回调要求优化器终止该节点计数时终止。这在C中实施如下:
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.
例程查询优化状态。