ilog.cplex
Class IloCplex.LazyConstraintCallback
java.lang.Object
ilog.cplex.IloCplex.Callback
ilog.cplex.IloCplex.MIPCallback
ilog.cplex.IloCplex.ControlCallback
ilog.cplex.IloCplex.CutCallback
ilog.cplex.IloCplex.LazyConstraintCallback
- All Implemented Interfaces:
- java.lang.Cloneable
- Enclosing class:
- IloCplex
- public abstract static class IloCplex.LazyConstraintCallback
- extends IloCplex.CutCallback
Callback class for lazy constraints.
This is an advanced class.
Important:
Advanced classes typically demand a profound understanding
of the algorithms used by ILOG CPLEX. Thus they incur a higher risk of
incorrect behavior in your application, behavior that can be difficult
to debug. Therefore, ILOG encourages you to consider carefully whether
you can accomplish the same task by means of other classes instead.
This is the lazy constraint callback class.
Extensions of this class implement user-written lazy constraint
callbacks. These allow you to add lazy constraint to the problem while
the problem is being solved with branch-and-cut search. These lazy
constraints may contribute to the model formulation and restrict the
feasible region of the problem. By contrast, if a constraint to be added
during branch-and-cut search does not change the feasible region of the
active model but only strengthens the formulation, it is referred to
as a user cut. Such constraints should better be added through
IloCplex.UserCutCallback
because this allows
IloCplex
potentially
to perform more presolve reductions. It is an error,
however, to add lazy constraints by means of a user cut callback.
The idea behind lazy constraints is that the LPs that are solved when
the MIP is being solved can be kept smaller when these constraints are not
included. IloCplex
will, however, include a lazy constraint
in the LP as soon as it becomes violated. In other words, the solution
computed by IloCplex
makes sure
that all the lazy constraints that have been added are satisfied.
If you use LazyConstraintCallback
, you are free to add
cuts that may chop off solutions that are otherwise feasible with
respect to the model, in contrast to UserCutCallback
.
In the case of UserCutCallback
, you effectively promise
CPLEX that you are not adding cuts that reduce the solution space by
the callback.
- See Also:
IloCplex.ControlCallback
,
IloCplex.CutCallback
,
IloCplex.UserCutCallback
Methods inherited from class ilog.cplex.IloCplex.ControlCallback |
getDownPseudoCost, getFeasibilities, getFeasibilities, getFeasibility, getLB, getLBs, getLBs, getNodeData, getObjValue, getSlack, getSlacks, getSlacks, getSOSFeasibility, getSOSFeasibility, getUB, getUBs, getUBs, getUpPseudoCost, getValue, getValue, getValues, getValues |
Methods inherited from class ilog.cplex.IloCplex.MIPCallback |
getBestObjValue, getCutoff, getDirection, getIncumbentObjValue, getIncumbentValue, getIncumbentValues, getIncumbentValues, getNcliques, getNcovers, getNdisjunctiveCuts, getNflowCovers, getNflowPaths, getNfractionalCuts, getNGUBcovers, getNimpliedBounds, getNiterations, getNMIRs, getNnodes, getNremainingNodes, getObjCoef, getObjCoefs, getObjCoefs, getPriority, hasIncumbent |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
IloCplex.LazyConstraintCallback
protected IloCplex.LazyConstraintCallback()