5个版本
0.2.2 | 2024年1月24日 |
---|---|
0.2.1 |
|
0.1.2 | 2020年7月25日 |
#429 在 算法
33 每月下载量
61KB
1.5K SLoC
Ratel
Ratel多臂赌博机模拟器的Rust实现
该模拟器由两个组件组成,一个由多个臂组成的 赌博机,每个臂都根据概率分布提供奖励,以及一个 智能体,该智能体尝试拉扯臂以学习哪个臂具有最高的平均奖励。
赌博机
多臂赌博机由一组臂组成,每次拉动时都根据某个概率分布提供奖励。允许任何数量的臂。目前有五种分布集可用;二项式、高斯、指数、伽马和对数正态。在这些限制内,所有分布参数的选择都是有效的。
智能体
智能体必须通过某种程序确定哪个赌博机臂产生最高的平均奖励。目前实现了三种策略。贪婪算法始终选择具有最高估计平均奖励的臂。epsilon-贪婪算法大多数时候遵循贪婪算法,但以一定小概率选择一个随机臂。乐观算法选择估计值在某些置信范围内的上限最高的臂。
游戏
游戏 模块管理赌博机和智能体之间的交互。智能体拉动赌博机的臂一定次数。游戏模块记录每次迭代的胜利和奖励。
构建Ratel
要构建模拟器,只需运行
cargo构建 --发布
要运行模拟器,请编写一个包含所需模拟代码的 main
模块。然后运行
cargo运行 --发布 -- ${参数}
该模拟器旨在具有最大的灵活性。为了获得灵感或查看我是如何构建实验的,请参阅 Ratel-Experiments。
兼容性
此代码与1.32至1.75的所有Rust版本兼容。
依赖项
~2MB
~36K SLoC