3 个不稳定版本

0.2.0 2024 年 2 月 16 日
0.1.1 2018 年 11 月 30 日
0.1.0 2018 年 10 月 3 日

科学 类别中排名 137

Download history 150/week @ 2024-04-08 91/week @ 2024-04-15 183/week @ 2024-04-22 74/week @ 2024-04-29 125/week @ 2024-05-06 299/week @ 2024-05-13 132/week @ 2024-05-20 191/week @ 2024-05-27 164/week @ 2024-06-03 52/week @ 2024-06-10 195/week @ 2024-06-17 152/week @ 2024-06-24 182/week @ 2024-07-01 225/week @ 2024-07-08 81/week @ 2024-07-15 41/week @ 2024-07-22

每月下载量 535
6 个 Crates 中使用(5 个直接使用)

MIT/Apache

225KB
5K SLoC

argmin_testfunctions

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

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

这是一个包含二维和多维测试函数(及其导数和Hessian矩阵)的集合,用于优化算法。对于二维测试函数,导数和Hessian矩阵的计算不会进行内存分配。对于多维测试函数,导数和Hessian矩阵的计算有两种变体。一种变体返回 Vec,因此会进行内存分配。这在参数数量仅在运行时才知道的情况下是必需的。如果参数数量在编译时已知,则可以使用返回固定大小数组的 _const 变体,这样就不会进行内存分配。

导数和Hessian矩阵的计算总是命名为 <测试函数名称>_derivative<测试函数名称>_hessian,const generics 变体定义为 <测试函数名称>_derivative_const<测试函数名称>_hessian_const

一些函数,如 ackleyrosenbrockrastrigin,带有额外的可选参数,这些参数会改变函数的形状。这些额外参数在 ackley_abcrosenbrock_abrastrigin_a 中公开。

所有函数对其输入都是通用的,并支持 [f64][f32]

有关所有实现的函数列表,请参阅上面的文档。

Python 包装器

感谢 Python 模块 argmin-testfunctions-py,现在也可以在 Python 中使用这些函数。请注意,包装器中使用的导数和Hessian矩阵的计算将始终进行内存分配。

运行测试和基准测试

可以使用以下命令运行测试:

cargo test

测试函数的导数和Hessian矩阵通过finitediff库,使用proptest库在各种点处采样函数。

所有函数都使用criterion.rs进行基准测试。运行基准测试:

cargo bench

报告可在target/criterion/report/index.html中找到。

贡献

此库包含的测试函数越多,就越有用,因此任何贡献都非常受欢迎。关于要实现的内容和如何进行的灵感,请随时查看这个问题

尽管大多数已实现的函数可能已经很高效,但可能还有一些可以从性能改进中受益。

许可证

根据您的选择,许可如下:

贡献

除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证定义,应如上所述双重许可,不附加任何其他条款或条件。

依赖

约465KB