CPXXcutcallbackaddlocal 和 CPXcutcallbackaddlocal
例程 CPXXcutcallbackaddlocal/CPXcutcallbackaddlocal 用于在 MIP 分支裁剪期间添加局部割平面。
int CPXXcutcallbackaddlocal( CPXCENVptr 环境, void * cbdata, int 由此, CPXDIM nzcnt, double 根部, int 感觉到, CPXDIM const * 切割, double const * 切值 )
int CPXcutcallbackaddlocal( CPXCENVptr 环境, void * cbdata, int 由此, int nzcnt, double 根部, int 感觉到, int const * 切割, double const * 切值 )
描述
这是高级例程。 高级例程通常需要深入了解 CPLEX 所使用的算法。 因而它们会提高应用程序中错误行为的风险,而这种行为可能难以调试。 所以,本团队鼓励您认真考虑您是否可以改为通过其他 Callable Library 例程来完成同一任务。
例程 CPXXcutcallbackaddlocal/CPXcutcallbackaddlocal 用于在 MIP 分支裁剪期间添加局部割平面。 局部割平面是应用于当前节点以及以此节点为根的子树的割平面。 全局割平面(即,在整个分支裁剪树中应用的割平面)可通过例程
CPXXcutcallbackadd/CPXcutcallbackadd 添加。 此例程只能从用户编写的割平面回调中调用;因此,仅当其自变量 wherefrom 的值为名称以 CPX_CALLBACK_MIP_CUT_ 开头的其中一个值时,才能调用此例程。
如果在调用回调的 "CPXXmipopt/CPXmipopt之前,参数 "在原始模型和缩小的预分解模型之间进行 MIP 回调切换(CPXPARAM_MIP_Strategy_CallbackReducedLP)被设置为 "CPX_OFF,则剪切可能是针对原始问题的。 在这种情况下,线性缩小开关(已废弃)(CPXPARAM_Preprocessing_Linear)也应设置为 "CPX_OFF(零)。 否则,此割平面用于预求解的问题。
参数
- env
- 一个指向
CPXXopenCPLEX/CPXopenCPLEX所返回 CPLEX 环境的指针。 - cbdata
- 传递给用户编写回调的指针。 此自变量必须是传递给用户编写回调的
cbdata的值。 - wherefrom
- 一个整数值,其报告从何处调用了用户编写的回调。 此自变量必须是传递给用户编写回调的
wherefrom的值。 - nzcnt
- 一个整数值,用于指定割平面中的系数数目,即相当于,数组
cutind和cutval的长度。 - rhs
- 一个双精度值,用于指定割平面的右侧值。
- sense
- 一个整数值,用于指定割平面的含义。 含义必须是以下三个值中的一个:
- 小于或等于,由“L”指定
- 等于,由“E”指定
- 大于或等于,由“G”指定
- cutind
- 一个数组,其中包含割平面系数的列索引。
- cutval
- 一个数组,其中包含割平面系数的值。
返回
如果此例程成功,那么会返回 0,而如果发生错误,那么会返回非零。示例
status = CPXcutcallbackaddlocal (env,
cbdata,
wherefrom,
mynzcnt,
myrhs,
'L',
mycutind,
mycutval);