Solvers
Solvers can be applied to Problem
s with solver specific Options
.
List of Algorithms
The following algorithms are currently available
TruncatedConjugateGradientOptions
Note that the solvers (or their Options
, to be precise) can also be decorated to enhance your algorithm by general additional properties, see debug output and recording values.
Technical Details
The main function a solver calls is
Manopt.solve
— Methodsolve(p,o)
run the solver implemented for the Problem
p
and the Options
o
employing initialize_solver!
, step_solver!
, as well as the stop_solver!
of the solver.
which is a framework that you in general should not change or redefine. It uses the following methods, which also need to be implemented on your own algorithm, if you want to provide one.
Manopt.initialize_solver!
— Functioninitialize_solver!(p,o)
Initialize the solver to the optimization Problem
by initializing all values in the Options
o
.
Manopt.step_solver!
— Functionstep_solver!(p,o,iter)
Do one iteration step (the iter
th) for Problem
p
by modifying the values in the Options
o
.
Manopt.get_solver_result
— Functionget_solver_result(o)
Return the final result after all iterations that is stored within the (modified during the iterations) Options
o
. By default it usesget_iterate
Manopt.get_solver_return
— Functionget_solver_return(O::Options)
determine the result value of a call to a solver. By default this returns the same as get_solver_result
, i.e. the last iterate or (approximate) minimizer.
get_solver_return(O::ReturnOptions)
return the internally stored options of the ReturnOptions
instead of the minimizer. This means that when the options are decorated like this, the user still has to call get_solver_result
on the internal options separately.
Manopt.stop_solver!
— Methodstop_solver!(p,o,i)
depending on the current Problem
p
, the current state of the solver stored in Options
o
and the current iterate i
this function determines whether to stop the solver by calling the StoppingCriterion
.