Manopt.jl provides a framework for optimization on manifolds.
Manopt.jl makes it easy to use an algorithm for your favorite manifold as well as a manifold for your favorite algorithm. It already provides many manifolds and several algorithms, which can easily be enhanced, for example to record interims values or produce debug output throughout iterations.
The main features are:
- types and inheritance manifolds, points on manifolds and tangent vectors
- Meta manifolds like a product manifold, a power manifold and the tangent bundle available for any manifold
- Traits for special manifold properties lie Lie groups and matrix manifolds
- functions to directly start optimizing: several cost functions, differentials, gradients and proximal maps are already available
- solvers are implemented on a high level, such that they are also available for your own manifold directly.
- visualization (in Asymptote) and plots are a further focus of the toolbox to also visually compare optimization techniques on manifolds
Thanks for reading and for all the help all of you already provided,