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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

How Goals Are Implemented in Branch & CutNote: The discussion of the details of using goals will be presented mainly in terms of theC++ API. The Java and .NET APIs follow the same design and are thus equivalent at thislevel of discussion. In cases where a difference between these APIs needs to be observed,the point will be raised. Where the difference is only in syntax, the other syntax will bementioned in parentheses following the C++ syntax.In C++, goals are implemented in objects of type IloCplex::GoalI (having handle classIloCplex::Goal). In Java, goals are implemented in objects of type IloCplex.Goal(and there are no handle classes). In .NET, goals are implemented by the class Cplex.Goal.The method IloCplex::GoalI::execute (IloCplex.Goal.execute) is where thecontrol is implemented. This method is called by IloCplex after a node relaxation has beensolved and all cuts have been added. Invoking the method execute of a goal is oftenreferred to as executing a goal. When the method execute is executed, other methods of theclass IloCplex::GoalI (IloCplex.Goal or Cplex.Goal) can be called to queryinformation about the current node problem and the solution of its relaxation.About the Method execute in Branch & CutTypically, the implementation of the method execute will perform the following steps:1. Check feasibility. An interesting possibility here is that the feasibility check may includemore than verifying integrality of the solution. This allows you to enforce constraints thatcould not reasonably be expressed using linear constraints through cuts or branching. Inother words, this allows you to use goals in a way that makes them part of the model tobe solved. Such a use is common in Constraint Programming, but it is less frequentlyused in Mathematical Programming. Note, however, that this CP-style application ofgoals prevents you from making use of MP-style advanced starting information, eitherfrom a MIP Start file or by restarting a previous optimization with one that uses goals.2. Optionally find local or global cuts to be added. Local cuts will be respected only for thesubtree below the current node, whereas global cuts will be enforced for all nodes fromthen on.3. Optionally construct a solution and pass it to <strong>ILOG</strong> <strong>CPLEX</strong>.4. Instruct <strong>ILOG</strong> <strong>CPLEX</strong> how to proceed. Instruct <strong>ILOG</strong> <strong>CPLEX</strong> how to proceed throughthe return value of the method execute; the return value is execute is another goal.<strong>ILOG</strong> <strong>CPLEX</strong> simply continues by executing this goal.<strong>ILOG</strong> <strong>CPLEX</strong> <strong>11.0</strong> — USER’ S MANUAL 429

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

Saved successfully!

Ooh no, something went wrong!