Proximal point method
Manopt.proximal_point
— Functionproximal_point(M, prox_f, p=rand(M); kwargs...)
proximal_point(M, mpmo, p=rand(M); kwargs...)
proximal_point!(M, prox_f, p; kwargs...)
proximal_point!(M, mpmo, p; kwargs...)
Perform the proximal point algoritm from [FO02] which reads
\[p^{(k+1)} = \operatorname{prox}_{λ_kf}(p^{(k)})\]
Input
M::
AbstractManifold
: a Riemannian manifold $\mathcal M$
prox_f
: a proximal map(M,λ,p) -> q
or(M, q, λ, p) -> q
for the summands of $f$ (seeevaluation
)
Keyword arguments
evaluation=
AllocatingEvaluation
()
: specify whether the functions that return an array, for example a point or a tangent vector, work by allocating its result (AllocatingEvaluation
) or whether they modify their input argument to return the result therein (InplaceEvaluation
). Since usually the first argument is the manifold, the modified argument is the second.f=nothing
: a cost function $f: \mathcal M→ℝ$ to minimize. For running the algorithm, $f$ is not required, but for example when recording the cost or using a stopping criterion that requires a cost function.λ= k -> 1.0
: a function returning the (square summable but not summable) sequence of $λ_i$stopping_criterion=
StopAfterIteration
(200)
|
StopWhenChangeLess
(1e-12)
): a functor indicating that the stopping criterion is fulfilled
All other keyword arguments are passed to decorate_state!
for state decorators or decorate_objective!
for objective decorators, respectively.
Output
The obtained approximate minimizer $p^*$. To obtain the whole final state of the solver, see get_solver_return
for details, especially the return_state=
keyword.
Manopt.proximal_point!
— Functionproximal_point(M, prox_f, p=rand(M); kwargs...)
proximal_point(M, mpmo, p=rand(M); kwargs...)
proximal_point!(M, prox_f, p; kwargs...)
proximal_point!(M, mpmo, p; kwargs...)
Perform the proximal point algoritm from [FO02] which reads
\[p^{(k+1)} = \operatorname{prox}_{λ_kf}(p^{(k)})\]
Input
M::
AbstractManifold
: a Riemannian manifold $\mathcal M$
prox_f
: a proximal map(M,λ,p) -> q
or(M, q, λ, p) -> q
for the summands of $f$ (seeevaluation
)
Keyword arguments
evaluation=
AllocatingEvaluation
()
: specify whether the functions that return an array, for example a point or a tangent vector, work by allocating its result (AllocatingEvaluation
) or whether they modify their input argument to return the result therein (InplaceEvaluation
). Since usually the first argument is the manifold, the modified argument is the second.f=nothing
: a cost function $f: \mathcal M→ℝ$ to minimize. For running the algorithm, $f$ is not required, but for example when recording the cost or using a stopping criterion that requires a cost function.λ= k -> 1.0
: a function returning the (square summable but not summable) sequence of $λ_i$stopping_criterion=
StopAfterIteration
(200)
|
StopWhenChangeLess
(1e-12)
): a functor indicating that the stopping criterion is fulfilled
All other keyword arguments are passed to decorate_state!
for state decorators or decorate_objective!
for objective decorators, respectively.
Output
The obtained approximate minimizer $p^*$. To obtain the whole final state of the solver, see get_solver_return
for details, especially the return_state=
keyword.
State
Manopt.ProximalPointState
— TypeProximalPointState{P} <: AbstractGradientSolverState
Fields
p::P
: a point on the manifold $\mathcal M$storing the current iteratestop::StoppingCriterion
: a functor indicating that the stopping criterion is fulfilledλ
: a function for the values of $λ_k$ per iteration(cycle $k$
Constructor
ProximalPointState(M::AbstractManifold; kwargs...)
Initialize the proximal point method solver state, where
Input
M::
AbstractManifold
: a Riemannian manifold $\mathcal M$
Keyword arguments
λ=k -> 1.0
a function to compute the $λ_k, k ∈ \mathcal N$,p=
rand
(M)
: a point on the manifold $\mathcal M$to specify the initial valuestopping_criterion=
StopAfterIteration
(100)
: a functor indicating that the stopping criterion is fulfilled
See also
- [FO02]
- O. Ferreira and P. R. Oliveira. Proximal point algorithm on Riemannian manifolds. Optimization. A Journal of Mathematical Programming and Operations Research 51, 257–270 (2002).