# Standard form problem

MathOptInterface represents optimization problems in the standard form:

\begin{align} & \min_{x \in \mathbb{R}^n} & f_0(x) \\ & \;\;\text{s.t.} & f_i(x) & \in \mathcal{S}_i & i = 1 \ldots m \end{align}

where:

Tip

MOI defines some commonly used functions and sets, but the interface is extensible to other sets recognized by the solver.

## Functions

The function types implemented in MathOptInterface.jl are:

Extensions for nonlinear programming are present but not yet well documented.

## One-dimensional sets

The one-dimensional set types implemented in MathOptInterface.jl are:

## Vector cones

The vector-valued set types implemented in MathOptInterface.jl are:

## Matrix cones

The matrix-valued set types implemented in MathOptInterface.jl are:

Some of these cones can take two forms: XXXConeTriangle and XXXConeSquare.

In XXXConeTriangle sets, the matrix is assumed to be symmetric, and the elements are provided by a vector, in which the entries of the upper-right triangular part of the matrix are given column by column (or equivalently, the entries of the lower-left triangular part are given row by row).

In XXXConeSquare sets, the entries of the matrix are given column by column (or equivalently, row by row), and the matrix is constrained to be symmetric. As an example, given a 2-by-2 matrix of variables X and a one-dimensional variable t, we can specify a root-det constraint as [t, X11, X12, X22] ∈ RootDetConeTriangle or [t, X11, X12, X21, X22] ∈ RootDetConeSquare.

We provide both forms to enable flexibility for solvers who may natively support one or the other. Transformations between XXXConeTriangle and XXXConeSquare are handled by bridges, which removes the chance of conversion mistakes by users or solver developers.