Internal design of the ManifoldOptim portion of the embedded C++ code. Most ManifoldOptim users should not need this. ROPTLIB source code is also included in this package, but is not described here; see Huang et al (2016a) for documentation on that portion of the code.
The Brockett problem, written as a module that can be invoked from within
the ManifoldOptim package. This serves as an example for package authors
who wish to expose modules to their users. Code to invoke this example from
outside of the ManifoldOptim package is provided in
Contains the main function
ManifoldOptim which takes a problem
constructed in R, sets it up in ROPTLIB, runs it, and returns the result.
Defines an Rcpp module for ManifoldOptim which exposes C++ classes such as
RProblem. This module provides the most common means in which R users
will interact with ManifoldOptim.
GetManifold function constructs a Manifold object based on its
name and dimensions. Manifold classes are defined in ROPTLIB.
ProblemAdapter class, which takes a
ManifoldOptimProblem, which is defined in the ManifoldOptim
API, and plugs it into the ROPTLIB API as an ROPTLIB
RProblem class, which allows the objective, gradient,
and Hessian functions to be defined in R. When a function in the ROPTLIB
library invokes the objective, gradient, or Hessian, this class invokes
the appropriate function in R.
GetSolver function constructs a Solver object based on its name,
Problem, an initial value, and an initial Hessian. Solver
classes are defined in ROPTLIB.
Defines a few utility functions, especially to assist in translating between the ManifoldOptim C++ API and the ROPTLIB API.
GetVariable function returns an optimization variable suitable
for a given Manifold, based on its name and dimension. Optimization
variables for supported Manifolds are defined in ROPTLIB.
ManifoldOptimException, which is a subclass of STL
For users of the ManifoldOptim C++ API, this is the main header file to
include. For an example, see
ManifoldOptimProblem, which is the base class
for all optimization problems in the ManifoldOptim API. This class
facilitates writing problems with Armadillo, which can be
instantiated and manipulated in R, and solved through ROPTLIB.
This class assumes only that the optimization variable is a
one-dimensional vector; the user must reshape it into the appropriate
form (e.g. a matrix or list of matrices) when evaluating the objective,
gradient, and Hessian functions.
Wen Huang, P.A. Absil, K.A. Gallivan, Paul Hand (2016a). "ROPTLIB: an object-oriented C++ library for optimization on Riemannian manifolds." Technical Report FSU16-14, Florida State University.
Conrad Sanderson and Ryan Curtin. Armadillo: a template-based C++ library for linear algebra. Journal of Open Source Software, Vol. 1, pp. 26, 2016.
S. Martin, A. Raim, W. Huang, and K. Adragni (2020). "ManifoldOptim: An R Interface to the ROPTLIB Library for Riemannian Manifold Optimization." Journal of Statistical Software, 93(1):1-32.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.