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.

Users of the advanced MIP control interface can work with the variables of the presolvedproblem or, by following a few simple rules, can instead work with the variables of theoriginal problem.Tip: The advanced MIP control interface relies heavily on the advanced presolvecapabilities. We suggest that the reader become familiar with Advanced Presolve Routineson page 473, before reading this chapter.Control callbacks in the <strong>ILOG</strong> Concert Technology <strong>CPLEX</strong> Library use the variables of theoriginal model. These callbacks are fully documented in the <strong>ILOG</strong> <strong>CPLEX</strong> Reference<strong>Manual</strong>.Introduction to MIP Control CallbacksAs the reader is no doubt familiar, the process of solving a mixed integer programmingproblem involves exploring a tree of linear programming relaxations. <strong>CPLEX</strong> repeatedlyselects a node from the tree, solves the LP relaxation at that node, attempts to generatecutting planes to cut off the current solution, invokes a heuristic to try to find an integerfeasible solution “close” to the current relaxation solution, selects a branching variable (aninteger variable whose value in the current relaxation is fractional), and finally places thetwo nodes that result from branching up or down on the branching variable back into thetree.The <strong>CPLEX</strong> Mixed Integer Optimizer includes methods for each of those important steps(node selection, cutting planes, heuristic, branch variable selection, incumbent replacement).While default <strong>CPLEX</strong> methods are generally effective, and parameters are available tochoose alternatives if the defaults are not working for a particular problem, there are rarecases where a user may wish to influence or even override <strong>CPLEX</strong> methods. <strong>CPLEX</strong>provides a control callback mechanism to allow the user to do this. If the user installs acontrol callback routine, <strong>CPLEX</strong> calls this routine during the branch & cut process to allowthe user to intervene.Thread Safety and MIP Control CallbacksWhen you use a control callback with parallel MIP, you must observe several points aboutdefault parameter settings, thread-safety, and parallelism. This section addresses thosepoints.The presence of a control callback in an application with default parameter settings turns offparallel MIP. (Informational callbacks do not have this effect of turning off parallel MIPoptimization by default. For more about informational callbacks, see InformationalCallbacks on page 446.) In order to continue using parallelMIP in the presence of a controlcallback, the user must set the threads parameter (Threads, CPX_PARAM_THREADS) to a484 <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!