A manifold objective
Within the optimization problem
\[\operatorname*{argmin}_{p \in \mathcal M} f(p)\]
the objective describes the cost $f(p)$ and its properties relations. The general abstract type for these is
Manopt.AbstractManifoldObjective — Type
AbstractManifoldObjective{E<:AbstractEvaluationType}Describe the collection of the optimization function $f: \mathcal{M} → ℝ$ (or even a vectorial range) and its corresponding elements, which might for example be a gradient or (one or more) proximal maps.
All these elements should usually be implemented as functions (M, p) -> ..., or (M, X, p) -> ... that is
- the first argument of these functions should be the manifold
Mthey are defined on - the argument
Xis present, if the computation is performed in-place ofX(seeInplaceEvaluation) - the argument
pis the place the function ($f$ or one of its elements) is evaluated at.
the type T indicates the global AbstractEvaluationType.
For components of the objective, there might be different ways they can be evaluated, most prominently, whether for example a function providing the gradient $\operatorname{grad} f$ would allocate new memory or work inplace.
Manopt.AbstractEvaluationType — Type
AbstractEvaluationTypeAn abstract type to specify the kind of evaluation a AbstractManifoldObjective supports.
Manopt.AllocatingEvaluation — Type
AllocatingEvaluation <: AbstractEvaluationTypeA parameter for a AbstractManoptProblem or a Function indicating that the problem contains or the function(s) allocate memory for their result, they work out of place.
Manopt.AllocatingInplaceEvaluation — Type
AllocatingInplaceEvaluation <: AbstractEvaluationTypeA parameter for a AbstractManoptProblem or a Function indicating that the problem contains or the function(s) that provides both an allocating variant and one, that does not allocate memory but work on their input, in place.
Manopt.InplaceEvaluation — Type
InplaceEvaluation <: AbstractEvaluationTypeA parameter for a AbstractManoptProblem or a Function indicating that the problem contains or the function(s) do not allocate memory but work on their input, in place.
Manopt.ParentEvaluationType — Type
ParentEvaluationType <: AbstractEvaluationTypeA parameter for a AbstractManoptProblem or a Function indicating that the problem contains or the function(s) do inherit their property from a parent AbstractManoptProblem or function.
Manopt.evaluation_type — Function
evaluation_type(mp::AbstractManoptProblem)Get the AbstractEvaluationType of the objective in AbstractManoptProblem mp.
evaluation_type(::AbstractManifoldObjective{Teval})Get the AbstractEvaluationType of the objective.
The different types of objectives are listed on sub pages depending on their type of information or function
- First Order Objectives for objectives that provide first order information such as gradients, subgradients or proximal maps
- Second Order Objectives for objectives that provide second order information such as Hessians
- Constrained Objectives for objectives that provide constraint information
- Splitting-based Objectives for objectives that provide primal-dual or similar splitting based information
- Objectives for Linear Systems for objectives that provide linear systems usually in tangent spaces
- Subproblem Objectives for objectives that are used in subproblems and need access to the main objective
- Vectorial Objectives for objectives that provide vector valued
- Decorators for Objectives for objectives that decorate other objectives, e.g., to provide caching or scaling