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
| Algorithm | Struct/function | Trait requirements |
|---|---|---|
| Riemannian Gradient Descent | minimize_rgd | Manifold + Retraction |
| Riemannian Conjugate Gradient | minimize_rcg | + ParallelTransport |
| Fréchet Mean (Karcher flow) | frechet_mean | Manifold |
| Riemannian Trust Region | minimize_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;