Skip to content

JuliaManifolds/Manopt.jl

Repository files navigation

Manifolds.jl logo with text on the side

Optimization Algorithm on Riemannian Manifolds.

code style: runic CI codecov Aqua QA

DOI DOI

For a function $f: ℳ → ℝ$ that maps from a Riemannian manifold ℳ to the real line, this package aims 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 with Manopt.jl tutorial.

You can also watch an introduction given at JuliaCon 2022

or look at the slides from the presentation here.

Related packages

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 please cite for example

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

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    = {Axen, Seth D. and Baran, Mateusz and Bergmann, Ronny and Rzecki, Krzysztof},
    ARTICLENO = {33},
    DOI       = {10.1145/3618296},
    JOURNAL   = {ACM Transactions on Mathematical Software},
    MONTH     = {dec},
    NUMBER    = {4},
    TITLE     = {Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds},
    VOLUME    = {49},
    YEAR      = {2023}
}

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

Manopt.jl belongs to the Manopt family:

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

About

🏔️Optimization on Riemannian Manifolds in Julia

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 41

Languages