SDPSL
Semidefinite Programming Specification Library
|
We deal with problems having several variable matrices, a linear objective function, and both linear and polynomial constraints.
To make things more precise, let \(L\) and \(P\) be disjoint, finite sets giving indices to the linear and polynomial constraints, respectively, of our problem. The problems we consider have the following shape:
\[ \begin{array}{rl} {\rm maximize}&\sum_{j=1}^r \langle C_j, X_j\rangle\\ &\sum_{j=1}^r \langle A_{ij}, X_j \rangle \mathrel{\triangle} b_i\quad\text{for $i \in L$},\\ &\sum_{j=1}^r \langle A_{ij}, X_j \rangle = p_i\quad \text{for $i \in P$},\\ &\text{$X_1$, $\ldots$, $X_r$ are positive semidefinite,} \end{array} \]
where:
\(X_1, \ldots, X_r\) are the variable matrices, the matrices we wish to find. Here, \(X_j\) is an \(n_j \times n_j\) real-valued symmetric matrix;
\(C_1, \ldots, C_r\) are real-valued matrices specifying the objective function and \(C_j\) is \(n_j \times n_j\);
\(\langle A, B\rangle = \mathop{\rm tr}(A^{\sf T} B)\) denotes the trace inner product of the matrices \(A\) and \(B\);
Matrix \(A_{ij}\), for \(i \in L\), is an \(n_j \times n_j\) real-valued matrix, and each \(b_i\) is a real number. So for each \(i \in L\) we have a linear constraint, where \(\triangle\) is one of the binary relations \({\leq}\), \({=}\), or \({\geq}\);
The problem above seems more general than a semidefinite programming problem, namely because of the polynomial constraints for \(i \in P\). This is not the case, however, since each such polynomial constraint can be expressed as several linear constraints, as we will see below.
Notice moreover that the matrices giving the objective function and the constraints are not required to be symmetric as is usual in the semidefinite programming literature. We could assume that the matrices are symmetric since the variable matrices are symmetric: if \(X\) is a symmetric matrix and \(A\) is any matrix, then \(\langle A, X\rangle = \frac{1}{2}\langle A + A^{\sf T}, X\rangle\). Sometimes however it is useful to allow for nonsymmetric matrices to be given, and the library will make sure to "translate" them so that the solver gets symmetric matrices as input, as it is usually expected.
SDPSL can be used to specify problems as defined above. The variables are specified by giving their sizes, and the matrices and constraints are then given. Numbers can be either double-precision floating-point numbers, or arbitrary-precision floating-point numbers via the GMP library.
As mentioned above, polynomial constraints can be transformed into several linear constraints. This can be easily seen, since given a polynomial constraint
\[ \sum_{j=1}^r \langle A_{ij}, X_j \rangle = p_i \]
for \(i \in P\), both the left and right-hand sides are Laurent polynomials. So we have a polynomial identity, that can be checked by verifying that corresponding monomials on each side have the same coefficient. This gives one linear constraint for each monomial occurring in the constraint (both on the left-hand side and on the right-hand side).
Here, it is not necessary to use the standard monomial basis. Suppose all polynomials occurring in the polynomial constraint above (that is, all polynomials that are entries of the matrices \(A_{ij}\) and the polynomial \(p_i\)) belong to a certain linear subspace \(U\) of the vector space of Laurent polynomials on the appropriate variables.
Then, given any basis of \(U\), we may expand both the left-hand side and the right-hand side of the constraint on this basis. The polynomial identity can then be checked by equating the coefficients of the expansions.
Such basis change operation allows for many possible encodings of the polynomial constraints. In some applications, a change of basis can greatly improve solver performance. SDPSL provides ways in which such basis transformations can be performed.
SDPSL was developed with some specific applications in mind, and therefore some implicit assumptions are made on the data. Knowning what is assumed of the data can lead to better performance when using the library.
In general, the assumptions made are the following:
MatrixMask
— but these only make the algorithms faster; the whole matrix is still stored.)Next chapter: SDPSL basics