ROPTLIB: an object-oriented C++ library for optimization on Riemannian manifolds


Wen Huang, P.-A. Absil, K. A. Gallivan, Paul Hand


Optimization on Riemannian manifolds, also called Riemannian optimization, considers finding an optimum of a real-valued function f defined on a Riemannian manifold M. Riemannian optimization has been a topic of much interest over the past few years due to many important applications in, e.g., computer vision, signal processing, and numerical linear algebra. However, the substantial background required to successfully design and apply Riemannian optimization algorithms is a significant impediment for many potential users. Therefore, multiple packages using various languages, such as Matlab (Manopt) and Python (Pymanopt), have been developed. However, none of them simultaneously manages to i) use object-oriented programming; ii) implement all the existing state-of-the-art generic Riemannian optimization algorithms; iii) provide reliable and efficient computational time; and iv) have user-friendly interfaces. This paper describes ROPTLIB, a C++ class library for Riemannian optimization, which aims to achieves these goals. The features of encapsulation, inheritance, and polymorphism in object-oriented programming enable reusability of the code and allow users to rapidly add new algorithms and new manifolds while keeping the interface as friendly as possible. User-friendly interfaces are also provided for multiple languages. In the current version, ROPTLIB can be used in a C++ environment, a Matlab environment and a Julia environment.




BibTex entry