# Manopt.jl

Optimization Algorithm on Riemannian Manifolds.

For a function $f: ℳ → ℝ$ that maps from a Riemannian manifold ℳ to the real line, we aim to solve

Find the minimizer p on ℳ, that is, the (or a) point where f attains its minimum.

Manopt.jl provides

• A framework to implement arbitrary optimization algorithms on Riemannian Manifolds
• A library of optimization algorithms on Riemannian manifolds
• an easy-to-use interface for (debug) output and recording values during an algorithm run.
• several tools to investigate the algorithms, gradients, and optimality criteria

## Getting started

In Julia you can get started by just typing

using Pkg; Pkg.add("Manopt");

and then checkout the Get Started: Optimize! tutorial.

Manopt.jl is based on ManifoldsBase.jl, hence the algorithms can be used with any manifold following this interface for defining a Riemannian manifold.

The following packages are related to Manopt.jl

## Citation

If you use Manopt.jl in your work, please cite the following

@article{Bergmann2022,
Author    = {Ronny Bergmann},
Doi       = {10.21105/joss.03866},
Journal   = {Journal of Open Source Software},
Number    = {70},
Pages     = {3866},
Publisher = {The Open Journal},
Title     = {Manopt.jl: Optimization on Manifolds in {J}ulia},
Volume    = {7},
Year      = {2022},
}

To refer to a certain version or the source code in general we recommend to cite for example

@software{manoptjl-zenodo-mostrecent,
Author = {Ronny Bergmann},
Doi = {10.5281/zenodo.4290905},
Publisher = {Zenodo},
Title = {Manopt.jl},
Year = {2022},
}

for the most recent version or a corresponding version specific DOI, see the list of all versions.

If you are also using Manifolds.jl please consider to cite

@article{AxenBaranBergmannRzecki:2023,
AUTHOR     = {Seth D. Axen and Mateusz Baran and Ronny Bergmann and Krzysztof Rzecki},
DOI        = {10.1145/3618296},
EPRINT     = {2021.08777},
EPRINTTYPE = {arXiv},
JOURNAL    = {AMS Transactions on Mathematical Software},
NOTE       = {accepted for publication},
TITLE      = {Manifolds.jl: An Extensible {J}ulia Framework for Data Analysis on Manifolds},
YEAR       = {2023}
}

as well. Note that all citations are in BibLaTeX format.

Manopt.jl belongs to the Manopt family:

but there are also more packages providing tools on manifolds:

Did you use Manopt.jl somewhere? Let us know! We'd love to collect those here as well.