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:
- proxfs
list A list of proximable functions \(f_1, \ldots, f_m\).
- x0
numpy.ndarray Initial vector
- tau
float Positive scalar weight
- niter
int, optional Number of iterations of iterative scheme.
- tol
float, optional Tolerance on change of the solution (used as stopping criterion). If
tol=0, run untilniteris reached.- callback
callable, optional Function with signature (
callback(x)) to call after each iteration wherexis the current model vector- show
bool, optional Display iterations log
- proxfs
- Returns:
- x
numpy.ndarray Inverted model
- x
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