POGEMA(Partially-Observable Grid Environment for Multiple Agents)是一个为多智能体路径规划(PO-MAPF)问题设计的网格环境,旨在提供一个灵活、可调节且可扩展的基准平台。
一、主要特点
1. 灵活性:POGEMA允许用户根据不同的PO-MAPF设置进行定制,支持随机地图生成以及自定义地图输入。
2. 可扩展性:环境支持多智能体的路径规划任务,智能体可以在网格的相邻单元格之间移动,每个动作(移动或等待)占用一个时间步长。
3. 部分可观测性:每个智能体在每个时间步只能接收到环境的局部观测,并基于此决定下一步行动。
二、安装方法
您可以通过以下命令从PyPI安装POGEMA:
pip install pogema
三、使用示例
以下是一个简单的示例,展示如何创建POGEMA环境并运行一个随机策略的智能体:
from pogema import pogema_v0, GridConfig
# 创建POGEMA环境
env = pogema_v0(grid_config=GridConfig())# 重置环境
obs, info = env.reset()while True:
# 使用随机策略选择动作
obs, reward, terminated, truncated, info = env.step(env.sample_actions())
env.render()
if all(terminated) or all(truncated):
break
四、Baselines and Evaluation Protocol
POGEMA提供了基准实现和评估管道,详细信息可在POGEMA Benchmark仓库中找到。
五、接口支持
POGEMA与多个多智能体强化学习框架集成,包括PettingZoo、PyMARL和SampleFactory。
1. PettingZoo
简介: PettingZoo 是一个多智能体强化学习(MARL)环境的标准化 API,类似于 Gymnasium 但专注于多智能体环境。
from pogema import pogema_v0, GridConfig
# Create Pogema environment with PettingZoo interface
env = pogema_v0(GridConfig(integration="PettingZoo"))
2. PyMARL
简介: PyMARL(Python Multi-Agent RL)是专为 StarCraft II 多智能体挑战(SMAC)设计的 MARL 训练框架。
from pogema import pogema_v0, GridConfig
env = pogema_v0(GridConfig(integration="PyMARL"))
3. SampleFactory
简介: SampleFactory 是一个高效的单机分布式强化学习框架,专注于高吞吐量训练(用于 PPO、IMPALA)。
from pogema import pogema_v0, GridConfig
env = pogema_v0(GridConfig(integration="SampleFactory"))
4. Gymnasium
简介: Gymnasium(Gym 的继承版本)是 OpenAI Gym 的社区维护版本,为 RL 训练提供标准化 API。
Pogema is fully capable for single-agent pathfinding tasks.
from pogema import pogema_v0, GridConfig
env = pogema_v0(GridConfig(integration="gymnasium"))
5. Customization(自定义功能)
Random maps
随机地图生成:用户可以定义随机地图的配置,包括智能体数量、网格大小、障碍物密度等。
from pogema import pogema_v0, GridConfig # Define random configuration grid_config = GridConfig(num_agents=4, # number of agents size=8, # size of the grid density=0.4, # obstacle density seed=1, # set to None for random # obstacles, agents and targets # positions at each reset max_episode_steps=128, # horizon obs_radius=3, # defines field of view ) env = pogema_v0(grid_config=grid_config) env.reset() env.render()
Custom maps
自定义地图:用户可以通过ASCII符号定义自定义地图,并在环境中注册使用。
from pogema import pogema_v0, GridConfig grid = """ .....#..... .....#..... ........... .....#..... .....#..... #.####..... .....###.## .....#..... .....#..... ........... .....#..... """ # Define new configuration with 8 randomly placed agents grid_config = GridConfig(map=grid, num_agents=8) # Create custom Pogema environment env = pogema_v0(grid_config=grid_config)
总结来说,POGEMA 是一个高效且可扩展的多智能体环境,支持 PettingZoo、PyMARL、SampleFactory、Gymnasium,并允许用户灵活地进行环境自定义,适用于多种强化学习研究任务。 🚀