过滤内容,
版本
文本搜索
回调
例子:回调最后一个例子,我们考虑的是回调
,这表明Gurobi回调的使用。回调函数是用来优化的进度报告或修改Gurobi解算器的行为。手机万博登录使用一个回调,用户写程序实现所需的行为。例程传递到Gurobi优化器优化开始时,和优化过程中经常调用的例程。用户程序的一个参数是一个在哪里
价值,这表明在优化过程中调用回调。用户回调例程可以调用优化图书馆查询特定的值。我们参考了读者的回调部分Gurobi参考手册为更精确的细节。
我们回调实现了一个简单的例子终止方案:用户通过一个节点数为回调,回调要求优化器终止时,节点数。这是用C实现如下:
GRBcbget (cbdata, GRB_CB_MIP_NODCNT &nodecnt);如果(nodecnt >限制)GRBterminate(模型);在Python中,这是实现为:
nodecnt = model.cbGet (GRB.Callback.MIP_NODCNT)如果nodecnt >模型。_mynodelimit: model.terminate ()获得当前节点数,用户程序调用
cbget
例程(GRBcbget
在C语言中,函数或cbGet
方法在模型对象c++, c#、Java、Python)。我们的回调例子也打印进展信息。在C:
GRBcbget (cbdata, GRB_CB_MIP_NODCNT &nodecnt);如果(nodecnt - mydata - > lastmsg > = 100) {…printf (" % 7.0 f……”、nodecnt…);}在Python中:
nodecnt = model.cbGet (GRB.Callback.MIP_NODCNT)如果nodecnt % 100 = = 0:打印(int (nodecnt),“……”)用户回调函数调用
cbGet
日常查询优化的状态。