GRBCallback: addCut ()
GRBCallback: addCut ()
从回调函数中向MIP模型添加一个切割平面。请注意,此方法只能在在哪里
成员变量等于GRB_CB_MIPNODE(见回调代码章节以获取更多信息)。
切割平面可以添加到任何节点的枝砍树。但是,它们应该谨慎地添加,因为它们增加了在每个节点上求解的松弛模型的大小,并会显著降低节点的处理速度。
切割平面通常用于切断当前的松弛解。要检索当前节点上的松弛解决方案,您应该首先调用getNodeRel.
当添加你自己的切割时,你必须设置参数PreCrush值1。这种设置关闭了一些预先解决的削减,这些削减有时会阻止原始模型上的削减被应用到预先解决的模型。
请注意,通过这种方法添加的切割平面必须是真正的切割平面——它们可以切割连续的解,但它们可能不会切割尊重原始模型约束的整数解。忽略此限制将导致不正确的解决方案。
无效 | addCut( | const GRBLinExpr& | lhsExpr, |
字符 | 意义上说, | ||
双 | rhsVal) |
-
参数:
lhsExpr:新切割平面的左侧表达式。
感觉:新切割平面的感觉(GRB_LESS_EQUAL,GRB_EQUAL,或GRB_GREATER_EQUAL).
rhsVal:右侧值为新切割平面。
无效 | addCut( | GRBTempConstr& | tc) |
参数:
tc:使用重载比较运算符创建的临时约束对象。看到GRBTempConstr为更多的信息。