The solver solves the following pair of primal and dual problems:
We can mix real and complex cones. For complex cone variables, we split the real and imaginary parts as follows:
For real matrix cones, we vectorize matrices as follows:
For complex matrix cones, we vectorize matrices as follows:
The inverse functions
The primal variable vector
You have to split/vectorize
where
The input format of a file is given below. <(type) name: description> gives the type and description of a particular input. Anything outside <...> is a comment and is not part of the input specification.
<(Integer) n: Number of primal variables>
<(Integer) p: Number of constraint equations>
<(Integer) k: Number of cones>
<(String) cone_1: Cone 1> <(Any) cone_params_1: Cone 1 parameters>
...
<(String) cone_k: Cone k> <(Any) cone_params_k: Cone k parameters>
┌────────────────────────────────────────────┐
│Let d be the total number of cone variables.│
└────────────────────────────────────────────┘
<(1 x n real vector) c_transpose>
<(p x n real matrix) A>
<(1 x p real vector) b_transpose>
<(d x n real matrix) G>
<(1 x d real vector) h_transpose>
The list of supported cones and the respective cone parameters are given below. The left hand side of an equality is the format of the cone specification. The right hand side is the cone description. Anything in [...] is optional.
REALPSD/COMPLEXPSD n = Cone of symmetric/Hermitian n x n positive semidefinite matricesn = Cone of Hermitian n x n positive semidefinite matricesDIAGONALPSD n = Cone of diagonal n x n positive semidefinite matricesREALLOGPERSPECEPI/COMPLEXLOGPERSPECEPI n = Cone of symmetric/Hermitian n x n positive semidefinite matrices (T, X, Y) satisfying
This solver works with arbitrary precision numbers. You need Boost, GMP, Eigen, MPFR C++ to build this.
papp_varga path/to/input/file