The Manopt Problem
An AbstractManoptProblem contains the manifold (domain) a problem is defined on and the objective that is to be minimized on that manifold. It can contain further elements, when this is necessary to phrase the problem.
Abstract problem
Manopt.AbstractManoptProblem — Type
AbstractManoptProblem{M<:AbstractManifold}Describe a Riemannian optimization problem with all static (not-changing) properties.
The most prominent features that should always be stated here are
- the
AbstractManifold$\mathcal{M}$ - the cost function $f: \mathcal{M} → ℝ$
Usually the cost should be within an AbstractManifoldObjective.
Access functions
Manopt.evaluation_type — Method
evaluation_type(mp::AbstractManoptProblem)Get the AbstractEvaluationType of the objective in AbstractManoptProblem mp.
Manopt.get_cost — Method
get_cost(amp::AbstractManoptProblem, p)evaluate the cost function f stored within the AbstractManifoldObjective of an AbstractManoptProblem amp at the point p.
Manopt.get_manifold — Method
get_manifold(amp::AbstractManoptProblem)return the manifold stored within an AbstractManoptProblem
Manopt.get_objective — Method
get_objective(mp::AbstractManoptProblem, recursive=false)return the objective AbstractManifoldObjective stored within an AbstractManoptProblem. If recursive is set to true, it additionally unwraps all decorators of the objective
Manopt.set_parameter! — Method
set_parameter!(ams::AbstractManoptProblem, element::Symbol, field::Symbol , value)Set a certain field/element from the AbstractManoptProblem ams to value. This function usually dispatches on Val(element). Instead of a single field, also a chain of elements can be provided, allowing to access encapsulated parts of the problem.
Main values for element are :Manifold and :Objective.
From the two ingredients here, you can find more information about
- the
ManifoldsBase.AbstractManifoldin ManifoldsBase.jl - the
AbstractManifoldObjectiveon the objective