pyproximal.optimization.primal.DouglasRachfordSplitting#
- pyproximal.optimization.primal.DouglasRachfordSplitting(proxf: ProxOperator, proxg: ProxOperator, x0: ndarray[tuple[Any, ...], dtype[_ScalarT]], tau: float, eta: float = 1.0, niter: int = 10, gfirst: bool = True, callback: Optional[Callable[[...], None]] = None, callbacky: bool = False, show: bool = False) Tuple[ndarray[tuple[Any, ...], dtype[_ScalarT]], ndarray[tuple[Any, ...], dtype[_ScalarT]]][source]#
Douglas-Rachford Splitting
Solves the following minimization problem using Douglas-Rachford Splitting algorithm:
\[\mathbf{x} = \argmin_\mathbf{x} f(\mathbf{x}) + g(\mathbf{x})\]where \(f(\mathbf{x})\) and \(g(\mathbf{x})\) are any convex functions that has known proximal operators.
- Parameters
- proxf
pyproximal.ProxOperator Proximal operator of f function
- proxg
pyproximal.ProxOperator Proximal operator of g function
- x0
numpy.ndarray Initial vector
- tau
float Positive scalar weight
- eta
float, optional Relaxation parameter (must be between 0 and 2, 0 excluded).
- niter
int, optional Number of iterations of iterative scheme
- gfirst
bool, optional Apply Proximal of operator
gfirst (True) or Proximal of operatorffirst (False)- callback
callable, optional Function with signature (
callback(x)) to call after each iteration wherexis the current model vector- callbacky
bool, optional Modify callback signature to (
callback(x, y)) whencallbacky=True- show
bool, optional Display iterations log
- proxf
- Returns
- x
numpy.ndarray Inverted model
- y
numpy.ndarray Inverted second model
- x
Notes
The Douglas-Rachford Splitting algorithm can be expressed by the following recursion [1], [2]:
\[\begin{split}\mathbf{y}^{k} &= \prox_{\tau g}(\mathbf{x}^k) \\ \mathbf{x}^{k+1} &= \mathbf{x}^{k} + \eta (\prox_{\tau f}(2 \mathbf{y}^{k} - \mathbf{x}^{k}) - \mathbf{y}^{k})\end{split}\]- 1
Patrick L. Combettes and Jean-Christophe Pesquet. 2011. Proximal Splitting Methods in Signal Processing. In Fixed-Point Algorithms for Inverse Problems in Science and Engineering, Springer, 185-212. https://doi.org/10.1007/978-1-4419-9569-8_10
- 2
Scott B. Lindstrom and Brailey Sims. 2021. Survey: Sixty Years of Douglas-Rachford. Journal of the Australian Mathematical Society, 110, 3, 333-370. https://doi.org/10.1017/S1446788719000570 https://arxiv.org/abs/1809.07181