CPXXcutcallbackaddlocalCPXcutcallbackaddlocal

例程 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
一个整数值,用于指定割平面中的系数数目,即相当于,数组 cutindcutval 的长度。
rhs
一个双精度值,用于指定割平面的右侧值。
sense
一个整数值,用于指定割平面的含义。 含义必须是以下三个值中的一个:
  • 小于或等于,由“L”指定
  • 等于,由“E”指定
  • 大于或等于,由“G”指定
cutind
一个数组,其中包含割平面系数的列索引。
cutval
一个数组,其中包含割平面系数的值。

返回

如果此例程成功,那么会返回 0,而如果发生错误,那么会返回非零。

示例


 status = CPXcutcallbackaddlocal (env,
                                  cbdata,
                                  wherefrom,
                                  mynzcnt,
                                  myrhs,
                                  'L',
                                  mycutind,
                                  mycutval);