API Reference
Model
COSMO.Model — TypeModel{T <: AbstractFloat}()Initializes an empty COSMO model that can be filled with problem data using assemble!(model, P, q,constraints; [settings, x0, s0, y0]).
COSMO.assemble! — Functionassemble!(model, P, q, constraint(s); [settings, x0, y0, s0])Assembles a COSMO.Model with a cost function defind by P and q, and a number of constraints.
The positive semidefinite matrix P and vector q are used to specify the cost function of the optimization problem:
min   1/2 x'Px + q'x
s.t.  Ax + b ∈ Cconstraints is a COSMO.Constraint or an array of COSMO.Constraint objects that are used to describe the constraints on x.
The optional keyword argument settings can be used to pass custom solver settings:
custom_settings = COSMO.Settings(verbose = true);
assemble!(model, P, q, constraints, settings = custom_settings)The optional keyword arguments x0 and y0 can be used to provide the solver with warm starting values for the primal variable x and the dual variable y.
x_0 = [1.0; 5.0; 3.0]
COSMO.assemble!(model, P, q, constraints, x0 = x_0)COSMO.set! — Functionset!(model, P, q, A, b, convex_sets, [settings])Sets model data directly based on provided fields.
COSMO.empty_model! — Functionempty_model!(model)Resets all the fields of model to that of a model created with COSMO.Model() (apart from the settings).
COSMO.warm_start_primal! — Functionwarm_start_primal!(model, x0, [ind])Provides the COSMO.Model with warm starting values for the primal variable x. ind can be used to warm start certain components of x.
COSMO.warm_start_slack! — Functionwarm_start_slack!(model, s0, [ind])Provides the COSMO.Model with warm starting values for the primal slack variable s. ind can be used to warm start certain components of s.
COSMO.warm_start_dual! — Functionwarm_start_dual!(model, y0, [ind])Provides the COSMO.Model with warm starting values for the dual variable y. ind can be used to warm start certain components of y.
Constraints
COSMO.Constraint — TypeConstraint{T <: AbstractFloat}(A, b, convex_set_type, dim = 0, indices = 0:0)Creates a COSMO constraint: Ax + b ∈ convex_set.
By default the following convex set types are supported: ZeroSet, Nonnegatives, SecondOrderCone, PsdCone, PsdConeTriangle.
Examples
julia> COSMO.Constraint([1 0;0 1], zeros(2), COSMO.Nonnegatives)
Constraint
Size of A: (2, 2)
ConvexSet: COSMO.Nonnegatives{Float64}For convex sets that require their own data, it is possible to pass the pass the instantiated object directly rather than the type name.
Examples
julia> COSMO.Constraint([1 0;0 1], zeros(2), COSMO.Box([-1.;-1.],[1.;1.]))
Constraint
Size of A: (2, 2)
ConvexSet: COSMO.Box{Float64}The optional arguments dim and indices can be used to specify A and b for subparts of variable x. If x has dimension dim = 4, then x[2] and x[3] can be constrained to the zero cone in the following way:
Examples
julia> c = COSMO.Constraint([1 0;0 1], zeros(2), COSMO.ZeroSet, 4, 2:3)
Constraint
Size of A: (2, 4)
ConvexSet: COSMO.ZeroSet{Float64}Notice that extra columns of A have been added automatically.
julia>Matrix(c.A)
2×4 Array{Float64,2}:
0.0  1.0  0.0  0.0
0.0  0.0  1.0  0.0COSMO.ZeroSet — TypeZeroSet(dim)Creates the zero set $\{ 0 \}^{dim}$ of dimension dim. If x ∈ ZeroSet then all entries of x are zero.
COSMO.Nonnegatives — TypeNonnegatives(dim)Creates the nonnegative orthant $\{ x \in \mathbb{R}^{dim} : x \ge 0 \}$  of dimension dim.
COSMO.Box — TypeBox(l, u)Creates a box or intervall with lower boundary vector $l \in \mathbb{R}^m \cup \{-\infty\}^m$ and upper boundary vector$u \in \mathbb{R}^m\cup \{+\infty\}^m$.
COSMO.SecondOrderCone — TypeSecondOrderCone(dim)Creates the second-order cone (or Lorenz cone) $\{ (t,x) \in \mathrm{R}^{dim} : || x ||_2 \leq t \}$.
COSMO.PsdCone — TypePsdCone(dim)Creates the cone of symmetric positive semidefinite matrices $\mathcal{S}_+^{dim}$. The entries of the matrix X are stored column-by-column in the vector x of dimension dim. Accordingly  $X \in \mathbb{S}_+ \Rightarrow x \in \mathcal{S}_+^{dim}$, where $X = \text{mat}(x)$.
COSMO.PsdConeTriangle — TypePsdConeTriangle(dim)Creates the cone of symmetric positive semidefinite matrices. The entries of the upper-triangular part of matrix X are stored in the vector x of dimension dim. A $r \times r$ matrix has $r(r+1)/2$ upper triangular elements and results in a vector of $\mathrm{dim} = r(r+1)/2$.
Examples
The matrix
\[\begin{bmatrix} x_1 & x_2 & x_4\\ x_2 & x_3 & x_5\\ x_4 & x_5 & x_6 \end{bmatrix}\]
is transformed to the vector $[x_1, x_2, x_3, x_4, x_5, x_6]^\top$ with corresponding constraint  PsdConeTriangle(6).
COSMO.ExponentialCone — TypeExponentialCone(MAX_ITERS = 100, EXP_TOL = 1e-8)Creates the exponential cone $\mathcal{K}_{exp} = \{(x, y, z) \mid y \geq 0 ye^{x/y} ≤ z\} \cup \{ (x,y,z) \mid x \leq 0, y = 0, z \geq 0 \}$
COSMO.DualExponentialCone — TypeDualExponentialCone(MAX_ITERS::Int = 100, EXP_TOL = 1e-8)Creates the dual exponential cone $\mathcal{K}^*_{exp} = \{(x, y, z) \mid x < 0, -xe^{y/x} \leq e^1 z \} \cup \{ (0,y,z) \mid y \geq 0, z \geq 0 \}$
COSMO.PowerCone — TypePowerCone(alpha::Float64, MAX_ITERS::Int = 20, POW_TOL = 1e-8)Creates the 3-d power cone $\mathcal{K}_{pow} = \{(x, y, z) \mid x^\alpha y^{(1-\alpha)} \geq \|z\|, x \geq 0, y \geq 0 \}$ with $0 < \alpha < 1$
COSMO.DualPowerCone — TypeDualPowerCone(alpha::Float64, MAX_ITERS::Int = 20, POW_TOL = 1e-8)Creates the 3-d dual power cone $\mathcal{K}^*_{pow} = \{(u, v, w) \mid \left( \frac{u}{\alpha}\right)^\alpha \left( \frac{v}{1-\alpha}\right)^{(1-\alpha)} \geq \|w\|, u \geq 0, v \geq 0 \}$ with $0 < \alpha < 1$