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.
When adding your own cuts, you must set parameter PreCrush to value 1. This setting shuts off a few presolve reductions that sometimes prevent cuts on the original model from being applied to the presolved model.
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.