Documentation
Main interface
SDPLRPlus.sdplr
— Functionsdplr(C, As, b, r)
sdplr(C, As, b, r; kwargs...)
These functions tackle the following semidefinite program
\[\begin{aligned} \text{minimize}_{X \succeq 0} \quad &\langle C , X \rangle \\ \text{subject to}\quad &\langle A_i, X \rangle = b_i, \quad \forall i \in [m]\\ & X \in \mathbb{R}^{n \times n} \end{aligned}\]
by factorizing the solution matrix $X$ as $YY^T$ and solve the following nonlinear program instead.
\[\begin{aligned} \text{minimize}\quad &\langle C , YY^T \rangle \\ \text{subject to}\quad &\langle A_i, YY^T \rangle = b_i, \quad \forall i \in [m]\\ & Y \in \mathbb{R}^{n \times r} \end{aligned}\]
Arguments
As
is a vector of $m$ constraint matrices $A_i$ of size $n \times n$. There are four types of constraint matrices supported:SparseMatrixCSC
for sparse constraints with nnz $\Theta (n)$.SparseMatrixCOO
for super sparse constraints with nnz $o(n)$.SymLowRankMatrix
for low-rank constraints with form $BDB^T$.Diagonal
for diagonal constraints. Consider usingSparseMatrixCOO
instead if the diagonal matrix is super sparse.
C
is the cost matrix $C$ of size $n \times n$. Currently we support four types mentioned above.b
is a vector of m right-hand side values $b_i$.r
is the initial rank of the solution matrix $Y$.
Optional arguments
ptol
: Tolerance for relative primal infeasibility, i.e.
\[\|\mathcal{A}(YY^T) - b\| / (1 + \|b\|_2).\]
The default value is $10^{-2}$.
objtol
: Tolerance for relative suboptimality, i.e.
\[\langle C, YY^T \rangle - \langle C, X^* \rangle / (1 + |\langle C, YY^T \rangle|).\]
The default value is $10^{-2}$.
numberlbfgsvecs
: Number of L-BFGS vectors. The default value is $4$.fprec
: Break one major iteration if the relative change of the Lagrangian value is smaller thanfprec * eps()
. The default value is $10^8$, which is for moderate-accuracy solutions (ptol = objtol = $10^{-2}$).prior_trace_bound
: A trace bound priorly known or estimated. For example, it is $n$ for max cut. The default value is $10^{18}$.σfac
: Factor for increasing the smoothing factor $\sigma$ in the augmented Lagrangian. The default value is $2.0$.rankupd_tol
: Rank update tolerance. After primal infeasibility reachesptol
andobjtol
is not reached forrankupd_tol
major iterations, the rank of the solution matrix $Y$ is doubled. The default value is $4$.maxtime
: Maximum time in seconds for the optimization. The default value is $3600.0$. There may be some postprocessing overhead so the program will not stop exactly atmaxtime
. If you want to achieve a hard time limit, use terminal tools.printlevel
: Print level. The default value is $1$.printfreq
: How often to print in seconds. The default value is $60.0$.maxmajoriter
: Maximum number of major iterations. The default value is $10^5$.maxiter
: Maximum number of total iterations. The default value is $10^7$.dataset
: Dataset name for better tracking progress, especially when executed parallely. The default value is "".eval_DIMACS_errs
: Whether to evaluate DIMACS errors. The default value is false.
Supported constraint types
As mentioned, SDPLRPlus
supports semidefinite programs with constraints of type
Diagonal
,SparseMatrixCSC
,SparseMatrixCOO
andSymLowRankMatrix
.
SymLowRankMatrix
is a type for symmetric low-rank matrices defined in SDPLRPlus
.
SDPLRPlus.SymLowRankMatrix
— TypeSymLowRankMatrix{T} <: AbstractMatrix{T}
Symmetric low-rank matrix of the form $BDB^T$ with elements of type T
. Besides the diagonal matrix $D$ and the thin matrix $B$, we also store $B^T$ as Bt
. It's because usually B
is really thin, storing Bt
doesn't cost too much more storage but will save allocation during computation.
Citing SDPLRPlus
SDPLRPlus
is introduced in our paper (Huang and Gleich, 2024). If you found it useful in your work, we kindly request you to cite it.
Moreover, SDPLRPlus
started as a reproduction of the package SDPLR
which was introduced in (Burer and Monteiro, 2003; Burer and Monteiro, 2005; Burer and Choi, 2006). Please consider citing these papers.
References
- Burer, S. and Choi, C. (2006). Computational Enhancements in Low-Rank Semidefinite Programming. Optimization Methods and Software 21, 493–512. Accessed on Mar 21, 2023.
- Burer, S. and Monteiro, R. D. (2003). A Nonlinear Programming Algorithm for Solving Semidefinite Programs via Low-Rank Factorization. Mathematical Programming 95, 329–357. Accessed on Mar 21, 2023.
- Burer, S. and Monteiro, R. D. (2005). Local Minima and Convergence in Low-Rank Semidefinite Programming. Mathematical Programming 103, 427–444. Accessed on Mar 24, 2023.
- Huang, Y. and Gleich, D. F. (2024). Suboptimality bounds for trace-bounded SDPs enable a faster and scalable low-rank SDP solver SDPLR+, arXiv:2406.10407.