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!(ams::AbstractManoptSolverState, element::Symbol, value)

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

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!(amo::AbstractManifoldObjective, element::Symbol, field::Symbol , value)

Set a certain field/element from the AbstractManifoldObjective amo to value. This function should dispatch onVal(element)andVal{field}`.

source
set_manopt_parameter!(f, element::Symbol , value)

In general we assume that the parameter we set refers to a functor/function. This function should dispatch on Val{element}. By default this function just returns f, so it assumes, when using just a function instead of a fuctor, the parameter element is irrelevant for this case.

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