45 个版本

0.10.0 2024年2月27日
0.8.1 2023年2月20日
0.7.0 2022年8月28日
0.6.0-rc.22022年7月31日
0.0.10 2018年2月12日

#14 in 数学

Download history 3584/week @ 2024-04-30 3687/week @ 2024-05-07 4194/week @ 2024-05-14 4363/week @ 2024-05-21 4384/week @ 2024-05-28 4221/week @ 2024-06-04 4435/week @ 2024-06-11 4801/week @ 2024-06-18 4277/week @ 2024-06-25 3937/week @ 2024-07-02 6202/week @ 2024-07-09 7114/week @ 2024-07-16 8167/week @ 2024-07-23 7957/week @ 2024-07-30 5840/week @ 2024-08-06 5566/week @ 2024-08-13

28,824 每月下载量
45 个Crate 中使用 (29 个直接使用)

MIT/Apache

1MB
22K SLoC

纯Rust中的数学优化

网站 | 书籍 | 文档(最新版本) | 文档(主分支) | 示例(最新版本) | 示例(主分支)

Crates.io version Crates.io downloads GitHub Actions workflow status License argmin Discord

argmin 是一个完全用 Rust 编写的数值优化库。

argmin 的目标是提供一系列优化算法,并具有一致的接口。它设计上类型无关,这意味着可以使用任何类型和/或数学后端,例如 nalgebrandarray,甚至是你自己的。

观察器允许跟踪迭代的进度,无论是使用提供的其中一个进行屏幕或磁盘记录,还是通过实现你自己的。

可选的检查点机制有助于减轻不稳定计算环境中崩溃的负面影响。

由于 Rust 强大的泛型和特质的强大功能,大多数功能都可以通过你自己的定制实现进行交换。

argmin 是为了简化优化算法的实现而设计的,因此也可以用作开发新算法的工具箱。可以专注于算法本身,而终止处理、参数向量、种群、梯度、雅可比和赫斯矩阵等处理则由库负责。

算法

  • 线搜索
    • 回溯线搜索
    • More-Thuente 线搜索
    • Hager-Zhang 线搜索
  • 信任区域法
    • 柯西点法
    • Dogleg 方法
    • Steinhaug 方法
  • 最速下降法
  • 共轭梯度法
  • 非线性共轭梯度法
  • 牛顿法
    • 牛顿法
    • 牛顿-CG
  • 拟牛顿法
    • BFGS
    • L-BFGS
    • DFP
    • SR1
    • SR1-TrustRegion
  • 高斯-牛顿法
  • 带线搜索的高斯-牛顿法
  • 黄金分割法
  • Landweber 迭代
  • Brent 的方法
  • Nelder-Mead 方法
  • 模拟退火
  • 粒子群优化

与 argmin 兼容的外部求解器

实现 Solver 特质的求解器与 argmin 的 Executor 兼容,并可以利用检查点和观察器等特性。

许可证

许可协议如下

由您选择。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在工作中的任何贡献,将根据上述方式双授权,无任何额外条款或条件。

依赖

~1–11MB
~106K SLoC