sigpy.alg.ADMM

class sigpy.alg.ADMM(minL_x, minL_z, x, z, u, A, B, c, max_iter=30)[source]

Alternating Direction Method of Multipliers.

Consider the equality constrained problem:

\[\min_{x: A x + B z = c} f(x) + g(z)\]

And perform the following update steps:

\[\begin{split}x = \text{argmin}_{x} L_\mu(x, z, u)\\ z = \text{argmin}_{z} L_\mu(x, z, u)\\ u = u + A x + B z - c\end{split}\]

where \(L(x, u, v, \mu)\): is the augmented Lagrangian function:

\[L_\rho(x, z, u) = f(x) + g(z) + \frac{\rho}{2}\|A x + B z - c + u\|_2^2\]
Parameters:
  • minL_x (function) – a function that minimizes L w.r.t. x.
  • minL_z (function) – a function that minimizes L w.r.t. z.
  • x (array) – primal variable 1.
  • z (array) – primal variable 2.
  • u (array) – scaled dual variable.
  • max_iter (int) – maximum number of iterations.
__init__(minL_x, minL_z, x, z, u, A, B, c, max_iter=30)[source]

Initialize self. See help(type(self)) for accurate signature.

Methods

__init__(minL_x, minL_z, x, z, u, A, B, c[, …]) Initialize self.
done() Return whether the algorithm is done.
update() Perform one update step.