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.