自定义环境实战:如何在EPyMARL中训练你自己的多智能体Gym任务 自定义环境实战如何在EPyMARL中训练你自己的多智能体Gym任务【免费下载链接】epymarlAn extension of the PyMARL codebase that includes additional algorithms and environment support项目地址: https://gitcode.com/gh_mirrors/ep/epymarlEPyMARLExtended PyMARL是目前最流行的多智能体强化学习框架之一它基于 PyMARL 扩展而来额外支持 Gym 自定义环境、IA2C/IPPO/MADDPG 等多种算法以及独立奖励设置。本文将带你从零开始一步步完成多智能体 Gym 环境注册、训练命令配置到调参实战的完整流程即使是强化学习新手也能轻松上手。EPyMARL 是什么为什么适合训练多智能体任务EPyMARL 是一个全家桶式的多智能体强化学习框架它把多种经典算法QMIX、VDN、COMA、IQL、IA2C、IPPO、MAA2C、MAPPO、MADDPG、PAC统一在同一套代码架构下保证了算法之间对比的公平性。相比原始 PyMARLEPyMARL 主要增加了这些能力 支持 Gym 注册的标准环境如 LBF、RWARE、MPE 支持每个智能体拥有独立奖励general-sum 奖励环境 支持智能体之间不共享参数 灵活的工程细节开关软/硬更新、奖励标准化等对于想快速验证自己自定义环境的研究者和开发者来说EPyMARL 的gymma环境包装器让接入成本降到最低。多智能体 Gym 环境需要满足什么条件✅EPyMARL 可以直接使用任何已经注册到 Gym 的环境但你的环境需要遵守多智能体的约定总共就三条要素要求说明观察空间Tuple空间每个智能体一个 observation space动作空间Tuple空间每个智能体一个离散 action space奖励返回元组tuplestep 返回每个智能体各自的奖励其中最关键的是奖励必须是元组——每个智能体一个数值。在默认的共同奖励common reward模式下EPyMARL 会把这些奖励求和或求平均合并成一个公共奖励如果你设置common_rewardFalse则每个智能体独立使用自己的奖励进行训练。如何把自定义环境注册到 Gym这是整个流程的第一步。EPyMARL 通过env_args.key指定的环境 ID 来查找环境而环境 ID 需要提前用 Gym 的register接口注册。参考 LBF 环境的注册模板from gym.envs.registration import registry, register, make, spec register( idMyMultiAgentEnv-v0, # 环境 ID entry_pointmy_env.env:MyMultiAgentEnv, # 环境类的导入路径 kwargs{...}, # 传给构造函数 __init__ 的参数 )注册完成后环境 ID 的完整格式为模块名:环境ID。例如lbforaging:Foraging-8x8-2p-3f-v2中lbforaging是模块名EPyMARL 会自动 import 它冒号后才是真正的环境 ID。你也可以参考项目中已有的预训练包装器来理解这种命名规范相关示例位于src/pretrained/目录下。一键安装 EPyMARL 框架 克隆仓库并安装依赖即可开始git clone https://gitcode.com/gh_mirrors/ep/epymarl cd epymarl pip install -r requirements.txt如果需要使用 PAC 算法或 LBF、RWARE、MPE 等预置环境再额外安装两个依赖文件pip install -r pac_requirements.txt pip install -r env_requirements.txt运行你的第一个自定义环境训练任务 安装完成后一条命令即可启动训练python3 src/main.py --configqmix --env-configgymma \ with env_args.time_limit50 env_args.keymy_env:MyMultiAgentEnv-v0这条命令拆开来看其实非常清晰--configqmix选择算法配置对应src/config/algs/目录下的qmix.yaml换成vdn、ippo、mappo等即可切换算法--env-configgymma选择环境配置对应src/config/envs/gymma.yaml它告诉框架使用 Gym 兼容包装器而非 SMACenv_args.time_limit50设定每个 episode 的最大步数env_args.keymy_env:MyMultiAgentEnv-v0指定你的 Gym 环境 ID训练日志和结果会统一保存在Results目录下方便后续分析对比。如何选择适合你任务的算法EPyMARL 的算法分为两大类选择时务必先判断你的环境是共同奖励还是独立奖励奖励类型支持的算法特点共同奖励QMIX、VDN、COMA、QTRAN经典值分解/集中式方法独立奖励IA2C、IPPO、MAA2C、MAPPO、IQL、PAC每个智能体独立优化如果环境本身为每个智能体提供独立奖励建议使用独立奖励算法并加上common_rewardFalse参数python3 src/main.py --configmappo --env-configgymma \ with env_args.time_limit25 env_args.keylbforaging:Foraging-8x8-2p-3f-v2 common_rewardFalse若保持默认的共同奖励模式则可通过reward_scalarisationsum或mean指定奖励聚合方式。常见问题与高效调试技巧 新手接入自定义环境时最容易踩的坑主要有这几个观察空间不是 Tuple包装器会自动将每个智能体的观察展平见src/envs/wrappers.py但前提是 observation_space 是 Tuple每个元素对应一个智能体奖励忘记返回元组如果环境返回标量奖励而你又开启了独立奖励模式EPyMARL 会发出警告并原样返回务必检查智能体观察长度不一框架会自动用 0 填充较短的观察到最长长度不需要你手动处理训练不收敛时优先检查gamma、lr等基础超参数位于src/config/default.yaml再调整 epsilon 退火时间另外EPyMARL 提供了评估模式训练完成后可用以下参数加载模型并只做测试python3 src/main.py --configqmix --env-configgymma \ with env_args.keymy_env:MyMultiAgentEnv-v0 \ checkpoint_path你的结果目录 evaluateTrue配合save_modelTrue和save_model_interval你可以在训练过程中自动保存模型实现训练-评估循环。进阶玩法超参数搜索与实验管理 当你确认环境可以正常训练后EPyMARL 还内置了两个提效工具超参数搜索项目提供了src/search.py脚本配合src/search.config.example.yaml配置文件可以批量搜索多组超参数组合支持本地串行和集群并行两种模式WB 实验记录设置use_wandbTrue即可把训练曲线、模型权重同步到 Weights Biases实现云端实验管理掌握了这些之后从自定义环境到多算法对比、再到超参数搜索的完整实验流程就全部打通了。祝你训练顺利快速跑出自己的多智能体结果【免费下载链接】epymarlAn extension of the PyMARL codebase that includes additional algorithms and environment support项目地址: https://gitcode.com/gh_mirrors/ep/epymarl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考