Try our new documentation site (beta).
GRBCallback.AddCut()
Add a cutting plane to the MIP model from within a callback function.
Note that this method can only be invoked when the where
member variable is equal to GRB.Callback.MIPNODE
(see the
Callback Codes section for more
information).
Cutting planes can be added at any node of the branch-and-cut tree. However, they should be added sparingly, since they increase the size of the relaxation model that is solved at each node and can significantly degrade node processing speed.
Cutting planes are typically used to cut off the current relaxation solution. To retrieve the relaxation solution at the current node, you should first call GetNodeRel.
You should consider setting parameter PreCrush to value 1 when adding your own cuts. This setting shuts off a few presolve reductions that can sometimes prevent your cut from being applied to the presolved model (which would result in your cut being silently ignored).
Note that cutting planes added through this method must truly be cutting planes — they can cut off continuous solutions, but they may not cut off integer solutions that respect the original constraints of the model. Ignoring this restriction will lead to incorrect solutions.
void | AddCut ( | GRBLinExpr | lhsExpr, |
char | sense, | ||
double | rhsVal ) |
Arguments:
lhsExpr: Left-hand side expression for new cutting plane.
sense: Sense for new cutting plane (GRB.LESS_EQUAL, GRB.EQUAL, or GRB.GREATER_EQUAL).
rhsVal: Right-hand side value for new cutting plane.
void | AddConstr ( | GRBTempConstr | tempConstr ) |
Arguments:
tempConstr: Temporary constraint object, created by an overloaded comparison operator.