1 个不稳定版本
0.0.0 | 2023 年 9 月 27 日 |
---|
402 在 #ai
120KB
2.5K SLoC
该包是实验性的。请期待仓库的频繁更新,包括破坏性变更和偶尔的发布。
最佳
数学优化和机器学习框架及算法。
最佳提供了一种可组合的框架,用于从优化角度进行数学优化和机器学习,除了算法实现。
该框架由运行器、优化器和问题组成,依赖关系如下:runner -> optimizer -> problem
。大多数优化器可以支持许多问题,大多数运行器可以支持许多优化器。
问题定义了一个数学优化问题。优化器定义了解决问题的步骤,通常是无导数优化器作为状态转换的无限级数,逐步改进解。运行器定义了优化器的停止条件,并可能以其他方式影响优化序列。
示例
使用无导数优化器最小化“计数”问题
use optimal::{prelude::*, BinaryDerivativeFreeConfig};
println!(
"{:?}",
BinaryDerivativeFreeConfig::start_default_for(16, |point| {
point.iter().filter(|x| **x).count() as f64
})
.argmin()
);
使用导数优化器最小化“球体”问题
use optimal::{prelude::*, RealDerivativeConfig};
println!(
"{:?}",
RealDerivativeConfig::start_default_for(
2,
std::iter::repeat(-10.0..=10.0).take(2),
|point| point.iter().map(|x| x.powi(2)).sum(),
|point| point.iter().map(|x| 2.0 * x).collect(),
)
.nth(100)
.unwrap()
.best_point()
);
对于更多配置参数的控制、优化过程的内省、序列化和可能提高性能的特定化,请参阅各个优化器包。
许可证:MIT
依赖项
~1–1.5MB
~31K SLoC