使用PettingZoo的Gobblet棋盘游戏的交互式多智能体强化学习环境。
项目描述
gobblet-rl
使用PettingZoo和Pygame的Gobblet棋盘游戏的交互式多智能体强化学习环境。
允许用户在相同的环境中玩耍,甚至可以与使用Tianshou训练的RL智能体进行对战。
安装
使用pip(推荐)
pip install gobblet-rl
本地
git clone hhttps://github.com/elliottower/gobblet-rl.git
cd gobblet-rl
pip install -e .
用法
设置基本环境
在Python shell中,运行以下命令
from gobblet_rl import gobblet_v1
env = gobblet_v1.env()
与贪婪智能体对战
在终端中,运行以下命令
python gobblet/example_tianshou_greedy.py --cpu-players 1
这将启动一场与贪婪智能体的游戏,这是一个非常强大的基线。该智能体考虑所有可能的移动,深度为2,如果可能则获胜,阻止对手获胜,甚至迫使对手做出失败的操作。
注意:此策略利用领域知识从观察(完美信息)中重建内部游戏板,并直接使用 board.py
中的函数。Tianshou 策略无法直接访问环境,只有观察和动作掩码。因此,贪婪代理不应与其他 RL 代理直接比较。
与使用 Tianshou 训练的 DQN 代理进行游戏
在终端中,运行以下命令
python gobblet/example_tianshou_DQN.py --epoch 50 --player 1 --cpu-players 2
这将使用 Tianshou 的 DQN 模型进行 50 个 epoch 的训练,并启动与预训练代理的交互式游戏。
使用参数 --cpu-player
来确定 CPU 代理的数量(1 或 2),并使用 --player
来选择哪个代理先行动(人类先动:0,CPU 先动:1)
使用参数 --self-play
来使用自我博弈训练代理。
进行交互式游戏
在终端中,运行以下命令
python gobblet/examples/example_user_input.py"
注意:可以使用参数 --num-cpu 1
在其他脚本中启用交互式游戏
要选择棋子大小,请按数字键 1
、2
或 3
,或按 space
键在棋子之间循环。放置棋子时,请在棋盘上点击一个方块。将出现一个预览,显示所选棋子大小的合法走法。点击已放置的棋子将拾取它,并提示您将其放置在新的位置(在同一位置重新放置是非法的)。
创建游戏的屏幕录制
在终端中,运行以下命令
python gobblet/examples/example_record_game.py"
这将把游戏的屏幕录制保存到 gobblet/examples/game.gif
观看两个基本 CPU 代理之间的比赛
在终端中,运行以下命令
python gobblet/examples/example_basic.py"
这将启动一个游戏,其中两个基本代理选择随机动作。此文件可以用作原型设计未来方法的起点。
命令行参数
游戏模式
除 example_basic.py
之外的所有脚本都接受以下参数
默认游戏模式是人与 CPU 对战,人类扮演红色,CPU 扮演黄色。
--player 1
将人类玩家设置为黄色,CPU 以红色开始移动。
--cpu-players 1
将启动一个包含一个 CPU 代理和一个人类代理的游戏。(默认值)
--cpu-players 0
将启动一个没有 CPU 代理的游戏,为两个代理获取交互式输入。
--cpu-player 2
将启动一个包含两个 CPU 代理的游戏,不进行交互式输入。
显示模式
example_basic.py
使用以下参数来更改显示模式
--render_mode="human"
将使用 pygame 可视化游戏板。玩家 1 扮演红色并先行动,玩家 2 扮演黄色。
在交互式游戏时,可以通过将鼠标悬停在每个方框上来预览可能的走法。要移动已放置的棋子,只需点击它即可。
--render_mode="text"
将仅显示 3x3 棋盘,只显示最上面的棋子(被其他棋子覆盖或“吞没”的棋子是隐藏的)
TURN: 2, AGENT: player_1, ACTION: 51, POSITION: 6, PIECE: 3
| |
- | - | -3
_______|_______|_______
| |
- | - | +2
_______|_______|_______
| |
- | - | -
| |
--render_mode="text_full"
将渲染三个不同的 3x3 棋盘,分别代表小、中、大型棋子。这提供了有关被其他棋子覆盖或“吞没”的棋子的全部信息。
TURN: 3, AGENT: player_0, ACTION: 42, POSITION: 6, PIECE: 5
SMALL MED LARGE
| | | | | |
- | - | - - | - | - - | - | +5
_______|_______|_______ _______|_______|_______ _______|_______|_______
| | | | | |
- | - | -2 - | - | - - | - | -
_______|_______|_______ _______|_______|_______ _______|_______|_______
| | | | | |
- | - | - - | - | - - | - | -6
| | | | | |
测试
测试可以通过 pytest 完成
git clone https://github.com/elliottower/gobblet-rl.git
cd gobblet-rl
pytest
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建分发
gobblet_rl-1.3.5.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3202864ef58d910703d2eba7d7f5eb0d49ef9a91429d0df7aec2cf3287276e7c |
|
MD5 | 9acabc078214209fa6e00804a5a18add |
|
BLAKE2b-256 | 23d45f39334856abf21643eb99611cf58414fe25cf7f384e2b90037d5f03b16f |
gobblet_rl-1.3.5-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 10e32b18ab17b6c0510ecb42123b0a7e2af9df841e3ce4867c3d0ab953ab8a25 |
|
MD5 | 4401577c12b5d6e324c3ad6571827ca1 |
|
BLAKE2b-256 | 07a5246ff88669ef5817bbeafa19c956fb42e6f003025649edc4c29795f0591a |