Proximal point method
Manopt.proximal_point — Function
proximal_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 algorithm from [FO02] which reads
\[p^{(k+1)} = \operatorname{prox}_{λ_kf}(p^{(k)})\]
Input
M::AbstractManifold: a Riemannian manifold $\mathcal{M}$prox_f: the proximal map(M,λ,p) -> qor(M, q, λ, p) -> qof $f$ (seeevaluation)
Keyword arguments
callbacks::D = Dict{Symbol,Function}(): provided callback functions given either as a single function(symbol, problem, state, k)called in every hook or as a (vector of) pairs:hook => function, which are processed byprocess_callbacks_arg. As key you can either pass single symbol or an array of symbols to indicate a callback should be added in multiple placesevaluation::AbstractEvaluationType=AllocatingEvaluation(): specify whether the functions that return an array, for example a point or a tangent vector, work by allocating their 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 sequence of proximal parameters $λ_k$stopping_criterion::StoppingCriterion=StopAfterIteration(1000)|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! — Function
proximal_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 algorithm from [FO02] which reads
\[p^{(k+1)} = \operatorname{prox}_{λ_kf}(p^{(k)})\]
Input
M::AbstractManifold: a Riemannian manifold $\mathcal{M}$prox_f: the proximal map(M,λ,p) -> qor(M, q, λ, p) -> qof $f$ (seeevaluation)
Keyword arguments
callbacks::D = Dict{Symbol,Function}(): provided callback functions given either as a single function(symbol, problem, state, k)called in every hook or as a (vector of) pairs:hook => function, which are processed byprocess_callbacks_arg. As key you can either pass single symbol or an array of symbols to indicate a callback should be added in multiple placesevaluation::AbstractEvaluationType=AllocatingEvaluation(): specify whether the functions that return an array, for example a point or a tangent vector, work by allocating their 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 sequence of proximal parameters $λ_k$stopping_criterion::StoppingCriterion=StopAfterIteration(1000)|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 — Type
ProximalPointState{P} <: AbstractManoptSolverStateFields
callbacks::D: provided callback functions given as a dictionary with symbols as keysp::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
callbacks::D = Dict{Symbol,Function}(): provided callback functions given as a dictionary with symbols as keysλ=k -> 1.0: a function to compute $λ_k$ for $k ∈ ℕ$,p::P =rand(M): a point on the manifold $\mathcal{M}$ to specify the initial valuestopping_criterion::StoppingCriterion=StopAfterIteration(200): a functor indicating that the stopping criterion is fulfilled
See also
Literature
- [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).