14个版本
0.3.0 | 2024年2月26日 |
---|---|
0.2.2 | 2024年2月26日 |
0.2.1 | 2023年3月3日 |
0.2.1-beta.0 | 2023年2月27日 |
0.1.2 | 2023年1月24日 |
#439 in 算法
每月402次下载
用于light-curve-feature
130KB
2.5K SLoC
ceres-solver-rs
Rust对Ceres Solver的绑定
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
- 用户提供残差,雅可比矩阵通过数值微分计算 -
CostFunctionToFunctor
和DynamicCostFunctionToFunctor
- 适配器,将CostFunction
用作其他所有成本函数的组合 -
ConditionedCostFunction
- 适配器,使用不同条件下的CostFunction
-
GradientChecker
- 用于检查雅可比矩阵正确性的辅助类 -
NormalPrior
- 将成本函数更改为使用协方差矩阵而不是简单的标量积 -
LossFunction
- 作用于残差向量平方范数的函数,支持自定义和 Ceres 库的损失函数 -
Manifold
、AutoDiffManifold
-
EvaluationCallback
-
- 求解器 -
Solver
类本身未实现,但支持以下嵌套类Solver::选项
- 最小化选项
- 线搜索选项
- 信任区域选项
- 线性求解器选项
- 预处理器选项
- 稀疏和密集线性代数库选择
- 线程数量的设置
- 捆绑调整选项
- 日志选项
- 选项验证
- 回调
Solver::摘要
- 简报和完整报告
- 成本函数评估统计信息
- 时间统计信息
- Jets
- 协方差估计
- 一般无约束最小化
请毫不犹豫地创建一个问题,要求优先处理任何可能被优先考虑的功能。
依赖关系
~0.6–3.5MB
~55K SLoC