GRBCallback.AddLazy ()
GRBCallback.AddLazy ()
从回调函数中向MIP模型添加一个延迟约束。请注意,此方法只能在在哪里
成员变量GRB.Callback.MIPNODE
或GRB.Callback.MIPSOL(见回调代码章节以获取更多信息)。
当MIP模型的全部约束太大而无法显式表示时,通常会使用延迟约束。通过只包含分支和分割搜索中发现的解实际上违反的约束,有时只添加全部约束的一小部分,就可能找到已证明的最优解。
您通常会通过首先查询当前节点解决方案(通过调用GetSolution从一个GRB.Callback.MIPSOL
回调,或者GetNodeRel从一个GRB.Callback.MIPNODE
回呼),然后再呼叫AddLazy ()
添加一个约束来切断解决方案。古罗比保证,您将有机会切断任何其他情况下被认为可行的解决方案。
你的回调函数应该准备好切断违反任何懒惰约束的解决方案,包括那些已经添加的约束。节点解决方案通常会尊重之前添加的延迟约束,但并非总是如此。
请注意,必须设置LazyConstraints参数,如果要使用延迟约束。
无效 | AddLazy( | GRBLinExpr | lhsExpr, |
字符 | 意义上说, | ||
双 | rhsVal) |
-
参数:
lhsExpr: new lazy constraint的左侧表达式。
感觉:表示新的惰性约束(伽马射线爆发。LESS_EQUAL,伽马射线爆发。平等的,或伽马射线爆发。GREATER_EQUAL).
rhsVal:新lazy约束的右边值。
无效 | AddConstr( | GRBTempConstr | tempConstr) |
参数:
tempConstr:由重载比较运算符创建的临时约束对象。