ILOG CPLEX 11.0 User's Manual > Advanced Programming Techniques > Advanced Presolve Routines > Restricting Presolve Reductions > Cuts and Presolve Reductions

Cutting planes in mixed integer programming are handled somewhat differently than one might expect. If a user wishes to add his or her own cuts during the branch & cut process (through CPXaddusercuts or CPXcutcallbackadd), it may appear necessary to turn off dual reductions to accommodate them. (In fact, in this respect, these cuts differ from lazy constraints discussed in User-Cut and Lazy-Constraint Pools.) However, for reasons that are complex and beyond the scope of this discussion, dual reductions can be left on. The reasons relate to the fact that valid cuts never exclude integer feasible solutions, so dual reductions performed for the original problem are still valid after cutting planes are applied. However, a small set of reductions does need to be turned off. Recall that presolve must translate a new constraint on the original problem into a constraint on variables in the presolved problem. Most reductions performed by CPLEX presolve replace variables with linear expressions of zero or more other variables (plus a constant). A few do not. These latter reductions make it impossible to perform the translation to the presolved problem. Set CPX_PARAM_PRELINEAR to 0 (zero) to forbid these latter reductions.