Integer Program Reformulation for Robust Branch-and-Cut-and-Price Algorithms

Since cut and column generation were established as two of the most important techniques in integer programming, researchers have looked for ways of combining them into a robust branch-and-cut-and-price algorithm. Here, “robust” means that neither branching nor the addition of cuts should change the structure of the pricing subproblems. In the last few years, several researchers independently noted that cuts expressed in terms of variables from a suitable original formulation could be added to the master problem without disturbing the pricing. This fact is still little known outside the “column generation community” and its consequences on integer programming are just beginning to be explored. This work intends to be an analysis of how to reformulate an integer program in order to build an efficient robust branch-and-cutand-price. In particular, we propose an alternative master problem that can be quite advantageous in some situations. Another key issue addressed is how to avoid the pitfalls that arise from variable symmetries in the original formulations of many problems. We refer to extensive computational experiments on the capacitated vehicle routing, capacitated minimum spanning tree, and generalized assignment problems. Remarkable results on benchmark instances from the literature clearly attest the power of combining cut and column generation.