CPXXgetcallbackindicatorinfo 和 CPXgetcallbackindicatorinfo
例程 "CPXXgetcallbackindicatorinfo/CPXgetcallbackindicatorinfo可在 MIP 回调过程中获取预解问题的指标约束信息。
int CPXXgetcallbackindicatorinfo( CPXCENVptr 环境, void * cbdata, int 由此, CPXDIM iindex, int whichinfo, void * result_p )
int CPXgetcallbackindicatorinfo( CPXCENVptr 环境, void * cbdata, int 由此, int iindex, int whichinfo, void * result_p )
描述
这是高级例程。 高级例程通常需要深入了解 CPLEX 所使用的算法。 因而它们会提高应用程序中错误行为的风险,而这种行为可能难以调试。 所以,本团队鼓励您认真考虑您是否可以改为通过其他 Callable Library 例程来完成同一任务。
例程 "CPXXgetcallbackindicatorinfo/CPXgetcallbackindicatorinfo可在 MIP 回调过程中获取预解问题的指标约束信息。 当存在指标约束条件时,CPLEX 会创建一个带有指标约束条件的典型形式的预解问题,与预解设置无关。
Canonical Form
(implying variable = { 0 | 1 }) IMPLIES (implied variable) R rhs
在这种典型形式中,rhs 代表右侧,R 代表其中一种关系:
- 小于或等于
- 大于或等于
- 等于
在原始问题中,你可能会遇到隐含约束条件有两个或多个变量的指标约束。 相比之下,在规范形式中,隐含约束条件只能有一个变量;而且,它在约束条件中的系数必须是 1(一)。 例如,CPLEX 将指标约束转换为
x = 0 -> 3y + z <= 0
通过引入隐含变量 "w,将其转换为规范格式,就像这样:
w = 3y + z
x = 0 -> w <= 0
The argument whichinfo can assume one of the following values in a call to CPXXgetcallbackindicatorinfo/CPXgetcallbackindicatorinfo:
CPX_CALLBACK_INFO_IC_NUM返回指标约束的数量。CPX_CALLBACK_INFO_IC_IMPLYING_VAR返回 "iindex-th 指标约束的隐含变量索引。 如果MIP 回调在原始模型和简化的预分解模型之间的切换(CPXPARAM_MIP_Strategy_CallbackReducedLP)是关闭的(即设置为 "CPX_OFF),则索引是以原始问题为单位的,如果索引 =-1,则变量是由预分解创建的。 否则,该索引将以预先解决的问题为单位。CPX_CALLBACK_INFO_IC_IMPLIED_VAR返回 "iindex-th 指标约束的隐含变量索引。 如果 "在原始模型和缩小的预分解模型之间进行 MIP 回调切换(CPXPARAM_MIP_Strategy_CallbackReducedLP)设置为 "CPX_OFF,则索引是以原始问题为单位的;如果索引 ="-1,则变量是由 presolve 创建的。 否则,该索引将以预先解决的问题为单位。CPX_CALLBACK_INFO_IC_SENSE返回 "iindex-th 指标约束的意义。CPX_CALLBACK_INFO_IC_COMPLreturns 0 (zero) if theiindex-th indicator constraint is 不 complemented, and 1 (one) otherwise.CPX_CALLBACK_INFO_IC_RHS返回 "iindex-th 指标约束的右侧。CPX_CALLBACK_INFO_IC_IS_FEASIBLEreturns 1 (one) if the implying variable is not 0 (zero) or 1 (one), or if theiindex-th indicator constraint is satisfied at the current node; otherwise, it returns 0 (zero).
当 wherefrom==CPX_CALLBACK_MIP 时,任何查询当前 LP 解的例程都可能会生成无效数据,因为在此情况下,将在对当前节点的 LP 松弛进行求解之前调用 MIP 回调。
参数
- env
- 一个指向
CPXXopenCPLEX/CPXopenCPLEX所返回 CPLEX 环境的指针。 - cbdata
- 传递给用户编写回调的指针。 此自变量必须是传递给用户编写回调的
cbdata的值。 - wherefrom
一个整数值,其报告从何处调用了用户编写的回调。 此自变量必须是传递给用户编写回调的
wherefrom的值。请勿以
wherefrom==CPX_CALLBACK_MIP_DELETENODE来调用此例程。 请勿以wherefrom==CPX_CALLBACK_MIP_NODE来调用此例程。- iindex
- 整数,指标约束的索引。
- whichinfo
- 一个整数,指定其中一个符号值,表示要访问哪类信息。
- result_p
- 通用指针,指向 "
double或 "int类型的变量,代表 "whichinfo返回的值。