15 个不稳定版本 (5 个破坏性更新)

0.6.0 2024年4月22日
0.5.1 2023年10月19日
0.4.0 2023年10月6日
0.3.3 2023年8月24日
0.1.2 2021年1月21日

#249 in 算法

Download history 147/week @ 2024-04-28 138/week @ 2024-05-05 399/week @ 2024-05-12 170/week @ 2024-05-19 102/week @ 2024-05-26 125/week @ 2024-06-02 17/week @ 2024-06-09 194/week @ 2024-06-16 163/week @ 2024-06-23 137/week @ 2024-06-30 205/week @ 2024-07-07 23/week @ 2024-07-14 22/week @ 2024-07-21 194/week @ 2024-07-28 50/week @ 2024-08-04 9/week @ 2024-08-11

每月下载量:277
4 个crate中使用 (直接使用2个)

自定义许可协议

1MB
17K SLoC

Rust 14K SLoC // 0.0% comments C 3.5K SLoC // 0.2% comments

cobyla - 一个纯 Rust 实现

tests crates.io docs

COBYLA 是一个用于最小化多变量函数的算法。该方法无需导数(只需要函数值)且考虑变量的约束。算法在以下文献中描述:

M.J.D. Powell, "通过线性插值模拟目标函数和约束函数的直接搜索优化方法",在《优化与数值分析数学及其应用》第275卷(Susana Gomez 和 Jean-Pierre Hennart 编著),Kluwer Academic Publishers,第51-67页(1994年)。

算法有两种形式

  • 作为一个 argmin 求解器,Rust 代码是从 此处 的 C 代码生成的
  • 作为一个函数 minimize,Rust 代码是从 NLopt 项目(版本 2.7.1)的 C 代码生成的

在这两种情况下,首先使用 c2rust 进行了初始的转译,然后手动编辑了代码以使其工作。回调机制受到 NLopt 的 Rust 绑定(即 rust-nlopt)的启发

示例

cargo run --example paraboloid
  • rust-nlopt:NLopt 项目的 Rust 绑定
  • argmin:纯 Rust 优化框架
  • slsqp:SLSQP 算法的纯 Rust 实现

许可协议

该项目采用 MIT 许可协议发布。

依赖项

~4–11MB
~120K SLoC