Practical Solution of Large Mixed Integer Programming Problems with Umpire

Abstract
In this paper we discuss some branch and bound methods implemented in the UMPIRE mathematical programming system for solving practical integer programming problems and give details of computational experience with these methods. We have found that the nontrivial integer programming problems we encounter tend to fall into two classes. The first class of problems is characterized by a relatively small number (less than 100) of binary integer variables embedded in a very large and difficult linear program, with a few thousand constraints and complex matrix structure. The second class of problems tends to have many more integer variables (perhaps several hundred), frequently organized into special ordered sets and expressing complex logical relationships, but embedded in a much simpler linear program with 500–1,000 constraints. Problems in the first group in particular do not generally behave well using a simple-minded “penalty” approach for reasons we will make clear and a number of heuristic estimation procedures are used to guide the branch and bound search. The most important devices used are “priorities,” the “best projection criterion” and “pseudo-costs.” Some or all of these heuristics can also be very useful in tackling the second group of problems, where it is important to reach a good solution quickly to limit the search.