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为更多的信息。