pyproximal.optimization.cls_primal.LinearizedADMM

class pyproximal.optimization.cls_primal.LinearizedADMM(callbacks: Callbacks = None)[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.

See also

ADMM

ADMM

ADMML2

ADMM with L2 misfit function

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.

Methods

__init__([callbacks])

callback(x, *args, **kwargs)

Callback routine

finalize([nbar, show])

Finalize solver

memory_usage()

Compute memory usage of the solver

run(x, z[, niter, show, itershow])

Run solver

setup(proxf, proxg, A, x0, tau, mu[, z0, ...])

Setup solver

solve(proxf, proxg, A, x0, tau, mu[, z0, ...])

Run entire solver

step(x, z[, show])

Run one step of solver