14个版本

0.3.0 2024年2月26日
0.2.2 2024年2月26日
0.2.1 2023年3月3日
0.2.1-beta.02023年2月27日
0.1.2 2023年1月24日

#439 in 算法

Download history 23/week @ 2024-04-07 310/week @ 2024-04-14 228/week @ 2024-04-21 174/week @ 2024-04-28 8/week @ 2024-05-05 19/week @ 2024-05-12 45/week @ 2024-05-19 120/week @ 2024-05-26 502/week @ 2024-06-02 31/week @ 2024-06-09 229/week @ 2024-06-16 51/week @ 2024-06-23 269/week @ 2024-06-30 29/week @ 2024-07-07 47/week @ 2024-07-14 55/week @ 2024-07-21

每月402次下载
用于light-curve-feature

MIT/Apache

130KB
2.5K SLoC

Rust 2K SLoC // 0.0% comments C++ 256 SLoC // 0.0% comments

ceres-solver-rs

Rust对Ceres Solver的绑定

Test pre-commit.ci status docs.rs Crates.io

cargo add ceres-solver --features=source

Ceres Solver是一个用于大优化问题的C++库。它可以用来解决带有约束和非线性最小二乘问题以及一般优化问题。我们为这个库提供了一个Rust绑定。

测试的Ceres Solver最早版本是2.0,但绑定可能适用于更早的版本

本项目包括三个crate

  • ceres-solver是一个安全的Rust绑定
  • ceres-solver-sys是一个使用cxx编写的非安全Rust绑定
  • ceres-solver-src是一个可选的无代码crate,用于构建和分发一个最小静态Ceres Solver库

要静态构建Ceres Solver并将其链接到您的项目中,请使用source Cargo功能,这将把ceres-solver-src依赖项添加到您的项目中。另一个Cargo功能是v2_1,在链接Ceres Solver 2.1或更高版本时应使用。

绑定支持的状态

当前绑定的实现尚不完整。以下列表显示了绑定支持的状态

  • 非线性最小二乘
    • Problem - NLLS的基本类,支持添加残差块,设置边界条件,标记参数块为常量/变量,并求解问题
    • CostFunction - 用户提供残差和雅可比矩阵
    • SizedCostFunction - 相同,但残差向量形状在编译时已知
    • AutoDiffCostFunction - 用户提供残差,雅可比矩阵通过自动微分计算
    • DynamicAutoDiffCostFunction - 相同,但残差向量形状在编译时未知
    • NumericDiffCostFunction - 用户提供残差,雅可比矩阵通过数值微分计算
    • CostFunctionToFunctorDynamicCostFunctionToFunctor - 适配器,将CostFunction用作其他所有成本函数的组合
    • ConditionedCostFunction - 适配器,使用不同条件下的CostFunction
    • GradientChecker - 用于检查雅可比矩阵正确性的辅助类
    • NormalPrior - 将成本函数更改为使用协方差矩阵而不是简单的标量积
    • LossFunction - 作用于残差向量平方范数的函数,支持自定义和 Ceres 库的损失函数
    • ManifoldAutoDiffManifold
    • EvaluationCallback
  • 求解器 - Solver 类本身未实现,但支持以下嵌套类
    • Solver::选项
      • 最小化选项
      • 线搜索选项
      • 信任区域选项
      • 线性求解器选项
      • 预处理器选项
      • 稀疏和密集线性代数库选择
      • 线程数量的设置
      • 捆绑调整选项
      • 日志选项
      • 选项验证
      • 回调
    • Solver::摘要
      • 简报和完整报告
      • 成本函数评估统计信息
      • 时间统计信息
  • Jets
  • 协方差估计
  • 一般无约束最小化

请毫不犹豫地创建一个问题,要求优先处理任何可能被优先考虑的功能。

依赖关系

~0.6–3.5MB
~55K SLoC