8.4.5. 回调函数

函数

MDOsetcallbackfunc()

设置用户定义的回调函数

MDOgetcallbackfunc()

检索当前用户定义的回调函数

MDOcbget()

检索有关优化进度的其他数据

MDOcbcut()

将新割平面添加到MIP模型

MDOcbbranch()

通过指定变量和该变量的下界和上界之间的拆分点,来指定分支方法

MDOcbsolution()

为MIP模型提供了一种新的可行解

int MDOsetcallbackfunc(MDOmodel *model, callbackfn cb, void *usrdata)

设置用户定义的回调函数。

Parameters:
  • model (MDOmodel*) – [in] 模型对象。

  • cb (callbackfn) –

    [in] 回调函数。 类型 callbackfn 定义为:

    typedef int (*callbackfn)(const MDOmodel* model, void* cbdata, int where, const void* usrdata);
    

  • usrdata (void*) – [in] 用户定义的回调上下文。

Returns:

指定函数状态的响应代码。

int MDOgetcallbackfunc(MDOmodel *model, callbackfn *cb)

检索当前用户定义的回调函数。

Parameters:
  • model (MDOmodel*) – [in] 模型对象。

  • cb (callbackfn*) –

    [out] 保存当前回调函数的位置。 类型 callbackfn 定义为:

    typedef int (*callbackfn)(const MDOmodel* model, void* cbdata, int where, const void* usrdata);
    

Returns:

指定函数状态的响应代码。

int MDOcbget(void *cbdata, int where, int what, void *resultP)

检索有关优化进度的其他数据。

Parameters:
  • cbdata (void*) – [in] 传递给用户回调函数的 cbdata 参数。

  • where (int) – [in] 传递给用户回调函数的 where 参数。

  • what (int) – [in] 用户回调请求的数据ID。

  • resultP (void*) – [out] 保存请求数据的位置,其类型取决于请求的数据。

Returns:

指定函数状态的响应代码。

int MDOcbcut(void *cbdata, int cutlen, const int *cutind, const double *cutval, char cutsense, double cutrhs)

将新割平面添加到MIP模型。

Parameters:
  • cbdata (void*) – [in] 传递给用户回调函数的 cbdata 参数。

  • cutlen (int) – [in] 与新割平面关联的变量数。

  • cutind (const int*) – [in] 与新割平面关联的变量索引列表。

  • cutval (const double*) – [in] 与新割平面关联的变量系数列表。

  • cutsense (char) – [in] 新的割平面比较符。

  • cutrhs (double) – [in] 新割平面的右侧值。

Returns:

返回0或负数指定函数状态的响应代码,或一个正数指定提交状态:

  • 1: 提交是合法的,但值不正确(如不可行)

  • 2: 提交是正确的,但没有被接受

int MDOcbbranch(void *cbdata, int index, double value, int way)

通过指定变量和该变量的下界和上界之间的拆分点,来指定分支方法。

Parameters:
  • cbdata (void*) – [in] 传递给用户回调函数的 cbdata 参数。

  • index (int) – [in] 变量索引。

  • value (double) – [in] 分割点。它应该在变量的下界和上界之间。

  • way (int) –

    [in] 首先要考虑的分支。有效选项包括:

    • <0: 首先考虑下行分支。

    • >0: 首先考虑向上分支。

Returns:

返回0或负数指定函数状态的响应代码,或一个正数指定提交状态:

  • 1: 提交是合法的,但值不正确(如不可行)

  • 2: 提交是正确的,但没有被接受

int MDOcbsolution(void *cbdata, const double *solution, double *objP)

为MIP模型提供了一种新的可行解。

Parameters:
  • cbdata (void*) – [in] 传递给用户回调函数的 cbdata 参数。

  • solution (const double*) – [in] 要提供的新的可行解。

  • objP (double*) – [out] 保存新可行解目标函数值的位置。

Returns:

返回0或负数指定函数状态的响应代码,或一个正数指定提交状态:

  • 1: 提交是合法的,但值不正确(如不可行)

  • 2: 提交是正确的,但没有被接受