The Matlab version of Manopt is developed by Nicolas Boumal and Bamdev Mishra. The toolbox originated within the RANSO group, led by Pierre-Antoine Absil, Yurii Nesterov and Rodolphe Sepulchre in 2012. The purpose of Manopt is to facilitate experimentation with optimization on manifolds, as well as sharing geometries and algorithms. This blog post gives a quick tour. See also PyManopt.org and Manoptjl.org for information about the Python and Julia projects.

The two following books can be helpful to learn the relevant mathematics (both are available online for free):

The toolbox is stable and can be used right away. Being research software, it is also perpetually work in progress. We welcome contributions, bug reports and feedback. Let us know what you think!

If you use the Matlab toolbox, please cite the Manopt paper published in the Journal of Machine Learning Research (notice the 'o' in Manopt is lowercase):

@Article{manopt,
    author = {Boumal, N. and Mishra, B. and Absil, P.-A. and Sepulchre, R.},
    journal = {Journal of Machine Learning Research},
    title = {{M}anopt, a {M}atlab Toolbox for Optimization on Manifolds},
    year = {2014},
    number = {42},
    pages = {1455--1459},
    volume = {15},
    url = {https://www.manopt.org},
}

Researchers develop new solvers and geometries all the time. It is important for them that their work be credited properly. Please cite the relevant papers for the solvers and geometries you are using, as they may have been contributed by different authors. See the comments at the beginning of the m-files for instructions. Thank you.

Manopt won the ORBEL Wolsey Award 2014 for best operational research software developed as part of a PhD thesis.

The RANSO group organized a one-day workshop on Riemannian and nonsmooth optimization in Louvain-la-Neuve on Sept. 25, 2015. Most people involved with Manopt at the time were present for this delightful day. See picture below.

RANSO Workshop, Sept. 25, 2015

The original design, code and documentation of the toolbox is due to Nicolas Boumal. The design of the toolbox was imagined with Pierre Borckmans, who also contributed the PSO solver. The main developers are Nicolas and Bamdev Mishra. The RANSO group (Pierre-Antoine Absil, Yurii Nesterov and Rodolphe Sepulchre) provided helpful support and guidance at the onset.

The GenRTR code by Chris Baker, Pierre-Antoine Absil and Kyle Gallivan was modified to become the trustregions solver. The latter is arguably the most important solver in the toolbox so far, hence Chris and his colleagues merit special credit. We thank them for releasing their excellent software under an open source license, which allowed us to build upon it.

Bart Vandereycken helped a lot in revising the geometry file fixedrankembeddedfactory, as per his paper, Low-Rank Matrix Completion by Riemannian Optimization. Eitan Levin added some numerical tweaks to the retraction that make it more robust close to "the brink" (matrices of lower rank), though also a bit slower to compute.

Hiroyuki Sato contributed the complex version of the Stiefel manifold, stiefelcomplexfactory as well as the complex Grassmann manifold, grassmanncomplexfactory. These geometries are partly exposed in his paper Riemannian conjugate gradient method for complex singular value decomposition problem.

Roberto Tron contributed code for Riemannian geometries of the essential manifold, an important manifold in computer vision to handle relative camera information. He describes this geometry in his paper with Kostas Daniilidis, On the quotient representation for the essential manifold.

Sarod Yatawatta contributed a factory for complex, Hermitian positive semidefinite matrices of fixed rank, symfixedrankYYcomplexfactory. This geometry appears in his paper, Radio interferometric calibration using a Riemannian manifold.

Hiroyuki Kasai, together with Bamdev, contributed fixedrankfactory_tucker_preconditioned, a geometry for tensors in Tucker format with fixed multilinear rank. This and the accompanying example is based on their paper, Riemannian preconditioning for tensor completion. Both, together with Hiroyuki Sato, also contributed the stochasticgradient solver.

Changshuo Liu contributed the Riemannian limited-memory BFGS solver, rlbfgs.

Margherita Porcelli and Bruno Iannazzo contributed the Barzilai-Borwein solver, barzilaiborwein.

Jesus Briales contributed a few improvements to the code via pull requests on GitHub.

Ahmed Douik contributed factories for doubly stochastic matrices, symmetric (multinomialsymmetricfactory) and non-symmetric (multinomialdoublystochasticfactory), as well as an example (doubly_stochastic_denoising) and documentation for these.

Naman Agarwal, Brian Bullins and Coralia Cartis, together with Nicolas, contributed an implementation for the new solver ARC: adaptive regularization with cubics, and Bryan Zhu contributed the nonlinear CG-based subproblem solver.

Gennadij Heidel contributed a factory for tensors of fixed multilinear rank in Tucker format: fixedranktensorembeddedfactory.

Estelle Massart contributed code to symfixedrankYYfactory.

Ronny Bergmann contributed code to multinomialfactory.

Michael Psenka contributed the code for optimization over tensors with fixed tensor-train rank, accessible through fixedTTrankfactory, together with an example script. This geometry heavily relies on TTeMPS for all core functionalities except second-order optimization (specifically, M.ehess2rhess). TTeMPS is code distributed by Michael Steinlechner, Daniel Kressner and Bart Vandereycken. We thank them for releasing their excellent software under an open source license, which allowed us to build upon it. It is packaged in Manopt with small modifications.

Quentin Rebjock contributed poincareballfactory.

Xiaowen Jiang worked in the group of Nicolas to add support for automatic differentiation during the summer of 2021, based on Matlab's Deep Learning Toolbox. This aligns well with Manopt's overarching goal, which is to lower the entrance barrier for people who would like to give Riemannian optimization a try -- thanks a lot, Xiaowen!

Niklas Koep (sinxoverx), Nick Vannieuwenhoven (Storey-Liu for CG), Spencer Kraisler (Rodrigues formula, Lie identity), sfrcorne (rlbfgs invariant to positive scaling) brought welcome improvements after discussions on the github repo page.

Victor Liao worked on Manopt in the group of Nicolas during the summer of 2022 and contributed: a long-awaited refactoring of the trustregions solver to allow for various subproblem solvers, a rewrite of the truncated CG (tCG) subproblem solver to improve performance by recycling computations after a step rejection, a new global subproblem solver based on code by Yuji Nakatsukasa, a constant step-size line-search helper for gradient methods, and various improvements (e.g., to tangentorthobasis).

Here is a list of open-source code that proved useful to develop the toolbox:

  • The multitransp / multiprod pair is code by Paolo de Leva (no longer used: multiprod now calls pagemtimes);
  • multitrace is a wrapper around diagsum, which is code by Wynton Moore ;
  • The hashmd5 tool is a stripped version of more general hashing code (no longer available) by Michael Kleder (no longer used).

We see a growing number of papers in various disciplines where researchers use Manopt. A list is available on Google Scholar with over 800 citations. We single out a few projects we think illustrate some of the flexibility of the toolbox (this is a very old list...):

  • Artiom Kovnatsky, Klaus Glashoff and Michael M. Bronstein proposed MADMM: a generic algorithm for non-smooth optimization on manifolds. This is essentially ADMM, where one of the steps is smooth optimization on a manifold ; that step is performed using Manopt.
  • Reshad Hosseini and Suvrit Sra released a paper entitled Manifold Optimization for Gaussian Mixture Models. They address the important problem of estimating the distribution of data, when it is assumed to be sampled from a mixture (linear combination) of Gaussian distributions. See their MixEst project page for code and more. The same authors also developed the Geometric Optimization Toolbox (GOPT), aimed at optimization over the manifold of positive definite matrices. This includes a Riemannian BFGS algorithm.
  • David Rosen, Luca Carlone, Afonso Bandeira and John Leonard use Manopt for synchronization over the special Euclidean group, which they use to tackle simultaneous localization and mapping in robotics. Their code is on GitHub and it can sometimes produce optimality certificates, on real data, despite non-convexity.


We'd love to hear about your papers! Please fill in this quick form to add yours to the list. The list appears here.

Manopt is meant to ease the sharing of geometries and solvers. If you developed a Riemannian geometry or a solver for optimization on manifolds and would like it to be featured in Manopt, please contact us.

We will ask for an implementation of your manifold / solver in the Manopt format and an example script to illustrate its features. The documentation page as well as the code will, of course, visibly reflect the authors of the contribution. The documentation will feature links to their personal pages and relevant publications. We will gladly help.

Contributors will be asked to agree to the terms of the Contributor License Agreement. This agreement protects you as a contributor by making it clear that you retain your right to use your own contributions for any other purpose (you retain the copyrights). This agreement protects us as maintainers by authorizing us to distribute the toolbox under a unified license.

Manopt, a Matlab toolbox for optimization on manifolds, is copyright by Nicolas Boumal and is distributed under the terms of the GNU General Public License (GPL) version 3 (or later). Contributed and third-party code is copyrighted by their respective authors, but is distributed under a unified license for the whole Manopt toolbox.

In short, this means that everyone is free to use Manopt, to modify it and to redistribute it on a free basis. Manopt is not in the public domain; it is copyrighted and there are restrictions on its distribution (see the license and the related frequently asked questions). For example, you cannot integrate this version of Manopt (in full or in parts) in any closed-source software you plan to distribute (commercially or not). Please contact us for more information.

The documentation of Manopt (this website) is copyright by Nicolas Boumal, all rights reserved.

A number of tools have proven invaluable for putting together this website and, most importantly, the documentation: