pyproximal.optimization.primal.PPXAΒΆ

pyproximal.optimization.primal.PPXA(proxfs: list[ProxOperator], x0: ndarray[tuple[Any, ...], dtype[_ScalarT]] | list[ndarray[tuple[Any, ...], dtype[_ScalarT]]], tau: float, eta: float = 1.0, weights: ndarray[tuple[Any, ...], dtype[_ScalarT]] | list[float] | None = None, niter: int = 1000, tol: float | None = None, rtol: float | None = None, callback: Callable[[...], None] | None = None, show: bool = False, itershow: tuple[int, int, int] = (10, 10, 10)) ndarray[tuple[Any, ...], dtype[_ScalarT]][source]ΒΆ

Parallel Proximal Algorithm (PPXA)

Solves the following minimization problem using Parallel Proximal Algorithm (PPXA):

\[\mathbf{x} = \argmin_\mathbf{x} \sum_{i=1}^m f_i(\mathbf{x})\]

where \(f_i(\mathbf{x})\) are any convex functions that has known proximal operators.

Parameters:
proxfslist

A list of proximable functions \(f_1, \ldots, f_m\).

x0numpy.ndarray or list

Initial vector \(\mathbf{x}\) for all \(f_i\) if 1-dimensional array is provided, or initial vectors \(\mathbf{x}_{i}\) for each \(f_i\) for \(i=1,\ldots,m\) if a list of 1-dimensional arrays or a 2-dimensional array of size (m, d) is provided, where d is the dimension of \(\mathbf{x}_{i}\).

taufloat

Positive scalar weight

etafloat, optional

Relaxation parameter (must be between 0 and 2, 0 excluded).

weightsnumpy.ndarray or list or None, optional

Weights \(\sum_{i=1}^m w_i = 1, \ 0 < w_i < 1\), Defaults to None, which means \(w_1 = \cdots = w_m = \frac{1}{m}.\)

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

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

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

See also

ConsensusADMM

Consensus ADMM

Notes

See pyproximal.optimization.cls_primal.PPXA