pyproximal.optimization.primaldual.AdaptivePrimalDualยถ

pyproximal.optimization.primaldual.AdaptivePrimalDual(proxf: ProxOperator, proxg: ProxOperator, A: LinearOperator, x0: ndarray[tuple[Any, ...], dtype[_ScalarT]], tau: float, mu: float, alpha: float = 0.5, eta: float = 0.95, s: float = 1.0, delta: float = 1.5, z: ndarray[tuple[Any, ...], dtype[_ScalarT]] | None = None, niter: int = 10, tol: float | None = None, rtol: float | None = None, xytol: float | None = None, callback: Callable[[ndarray[tuple[Any, ...], dtype[_ScalarT]]], None] | None = None, show: bool = False, itershow: tuple[int, int, int] = (10, 10, 10)) tuple[ndarray[tuple[Any, ...], dtype[_ScalarT]], tuple[ndarray[tuple[Any, ...], dtype[_ScalarT]], ndarray[tuple[Any, ...], dtype[_ScalarT]], ndarray[tuple[Any, ...], dtype[_ScalarT]]]][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. 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.

Parameters:
proxfpyproximal.ProxOperator

Proximal operator of f function

proxgpyproximal.ProxOperator

Proximal operator of g function

Apylops.LinearOperator

Linear operator of g

x0numpy.ndarray

Initial vector

taufloat

Stepsize of subgradient of \(f\)

mufloat

Stepsize of subgradient of \(g^*\)

alphafloat, optional

Initial adaptivity level (must be between 0 and 1)

etafloat, optional

Scaling of adaptivity level to be multipled to the current alpha every time the norm of the two residuals start to diverge (must be between 0 and 1)

sfloat, optional

Scaling of residual balancing principle

deltafloat, optional

Balancing factor. Step sizes are updated only when their ratio exceeds this value.

znumpy.ndarray, optional

Additional vector

niterint, optional

Number of iterations of iterative scheme

tolfloat, optional

Tolerance on change of objective function (used as stopping criterion). If tol=None, run until niter is reached or the other tolerance criterion is met

rtolfloat, optional

Relative tolerance on objective function wrt initial value. Stops the solver when the ratio of the current objective function to the initial objective function is below this value. If rtol=None, run until niter is reached or the other tolerance criterion is met

xytolfloat, optional

Tolerance on x/y updates (used as stopping criterion). If tol=None, run until niter is reached

callbackcallable, optional

Function with signature (callback(x)) to call after each iteration where x is the current model vector

showbool, optional

Display iterations log

itershowtuple, optional

Display set log for the first N1 steps, last N2 steps, and every N3 steps in between where N1, N2, N3 are the three element of the list.

Returns:
xnumpy.ndarray

Inverted model

stepstuple

Tau, mu and alpha evolution through iterations

Notes

See pyproximal.optimization.cls_primaldual.AdaptivePrimalDual

Examples using pyproximal.optimization.primaldual.AdaptivePrimalDualยถ

Adaptive Primal-Dual

Adaptive Primal-Dual