pyproximal.optimization.primal.LinearizedADMM¶
- pyproximal.optimization.primal.LinearizedADMM(proxf: ProxOperator, proxg: ProxOperator, A: LinearOperator, x0: ndarray[tuple[Any, ...], dtype[_ScalarT]], tau: float, mu: float, niter: int = 10, z0: ndarray[tuple[Any, ...], dtype[_ScalarT]] | None = None, callback: Callable[[ndarray[tuple[Any, ...], dtype[_ScalarT]]], None] | None = None, show: bool = False) tuple[ndarray[tuple[Any, ...], dtype[_ScalarT]], ndarray[tuple[Any, ...], dtype[_ScalarT]]][source]¶
Linearized Alternating Direction Method of Multipliers
Solves the following minimization problem using Linearized Alternating Direction Method of Multipliers:
\[\mathbf{x} = \argmin_\mathbf{x} f(\mathbf{x}) + g(\mathbf{A}\mathbf{x})\]where \(f(\mathbf{x})\) and \(g(\mathbf{x})\) are any convex function that has a known proximal operator and \(\mathbf{A}\) is a linear operator.
- Parameters:
- proxf
pyproximal.ProxOperator Proximal operator of f function
- proxg
pyproximal.ProxOperator Proximal operator of g function
- A
pylops.LinearOperator Linear operator
- x0
numpy.ndarray Initial vector
- tau
float, optional Positive scalar weight, which should satisfy the following condition to guarantee convergence: \(\mu \in (0, \tau/\lambda_{max}(\mathbf{A}^H\mathbf{A})]\).
- mu
float, optional Second positive scalar weight, which should satisfy the following condition to guarantees convergence: \(\mu \in (0, \tau/\lambda_{max}(\mathbf{A}^H\mathbf{A})]\).
- niter
int, optional Number of iterations of iterative scheme
- z0
numpy.ndarray Initial auxiliary vector. If
None, initialized toA @ x0.- callback
callable, optional Function with signature (
callback(x)) to call after each iteration wherexis the current model vector- show
bool, optional Display iterations log
- proxf
- Returns:
- x
numpy.ndarray Inverted model
- z
numpy.ndarray Inverted second model
- x
- Raises:
- ValueError
If both
x0andz0are set toNone
Notes
The Linearized-ADMM algorithm can be expressed by the following recursion [1]:
\[\begin{split}\mathbf{x}^{k+1} = \prox_{\mu f}(\mathbf{x}^{k} - \frac{\mu}{\tau} \mathbf{A}^H(\mathbf{A} \mathbf{x}^k - \mathbf{z}^k + \mathbf{u}^k))\\ \mathbf{z}^{k+1} = \prox_{\tau g}(\mathbf{A} \mathbf{x}^{k+1} + \mathbf{u}^k)\\ \mathbf{u}^{k+1} = \mathbf{u}^{k} + \mathbf{A}\mathbf{x}^{k+1} - \mathbf{z}^{k+1}\end{split}\][1]N., Parikh, “Proximal Algorithms”, Foundations and Trends in Optimization. 2013.