GRBcbstoponemultiobj


GRBcbstoponemultiobj

int GRBcbstoponemultiobj GRBmodel *模型,
void * cbdata,
int objnum)

在不停止分层优化过程的情况下,中断多目标MIP问题中某一优化步骤的优化过程。注意,此例程只能在多目标MIP模型中调用在哪里回调例程上的值不等于GRB_CB_MULTIOBJ(见回调代码章节以获取更多信息)。

通常,您可以通过查询最后完成的多目标步骤的数量来停止多目标优化步骤,并使用该数量停止当前步骤,并转向下一个层次目标(如果有的话),如下面的示例所示:

使用示例:

#include  typedef struct {int objcnt;time_t开始时间;} usrdata_t;int mycallback(GRBmodel *model, void *cbdata, int where, void *usrdata) {int error = 0;Usrdata_t *ud = (Usrdata_t *);if (where == GRB_CB_MULTIOBJ){/*获取当前目标数*/错误= GRBcbget(cbdata, where, MULTIOBJ_OBJCNT, (void*)&ud->objcnt);if (error) goto QUIT;/*将起始时间设置为当前时间*/ ud->starttime = time();} else if (time() - ud->starttime > BIG || /*花费太长或足够好*/){/*只停止此优化步骤*/ error = GRBcbstoponemultiobj(model, cbdata, ud->objcnt);if (error) goto QUIT; } QUIT: return error; }

你应该参考一下多个目标有关如何指定多个目标函数和控制它们之间的权衡的信息。

返回值:

非零返回值表明在停止由objcnt指定的多目标步骤时发生了问题。指的是错误代码表中可能的返回值列表。关于错误的详细信息可以通过调用GRBgeterrormsg

参数:

模型:模型参数,由Gurobi优化器传递给用户回调。这个参数必须不加修改地从用户回调传递给GRBcbstoponemultiobj ()

cbdata:cbdata参数,由Gurobi优化器传递给用户回调。这个参数必须不加修改地从用户回调传递给GRBcbstoponemultiobj ()

objnum:多目标优化步长中断次数。对于在本地运行的进程,此参数可以具有特殊值-1,表示停止当前步骤。