Lagrangian relaxation is a tool to find upper bounds on a given (arbitrary) maximization problem. Sometimes, the bound is
exact and an optimal solution is found. Our aim in this paper is to review this technique, the theory behind it, its numerical
aspects, its relation with other techniques such as column generation.