Branch and bound, branch and cut, branch and price


In combination optimization problems and mixed integer programming models, we frequently encounter these three terms: branch-and-bound, branch-and-cut, and branch-and-price. These terms can sometimes be confusing. This blog post aims to summarize them:


1. Branch-and-Bound

Branch-and-bound is the most common method and is covered in the integer programming section of operations research courses in China. Its basic concept is relatively easy to understand and involves three main steps: branching, bounding, and pruning.

For a mixed integer programming problem with the objective of maximization:

  • Step 1: Relax the integer constraints, i.e., solve the linear programming problem of the original problem to obtain a solution $\bf x$ with an objective function value that serves as an upper bound for the original problem. Initialize the lower bound of the original problem to negative infinity $-\infty$. (If the linear programming problem has no solution, then the original problem has no solution either)
  • Step 2: Termination condition of the algorithm: If there is no direction to branch, then the current lower bound is the optimal solution; otherwise:
  • Step 3: Branch: In the solution $\bf x$, select a non-integer decision variable $x_i$ and construct two constraints: one greater than or equal to its ceiling value and one less than its floor value, thus creating two sub-linear programming models.
  • Step 4: Bound: Solve the sub-linear programming models. If an integer solution is obtained, it is a feasible solution for the original problem, i.e., a lower bound for the original problem. If it is greater than the current lower bound, update the lower bound; if it is not an integer solution,
    • Step 4.1—Prune: If the sub-linear programming model is infeasible or the obtained solution is smaller than the known lower bound, prune the branch and do not branch further on it.
    • Step 4.2—Continue branching: If the solution to the sub-linear programming problem is greater than the known lower bound, return to step 2 and continue the loop.

For some simple problems, the steps of branch-and-bound are very intuitive, for example:


2. Branch-and-Cut

The idea of branch-and-cut is to add cutting plane constraints before continuing to branch in step 4.2 of the branch-and-bound process, so that the sub-linear programming problem obtains a smaller solution, i.e., a tighter upper bound for the original problem.


3. Branch-and-Price

In column generation algorithms, when combined with branch-and-bound, the method is called branch-and-price.




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • Lagrangian dual of the mixed integer programming model
  • Lagrangian sub-gradient method
  • Pursuing the paper " Capacitated inventory problems with fixed order costs-some optimal policy structure"
  • C++, Java and Matlab codes for Wagner-Whitin algorithm
  • Genetic algorithm in matlab to solve travelling salesman problem