
A fast, reliable, and open-source convex cone solver.
SCS (Splitting Conic Solver) is a numerical optimization package for solving large-scale convex quadratic cone problems. The code is freely available on GitHub. It solves primal-dual problems of the form
over variables
primal variable |
|
dual variable |
|
slack variable |
with data
sparse data matrix, see Data matrices |
|
sparse, symmetric positive semidefinite matrix |
|
dense primal cost vector |
|
dense dual cost vector |
|
nonempty, closed, convex cone, see Cones |
|
dual cone to |
At termination SCS will either return points
Features
Efficient: Designed to scale to large problems.
Flexible: Supports quadratic objectives and a large range of cones.
Free and open source: Distributed under the permissive MIT license.
Detects infeasibility: Robustly and reliably detects infeasible problems.
Interfaces: Bindings for many languages, including C, Python, Julia, R, MATLAB, Ruby, and JavaScript via WebAssembly.
Warm starts: Easily warm-started, and the matrix factorization can be cached.
Matrix-free: Optionally use an indirect linear system solver, or a GPU version.
Supported: A supported solver in CVX, CVXPY, YALMIP, Convex.jl and JuMP.
Accelerated: Includes acceleration that can improve convergence to high accuracy.
Battle-tested: The first ADMM-based solver available, and in wide usage.
Performance
SCS is a fast and reliable optimization library. For instance, it is one of the most performant solvers as determined by the third-party QP solvers benchmark on the challenging Maros-Meszaros QP test suite. This is despite SCS being a general quadratic conic solver and not specifically tailored for QPs.

SCS is faster and more reliable than most other solvers.
Development
SCS is a community project, built from the contributions of many researchers and engineers. The primary maintainer is Brendan O’Donoghue. We appreciate all contributions. To get involved, see our contributing guide.