GRBCallback: addLazy ()
GRBCallback: addLazy ()
从回调函数中向MIP模型添加惰性约束。请注意,此方法只能在在哪里
成员变量等于GRB_CB_MIPNODE或GRB_CB_MIPSOL(见回调代码部分以获取更多信息)。
当MIP模型的全部约束集太大而无法显式表示时,通常使用惰性约束。通过只包括在分支-切割搜索过程中发现的解实际上违反的约束,有时可以找到一个已证明的最优解,而只添加整个约束集的一小部分。
通常可以通过首先查询当前节点解决方案(通过调用)来添加惰性约束getSolution从一个GRB_CB_MIPSOL回调,或者getNodeRel从一个GRB_CB_MIPNODE回调),然后调用addLazy ()
添加一个约束来截断解决方案。古罗比保证,你将有机会切断任何可能被认为可行的解决方案。
你的回调应该准备切断违反任何懒惰约束的解决方案,包括那些已经添加的。节点解决方案通常会遵守前面添加的惰性约束,但并不总是这样。
注意,您必须设置LazyConstraints参数,如果你想使用延迟约束。
无效 | addLazy( | const GRBLinExpr& | lhsExpr, |
字符 | 意义上说, | ||
双 | rhsVal) |
-
参数:
lhsExpr:左侧表达式表示新的惰性约束。
感觉:对新的惰性约束的感知(GRB_LESS_EQUAL,GRB_EQUAL,或GRB_GREATER_EQUAL).
rhsVal:新懒惰约束的右边值。
无效 | addLazy( | GRBTempConstr& | tc) |
参数:
tc:临时约束对象,使用重载比较操作符创建。看到GRBTempConstr为更多的信息。