The (Parallel) Douglas—Rachford ((P)DR) algorithm was generalized to Hadamard manifolds in BergmannPerschSteidl:2016.
The aim is to minimize the sum
on a manifold, where the two summands have proximal maps
\operatorname{prox}_{λ g}, \operatorname{prox}_{λ h}
that are easy
to evaluate (maybe in closed form, or not too costly to approximate).
Further, define the reflection operator at the proximal map as
Let \alpha_k ∈ [0,1]
with \sum_{k ∈ ℕ} \alpha_k(1-\alpha_k) = \infty
and λ > 0
(which might depend on iteration k
as well) be given.
Then the (P)DRA algorithm for initial data p^{(0)} ∈ \mathcal M
as
Initialize q^{(0)} = p^{(0)}
and k=0
Repeat until a convergence criterion is reached
- Compute
r^{(k)} = \operatorname{refl}_{λ g}\operatorname{refl}_{λ h}(q^{(k)})
- Within that operation, store
p^{(k+1)} = \operatorname{prox}_{λ h}(q^{(k)})
which is the prox the inner reflection reflects at. - Compute
q^{(k+1)} = g(\alpha_k; q^{(k)}, r^{(k)})
, whereg
is a curve approximating the shortest geodesic, provided by a retraction and its inverse - Set
k = k+1
The result is given by the last computed p^{(K)}
at the last iterate K
.
For the parallel version, the first proximal map is a vectorial version where
in each component one prox is applied to the corresponding copy of t_k
and
the second proximal map corresponds to the indicator function of the set,
where all copies are equal (in \mathcal M^n
, where n
is the number of copies),
leading to the second prox being the Riemannian mean.
DouglasRachford
DouglasRachford!
DouglasRachfordState
For specific DebugAction
s and RecordAction
s see also
Cyclic Proximal Point.
Furthermore, this solver has a short hand notation for the involved reflect
ion.
reflect
The DouglasRachford
solver requires the following functions of a manifold to be available
- A [
retract!
](@extref ManifoldsBase :doc:retractions
)(M, q, p, X)
; it is recommended to set the [default_retraction_method
](@extrefManifoldsBase.default_retraction_method-Tuple{AbstractManifold}
) to a favourite retraction. If this default is set, aretraction_method=
does not have to be specified. - An [
inverse_retract!
](@extref ManifoldsBase :doc:retractions
)(M, X, p, q)
; it is recommended to set the [default_inverse_retraction_method
](@extrefManifoldsBase.default_inverse_retraction_method-Tuple{AbstractManifold}
) to a favourite retraction. If this default is set, ainverse_retraction_method=
does not have to be specified. - A [
copyto!](@extref
Base.copyto!-Tuple{AbstractManifold, Any, Any})
(M, q, p)and [
copy](@extref
Base.copy-Tuple{AbstractManifold, Any})
(M,p)` for points.
By default, one of the stopping criteria is StopWhenChangeLess
,
which requires
- An [
inverse_retract!
](@extref ManifoldsBase :doc:retractions
)(M, X, p, q)
; it is recommended to set the [default_inverse_retraction_method
](@extrefManifoldsBase.default_inverse_retraction_method-Tuple{AbstractManifold}
) to a favourite retraction. If this default is set, ainverse_retraction_method=
orinverse_retraction_method_dual=
(for\mathcal N
) does not have to be specified or the [distance
](@extrefManifoldsBase.distance-Tuple{AbstractManifold, Any, Any}
)(M, p, q)
for said default inverse retraction.
Pages = ["DouglasRachford.md"]