GRBcbstoponemultiobj


GRBcbstoponemultiobj

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

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

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

使用示例:

#include 类型定义结构{int对象;time_t开始时间;} usrdata_t;int mycallback(GRBmodel *model, void *cbdata, int where, void *usrdata) {int error = 0;Usrdata_t *ud = (Usrdata_t *)ursdata;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(模型,cbdata, ud->对象);if (error) goto QUIT; } QUIT: return error; }

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

返回值:

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

参数:

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

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

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