An open-source MATLAB® ADMM solver for partially decomposable conic optimization programs.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
cdcsTest.m Update cdcsTest Oct 1, 2017


CDCS (Cone Decomposition Conic Solver) is an open-source MATLAB solver for sparse conic programs with partially decomposable conic constraints. CDCS implements the alternating direction method of multipliers (ADMM) described in our paper Chordal decomposition in operator-splitting methods for sparse semidefinite programs.

Current version: 1.1.0

Release notes:

  • Homogeneous self-dual embedding is the new default method
  • The termination codes have changed. This means that if you use CDCS from YALMIP, the termination code returned by YALMIP will be incorrect. This should be fixed in the next YALMIP release!
  • CDCS is based on a temporary research code called ADMM-PDCP, which is no longer maintained. If you downloaded ADMM-PDCP, please replace it with CDCS.



CDCS solves in the standard primal and dual vectorized forms

	minimize 	c'x					maximize 	b'y
(1)	subject to	Ax = b,				(2)	subject to	A'y + z = c,	
			x \in K							z \in K*

where the conic constraint x \in K are partially decomposable. This means that x \in K can be replaced by p smaller conic constraints x_1 \in K_1, ..., x_p \in K_p, where x_1, ..., x_p are (possibly not-disjoint) subsets of the original optimization variable x.

CDCS supports cartesian products of the following cones:

  • R^n (free variables)
  • Non-negative orthant
  • Second-order cone
  • Positive semidefinite cone

Currently, CDCS only decomposes semidefinite cones characterized by a chordal sparsity pattern. The other supported cone types are not decomposed. This means that CDCS is most suitable for large sparse semidefinite programs (SDPs), although it can be used for any conic program over the supported cones.

CDCS offers a choice to solve the primal problem (1) only, the dual problem (2) only, or the homogeneous self-dual embedding of the two problems. From version 1.1.0, the homogeneous self-dual embedding is the default method.

Quick start

To install CDCS, simply run the installer script in MATLAB:

>> cdcsInstall;

To test your installation, run

>> cdcsTest;

CDCS is called with the syntax

>> [x,y,z,info] = cdcs(At,b,c,K,options);

where At is the transpose of the matrix A in problems (1)-(2) above. Note that the inputs and outputs are in the same format used by SeDuMi. Type

>> help cdcsOpts

for a complete list of solver options.

NOTE: this is a research code, and is under active development. You may find some undocumented inputs and options that are being used for development purposes, in the hope that they will become part of the "official" release. If you have any suggestions for improvement, or find any bugs, feel free to contact us!

How to cite

If you find CDCS useful, please cite at least one of the following papers as appropriate:

    archivePrefix= {arXiv},
    eprint       = {1707.05058},
    primaryClass = "math-OC",
    author       = {Zheng, Yang and Fantuzzi, Giovanni and Papachristodoulou, Antonis and Goulart, Paul and Wynn, Andrew},
    title        = {{Chordal decomposition in operator-splitting methods for sparse semidefinite programs}}
    author       = {Zheng, Yang and Fantuzzi, Giovanni and Papachristodoulou, Antonis and Goulart, Paul and Wynn, Andrew},
    title        = {{CDCS}: Cone Decomposition Conic Solver, version 1.1},
    howpublished = {\url{}},
    month        = Sep,
    year         = 2016

A selection of BibTex styles that support arXiv preprints can be found here.

Contact us

To contact us about CDCS, suggest improvements and report bugs, email either Giovanni Fantuzzi or Yang Zheng.


CDCS is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public Licence (LGPL) as published by the Free Software Foundation; either version 3 of the Licence, or (at your option) any later version.

CDCS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with CDCS; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.