Model.cbCut()

cbCut ( lhs, sense, rhs )

Add a new cutting plane to a MIP model from within a callback function. Note that this method can only be invoked when the where value on the callback function 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 cbGetNodeRel.

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.

One very important note: you should only add cuts that are implied by the constraints in your model. If you cut off an integer solution that is feasible according to the original model constraints, you are likely to obtain an incorrect solution to your MIP problem.

Arguments:

lhs: Left-hand side for new cut. Can be a constant, a Var, or a LinExpr.

sense: Sense for new cut (GRB.LESS_EQUAL, GRB.EQUAL, or GRB.GREATER_EQUAL).

rhs: Right-hand side for new cut. Can be a constant, a Var, or a LinExpr.

Example usage:

  def mycallback(model, where):
    if where == GRB.Callback.MIPNODE:
      status = model.cbGet(GRB.Callback.MIPNODE_STATUS)
      if status == GRB.OPTIMAL:
        rel = model.cbGetNodeRel([model._vars[0], model._vars[1]])
        if rel[0] + rel[1] > 1.1:
          model.cbCut(model._vars[0] + model._vars[1] <= 1)

  model._vars = model.getVars()
  model.optimize(mycallback)

Try Gurobi for Free

Choose the evaluation license that fits you best, and start working with our Expert Team for technical guidance and support.

Evaluation License
Get a free, full-featured license of the Gurobi Optimizer to experience the performance, support, benchmarking and tuning services we provide as part of our product offering.
Academic License
Gurobi supports the teaching and use of optimization within academic institutions. We offer free, full-featured copies of Gurobi for use in class, and for research.
Cloud Trial

Request free trial hours, so you can see how quickly and easily a model can be solved on the cloud.

Search