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.