1 Overview

An optimization problem such as

\[\begin{split}\begin{array}{lccl} \minimize & 1 x_1 + 2 x_2 & & \\ \st & x_1 + x_2 & = & 1, \\ & x_1,x_2 \geq 0 & & \\ \end{array}\end{split}\]

is an example of a linear optimization problem. In general such problems may be very large and are often compactly written in one of the standard forms such as:

(1.1)\[\begin{split}\begin{array}{lccl} \minimize & c^Tx & & \\ \st & Ax+b & = & 0, \\ & x & \geq & 0. \end{array}\end{split}\]

A natural generalization of linear constraints \(Ax+b=0\) are constraints of the form

(1.2)\[Ax+b\in \K,\]

where \(\K\) is a more general nonlinear convex set.

Here enters the MOSEK Optimization Suite, which is a software package for solving large optimization problems with many constraints and variables, in particular:

  • linear problems as in (1.1),

  • nonlinear conic problems with constraints as in (1.2), where \(\K\) can be the second-order cone, power cone, exponential cone, semidefinite cone and some cones derived from them,

  • as well as, independently, problems with quadratic objective and constraints,

  • mixed-integer variants of those problems and problems with disjunctive constraints.

In addition to optimization algorithms the MOSEK Optimization Suite provides interfaces to mainstream programming languages such as C, Java, MATLAB, .NET, Python, R and Julia.

Below are the typical constraints and expressions which can be modeled using conic form:

  • Conic Quadratic Optimization: \(t\geq x^2\), sums of squares, 2-norm \(t\geq \|x\|_2\), variance, \(\|Ax-b\|_2\).

  • Power Cone Optimization: powers \(x^p\), geometric mean, products \(x^\alpha y^\beta\), \(p\)-norm.

  • Exponential Cone: \(e^x\), \(\ln{x}\), log-sum-exp, entropy \(x\ln{x}\), relative entropy, geometric programming.

  • Semidefinite Optimization: \(X\succeq 0\) is positive semidefinite.

MOSEK provides three solvers:

  • A simplex solver for linear problems.

  • An interior-point conic solver for linear and nonlinear continuous problems, conic problems and quadratic problems.

  • A mixed-integer solver when the problem contains integer variables or disjunctive constraints.

The MOSEK Optimization Suite includes

  • the low-level optimizer API for C, Java, .NET and Python.

  • the object-oriented Fusion API for C++, Java, .NET and Python.

  • an optimization toolbox for MATLAB.

  • an Rmosek package for R.

  • an interface to AMPL.

  • a command line tool.

  • optimizer server for remote optimization.

We also maintain an unofficial interface for Julia, see https://github.com/JuliaOpt/Mosek.jl.

Fig. 1.1 illustrates the relationship between the parts.

_images/mosek-distro-with-rmosek.svg

Fig. 1.1 An overview of the API and interfaces available in the MOSEK Optimization Suite.

In addition MOSEK Optimization Suite provides

  • sensitivity analysis for linear problems.

  • infeasibility diagnostic tools.

  • problem analyses for diagnosing numerical issues in input data.

  • reading and writing optimization problems and solutions from/to files.

Most large optimization problems are very sparse i.e. most of the input data consists of zeros. Therefore, the APIs and optimization algorithms in MOSEK Optimization Suite is designed to exploit sparsity to reduce both storage and time.