1 Introduction

The MOSEK Optimization Suite 8.1.0.24 is a powerful software package capable of solving large-scale optimization problems of the following kind:

  • linear,
  • conic quadratic (also known as second-order cone),
  • convex quadratic,
  • semidefinite,
  • and general convex.

Integer constrained variables are supported for all problem classes except for semidefinite and general convex problems. In order to obtain an overview of features in the MOSEK Optimization Suite consult the product introduction guide.

The most widespread class of optimization problems is linear optimization problems, where all relations are linear. The tremendous success of both applications and theory of linear optimization can be ascribed to the following factors:

  • The required data are simple, i.e. just matrices and vectors.
  • Convexity is guaranteed since the problem is convex by construction.
  • Linear functions are trivially differentiable.
  • There exist very efficient algorithms and software for solving linear problems.
  • Duality properties for linear optimization are nice and simple.

Even if the linear optimization model is only an approximation to the true problem at hand, the advantages of linear optimization may outweigh the disadvantages. In some cases, however, the problem formulation is inherently nonlinear and a linear approximation is either intractable or inadequate. Conic optimization has proved to be a very expressive and powerful way to introduce nonlinearities, while preserving all the nice properties of linear optimization listed above.

The fundamental expression in linear optimization is a linear expression of the form

\[A x - b \in \K\]

where \(\K = \{y: y \geq 0\}\), i.e.,

\[\begin{split}\begin{array}{l} A x - b =y,\\ y \in \K. \end{array}\end{split}\]

In conic optimization a wider class of convex sets \(\K\) is allowed, for example in 3 dimensions \(\K\) may correspond to an ice cream cone. The conic optimizer in MOSEK supports three structurally different types of cones \(\K\), which allows a surprisingly large number of nonlinear relations to be modelled (as described in the MOSEK modeling cookbook), while preserving the nice algorithmic and theoretical properties of linear optimization.

1.1 Why the Optimizer API for .NET?

The Optimizer API for .NET provides an object-oriented interface to the MOSEK optimizers. This object oriented design is common to Java, Python and .NET and is based on a thin class-based interface to the native C optimizer API. The overhead introduced by this mapping is minimal.

_images/mosek-distro-optapi.svg

The Optimizer API for .NET can be used with any application running on the Microsoft .NET platform (and possibly other .NET implementations like Mono). It consists of a single library, mosekdotnet8_1.dll, containing classes and more in the mosek namespace.

The Optimizer API for .NET provides access to:

  • Linear Optimization (LO)
  • Conic Quadratic (Second-Order Cone) Optimization (CQO, SOCO)
  • Convex Quadratic and Quadratically Constrained Optimization (QCQO)
  • Semidefinite Optimization (SDO)

as well as to additional functions for

  • problem analysis,
  • sensitivity analysis,
  • infeasibility diagnostics,
  • BLAS/LAPACK linear algebra routines.