1 个不稳定版本
0.1.0 | 2020年5月18日 |
---|
#19 in #stochastic
10KB
104 代码行,不包括注释
ornstein-uhlenbeck
在数学中,Ornstein–Uhlenbeck 过程是一个在金融数学和物理科学中有应用的随机过程。它在物理学中的原始应用是作为摩擦力影响下的大质量布朗粒子的速度模型。它以 Leonard Ornstein 和 George Eugene Uhlenbeck 的名字命名。[1]
在此过程中生成的样本常用于强化学习中的探索,例如在 DeepMind 的 ddpg 中。[2]
实现受到 [3] 的启发。
use ornstein_uhlenbeck::OrnsteinUhlenbeckProcessBuilder;
use ndarray::{Array, array};
const ACTION_MIN: f64 = -0.5;
const ACTION_MAX: f64 = 0.5;
let mut ou_process = OrnsteinUhlenbeckProcessBuilder::default().build((3));
for step in 0..100 {
let mut some_action: Array<f64, _> = array![0.1, 0.5, -0.4];
// Add some noise from the process for exploration.
some_action += ou_process.sample_at(step);
// Now me might exceed our action space...
some_action = some_action.mapv(|v| v.max(ACTION_MAX).min(ACTION_MIN));
// ... and use the action...
}
许可证:Apache-2.0/MIT
依赖关系
~2MB
~40K SLoC