pyproximal.optimization.cls_primaldual.AdaptivePrimalDual

class pyproximal.optimization.cls_primaldual.AdaptivePrimalDual(callbacks: Callbacks = None)[source]

Adaptive Primal-dual algorithm

Solves the minimization problem in pyproximal.optimization.primaldual.PrimalDual using an adaptive version of the first-order primal-dual algorithm of [1]. The main advantage of this method is that step sizes \(\tau\) and \(\mu\) are changing through iterations, improving the overall speed of convergence of the algorithm.

Notes

The Adative Primal-dual algorithm shares the the same iterations of the original pyproximal.optimization.cls_primaldual.PrimalDual solver. The main difference lies in the fact that the step sizes tau and mu are adaptively changed at each iteration leading to faster converge.

Changes are applied by tracking the norm of the primal and dual residuals. When their mutual ratio increases beyond a certain treshold delta the step lenghts are updated to balance the minimization and maximization part of the overall optimization process.

[1]

T., Goldstein, M., Li, X., Yuan, E., Esser, R., Baraniuk, “Adaptive Primal-Dual Hybrid Gradient Methods for Saddle-Point Problems”, ArXiv, 2013.

Methods

__init__([callbacks])

callback(x, *args, **kwargs)

Callback routine

finalize([nbar, show])

Finalize solver

memory_usage()

Compute memory usage of the solver

run(x, y[, niter, show, itershow])

Run solver

setup(proxf, proxg, A, x0, tau, mu[, alpha, ...])

Setup solver

solve(proxf, proxg, A, x0, tau, mu[, alpha, ...])

Run entire solver

step(x, y[, show])

Run one step of solver