3 个不稳定版本
0.2.0 | 2024 年 2 月 16 日 |
---|---|
0.1.1 | 2018 年 11 月 30 日 |
0.1.0 | 2018 年 10 月 3 日 |
在 科学 类别中排名 137
每月下载量 535
在 6 个 Crates 中使用(5 个直接使用)
225KB
5K SLoC
argmin_testfunctions
这是一个包含二维和多维测试函数(及其导数和Hessian矩阵)的集合,用于优化算法。对于二维测试函数,导数和Hessian矩阵的计算不会进行内存分配。对于多维测试函数,导数和Hessian矩阵的计算有两种变体。一种变体返回 Vec
,因此会进行内存分配。这在参数数量仅在运行时才知道的情况下是必需的。如果参数数量在编译时已知,则可以使用返回固定大小数组的 _const
变体,这样就不会进行内存分配。
导数和Hessian矩阵的计算总是命名为 <测试函数名称>_derivative
和 <测试函数名称>_hessian
,const generics 变体定义为 <测试函数名称>_derivative_const
和 <测试函数名称>_hessian_const
。
一些函数,如 ackley
、rosenbrock 和
rastrigin,带有额外的可选参数,这些参数会改变函数的形状。这些额外参数在
ackley_abc
、rosenbrock_ab
和 rastrigin_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 License,版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT License(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证定义,应如上所述双重许可,不附加任何其他条款或条件。
依赖
约465KB