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.

However, there is an important distinction between these two concepts.Cuts may resemble ordinary constraints, but are conventionally defined to mean those whichcan change the feasible space of the continuous relaxation but do not rule out any feasibleinteger solution that the rest of the model permits. A collection of cuts, therefore, involves anelement of freedom: whether or not to apply them, individually or collectively, during theoptimization of a MIP model; the formulation of the model remains correct whether or notthe cuts are included. This degree of freedom means that if valid and necessary constraintsare mis-identified by the user and passed to <strong>ILOG</strong> <strong>CPLEX</strong> as user cuts, unpredictable andpossibly incorrect results could occur.By contrast, lazy constraints represent simply one portion of the constraint set, and themodel would be incomplete (and possibly would deliver incorrect answers) in their absence.<strong>ILOG</strong> <strong>CPLEX</strong> always makes sure that lazy constraints are satisfied before producing anysolution to a MIP model. Needed lazy constraints are also kept in effect after the MIPoptimization terminates, for example, when you change the problem type to fixed-integerand re-optimize with a continuous optimizer.Another important difference between pools of user cuts and pools of lazy constraints lies inthe timing by which these pools are applied. <strong>ILOG</strong> <strong>CPLEX</strong> may check user cuts forviolation and apply them at any stage of the optimization. Conversely, it does not guaranteeto check them at the time an integer-feasible solution candidate has been identified. Lazyconstraints are only (and always) checked when an integer-feasible solution candidate hasbeen identified, and of course, any of these constraints that turn out to be violated will thenbe applied to the full model.Another way of comparing these two types of pool is to note that the user designatesconstraints as lazy in the strong hope and expectation that they will not need to be applied,thus saving computation time by their absence from the working problem. In practice, it isrelatively costly (for a variety of reasons) to apply a lazy constraint after a violation isidentified, and so the user should err on the side of caution when deciding whether aconstraint should be marked as lazy. In contrast, user cuts may be more liberally added to amodel because <strong>ILOG</strong> <strong>CPLEX</strong> is not obligated to use any of them and can apply its own rulesto govern their efficient use.Certain restrictions apply to these pools if you are using the Callable Library. (ConcertTechnology will automatically handle these <strong>ILOG</strong> <strong>CPLEX</strong> parameter settings for you.) Ifeither of these conditions is violated, the error CPXERR_PRESOLVE_BAD_PARAM will beissued when the MIP optimizer is called.◆◆When a user cut pool is present, the parameter CPX_PARAM_PRELINEAR (PreLinear inConcert Technology) must be set to zero.When a lazy constraint pool is present, the parameter CPX_PARAM_REDUCE (Reduce inConcert Technology) must be set to either 0 (zero) or 1 (one), in order that dualreductions not be performed by presolve during preprocessing.<strong>ILOG</strong> <strong>CPLEX</strong> <strong>11.0</strong> — USER’ S MANUAL 421

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

Saved successfully!

Ooh no, something went wrong!