class sigpy.alg.PrimalDualHybridGradient(proxfc, proxg, A, AH, x, u, tau, sigma, theta=1, gamma_primal=0, gamma_dual=0, max_iter=100, tol=0)[source]

Considers the problem:

$\min_x \max_u - f^*(u) + g(x) + \left<Ax, u\right>$

Or equivalently:

$\min_x f(A x) + g(x)$

where f, and g are simple.

Parameters: proxfc (function) – Function to compute proximal operator of f^*. proxg (function) – Function to compute proximal operator of g. A (function) – Function to compute a linear mapping. AH (function) – Function to compute the adjoint linear mapping of A. x (array) – Primal solution. u (array) – Dual solution. tau (float or array) – Primal step-size. sigma (float or array) – Dual step-size. gamma_primal (float) – Strong convexity parameter of g. gamma_dual (float) – Strong convexity parameter of f^*. max_iter (int) – Maximum number of iterations. tol (float) – Tolerance for stopping condition.

References

Chambolle, A., & Pock, T. (2011). A first-order primal-dual algorithm for convex problems with applications to imaging. Journal of mathematical imaging and vision, 40(1), 120-145.

__init__(proxfc, proxg, A, AH, x, u, tau, sigma, theta=1, gamma_primal=0, gamma_dual=0, max_iter=100, tol=0)[source]

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

Methods

 __init__(proxfc, proxg, A, AH, x, u, tau, sigma) Initialize self. done() Return whether the algorithm is done. update() Perform one update step.