MATLAB scripts for alternating direction method of multipliers

S. Boyd, N. Parikh, E. Chu, B. Peleato, and J. Eckstein

This page gives MATLAB implementations of the examples in our paper on distributed optimization with the alternating direction method of multipliers.

These scripts are serial implementations of ADMM for various problems. In cases where the scripts solve distributed consensus problems (e.g., distributed ell_1-regularized logistic regression), the code runs serially instead of in parallel. These scripts give an idea of the structure and flavor of ADMM; an implementation in C/C++ that follows the structure laid out in our scripts and exploits parallelism can be competitive with state-of-the-art solvers for these problems. These are presented in MATLAB for readability. Unless otherwise noted on this page, most scripts stand alone and work in Matlab without further modification. Some scripts may require CVX.

As output, each example script displays the primal residual |r^k|, the primal feasibility tolerance epsilon^mathrm{pri}, the dual residual |s^k|, and the dual feasibility tolerance epsilon^mathrm{dual}. See section 3.3 of the paper for more details on these quantities. Also included are plots of the objective value and the primal and dual residual by iteration. Note that the objective value at any particular iteration can go below the true solution value p^star because the iterates need not be feasible (e.g., if the constraint is x - z = 0, we can have x^k - z^k neq 0 for some k).

You can use the grabcode function built in to MATLAB to obtain these codes. Please report any issues to the authors.

Examples

  1. Basis pursuit

    1. ADMM function

    2. Example

  2. Sparse inverse covariance selection

    1. ADMM function

    2. Example

  3. Huber fitting

    1. ADMM function

    2. Example

  4. Intersection of polyhedra

    1. ADMM function

    2. Example

  5. Lasso

    1. ADMM function

    2. Example

  6. Lasso with LSQR, an iterative method for solving sparse systems Ax = b

    1. ADMM function

    2. Example

  7. Least absolute deviations

    1. ADMM function

    2. Example

  8. Linear programming

    1. ADMM function

    2. Example

  9. ell_1-regularized logistic regression

    1. ADMM function

    2. Example

  10. Distributed ell_1-regularized logistic regression

    1. ADMM function - also requires l2_log, l2_log_grad, record_bfgs_iters, and LBFGS-B for Matlab.

    2. Example

  11. Regressor selection (nonconvex problem)

    1. ADMM function

    2. Example

  12. Quadratic programming

    1. ADMM function

    2. Example

  13. Sum-of-norms regularization (group lasso)

    1. ADMM function

    2. Example

  14. Sum-of-norms regularization (group lasso) with feature splitting

    1. ADMM function

    2. Example

  15. Support vector machine

    1. ADMM function

    2. Example

  16. Total variation minimization

    1. ADMM function

    2. Example