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.

performed on the problem. This function provides information, for each variable in theoriginal problem, on whether the variable was fixed and removed, aggregated out, removedfor some other reason, or is still present in the reduced problem. It also gives information, foreach row in the original problem, on whether it was removed due to redundancy, aggregatedout, or is still present in the reduced problem. For those rows and columns that are present inthe reduced problem, this function provides a mapping from original row/column number torow/column number in the reduced problem, and vice-versa.Another situation where a user might want to use CPXpresolve is to work directly on thepresolved problem. By calling CPXgetredlp immediately after CPXpresolve, the user canobtain a pointer to the presolved problem. For an example of how this might be used, theuser could call routines CPXcrushx and CPXcrushpi to presolve primal and dual solutionvectors, call CPXgetredlp to get access to the presolved problem, then use CPXcopystartto copy the presolved solutions into the presolved problem, then optimize the problem, andfinally call routines CPXuncrushx and CPXuncrushpi—CPXqpuncrushpi for QPs—tounpresolve solutions from the presolved problem, creating solutions for the originalproblem.The routine CPXgetredlp provides the user access to internal <strong>CPLEX</strong> data structures. Thepresolved problem must not be modified by the user. If the user wishes to manipulate thereduced problem, the user should make a copy of it (using CPXcloneprob) and manipulatethe copy instead.The advanced presolve interface provides another call that is useful when working directlywith the presolved problem (either through CPXgetredlp or through the advanced MIPcallbacks). The call to CPXcrushform translates a linear expression in the original probleminto a linear expression in the presolved problem. The most likely use of this routine is toadd user cuts to the presolved problem during a mixed integer optimization. The advancedpresolve interface also provides the reverse operation. The CPXuncrushform routinetranslates a linear expression in the presolved problem into a linear expression in the originalproblem.A limited presolve analysis is performed by CPXbasicpresolve and by the ConcertTechnology method IloCplex::basicPresolve. This function detects which rows areredundant and computes strengthened bounds on the variables. This information can be usedto derive some types of cuts that will tighten the formulation, to aid in formulation bypointing out redundancies, and to provide upper bounds for variables. CPXbasicpresolvedoes not create a presolved problem.The interface allows the user to manually free the memory associated with the presolvedproblem using routine CPXfreepresolve. The next optimization call (or call toCPXpresolve) recreates the presolved problem.480 <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!