pyproximal.optimization.primal.ConsensusADMMยถ

pyproximal.optimization.primal.ConsensusADMM(proxfs: list[ProxOperator], x0: ndarray[tuple[Any, ...], dtype[_ScalarT]], tau: float, niter: int = 1000, tol: float | None = 1e-07, callback: Callable[[...], None] | None = None, show: bool = False) ndarray[tuple[Any, ...], dtype[_ScalarT]][source]ยถ

Consensus ADMM

Solves the following global consensus problem using ADMM:

\[\argmin_{\mathbf{x_1}, \mathbf{x_2}, \ldots, \mathbf{x_m}} \sum_{i=1}^m f_i(\mathbf{x}_i) \quad \text{s.t.} \quad \mathbf{x_1} = \mathbf{x_2} = \cdots = \mathbf{x_m}\]

where \(f_i(\mathbf{x})\) are any convex functions that has known proximal operators.

Parameters:
proxfslist

A list of proximable functions \(f_1, \ldots, f_m\).

x0numpy.ndarray

Initial vector

taufloat

Positive scalar weight

niterint, optional

Number of iterations of iterative scheme.

tolfloat, optional

Tolerance on change of the solution (used as stopping criterion). If tol=0, run until niter is reached.

callbackcallable, optional

Function with signature (callback(x)) to call after each iteration where x is the current model vector

showbool, optional

Display iterations log

Returns:
xnumpy.ndarray

Inverted model

See also

ADMM

Alternating Direction Method of Multipliers

PPXA

Parallel Proximal Algorithm

Notes

The ADMM for the consensus problem can be expressed by the following recursion [1], [2]:

  • \(\bar{\mathbf{x}}^{0} = \mathbf{x}\)

  • for \(k = 1, \ldots\)

    • for \(i = 1, \ldots, m\)

      • \(\mathbf{x}_i^{k+1} = \mathrm{prox}_{\tau f_i} \left(\bar{\mathbf{x}}^{k} - \mathbf{y}_i^{k}\right)\)

    • \(\bar{\mathbf{x}}^{k+1} = \frac{1}{m} \sum_{i=1}^m \mathbf{x}_i^{k}\)

    • for \(i = 1, \ldots, m\)

      • \(\mathbf{y}_i^{k+1} = \mathbf{y}_i^{k} + \mathbf{x}_i^{k+1} - \bar{\mathbf{x}}^{k+1}\)

The current implementation returns \(\bar{\mathbf{x}}\).

References

[1]

Boyd, S., Parikh, N., Chu, E., Peleato, B., Eckstein, J., 2011. Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers. Foundations and Trends in Machine Learning, Vol. 3, No. 1, pp 1-122. Section 7.1. https://doi.org/10.1561/2200000016 https://stanford.edu/~boyd/papers/pdf/admm_distr_stats.pdf

[2]

Parikh, N., Boyd, S., 2014. Proximal Algorithms. Foundations and Trends in Optimization, Vol. 1, No. 3, pp 127-239. Section 5.2.1. https://doi.org/10.1561/2400000003 https://web.stanford.edu/~boyd/papers/pdf/prox_algs.pdf