8.5.16. MDOCallback

class MDOCallback

用户定义的回调的基类。

方法

abort

在MIP回调函数中向求解器发送停止请求

addBranch

通过指定变量和该变量的上下界之间的拆分点来提交一个新的分支方法

addCut

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

getDoubleInfo

获取求解过程中的一个浮点型的值

getIntInfo

获取求解过程中的一个整数型的值

getNodeRel

获取当前松弛问题的解

getNodeRel

获取当前松弛问题的解

getSolution

获取当前最优解的值

getSolution

获取当前最优解的值

setSolution

提供一个可行解给MIP

setSolution

提供一个可行解给MIP

useSolution

如果已经通过 setSolution 提供了一些变量的解,可以选择性的立即提交这个解给MIP求解器

abort()

在MIP回调函数中向求解器发送停止请求。 求解器终止后,将从 MDOModel.optimize 返回错误代码 ABORT_CTRL_C

int addBranch(MDOVar var, double value, int way)

通过指定变量和该变量的上下界之间的拆分点来提交一个新的分支方法。

Parameters:
  • MDOVar var – 变量。

  • double value – 分割点。它应该在变量的上下界之间。

  • int way

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

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

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

Returns:

提交状态:

  • 0: 提交成功

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

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

int addCut(const MDOLinExpr &lhs, char sense, double rhs)

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

Parameters:
  • const MDOLinExpr& lhs – 新割平面的左侧值。

  • char sense – 新割平面的比较符。

  • double rhs – 新割平面的右侧值。

Returns:

提交状态:

  • 0: 提交成功

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

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

double getDoubleInfo(what)

获取求解过程中的一个浮点型的值。

Parameters:

what – 要获取值的code。

Returns:

要获取的值

int getIntInfo(what)

获取求解过程中的一个整数型的值。

Parameters:

what – 要获取值对应的code。

Returns:

要获取的值。

double getNodeRel(MDOVar v)

获取当前松弛问题的解。

Parameters:

MDOVar v – 要获取解的变量

Returns:

变量对应的解。

double *getNodeRel(const MDOVar *v, int len)

获取当前松弛问题的解。

Parameters:
  • const MDOVar* v – 要获取解的变量。

  • int len – 变量的数目。

Returns:

变量对应的解。

double getSolution(MDOVar v)

获取当前最优解的值。

Parameters:

MDOVar v – 要获取解的变量。

Returns:

变量对应的解。

double *getSolution(const MDOVar *v, int len)

获取当前最优解的值。

Parameters:
  • const MDOVar* v – 要获取解的变量。

  • int len – 变量的数目。

Returns:

变量对应的解。

void setSolution(MDOVar var, double val)

提供一个可行解给MIP。

Parameters:
  • MDOVar var – 要提供解的变量。

  • double val – 要提供的,变量对应的解。

void setSolution(const MDOVar *var, const double *val, int len)

提供一个可行解给MIP。

Parameters:
  • const MDOVar* var – 要提供解的变量数组。

  • const double* val – 要提供的,变量对应的解。

  • int len – 要提供解的变量数目。

int useSolution(double *obj)

如果已经通过 setSolution 提供了一些变量的解,可以选择性的立即提交这个解给MIP求解器。

Parameters:

double* obj – [out] The objective value of submitted solution.

Returns:

  • 0: 提交成功.

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

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