Overview
In many areas of practical importance
linear optimisation problems occur with integrality constraints
imposed on some of the variables. In optimal crew scheduling for
example, a pilot cannot be fractionally assigned to two different
flights at the same time. Likewise, in combinatorial optimisation
an element of a given set either belongs to a chosen subset or it
does not. Integer programming is the mathematical theory of such
problems and of algorithms for their solution. The aim of this
course is to provide an introduction to some of the general ideas
on which attacks to integer programming problems are based:
generating bounds through relaxations by problems that are easier
to solve, and branch-and-bound.
Learning Outcomes
Students will understand some of the theoretical underpinnings
that render certain classes of integer programming problems tractable
(''easy'' to solve), and they will learn how to solve them algorithmically.
Furthermore, they will understand some general mechanisms by which intractable
problems can be broken down into tractable subproblems, and how
these mechanisms are used to design good heuristics for solving the
intractable problems. Understanding these general principles will render
the students able to guide the modelling phase of a real-world problem
towards a mathematical formulation that has a reasonable chance of
being solved in practice.