pyproximal.optimization.cls_primal.ConsensusADMMΒΆ
- class pyproximal.optimization.cls_primal.ConsensusADMM(callbacks: Callbacks = None)[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.
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
Methods
__init__([callbacks])callback(x, *args, **kwargs)Callback routine
finalize([nbar, show])Finalize solver
memory_usage()Compute memory usage of the solver
run(x, x_bar, y[, niter, show, itershow])Run solver
setup(proxfs, x0, tau[, niter, tol, show])Setup solver
solve(proxfs, x0, tau[, niter, tol, show, ...])Run entire solver
step(x, x_bar, y[, show])Run one step of solver