Typically, the implementation of the method execute
will perform the following steps:
-
Check feasibility. An interesting possibility here is that the feasibility check may include more than verifying integrality of the solution. This allows you to enforce constraints that could not reasonably be expressed using linear constraints through cuts or branching. In other words, this allows you to use goals in a way that makes them part of the model to be solved. Such a use is common in Constraint Programming, but it is less frequently used in Mathematical Programming. Note, however, that this CP-style application of goals prevents you from making use of MP-style advanced starting information, either from a MIP Start file or by restarting a previous optimization with one that uses goals.
-
Optionally find local or global cuts to be added. Local cuts will be respected only for the subtree below the current node, whereas global cuts will be enforced for all nodes from then on.
-
Optionally construct a solution and pass it to ILOG CPLEX.
-
Instruct ILOG CPLEX how to proceed. Instruct ILOG CPLEX how to proceed through the return value of the method
execute
; the return value is execute
is another goal. ILOG CPLEX simply continues by executing this goal.