#概率分布 # #奖励 #智能体 # #赌博机 #最高

ratel_bandit

Ratel多臂赌博机模拟器的Rust实现

5个版本

0.2.2 2024年1月24日
0.2.1 2024年1月24日
0.1.2 2020年7月25日

#429算法

33 每月下载量

MIT/Apache

61KB
1.5K SLoC

Ratel

Build Status CircleCI minimum rustc 1.32

Ratel多臂赌博机模拟器的Rust实现

该模拟器由两个组件组成,一个由多个臂组成的 赌博机,每个臂都根据概率分布提供奖励,以及一个 智能体,该智能体尝试拉扯臂以学习哪个臂具有最高的平均奖励。

赌博机

多臂赌博机由一组臂组成,每次拉动时都根据某个概率分布提供奖励。允许任何数量的臂。目前有五种分布集可用;二项式、高斯、指数、伽马和对数正态。在这些限制内,所有分布参数的选择都是有效的。

智能体

智能体必须通过某种程序确定哪个赌博机臂产生最高的平均奖励。目前实现了三种策略。贪婪算法始终选择具有最高估计平均奖励的臂。epsilon-贪婪算法大多数时候遵循贪婪算法,但以一定小概率选择一个随机臂。乐观算法选择估计值在某些置信范围内的上限最高的臂。

游戏

游戏 模块管理赌博机和智能体之间的交互。智能体拉动赌博机的臂一定次数。游戏模块记录每次迭代的胜利和奖励。

构建Ratel

要构建模拟器,只需运行

cargo构建 --发布

要运行模拟器,请编写一个包含所需模拟代码的 main 模块。然后运行

cargo运行 --发布 -- ${参数}

该模拟器旨在具有最大的灵活性。为了获得灵感或查看我是如何构建实验的,请参阅 Ratel-Experiments

兼容性

此代码与1.32至1.75的所有Rust版本兼容。

依赖项

~2MB
~36K SLoC