Solvers
Solvers can be applied to Problems 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 Problemp and the Optionso 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 Optionso.
Manopt.step_solver! — Functionstep_solver!(p,o,iter)Do one iteration step (the iterth) for Problemp 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.