Skip to main content

Crate cartan_optim

Crate cartan_optim 

Source
Expand description

§cartan-optim

Riemannian optimization algorithms for the cartan library.

This crate implements first- and second-order optimization algorithms that operate on any manifold implementing the Manifold trait from cartan-core.

§Algorithms

AlgorithmStruct/functionTrait requirements
Riemannian Gradient Descentminimize_rgdManifold + Retraction
Riemannian Conjugate Gradientminimize_rcg+ ParallelTransport
Fréchet Mean (Karcher flow)frechet_meanManifold
Riemannian Trust Regionminimize_rtr+ Connection

§Usage pattern

use nalgebra::SVector;
use cartan_core::manifold::Manifold;
use cartan_manifolds::Sphere;
use cartan_optim::{minimize_rgd, RGDConfig};

let s2 = Sphere::<3>;
let config = RGDConfig::default();
let p0 = SVector::<f64, 3>::from([0.0, 1.0, 0.0]); // start on equator

// Minimize f(p) = -p[0] (drives p toward [1, 0, 0]) on S²
let result = minimize_rgd(
    &s2,
    |p| -p[0],
    |p| s2.project_tangent(p, &SVector::from([1.0, 0.0, 0.0])),
    p0,
    &config,
);

§References

  • Absil, Mahony, Sepulchre. “Optimization Algorithms on Matrix Manifolds.” Princeton, 2008.
  • Boumal. “An Introduction to Optimization on Smooth Manifolds.” Cambridge, 2023.

Re-exports§

pub use frechet::FrechetConfig;
pub use frechet::frechet_mean;
pub use rcg::CgVariant;
pub use rcg::RCGConfig;
pub use rcg::minimize_rcg;
pub use result::OptResult;
pub use rgd::RGDConfig;
pub use rgd::minimize_rgd;
pub use rtr::RTRConfig;
pub use rtr::minimize_rtr;

Modules§

frechet
Fréchet (Karcher) mean on Riemannian manifolds.
rcg
Riemannian Conjugate Gradient (Fletcher-Reeves and Polak-Ribière).
result
Optimization result type.
rgd
Riemannian Gradient Descent with Armijo line search.
rtr
Riemannian Trust Region (RTR) with Steihaug-Toint truncated CG subproblem.