CPXXbranchcallbackbranchgeneral 和 CPXbranchcallbackbranchgeneral
例程 CPXXbranchcallbackbranchgeneral/CPXbranchcallbackbranchgeneral 指定当分支包含变量边界更改和其他约束时要从当前节点产生的分支。
int CPXXbranchcallbackbranchgeneral( CPXCENVptr 环境, void * cbdata, int 由此, CPXDIM varcnt, CPXDIM const * 变种, char const * varlu, double const * varbd, CPXDIM rcnt, CPXNNZ nzcnt, double const * 根部, char const * 感觉到, CPXNNZ const * rmatbeg, CPXDIM const * rmatind, double const * rmatval, double 节点, void * 用户手柄, CPXCNT * 序列号_p )
int CPXbranchcallbackbranchgeneral( CPXCENVptr 环境, void * cbdata, int 由此, int varcnt, int const * 变种, char const * varlu, double const * varbd, int rcnt, int nzcnt, double const * 根部, char const * 感觉到, int const * rmatbeg, int const * rmatind, double const * rmatval, double 节点, void * 用户手柄, int * 序列号_p )
描述
这是高级例程。 高级例程通常需要深入了解 CPLEX 所使用的算法。 因而它们会提高应用程序中错误行为的风险,而这种行为可能难以调试。 所以,本团队鼓励您认真考虑您是否可以改为通过其他 Callable Library 例程来完成同一任务。
例程 CPXXbranchcallbackbranchgeneral/CPXbranchcallbackbranchgeneral 指定当分支包含变量边界更改和其他约束时要从当前节点产生的分支。 只能从用户编写的分支回调函数内对其进行调用。
如果在调用回调的 "CPXXmipopt/CPXmipopt之前将 "在原始模型和缩小的预分解模型之间进行 MIP 回调切换(CPXPARAM_MIP_Strategy_CallbackReducedLP)设置为 "CPX_OFF,则分支变量与原始问题相关。 否则,分支变量与预求解的问题相关。
| L | 更改下边界 |
| U | 更改上边界 |
| B | 更改上边界和下边界 |
| L | 小于或等于约束 |
| E | 等于约束 |
| G | 大于或等于约束 |
参数
- env
- 一个指向
CPXXopenCPLEX/CPXopenCPLEX所返回 CPLEX 环境的指针。 - cbdata
- 传递到用户编写的回调的指针。 此自变量必须是传递给用户编写回调的
cbdata的值。 - wherefrom
- 一个整数值,其报告从何处调用了用户编写的回调。 此自变量必须是传递给用户编写回调的
wherefrom的值。 - varcnt
- 一个整数,它指定在数组
varind、varlu和varbd中指定的边界更改数。 - varind
- 该数组与 var
lu和 varbd一起定义了分支的绑定更改。 条目varind[i]是变量的索引。 - varlu
- 此数组与
varind和varbd一起定义分支的边界更改。 条目varlu[i]是用于指定要更改的边界的三个可能值之一。 这些值显示在“表 1”中。 - varbd
- 此数组与
varind和varlu一起定义分支的边界更改。 条目varbd[i]指定边界的新值。 - rcnt
- 一个整数,其指定分支的约束数。
- nzcnt
- 一个整数,指定分支的非零约束系数的数量。 这指定数组
rmatind和rmatval的长度。 - rhs
- 长度为
rcnt的数组,其中包含分支的每个约束的右侧项。 - sense
- 长度为
rcnt的数组,其中包含要为分支添加的每个约束的含义。 可能的值显示在“表 2”中。 - rmatbeg
- 与
rmatbeg和rmatind一起定义分支约束的数组。 - rmatind
- 与
rmatbeg和rmatind一起定义分支约束的数组。 - rmatval
- 与
rmatbeg和rmatind一起定义分支约束的数组。 格式类似于例程CPXXaddrows/CPXaddrows中用于描述约束矩阵的格式。 每一行都必须存储在此数组的顺序位置中,从位置rmatbeg[i]到rmatbeg[i+1]-1(或者从rmatbeg[i]到nzcnt-1,如果i=rcnt-1)。 每个条目rmatind[i]均指定对应系数rmatval[i]的列索引。 所有行都必须邻接,并且rmatbeg[0]必须为0。 - nodeest
- 一个双精度值,指定要通过此分支创建的节点的节点估算值。 节点估计值用于从分支-切割树中选择节点,其特定参数值用于控制MIP 节点选择策略(
CPXPARAM_MIP_Strategy_NodeSelect)。 - userhandle
- 指向用户私有数据(这些数据应该与此分支创建的节点相关联)的指针。 可为
NULL。 - seqnum_p
- 指向一个整数的指针,该整数在返回时将包含 CPLEX 已分配给从此分支创建的节点的序号。 此序号可用于在以后对节点回调的调用中选择此节点。