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.

- 5x1, + x2 ≤ 0 2y1, + y2, ≥ 1x1, x2, x3 ≥ 0 y1, y2, y3 ≥ 0Our goal is to add the appropriate constraint to the presolved problem and reoptimize. Note,however, that the dual information presolve used to fix x1 to 0 was changed by the additionof the new constraint. The first constraint in the dual is no longer guaranteed to beredundant, so the original fixing is no longer valid (the optimal solution is now x1=1, x2=5,x3=0). As a result, <strong>CPLEX</strong> is unable to use the presolved problem to reoptimize.Primal and Dual Considerations in Presolve ReductionsPresolve reductions can be classified into several groups: those that rely on primalinformation, those that rely on dual information, and those that rely on both. Addition ofnew constraints, modifications to objective coefficients, and tightening of variable bounds (aspecial case of adding new constraints) require the user to turn off dual reductions.Introduction of new columns, modifications to righthand-side values, and relaxation ofvariable bounds (a special case of modifying righthand-side values) require the user to turnoff primal reductions.These reductions are controlled through the CPX_PARAM_REDUCE parameter. The parameterhas four possible settings. The default value CPX_PREREDUCE_PRIMALANDDUAL (3)indicates that presolve can rely on primal and dual information. With settingCPX_PREREDUCE_DUALONLY (2), presolve only uses dual information, with settingCPX_PREREDUCE_PRIMALONLY (1) it only uses primal information, and with settingCPX_PREREDUCE_NO_PRIMALORDUAL (0) it uses neither (which is equivalent to turningpresolve off).Setting the CPX_PARAM_REDUCE parameter has one additional effect on the optimization.Normally, the presolved problem and the presolved solution are freed at the end of anoptimization call. However, when CPX_PARAM_REDUCE is set to a value other than itsdefault, <strong>ILOG</strong> <strong>CPLEX</strong> assumes that the problem will subsequently be modified andreoptimized. It therefore retains the presolved problem and any presolved solutioninformation (internally to the LP problem object). If the user has set CPX_PARAM_REDUCEand is finished with problem modification, the user can call CPXfreepresolve to free thepresolved problem and reclaim the associated memory. The presolved problem isautomatically freed when the user calls CPXfreeprob on the original problem.Cuts and Presolve ReductionsCutting planes in mixed integer programming are handled somewhat differently than onemight 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 offdual reductions to accommodate them. (In fact, in this respect, these cuts differ from lazyconstraints discussed in User-Cut and Lazy-Constraint Pools on page 419.) However, forreasons that are complex and beyond the scope of this discussion, dual reductions can be left<strong>ILOG</strong> <strong>CPLEX</strong> <strong>11.0</strong> — USER’ S MANUAL 477

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

Saved successfully!

Ooh no, something went wrong!