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.

◆◆◆●●With goals, you can add global and local cuts by using global and local cut goals,respectively.With callbacks, you need to implement either a cut callback (for global and local cuts)or a branch callback for branching on local cutsInjecting solution candidates●●With goals, you inject solutions by using a solution goal.With callbacks, you need to implement a heuristic callback to inject solutions.Controlling the node selection strategy●●With goals, you control node selection by applying node evaluators to your searchgoal.With callbacks, you control node selection by using a node callback.Supporting advanced starts●Since goals can enforce constraints, they do not support advanced startinginformation. An optimization with goals starts from scratch.● Since each callback provides a specific functionality, callbacks support advancedstarts.Thus, one of the main differences between goals and callbacks is that with goals, allfunctionality is available from the execute method of the goal, whereas with callbacks, youmust implement different callbacks to access different functionality.As an example, suppose you want to extend a search to satisfy additional constraints thatcould not conveniently be added as linear constraints to the model.With callbacks, you need to use an incumbent callback and a branch callback. Theincumbent callback has to reject an otherwise integer feasible solution if it violates such anadditional constraint. In this case, the branch callback has to follow up with an appropriatebranch to enforce the constraint. The choice of the appropriate branch may be quite difficultfor constraints not modeled with linear expressions, even though <strong>ILOG</strong> <strong>CPLEX</strong> supportsbranching on hyperplanes.With goals, the feasibility test and the resulting branching can be implemented with a singlegoal.The second big difference between goals and callbacks is that with goals you can easilyspecify different search strategies in different subtrees. To do this, simply provide differentsearch goals as a parameter to the Or goal when creating the root nodes for the subtrees inquestion. To achieve a similar result with callbacks requires an implementation that is toocomplex for a presentation here.470 <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!