ILOG CPLEX 11.0 User's Manual > Advanced Programming Techniques > Using Goals > Branch & Cut with Goals > Overview of Goals in Branch & Cut

The branch & cut search procedure manages a search tree consisting of nodes. Every node represents a subproblem to be solved, and the root node of the tree represents the entire problem. Nodes are called active if they have not yet been processed.

The tree is first initialized to contain the root node as the only active node. ILOG CPLEX processes active nodes from the tree until either no more active nodes are available or some limit has been reached. Once a node has been processed, it is no longer active.

When processing a node, ILOG CPLEX starts by solving the continuous relaxation of its subproblem (that is, the subproblem without integrality constraints). If the solution violates any cuts, ILOG CPLEX adds them to the node problem and re-solves. This procedure is iterated until no more violated cuts are found by ILOG CPLEX. If at any point the relaxation becomes infeasible, the node is pruned, that is, it is removed from the tree.

To solve the node problem, ILOG CPLEX checks whether the solution satisfies the integrality constraints. If so, and if its objective value is better than that of the current incumbent, the solution of the node problem is used as the new incumbent. Otherwise, ILOG CPLEX splits the node problem into one or two smaller subproblems, typically by branching on a variable that violates its integrality constraint. These subproblems are added to the tree as active nodes and the current node is deactivated.

The primary use of goals is to take control of these last steps, namely the integer-feasibility test and the creation of subproblems. However, as discussed later, goals also allow you to add local and global cuts.