Plans for solvers
For any optimisation performed in Manopt.jl
we need information about both the optimisation task or “problem” at hand as well as the solver and all its parameters. This together is called a plan in Manopt.jl
and it consists of two data structures:
- The Manopt Problem describes all static data of our task, most prominently the manifold and the objective.
- The Solver State describes all varying data and parameters for the solver we aim to use. This also means that each solver has its own data structure for the state.
By splitting these two parts, we can use one problem and solve it using different solvers.
Still there might be the need to set certain parameters within any of these structures. For that there is
Manopt.set_manopt_parameter!
— Functionset_manopt_parameter!(f, element::Symbol , args...)
For any f
and a Symbol
e
we dispatch on its value so by default, to set some args...
in f
or one of uts sub elements.
set_manopt_parameter!(amo::AbstractManifoldObjective, element::Symbol, args...)
Set a certain args...
from the AbstractManifoldObjective
amo
to value. This function should dispatch on
Val(element)`.
Currently supported
:Cost
passes to theget_cost_function
:Gradient
passes to theget_gradient_function
set_manopt_parameter!(ams::AbstractManoptProblem, element::Symbol, field::Symbol , value)
Set a certain field/element from the AbstractManoptProblem
ams
to value. This function should dispatch on
Val(element)`.
By default this passes on to the inner objective, see set_manopt_parameter!
set_manopt_parameter!(ams::AbstractManoptSolverState, element::Symbol, args...)
Set a certain field/element from the AbstractManoptSolverState
ams
to value. This function dispatches on
Val(element)`.
set_manopt_parameter!(ams::DebugSolverState, ::Val{:Debug}, args...)
Set certain values specified by args...
into the elements of the debugDictionary
set_manopt_parameter!(ams::DebugSolverState, ::Val{:SubProblem}, args...)
Set certain values specified by args...
to the sub problem.
set_manopt_parameter!(ams::DebugSolverState, ::Val{:SubState}, args...)
Set certain values specified by args...
to the sub state.
Manopt.status_summary
— Functionstatus_summary(e)
Return a string reporting about the current status of e
, where e
is a type from Manopt, e.g. an AbstractManoptSolverState
s.
This method is similar to show
but just returns a string. It might also be more verbose in explaining, or hide internal information.