HARL
HARL 是一个基于 PyTorch 开发的开源强化学习算法库,专注于解决多智能体系统中的“异构”协作难题。在传统方法中,为了让不同特性的智能体协同工作,往往需要强制它们共享参数,这不仅限制了模型能力,也难以应对复杂的现实场景。HARL 摒弃了这种限制,提出了一套无需参数共享即可实现高效合作的解决方案。
其核心亮点在于采用了独特的“顺序更新机制”,区别于主流算法的同步更新方式。这一设计不仅拥有严格的数学理论支撑,保证了训练过程的单调改进和收敛性,还在多个高难度基准测试中展现出超越经典算法(如 MAPPO)的性能。库内集成了 HAPPO、HASAC 等七种前沿算法,并预置了包括星际争霸、多足机器人控制及无人机对抗在内的七个主流实验环境接口,方便用户直接上手。
HARL 非常适合人工智能领域的研究人员、算法工程师以及高校师生使用。无论是希望复现顶级会议论文结果,还是需要将先进的多智能体协作技术应用到机器人控制、游戏博弈或复杂调度系统中,HARL 都能提供坚实的理论保障与便捷的代码实现,是探索异构多智能体强化学习的得力助手。
使用场景
某无人机编队研发团队正在训练异构智能体集群,以执行复杂的协同侦察与打击任务,其中包含高速侦察机与重型攻击机等不同能力的单位。
没有 HARL 时
- 策略同质化严重:被迫使用参数共享技巧(Parameter-sharing),导致不同类型的无人机学习到相同的策略,无法发挥各自独特的机动或火力优势。
- 协作效率低下:采用传统的同时更新机制,智能体在更新策略时相互干扰,难以在动态战场中形成稳定的配合默契。
- 训练收敛困难:缺乏理论保证,多智能体环境下的非平稳性问题导致训练过程震荡剧烈,经常陷入局部最优甚至无法收敛。
- 场景适应性差:一旦任务场景从“同型机编队”变为“混编作战”,原有算法性能急剧下降,需重新设计复杂的奖励函数。
使用 HARL 后
- 异构策略专精:利用序列更新方案,HARL 允许侦察机与攻击机独立学习专属策略,完美适配各自的速度、载荷等异构特性。
- 协同单调提升:基于严格的单调改进理论,智能体按顺序更新策略,确保了团队协作能力随训练步数稳定增强,避免了相互干扰。
- 收敛有迹可循:凭借收敛至均衡点的理论保障,训练曲线平滑且高效,显著缩短了从仿真到实战部署的验证周期。
- 通用性强:无需针对特定编队结构调整网络架构,直接复现于多种高难度基准测试,轻松应对从纯合作到混合博弈的各类任务。
HARL 通过严谨的序列更新机制打破了异构多智能体协作的理论瓶颈,让无人机编队在复杂动态环境中实现了真正的高效协同与稳定收敛。
运行环境要求
- Linux
- 部分环境必需(如 Bi-DexterousHands/IsaacGym, MuJoCo)
- 需支持 CUDA >= 11.0 的 NVIDIA GPU
- IsaacGym 对硬件有特定要求(未详述具体型号,通常需高性能显卡)
未说明

快速开始
异构智能体强化学习
本仓库包含基于 PyTorch 的 异构智能体强化学习(HARL) 算法的 官方实现,其中包括 HAPPO、HATRPO、HAA2C、HADDPG、HATD3、HAD3QN 和 HASAC。HARL 算法与 MAPPO 显著不同,它们普遍适用于异构智能体,并具有严格的理论支持,通常能够取得更优的性能。 本仓库使研究人员和从业者能够轻松复现我们在七个具有挑战性的基准测试上的结果,或将 HARL 算法应用于其目标应用场景。
概述
HARL 算法是我们针对一般 异构智能体 场景下实现有效多智能体协作的新颖解决方案,无需依赖限制性较强的 参数共享 技巧。
主要特点
- HARL 算法采用 顺序更新机制 实现智能体的协同更新,这与 MAPPO 和 MADDPG 所采用的 同步更新机制 不同。
- HARL 算法在理论上保证了 单调改进 和 收敛至均衡状态,从而确保其在促进智能体间合作行为方面的有效性。
- 无论是基于策略梯度的算法还是基于值函数的算法,例如分别以 HAPPO 和 HASAC 为代表的算法,在广泛的基准测试中均表现出优越的性能。
下图展示了 顺序更新机制:
更多详细信息,请参阅我们的 HARL(JMLR 2024)和 MEHARL(ICLR 2024 Spotlight)论文。
安装
安装 HARL
conda create -n harl python=3.8
conda activate harl
# 手动安装 pytorch>=1.9.0 (CUDA>=11.0)
git clone https://github.com/PKU-MARL/HARL.git
cd HARL
pip install -e .
安装环境依赖
除了 HARL 算法之外,我们还实现了七个常用环境的接口(SMAC、SMACv2、MAMuJoCo、MPE、Google Research Football、Bi-DexterousHands、Light Aircraft Game),可以直接使用。(我们还实现了 Gym 的接口。Gym 是一个单智能体环境,可以看作是多智能体环境的一种特殊情况,主要出于参考目的而包含在内。)您可以选择安装所需环境的依赖项。安装完成后,请按照 "解决依赖" 部分中的步骤操作。
安装 Bi-DexterousHands 的依赖
Bi-DexterousHands 依赖于 IsaacGym。必须满足 IsaacGym 的硬件要求。要安装 IsaacGym,从其官方网站下载 IsaacGym Preview 4 版本,然后在其 python 文件夹下运行 pip install -e .。
安装 Light Aircraft Game
Light Aircraft Game(LAG)是一个新近开发的红蓝双方飞机博弈的合作竞争环境,提供了单人控制、1v1 和 2v2 等多种场景设置。在多智能体场景中,LAG 目前仅支持 2v2 场景下的自对弈。为了解决这一局限性,我们引入了新颖的合作型无武器任务和发射导弹任务:两名智能体协作对抗由内置 AI 控制的两名对手。在无武器任务中,智能体被训练为飞向对手机尾并保持适当距离;而在发射导弹任务中,智能体则学习躲避对手导弹,并发射自己的导弹摧毁对手。
要安装 LAG,运行以下命令:
# 安装依赖
pip install torch pymap3d jsbsim==1.1.6 geographiclib gym==0.21.0 wandb icecream setproctitle
# 初始化子模块(*JSBSim-Team/jsbsim*)
git submodule init
git submodule update
安装 Google Research Football
请按照 官方说明安装 Google Research Football。
安装 SMAC
请按照 官方说明安装 SMAC。我们使用 Linux 上的 StarCraft II 版本 4.10。
安装 SMACv2
请按照 官方说明安装 SMACv2。
安装 MPE
pip install pettingzoo==1.22.2
pip install supersuit==3.7.0
安装 Gym 套件(除 MuJoCo 外)
# 安装 gym
pip install gym
# 安装经典控制
pip install gym[classic_control]
# 安装 box2d
conda install -c anaconda swig
pip install gym[box2d]
# 安装 atari
pip install --upgrade pip setuptools wheel
pip install opencv-python
pip install atari-py
pip install gym[atari]
pip install autorom[accept-rom-license]
安装 MuJoCo
首先,按照 https://github.com/openai/mujoco-py、https://www.roboti.us/ 和 https://github.com/deepmind/mujoco 上的说明,下载您所需的正确版本的 MuJoCo。
其次,创建 ~/.mujoco 目录。
第三,将 .tar.gz 或 .zip 文件移动到 ~/.mujoco 中,并使用 tar -zxvf 或 unzip 解压。
第四,在 .bashrc 文件中添加以下行:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/<user>/.mujoco/<文件夹名称,例如 mujoco210、mujoco-2.2.1>/bin
第五,运行以下命令:
sudo apt install libosmesa6-dev libgl1-mesa-glx libglfw3
pip install mujoco
pip install gym[mujoco]
sudo apt-get update -y
sudo apt-get install -y patchelf
安装 MAMuJoCo 的依赖
首先按照上述说明安装 MuJoCo。然后运行以下命令。
pip install "mujoco-py>=2.1.2.14"
pip install "Jinja2>=3.0.3"
pip install "glfw>=2.5.1"
pip install "Cython>=0.29.28"
需要注意的是,mujoco-py 与 mujoco210 兼容(详见 此处)。因此,请务必下载 mujoco210 并将其解压到正确的位置。
解决依赖项
在完成上述安装后,运行以下命令以解决依赖项。
pip install gym==0.21.0
pip install pyglet==1.5.0
pip install importlib-metadata==4.13.0
如果在使用 pip install gym==0.21.0 时遇到问题,请尝试使用以下命令:
conda install -c conda-forge gym=0.21.0
使用方法
在现有环境中训练
要在提供的环境中训练算法,用户可以根据需要修改 harl/configs/algos_cfgs 和 harl/configs/envs_cfgs 目录下的相应算法和环境的 YAML 配置文件,然后进入 examples 文件夹,使用一行命令开始训练:python train.py --algo <ALGO> --env <ENV> --exp_name <EXPERIMENT NAME> 或者 python train.py --load_config <CONFIG FILE PATH> --exp_name <EXPERIMENT NAME>。后者通常用于复现实验。我们在 tuned_configs 文件夹中为每个环境提供了算法的调优配置。用户可以通过运行 python train.py --load_config <TUNED CONFIG PATH> --exp_name <EXPERIMENT NAME> 来复现我们的结果,只需将 <TUNED CONFIG PATH> 替换为本地机器上该调优配置文件的绝对路径即可。
训练过程中,用户将在终端中持续获得日志反馈。
训练完成后,用户可以在生成的 results 文件夹中查看日志文件、TensorBoard 输出、实验配置以及保存的模型。此外,用户还可以通过在算法配置文件中设置 use_render: True 和 model_dir: <path to trained models> 来渲染训练好的模型(对于足球环境,还需在环境配置文件中设置 render: True),然后再次使用上述相同的训练命令。对于 SMAC 和 SMACv2 环境,渲染将以视频回放的形式自动保存到 StarCraftII/Replays 文件夹中(更多详情请参阅 这里)。
为了支持批量运行,我们允许用户在命令行中直接修改 YAML 配置文件。每次训练时,用户只需在命令中指定与配置文件中同名的特殊参数即可。例如,如果您想在 SMAC 任务上使用 HAPPO 算法,并采用三个随机种子进行训练,可以自定义配置并用以下命令替换 train.sh:
for seed in $(seq 1 3)
do
python train.py --algo happo --env smac --exp_name test --seed $seed
done
应用于新环境
若要将 HA 系列算法应用于解决新任务,您需要按照已提供的七个环境的示例实现环境接口。一个最简单的接口可能如下所示:
class Env:
def __init__(self, args):
self.env = ...
self.n_agents = ...
self.share_observation_space = ...
self.observation_space = ...
self.action_space = ...
def step(self, actions):
return obs, state, rewards, dones, info, available_actions
def reset(self):
return obs, state, available_actions
def seed(self, seed):
pass
def render(self):
pass
def close(self):
self.env.close()
接口的作用是隐藏环境特定的细节,暴露统一的交互协议,从而使其他模块能够以统一的方式处理数据。
您可能还希望在训练过程中产生持续的日志输出。如果您打算使用基于策略的算法,则需要为您的环境实现一个日志记录器。最简单的日志记录器可以继承 harl/common/base_logger.py 中的 BaseLogger 类,并实现 get_task_name 函数。对于更定制化的日志需求,可以通过扩展或重写更多函数来满足。我们建议参考各环境目录中的现有日志记录器,了解其编写方式。如果使用的是基于价值的算法,则可以直接通过修改基于价值的运行器代码来定制日志记录。最后,请注册日志记录器(如有),添加 YAML 配置文件,并在 examples/train.py、harl/utils/configs_tool.py 和 harl/utils/envs_tool.py 中添加必要的代码。同样,参照现有的七个环境示例将非常方便。
完成这些步骤后,您就可以像之前一样立即应用这些算法了。
算法适用范围
| 连续动作空间 | 离散动作空间 | 多离散动作空间 | |
|---|---|---|---|
| HAPPO | √ | √ | √ |
| HATRPO | √ | √ | |
| HAA2C | √ | √ | √ |
| HADDPG | √ | ||
| HATD3 | √ | ||
| HAD3QN | √ | ||
| HASAC | √ | √ | √ |
| MAPPO | √ | √ | √ |
| MADDPG | √ | ||
| MATD3 | √ |
在合作型多智能体强化学习基准上的性能
MPE
MAMuJoCo
HAPPO、HADDPG 和 HATD3 的表现优于 MAPPO、MADDPG 和 MATD3;其中,HAPPO 和 HATD3 是处理异构智能体合作任务最有效的方法。
SMAC & SMACv2
HAPPO 和 HATRPO 在 SMAC 和 SMACv2 中的表现与 MAPPO 和 QMIX 不相上下甚至更好,这表明它们在以同质智能体为主的场景中具有很强的能力。
GRF
HAPPO 在 GRF 上的表现始终优于 MAPPO 和 QMIX,且随着智能体数量和异质性的增加,性能差距也在不断扩大。
双灵巧手
HAPPO 始终优于 MAPPO,同时也优于单智能体基线 PPO,并且表现出更低的方差。
HASAC 的实验结果可在 https://sites.google.com/view/meharl 查看
引用
本仓库隶属于 北京大学 和 BIGAI。如果您在研究或项目中使用了我们的论文或本仓库,请考虑使用以下 BibTeX 格式的引用:
@article{JMLR:v25:23-0488,
author = {Yifan Zhong 和 Jakub Grudzien Kuba 和 Xidong Feng 和 Siyi Hu 和 Jiaming Ji 和 Yaodong Yang},
title = {异构智能体强化学习},
journal = {机器学习研究期刊},
year = {2024},
volume = {25},
number = {32},
pages = {1--67},
url = {http://jmlr.org/papers/v25/23-0488.html}
}
@inproceedings{
liu2024maximum,
title={最大熵异构智能体强化学习},
author={Jiarong Liu 和 Yifan Zhong 和 Siyi Hu 和 Haobo Fu 和 QIANG FU 和 Xiaojun Chang 和 Yaodong Yang},
booktitle={第十二届国际学习表征会议},
year={2024},
url={https://openreview.net/forum?id=tmqOhBC4a5}
}
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。