PettingZoo AEC与Parallel双向转换:Shimmy多智能体环境API互转指南 【免费下载链接】ShimmyPettingZoo and Gymnasium bindings for popular reinforcement learning environments outside of Farama项目地址https://gitcode.com/gh_mirrors/sh/Shimmy点击查看免费下载Shimmy是一个开源 API 转换工具可以把 OpenSpiel 棋盘游戏、DM Control Soccer 等外部强化学习环境统一转换为PettingZoo 的 AEC 与 Parallel 多智能体接口并支持两种 API 之间一键互转。本文面向新手用最短路径讲清如何安装 Shimmy、如何分别跑通 AEC 与 Parallel 环境、如何用parallel_to_aec/aec_to_parallel完成双向转换以及 5 个最容易踩的坑。 Shimmy 是什么多智能体强化学习环境的 API 转换桥梁Shimmy 位于 Farama 生态之外专注于把非标准环境接入两大主流接口目标 API单智能体多智能体GymnasiumDM Control、AndroidEnv、旧版 OpenAI Gym—PettingZoo—AEC如 OpenSpiel、Parallel如 DM Control Soccer对于多智能体场景Shimmy 提供两类兼容封装AECAgent Environment Client风格OpenSpielCompatibilityV0继承自pz.AECEnv回合制游戏逐个 agent 行动Parallel并行风格DmControlMultiAgentCompatibilityV0继承自ParallelEnv所有 agent 每步同时行动 一键安装3 步装好 Shimmy 多智能体依赖Shimmy 要求Python 3.11 及以上按需求场景选择 extras 安装# OpenSpiel 游戏环境AEC 风格 pip install shimmy[openspiel] # DM Control Soccer 多智能体足球Parallel 风格 pip install shimmy[dm-control-multi-agent] 提示不同 extras 对 Python 上限有要求如dm-control系列最高 3.12openspiel可到 3.14详见 README.md 中的版本对照表。若某 extras 与你的 Python 版本冲突单独开一个虚拟环境即可。⚖️ AEC 与 Parallel两种 API 风格如何选择对比项AEC如 OpenSpiel 环境Parallel如 DM Control Soccer核心方法env.agent_iter()env.last()env.reset()返回观测env.step(actions)批量推进行动方式一次只推进当前agent每次step提交全体agent 的动作字典适用场景回合制棋类、轮流发言博弈物理仿真、多机器人同步决策关键属性agent_selection指向当前行动者env.agents为当前存活 agent 列表典型封装OpenSpielCompatibilityV0DmControlMultiAgentCompatibilityV0一句话选型轮流行动选 AEC同步行动选 Parallel而且两者可以随时互转下文演示。 AEC 实战把 OpenSpiel 桌游转成标准多智能体环境OpenSpiel 提供 70 棋盘、卡牌与博弈环境。Shimmy 的 OpenSpielCompatibilityV0 会自动处理回合切换、机会节点采样并在info中给出action_mask合法动作掩码from shimmy import OpenSpielCompatibilityV0 env OpenSpielCompatibilityV0(game_namebackgammon) env.reset(seed42) for agent in env.agent_iter(): obs, reward, termination, truncation, info env.last() if termination or truncation: action None else: action env.action_space(agent).sample(maskinfo[action_mask]) env.step(action) env.close()要点通过game_name直接加载或传已有的pyspiel对象用env参数包裹两者只能选一个同时给会抛ValueError采样动作务必带上info[action_mask]否则会选到非法走法完整用法见 docs/environments/open_spiel.md⚽ Parallel 实战DM Control Soccer 多智能体足球Soccer 环境里两队机器人在 MuJoCo 物理引擎下对抗所有球员每步同步动作天然适合 Parallel APIfrom shimmy import DmControlMultiAgentCompatibilityV0 env DmControlMultiAgentCompatibilityV0(team_size5, render_modehuman) observations, infos env.reset() while env.agents: actions {a: env.action_space(a).sample() for a in env.agents} observations, rewards, terminations, truncations, infos env.step(actions) env.close()要点可用team_size、time_limit、walker_type等参数直接加载新环境也可用env参数包裹现成的dm_soccer环境两者互斥step必须提交全体存活 agent 的动作否则会触发断言错误该环境本身非确定性随机种子不能保证可复现详见 shimmy/dm_control_multiagent_compatibility.py 的说明辅助加载函数见 shimmy/utils/dm_control_multiagent.py 双向转换parallel_to_aec 与 aec_to_parallel 一行搞定PettingZoo 官方封装提供了两个转换工具Shimmy 转换出的环境可直接套用用法说明见 docs/content/basic_usage.mdParallel → AEC让足球比赛变成逐 agent 的回合制循环from pettingzoo.utils import parallel_to_aec from shimmy import DmControlMultiAgentCompatibilityV0 env parallel_to_aec(DmControlMultiAgentCompatibilityV0(team_size2))AEC → Parallel让桌游变成批量 step 接口from pettingzoo.utils import aec_to_parallel from shimmy import OpenSpielCompatibilityV0 env aec_to_parallel(OpenSpielCompatibilityV0(game_nametic_tac_toe))⚠️ 注意AEC → Parallel的前提假设环境按固定顺序循环 step、且观测只在一个完整循环结束时更新。回合制严格的桌游满足该假设若你的 AEC 环境存在随机顺序行动转换结果可能与原语义不一致。顺带一提Shimmy 同样支持把这些环境的单智能体版本注册进 Gymnasiumgym.make(dm_control/...-v0)注册逻辑在 shimmy/registration.py。⚠️ 避坑清单5 个高频问题一次说清种子不是万能的OpenSpiel 只有deep_sea、hanabi、mfg_garnet三种游戏支持reset(seed...)见 shimmy/openspiel_compatibility.py没有图形渲染OpenSpiel 仅支持 ASCII 文本渲染render()对无渲染环境会打印内部游戏状态动作采样必须用掩码棋盘类环境的info[action_mask]决定哪些动作合法系统限制OpenSpiel 不支持 Windowsdm-control-multi-agent在 Python 3.12 以下版本表现最佳序列化差异OpenSpiel 封装支持pickle见 tests/test_openspiel.py 的test_pickle而 Soccer 环境因内部弱引用不可 pickle 源码路径与延伸阅读模块说明shimmy/openspiel_compatibility.pyOpenSpiel → AEC 封装回合切换、机会节点、掩码shimmy/dm_control_multiagent_compatibility.pyDM Control Soccer → Parallel 封装shimmy/utils/dm_control_multiagent.pySoccer 环境参数化加载工具docs/content/basic_usage.md官方基础用法与 AEC/Parallel 转换说明docs/environments/dm_multi.md / docs/environments/open_spiel.md两个多智能体环境的完整文档tests/test_openspiel.py / tests/test_dm_control_multi_agent.py全量游戏与全参数组合的 API 一致性测试✅ 小结Shimmy 让外部强化学习环境与 PettingZoo 生态即插即用OpenSpiel 桌游走AECDM Control Soccer 走Parallel再用parallel_to_aec/aec_to_parallel一键切换接口风格。记住回合制选 AEC、同步制选 Parallel、采样带掩码、种子看支持这四句话多智能体训练环境的接入基本不会再卡壳。赞分享【免费下载链接】ShimmyPettingZoo and Gymnasium bindings for popular reinforcement learning environments outside of Farama项目地址https://gitcode.com/gh_mirrors/sh/Shimmy点击查看免费下载相关推荐ML-Agents PettingZoo 包装器实战指南用 AEC / Parallel 多智能体 API 驱动 Unity 环境ML Agents PettingZoo 包装器实战指南用 AEC / Parallel 多智能体 API 驱动 Unity 环境 导读 本指南围绕 Unit人工智能强化学习深度学习机器学习游戏开发让RL智能体玩转70棋盘与卡牌游戏Shimmy OpenSpiel与PettingZoo AEC环境完全教程让RL智能体玩转70棋盘与卡牌游戏Shimmy OpenSpiel与PettingZoo AEC环境完全教程 Shimmy 是 Farama 社区开源的 强Unity ML-Agents PettingZoo 多智能体训练 APIAEC 与 Parallel 环境包装器完全指南Unity ML Agents PettingZoo 多智能体训练 APIAEC 与 Parallel 环境包装器完全指南 导读 随着多智能体强化学习MAR人工智能强化学习深度学习机器学习游戏开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考