12.07.2015 Views

ILOG CPLEX 11.0 User's Manual

ILOG CPLEX 11.0 User's Manual

ILOG CPLEX 11.0 User's Manual

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

on. The reasons relate to the fact that valid cuts never exclude integer feasible solutions, sodual reductions performed for the original problem are still valid after cutting planes areapplied. However, a small set of reductions does need to be turned off. Recall that presolvemust translate a new constraint on the original problem into a constraint on variables in thepresolved problem. Most reductions performed by <strong>CPLEX</strong> presolve replace variables withlinear expressions of zero or more other variables (plus a constant). A few do not. Theselatter reductions make it impossible to perform the translation to the presolved problem. SetCPX_PARAM_PRELINEAR to 0 (zero) to forbid these latter reductions.Infeasibility or Unboundedness in Presolve ReductionsRestricting the type of presolve reductions will also allow presolve to conclude more aboutinfeasible and/or unbounded problems. Under the default setting of CPX_PARAM_REDUCE,presolve can only conclude that a problem is infeasible and/or unbounded. IfCPX_PARAM_REDUCE is set to CPX_PREREDUCE_PRIMALONLY (1), presolve can concludethat a problem is primal infeasible with return status CPXERR_PRESLV_INF. IfCPX_PARAM_REDUCE is set to CPX_PREREDUCE_DUALONLY (2), presolve can conclude thata problem is primal unbounded (if it is primal feasible) with return statusCPXERR_PRESLV_UNBD.Reminder: The previous paragraph applies to CPXpresolve, not CPXlpopt.Protected Variables in Presolve ReductionsA final facility that modifies the set of reductions performed by presolve is theCPXcopyprotected routine. The user provides as input a list of variables in the originalproblem that should survive presolve (that is, should exist in the presolved problem).Presolve will avoid reductions that remove those variables, with one exception. If a protectedvariable can be fixed, presolve will still remove it from the problem. This command is usefulin cases where the user wants to explicitly control some aspect of the branch & cut process(for example, through the branch callback) using knowledge about those variables.<strong>Manual</strong> Control of PresolveWhile presolve was a highly automated and transparent procedure in releases of <strong>CPLEX</strong>prior to 7.0, releases 7.0 and above give the user significant control over when presolve isperformed and what is done with the result. This section discusses these added controlfacilities. Recall that the functions mentioned here are documented in detail, includingarguments and return values, in the reference manual.The first control function provided by the advanced presolve interface is CPXpresolve,which manually invokes presolve on the supplied problem. Once this routine is called on a478 <strong>ILOG</strong> <strong>CPLEX</strong> <strong>11.0</strong> — USER’ S MANUAL

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!