# sigpy.alg.AugmentedLagrangianMethod¶

class sigpy.alg.AugmentedLagrangianMethod(minL, g, h, x, u, v, mu, max_iter=30)[source]

Augmented Lagrangian method for constrained optimization.

Consider the equality and inequality constrained problem:

$\min_{x: g(x) \leq 0, h(x) = 0} f(x)$

And perform the following update steps:

$\begin{split}x \in \text{argmin}_{x} L(x, u, v, \mu)\\ u = [u + \mu g(x)]_+ v = v + \mu h(x)\end{split}$

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

$L(x, u, v, \mu) = f(x) + \frac{\mu}{2}( \|[g(x) + \frac{u}{\mu}]_+\|_2^2 + \|h(x) + \frac{v}{\mu}\|_2^2)$
Parameters: minL (function) – a function that minimizes the augmented Lagrangian. g (None or function) – a function that takes $$x$$ as input, and outputs $$g(x)$$, the inequality constraints. h (None or function) – a function that takes $$x$$ as input, and outputs $$h(x)$$, the equality constraints. x (array) – primal variable. u (array) – dual variable for inequality constraints. v (array) – dual variable for equality constraints. mu (scalar) – step size. max_iter (int) – maximum number of iterations.
__init__(minL, g, h, x, u, v, mu, max_iter=30)[source]

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

Methods

 __init__(minL, g, h, x, u, v, mu[, max_iter]) Initialize self. done() Return whether the algorithm is done. update() Perform one update step.