How to find the smallest sphere that encloses a set of k points p_i \in R^n.The intuitive formulation is to minimize the radius r of the sphere centered in p_0 \in R^n, i.e.
\begin{align} & \min r \\ & s.t. \\ & & || p_i - p_0||_2 \leq r, & i=1,\ldots,k \end{align}
The inspiration came from a recent book¹ where the problem, probably taken from the GAMS repository², is presented as a difficult test for nonlinear local optimizers.
At the same time (what a coincidence!), O'Neil and Puget published interesting post about the Chebyshev centers of polygons...which turns out to be equivalent to what I was looking at! As Puget pointed out, the problem is known to be simple: Megiddo³ showed back in 1982 that it can be solved in linear time by a specialized algorithm.
Anyway, we will use it as an example of conic programming modeling example. First we introduce auxiliary variables such that w_i = p_i - p_0, yielding
\begin{align} & \min r \\ & s.t.\\ & & || w_i ||_2 \leq r, & i=1,\ldots,k\\ & & w_i = p_i - p_0, & i=1,\ldots,k \end{align}
Constraints (6) define quadratic (Lorentz) cones Q^{(n+1)}, i.e.
\begin{equation} || w_i ||_2 \leq r \Rightarrow (r, w_i) \in Q^{(k+1)}.\end{equation}
For the second order cones to be disjointed, we introduce auxiliary variables r_i, i=1,\ldots,n that must be equal to r. The final formulation of our problem is
\begin{align} & \min r\\ & s.t.\\ & & r_i = r, & i=1,\ldots,k\\ & & w_i = p_i - p_0, & i=1,\ldots,k\\ & & (r_i,w_i) \in Q^{(n+1)}, & i=1,\ldots,k \end{align}
which is a fairly simple conic quadratic optimization problem!
In the next post we will show how to easily implement this problem using the Mosek Fusion API.
¹ Neculai, Andrei, "Nonlinear Optimization Application Using the GAMS Technology", Springer 2013
² http://www.gams.com/testlib/libhtml/circlen.htm
³ Megiddo, Nimrod. "Linear-time algorithms for linear programming in R3 and related problems." Foundations of Computer Science, 1982. SFCS'08. 23rd Annual Symposium on. IEEE, 1982.