{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![MOSEK ApS](https://www.mosek.com/static/images/branding/webgraphmoseklogocolor.png )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Smallest sphere enclosing a set of points.\n", "===========================\n", "\n", "The aim of this tutorial is two-fold\n", "\n", "1. Demostrate how to write a conic quadratic model in `Fusion` in a very simple and compact way.\n", "2. Show how and way the dual formulation may solved more efficiently.\n", "\n", "\n", "Our problem is the defined as:\n", "\n", "**Find the smallest sphere that encloses a set of** $k$ **points** $p_i \\in \\mathbb{R}^n$. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import matplotlib.patches as mpatches\n", "import random\n", "\n", "def plot_points(p, p0=[], r0=0.):\n", " n,k= len(p0), len(p)\n", " \n", " plt.rc('savefig',dpi=120)\n", "\n", " fig, ax = plt.subplots()\n", " ax.set_aspect('equal')\n", " ax.plot([ p[i][0] for i in range(k)], [ p[i][1] for i in range(k)], 'b*')\n", " \n", " if len(p0)>0:\n", " ax.plot( p0[0],p0[1], 'r.')\n", " ax.add_patch( mpatches.Circle( p0, r0 , fc=\"w\", ec=\"r\", lw=1.5) )\n", " plt.grid()\n", " plt.show()\n", "\n", "n = 2\n", "k = 500\n", "\n", "p= [ [random.gauss(0.,10.) for nn in range(n)] for kk in range(k)]\n", "\n", "plot_points(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The problem boils down to determine the sphere center $p_0\\in \\mathbb{R}^n$ and its radius $r_0\\geq 0$, i.e.\n", "\n", "\n", "\\begin{equation}\n", " \\begin{aligned}\n", "\\min \\max_{i=1,\\dots,k} \\| p_0 - p_i\\|_2 \\\\\n", " \\end{aligned}\n", "\\end{equation}\n", "\n", "The maximum in the objective function can be easily, i.e.\n", "\n", "\\begin{equation}\n", " \\begin{aligned}\n", "\\min r_0 & & &\\\\\n", "s.t.& & &\\\\\n", "& r_0 \\geq \\| p_0 - p_i\\|_2 ,& \\quad & i=1,\\ldots,k\\\\\n", "\\end{aligned}\n", "\\end{equation}\n", "\n", "The SOCP formulation reads\n", "\n", "\\begin{equation}\n", " \\begin{aligned}\n", "\\min r_0 & & &\\\\\n", "s.t.& & &\\\\\n", "& \\left[r_0,p_0 - p_i\\right] \\in Q^{(n+1)}, & \\quad & i=1,\\ldots,k.\n", "\\end{aligned}\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before defining the constraints, we note that we can write\n", "\n", "\n", "\\begin{equation}\n", "R_0 = \\left( \\begin{array}{c} r_0 \\\\ \\vdots \\\\ r_0 \\end{array} \\right) \\in \\mathbb{R}^k , \\quad\n", "P_0 = \\left( \\begin{array}{c} p_0^T \\\\ \\vdots \\\\ p_0^T \\end{array} \\right) \\in \\mathbb{R}^{k\\times n}, \\quad\n", "P = \\left( \\begin{array}{c} p_1^T \\\\ \\vdots \\\\ p_k^T \\end{array} \\right) \\in \\mathbb{R}^{k\\times n}.\n", "\\end{equation}\n", "\n", "so that \n", "\n", "\\begin{equation}\n", "\\left[r_0,p_i - p_0\\right] \\in Q^{(n+1)}, \\quad i=1,\\ldots,k.\n", "\\end{equation}\n", "\n", "can be compactly expressed as \n", "\n", "\\begin{equation}\n", "\\left[ R_0,P_0-P\\right] \\in \\Pi Q^{(n+1)},\n", "\\end{equation}\n", "\n", "that means, with a little abuse of notation, that each rows belongs to a quadratic cone of dimension $n+1$.\n", "\n", "\n", "Now we are ready for a compact implementation in `Fusion`:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from mosek.fusion import *\n", "import mosek as msk\n", "\n", "\n", "def primal_problem(P):\n", "\n", " print(msk.Env.getversion())\n", " \n", " k= len(P)\n", " if k==0: return -1,[]\n", "\n", " n= len(P[0])\n", " \n", " with Model(\"minimal sphere enclosing a set of points - primal\") as M:\n", "\n", " r0 = M.variable(1 , Domain.greaterThan(0.))\n", " p0 = M.variable([1,n], Domain.unbounded())\n", "\n", " R0 = Var.repeat(r0,k)\n", " P0 = Var.repeat(p0,k)\n", " \n", " M.constraint( Expr.hstack( R0, Expr.sub(P0 , P) ), Domain.inQCone())\n", "\n", " M.objective(ObjectiveSense.Minimize, r0)\n", " M.setLogHandler(open('logp','wt'))\n", "\n", " M.solve()\n", "\n", " return r0.level()[0], p0.level()\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will also store the solver output in a file to use it later on. And then just solve the problem." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(8, 0, 0, 48)\n", "('r0^* = ', 34.277010059679036)\n", "('p0^* = ', array([ 0.9775514 , 3.05181728]))\n" ] } ], "source": [ "r0,p0 = primal_problem(p)\n", "\n", "print (\"r0^* = \", r0)\n", "print (\"p0^* = \", p0)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_points(p,p0,r0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dual Formulation \n", "-----------------------\n", "\n", "The dual problem can be determined in few steps following basic rules. Introducing dual variables\n", "\n", "\\begin{equation}\n", " Y = \\left( \\begin{array}{c} y_1^T\\\\ \\vdots \\\\y_k \\end{array}\\right), \\quad z = \\left( \\begin{array}{c} z_1\\\\ \\vdots \\\\z_k \\end{array}\\right), \n", "\\end{equation}\n", "\n", "the dual is:\n", "\n", "\\begin{aligned}\n", " \\max & \\left\\langle P, Y \\right\\rangle \\\\\n", " & e_k^T z = 1\\\\\n", " & Y^T e_k = \\mathbf{0}_n \\\\\n", " & \\left[z_i , y_i\\right] \\in \\mathcal{Q}^{n+1}\\\\\n", " & z_i\\in \\mathbb{R}, y_i\\in \\mathbb{R}^n,\n", "\\end{aligned}\n", "\n", "where $e_k\\in \\mathbb{R}^k$ is a vector of all ones.\n", "\n", "The ``Fusion`` code is the following:\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def dual_problem(P):\n", " \n", " k= len(P)\n", " if k==0: return -1,[]\n", "\n", " n= len(P[0])\n", " \n", " with Model(\"minimal sphere enclosing a set of points - dual\") as M:\n", " \n", " Y= M.variable([k,n], Domain.unbounded())\n", " z= M.variable(k , Domain.unbounded())\n", " \n", " M.constraint(Expr.sum(z), Domain.equalsTo(1.) )\n", " \n", " e= [1.0 for i in range(k)]\n", " \n", " M.constraint(Expr.mul(Y.transpose(), Matrix.ones(k,1)), Domain.equalsTo(0.) )\n", "\n", " M.constraint( Var.hstack(z,Y), Domain.inQCone())\n", " \n", " M.objective( ObjectiveSense.Maximize, Expr.dot( P, Y )) \n", " \n", " M.setLogHandler(open('logd','wt'))\n", "\n", " M.solve()\n", " \n", " return \n", " \n", "dual_problem(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looking at the solver output for the primal and dual implementation we get" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "11 4.7e-06 2.8e-04 1.9e-05 1.01e+00 3.429062907e+01 3.430435587e+01 5.6e-07 0.01 \r\n", "12 1.3e-06 7.5e-05 1.1e-05 1.00e+00 3.427957004e+01 3.428275209e+01 1.5e-07 0.01 \r\n", "13 2.2e-07 1.3e-05 4.8e-06 1.00e+00 3.427737473e+01 3.427786148e+01 2.7e-08 0.01 \r\n", "14 2.1e-08 1.2e-06 1.6e-06 1.00e+00 3.427703453e+01 3.427707456e+01 2.5e-09 0.01 \r\n", "15 2.8e-09 1.7e-07 5.7e-07 1.00e+00 3.427701143e+01 3.427701671e+01 3.3e-10 0.01 \r\n", "16 5.3e-10 3.2e-08 2.7e-07 1.00e+00 3.427701016e+01 3.427701104e+01 6.3e-11 0.01 \r\n", "17 3.1e-11 1.4e-09 4.5e-08 1.00e+00 3.427701006e+01 3.427701009e+01 2.7e-12 0.01 \r\n", "Interior-point optimizer terminated. Time: 0.01. \r\n", "\r\n", "Optimizer terminated. Time: 0.10 \r\n" ] } ], "source": [ "!tail logp" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "11 2.8e-04 4.7e-06 1.9e-05 1.01e+00 3.430435567e+01 3.429062880e+01 5.6e-07 0.01 \r\n", "12 7.5e-05 1.3e-06 1.1e-05 1.00e+00 3.428275207e+01 3.427956999e+01 1.5e-07 0.01 \r\n", "13 1.3e-05 2.2e-07 4.8e-06 1.00e+00 3.427786147e+01 3.427737472e+01 2.7e-08 0.01 \r\n", "14 1.2e-06 2.1e-08 1.6e-06 1.00e+00 3.427707456e+01 3.427703453e+01 2.5e-09 0.01 \r\n", "15 1.7e-07 2.8e-09 5.7e-07 1.00e+00 3.427701671e+01 3.427701143e+01 3.3e-10 0.01 \r\n", "16 3.2e-08 5.3e-10 2.7e-07 1.00e+00 3.427701104e+01 3.427701016e+01 6.3e-11 0.01 \r\n", "17 1.4e-09 2.7e-11 5.8e-08 1.00e+00 3.427701009e+01 3.427701006e+01 2.7e-12 0.01 \r\n", "Interior-point optimizer terminated. Time: 0.01. \r\n", "\r\n", "Optimizer terminated. Time: 0.01 \r\n" ] } ], "source": [ "!tail logd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**The solver has got the same result doing exacly the same steps!** \n", "\n", "In fact, **MOSEK** has solve the same problem, thanks to the automatic dualizer that decides whether is more convenient to solve the primal or the dual of a given problem. To see that, just look at the output again:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimizer started.\r\n", "Optimizer - threads : 2 \r\n", "Optimizer - solved problem : the dual \r\n", "Optimizer - Constraints : 3\r\n", "Optimizer - Cones : 500\r\n", "Optimizer - Scalar variables : 1501 conic : 1500 \r\n", "Optimizer - Semi-definite variables: 0 scalarized : 0 \r\n", "Optimizer terminated. Time: 0.10 \r\n" ] } ], "source": [ "!grep Optimizer logp " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimizer started.\r\n", "Optimizer - threads : 2 \r\n", "Optimizer - solved problem : the primal \r\n", "Optimizer - Constraints : 3\r\n", "Optimizer - Cones : 500\r\n", "Optimizer - Scalar variables : 1500 conic : 1500 \r\n", "Optimizer - Semi-definite variables: 0 scalarized : 0 \r\n", "Optimizer terminated. Time: 0.01 \r\n" ] } ], "source": [ "!grep Optimizer logd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In primal problem output the solver reports it is going to solve the `dual`, i.e. our second formulation. In the dual problem output it says it is going to solve the `primal`. Therefore in both cases we actually solve the very same formulation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Creative
This work is licensed under a Creative Commons Attribution 4.0 International License. The **MOSEK** logo and name are trademarks of Mosek ApS. The code is provided as-is. Compatibility with future release of **MOSEK** or the `Fusion API` are not guaranteed. For more information contact our [support](mailto:support@mosek.com). \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 1 }