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: Callable[[...], None] | 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], [3], [4]:
\[\begin{split}\mathbf{x}^{k} &= \prox_{\tau g}(\mathbf{y}^k) \\ \mathbf{y}^{k+1} &= \mathbf{y}^{k} + \eta (\prox_{\tau f}(2 \mathbf{x}^{k} - \mathbf{y}^{k}) - \mathbf{x}^{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, pp. 185-212. Algorithm 10.15. 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. Eq.(15). https://doi.org/10.1017/S1446788719000570 https://arxiv.org/abs/1809.07181
[3]Ryu, E.K., Yin, W., 2022. Large-Scale Convex Optimization: Algorithms & Analyses via Monotone Operators. Cambridge University Press, Cambridge. Eq.(2.18). https://doi.org/10.1017/9781009160865 https://large-scale-book.mathopt.com/
[4]Combettes, P.L., Pesquet, J.-C., 2008. A proximal decomposition method for solving convex variational inverse problems. Inverse Problems 24, 065014. Proposition 3.2. https://doi.org/10.1088/0266-5611/24/6/065014 https://arxiv.org/abs/0807.2617