Written by: Paul Rubin

Primary Source: OR in an OB World

In a famous (or at least relatively famous) paper [1], Magnanti and Wong suggest a method to accelerate the progress of Benders decomposition for certain mixed-integer programs by sharpening “optimality” cuts. Their approach requires the determination of what they call a *core point*. I’ll try to follow their notation as much as possible. Let \(Y\) be the set of integer-valued vectors satisfying all the constraints that involve solely the integer variables. Basically, \(Y\) would be the feasible region for the problem if the continuous variables did not exist. A core point is a point \(y^0\) in the relative interior of the convex hull of \(Y\).

I’ll assume that any reader who made it this far knows what a convex hull is. That said, I should point out that the convex hull of \(Y\) is not the feasible region of the LP relaxation of \(Y\). The feasible region of the LP relaxation is frequently termed the “LP hull”, whereas the convex hull of \(Y\) is typically referred to as the “integer hull”. The integer hull is a subset (typically a proper subset) of the LP hull. Knowing what the integer hull is basically makes a MIP model pretty easy: solving a linear program over the integer hull yields the integer optimum. Since it’s pretty well known that most MIP models are not easy, one can infer that in most cases the integer hull is not known (and not easy to figure out).

Mathematicians will know the term “relative interior”, but it may not be familiar to OR/IE/MS people trying to solve MIP models. In Euclidean spaces, a point belongs to the interior of a set if there’s a ball centered around that point and contained entirely in the set. In lay terms, you’re at an interior point if you move slightly in any direction and not leave the set. In our context, that set is the integer hull, a convex polyhedron. The catch is that if the set is not full dimensional, there is no interior (or, more properly, the interior is empty). Picture the unit cube in \(\mathbb{R}^3\) as the integer hull. The point \(y^0 = (0.5, 0.5, 0.5)\) is in the interior; you can move a bit in any direction and stay in the cube. Now add the constraint \(y_3 = 0.5\), which flattens the integer hull to a square (still containing \(y^0\)). You can move a bit in the \(y_1\) and \(y_2\) directions and stay in the square, but any vertical movement (parallel to the \(y_3\) axis) and you’re no longer feasible. That brings us to the relative interior. A point is in the relative interior of a set if it can be surrounded by a ball in the largest subspace for which the set is full dimensional, with the ball staying in the set. Returning to our example, before adding the equality constraint I could surround \(y^0\) with a sphere contained in the unit cube. After adding the equality constraint, making the feasible region a square, I can no longer surround \(y^0\) with a feasible sphere, but I can surround it with a feasible circle in the \(y_3 = 0.5\) plane. So \(y^0\) is at least in the relative interior of the integer hull after adding the equation constraint.

Back to Magnanti-Wong. To use their technique, you need to know a “core point” up front. In their paper, they mention that in some cases a core point will be obvious … but in many cases it will not be. So I’ll mention some techniques that probably yield a core point (but no general guarantee).

- If you happen to know two or more integer-feasible points, average them. The average will be feasible, and unless all those points live on the same facet of the integer hull, you should get a relative interior point.
- Pick an objective function and optimize it (maximize or minimize, it doesn’t matter) over \(Y\), ignoring the continuous variables and any constraints involving them from the original problem. Do this a few times: minimize and maximize the same objective, switch the objective, iterate; or just minimize (or maximize) a different objective each time. I might use randomly generated objective functions, but an easy alternative is to minimize \(y_1\), then maximize \(y_1\), then minimize \(y_2\), etc. Average the solutions you get. This is guaranteed to belong to integer hull, and almost surely (at least with random objectives and multiple iterations) to the relative interior of the integer hull. Bad news: you just solved a bunch of integer programs, which might be a trifle time-consuming.
- Use the previous method, but optimize over the LP hull (relaxing the integrality constraints on \(y\)). Again, average the solutions you get. Good news: Solving a handful of LPs is typically much less painful than solving a handful of IPs. Bad news: Since the LP hull is a superset of the integer hull, and since your LP solutions are all vertices of the LP hull, there’s at least a chance that the average of them lives inside the LP hull but outside the integer hull. That said, I’ve used this method once or twice and not lost any sleep. If your core point happens to fall outside the integer hull, I don’t think it will cause any problems; it just probably won’t make your Benders decomposition solve any faster.
- Generate a bunch of random integer vectors of the correct dimension, and filter out those that do not satisfy the constraints defining \(Y\). Average the survivors. Good news: Each of the surviving integer vectors will belong to the integer hull, so your averaged core point \(y^0\) definitely will as well. Also, generating random integer vectors is pretty easy. Bad news: If the integer hull is less than full dimension, the probability of a random vector falling in it is zero, so the likelihood of any “survivors” is negligible. Mitigating news: In some cases you can randomly generate an integer vector and then tweak it to ensure it satisfies the constraints that are keeping the integer hull from being full dimension. For instance, suppose that you have a constraint of the form \(\sum_i y_i = B\) where \(B\) is an integer constant. Generate a random integer vector \(\tilde{y}\), replace \(\tilde{y}_1\) with \(B-\sum_{i>1}\tilde{y}_i\), and you have a vector satisfying that constraint. If you can pull off similar tweaks for other equation constraints (staying integer-valued and not violating bounds on the variables), maybe you can get lucky and find a few integer-feasible points. In fact, even if you can only find one survivor (before exhausting your patience), you might get lucky and have it be in the relative interior of the integer hull. (You won’t know this, but you can try using it as your core point and hope for the best.)

[1] Magnanti, T. L. & Wong, R. T., Accelerating Benders Decomposition: Algorithmic Enhancement and Model Selection Criteria. Operations Research, 1981, 29, 464-484

#### Latest posts by Paul Rubin (see all)

- More on “Core Points” - January 18, 2018
- Finding a “Core Point” - January 17, 2018
- Ordering Index Vector with Java Streams - January 1, 2018