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!Function
set_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.

source
set_manopt_parameter!(amo::AbstractManifoldObjective, element::Symbol, args...)

Set a certain args... from the AbstractManifoldObjective amo to value. This function should dispatch onVal(element)`.

Currently supported

source
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 onVal(element)`.

By default this passes on to the inner objective, see set_manopt_parameter!

source
set_manopt_parameter!(ams::AbstractManoptSolverState, element::Symbol, args...)

Set a certain field/element from the AbstractManoptSolverState ams to value. This function dispatches onVal(element)`.

source
set_manopt_parameter!(ams::DebugSolverState, ::Val{:Debug}, args...)

Set certain values specified by args... into the elements of the debugDictionary

source
set_manopt_parameter!(ams::DebugSolverState, ::Val{:SubProblem}, args...)

Set certain values specified by args... to the sub problem.

source
set_manopt_parameter!(ams::DebugSolverState, ::Val{:SubState}, args...)

Set certain values specified by args... to the sub state.

source
Manopt.status_summaryFunction
status_summary(e)

Return a string reporting about the current status of e, where e is a type from Manopt, e.g. an AbstractManoptSolverStates.

This method is similar to show but just returns a string. It might also be more verbose in explaining, or hide internal information.

source