Remember counting ladybug spots as a child? If you realized ladybugs were symmetric, you could save some work by counting on one wing only and multiplying by two. In Mixed Integer Programming, something similar applies. If we detect symmetries in a problem formulation, we may be able to save some computational effort and thus time when solving it. But first of all, what are symmetries in a MIP formulation? Different from the geometric symmetry of a ladybug, the notion of symmetries in MIP may be thought of as the presence of equivalent solutions.

They can arise, for example, when identical physical objects are described distinctively in a model. As an example, take the MISOCP models for geometric facility location problems described here. Roughly speaking, the task there is to cover a set of given points in the plane with disks to be placed at will. Say we have 10 points and 3 fixed-radius disks, and want to cover as many points as possible. In a straightforward model, we would assign indexes $i = 1,2,3$ to the disks, and indexes $j = 1,...,10$ to the points, and then define all sorts of variables like $x_{ij} \in \{0,1\}$, stating whether disk $i$ covers point $j$. What we did here is assign labels to the disks, making them a blue, a red and a green one, say. But if all three disks have the same radius, this gives rise to equivalent solutions, see Figure 1. For the cost of a solution, it is only important whether a certain point is covered, but not by which disk.

Figure 1: Equivalent disk covering solutions

Symmetry breaking inequalities, orbital branching and fixing, or Isomorphism pruning are just some of the various techniques that have been studied over the years to better address symmetries in MIP. Variants of some of these various techniques have been implemented in the latest MOSEK version 10. Figure 2 sketches the effect on solution times of completely switching off symmetry detection and handling with the user parameter MSK_IPAR_MIO_SYMMETRY_LEVEL on the so-called Margot instances, known to be highly symmetric.

Figure 2: Solving Margot's instances w/ and w/o symmetry detection

Some of the techniques in question can be extended from Mixed Integer Linear to Mixed Integer Conic Programming, or more generally Mixed Integer Nonlinear Programming. We sometimes advocate that one nice feature of (Mixed Integer) Conic Programming is the separation of data and structure, and implementing symmetry detection is an aspect where this comes in handy. All data involved in a model is contained in linear constraints like $a^Tx\leq b$, and the symmetry detection routines needed here are already needed in MILP. Now extending symmetry detection to conic constraints, e.g., to a conic-quadratic constraint $x_0\geq \Vert x_{1:n}\Vert_2$, is relatively easy because one does not have to hassle with data, but only structure. Adding symmetry detection for possibly newly added cone types to a MICP solver is thus a small burden. And detecting and exploting symmetry in MICP can have a decisive effect. The following logs show MOSEK's solution paths to solve one of the aforementioned geometric facility location problems, with and without symmetry detection and handling, respectively.

Figure 3: Solving disk covering instances w/ and w/o symmetry detection