| Overview | Group | Tree | Graph | Deprecated | Index | Concepts |

This is an advanced class. Advanced classes typically demand a profound understanding of the algorithms used by CPLEX. Thus they incur a higher risk of incorrect behavior in your application, behavior that can be difficult to debug. Therefore, the team encourages you to consider carefully whether you can accomplish the same task by means of other classes instead.
An instance of the class IloCplex::UserCutCallbackI
represents a user-written callback in an application that uses an instance
of IloCplex to solve a MIP while generating user cuts to
tighten the LP relaxation. IloCplex calls the user-written
callback after solving each node LP. The constraints added
in an instance of
UserCutCallbackI must be real cuts in the sense that omitting
them does not affect the feasible region of the model under
consideration.
See Also:
IloCplex, IloCplex::Callback, IloCplex::CallbackI, IloCplex::MIPCallbackI, IloCplex::ControlCallbackI, IloCplex::OptimizationCallbackI, ILOUSERCUTCALLBACK0
| Method Summary | |
|---|---|
protected void | abortCutLoop() |
protected IloConstraint | add(IloConstraint con, IloCplex::CutManagement purgeable=UseCutForce) |
protected IloConstraint | addLocal(IloConstraint con) |
protected Callback::Type | getType() const |
protected IloBool | isAfterCutLoop() const |
Inherited Methods from MIPCallbackI |
|---|
getCurrentNodeDepth, getObjCoef, getObjCoef, getObjCoefs, getObjCoefs, getType, getUserThreads, MIPCallbackI |
Inherited Methods from OptimizationCallbackI |
|---|
getModel, getNcols, getNQCs, getNrows |
Inherited Methods from CallbackI |
|---|
abort, duplicateCallback, getCplexTime, getDetTime, getEndDetTime, getEndTime, getEnv, getStartDetTime, getStartTime, getType, main |
| Method Detail |
|---|
Exit the cut loop and move on to branching.
This method adds a cut to the current node LP subproblem
for the constraint specified by
con. This cut must be globally valid.
The added cut must be linear. It will not be removed by backtracking.
Select the value of purgeable from the symbolic values
of the enumeration
IloCplex::CutManagement.
Depending on the value of purgeable, CPLEX removes the
cut during branch and cut under certain circumstances.
If the argument purgeable is the symbolic value
UseCutForce, then the cut is added and never removed.
If the value of the argument is UseCutPurge,
then the cut is added, but CPLEX may purge (eliminate) the cut later.
If the value of the argument is UseCutFilter,
then the cut is treated exactly as other cuts added by CPLEX.
That is, CPLEX applies its filtering process to the cut.
As a consequence of the filtering process, CPLEX may decide
not to add the cut to the relaxation, for example, if CPLEX
deems other cuts more effective, or if the cut is too dense,
or other possible filtering criteria.
| con | The constraint to be added as a cut. This method (in contrast to |
| purgeable | A value specifying when or whether CPLEX can remove this cut. |
The routine always returns con.
This method adds a local cut to the
current node LP subproblem
for the constraint specified by the argument
con.
IloCplex manages the local cut in
such a way that it will be active only when
CPLEX is processing nodes of this
subtree; in other words, the added cut is local.
The added cut must be linear.
| con | The constraint to be added as a cut. This method (in contrast to |
The routine always returns con.
This method returns IloTrue if the callback was
invoked after CPLEX stopped generating cuts and called the callback one
last time. The method returns IloFalse if the callback was
invoked from the cut loop that CPLEX executes at each node of the
search tree.
This method returns the callback type of the invoking callback object.