PettingZoo是一个用于多智能体强化学习研究的Python库,类似于Gymnasium的多智能体版本。
文档网站位于pettingzoo.farama.org,我们还有一个公共Discord服务器(我们也用它来协调开发工作),您可以在这里加入:https://discord.gg/nhvKkYa6qX
环境
PettingZoo包含以下环境系列:
- Atari:多人Atari 2600游戏(合作、竞争和混合博弈)
- Butterfly:我们开发的合作图形游戏,需要高度协调
- Classic:经典游戏,包括纸牌游戏、棋盘游戏等
- MPE:一组简单的非图形通信任务,最初来自https://github.com/openai/multiagent-particle-envs
- SISL:3个合作环境,最初来自https://github.com/sisl/MADRL
安装
安装基本的PettingZoo库:pip install pettingzoo
。
这不包括所有环境系列的依赖项(某些环境在某些系统上可能难以安装)。
要安装一个系列的依赖项,请使用pip install 'pettingzoo[atari]'
,或使用pip install 'pettingzoo[all]'
安装所有依赖项。
我们支持Linux和macOS上的Python 3.8、3.9、3.10和3.11。我们会接受与Windows相关的PR,但不正式支持它。
注意:某些Linux发行版可能需要手动安装cmake
、swig
或zlib1g-dev
(例如,sudo apt install cmake swig zlib1g-dev
)
入门
PettingZoo的介绍,请参见基本用法。要创建新环境,请参阅我们的环境创建教程和自定义环境示例。 有关使用PettingZoo训练强化学习模型的示例,请参阅我们的教程:
- CleanRL:实现PPO:在Pistonball环境中训练多个PPO智能体。
- Tianshou:训练智能体:在井字游戏环境中训练DQN智能体。
- AgileRL:训练、课程学习和自我对弈:在四子棋环境中使用课程学习和自我对弈训练智能体。
API
PettingZoo将环境建模为智能体环境循环(AEC)游戏,以便能够在一个API下清晰地支持所有类型的多智能体强化学习环境,并最大限度地减少某些类常见错误的可能性。
在PettingZoo中使用环境与Gymnasium非常相似,即您可以通过以下方式初始化环境:
from pettingzoo.butterfly import pistonball_v6
env = pistonball_v6.env()
与环境的交互方式与Gymnasium非常相似:
env.reset()
for agent in env.agent_iter():
observation, reward, termination, truncation, info = env.last()
action = None if termination or truncation else env.action_space(agent).sample() # 这里是您插入策略的地方
env.step(action)
完整的API文档,请参见https://pettingzoo.farama.org/api/aec/
并行API
在某些环境中,假设智能体同时采取行动是有效的。对于这些游戏,我们提供了一个次要API以允许并行动作,文档位于https://pettingzoo.farama.org/api/parallel/
SuperSuit
SuperSuit是一个库,包含了强化学习中常用的所有包装器(帧堆叠、观察、归一化等),适用于PettingZoo和Gymnasium环境,具有良好的API。我们开发它是为了替代内置于PettingZoo中的包装器。https://github.com/Farama-Foundation/SuperSuit
环境版本控制
PettingZoo为了可重现性原因保持严格的版本控制。所有环境都以"_v0"之类的后缀结尾。当对环境进行可能影响学习结果的更改时,数字会增加一以防止潜在的混淆。
项目维护者
项目经理:Elliot Tower
该项目的维护也得到了更广泛的Farama团队的贡献:farama.org/team。
引用
在出版物中引用本项目,请使用
@article{terry2021pettingzoo,
title={Pettingzoo: Gym for multi-agent reinforcement learning},
author={Terry, J and Black, Benjamin and Grammel, Nathaniel and Jayakumar, Mario and Hari, Ananth and Sullivan, Ryan and Santos, Luis S and Dieffendahl, Clemens and Horsch, Caroline and Perez-Vicente, Rodrigo and others},
journal={Advances in Neural Information Processing Systems},
volume={34},
pages={15032--15043},
year={2021}
}