多智能体深度强化学习:MAPPO&MADDPG&MASAC算法及其伪代码

多智能体深度强化学习:MAPPO、MADDPG 和 MASAC 的详细介绍

多智能体深度强化学习(Multi-Agent Deep Reinforcement Learning, MADRL)是一类方法,旨在解决多个智能体在动态环境中交互、学习和优化的问题。以下是三种主流算法:MAPPO、MADDPG 和 MASAC 的详细说明及伪代码。


1. MAPPO (Multi-Agent Proximal Policy Optimization)

核心思想

  • MAPPO 是将单智能体的 PPO 算法扩展到多智能体场景。
  • 利用共享的策略网络或集中值函数(Centralized Value Function)来支持集中训练分散执行(Centralized Training and Decentralized Execution, CTDE)框架。
  • 能有效处理多智能体之间的协作任务,适用于离散和连续动作空间。

特点

  • 稳定性强:通过裁剪策略更新幅度,防止梯度爆炸。
  • 扩展性高:适用于多个智能体的协同优化。
  • 共享策略:智能体可以共享策略,提升样本利用效率。

MAPPO 伪代码

# 初始化策略网络π(θ)、集中值函数V(ϕ)、经验回放缓冲区D
Initialize: Policy network π(θ), Centralized Value network V(ϕ), Replay buffer D

for each episode do
    Initialize environment, get initial joint observation o_joint
    for each time step t do
        for each agent i do
            Sample action a_i ~ π(o_i | θ)
        end for
        Execute joint action {a_1, ..., a_N}, observe reward r and next joint observation o'_joint
        Store transition (o_joint, {a_1, ..., a_N}, r, o'_joint) in D
    end for

    for each training step do
        Sample mini-batch of transitions from D
        Compute advantage A = r + γV(o'_joint) - V(o_joint)
        # 更新策略网络
        Update θ using PPO clipped surrogate objective:
            L(θ) = min(r(θ) * A, clip(r(θ), 1-ϵ, 1+ϵ) * A)
        # 更新值函数
        Update ϕ by minimizing value loss:
            L(ϕ) = (r + γV(o'_joint) - V(o_joint))²
    end for
end for

2. MADDPG (Multi-Agent Deep Deterministic Policy Gradient)

核心思想

  • MADDPG 是 DDPG 的多智能体扩展版本,适用于连续动作空间。
  • 每个智能体独立维护其策略(actor)和值函数(critic),但训练时利用全局信息(所有智能体的观测和动作)来更新 critic。
  • 提供了合作和竞争场景的灵活性,尤其适合复杂的高维连续动作问题。

特点

  • 集中训练:使用全局信息优化值函数。
  • 分散执行:每个智能体仅依赖自身的观测执行决策。
  • 高效学习:适合连续动作空间中多智能体的学习任务。

MADDPG 伪代码

# 初始化每个智能体的 actor π_i(θ_i)、critic Q_i(ϕ_i) 和经验缓冲区D
Initialize: Actor networks π_i(θ_i), Critic networks Q_i(ϕ_i) for each agent i
Initialize: Replay buffer D

for each episode do
    Initialize environment, get initial observations {o_i} for agents i = 1, ..., N
    for each time step t do
        for each agent i do
            Select action a_i ~ π_i(o_i | θ_i) + exploration_noise
        end for
        Execute actions {a_1, ..., a_N}, observe rewards {r_i} and next observations {o'_i}
        Store transition ({o_i}, {a_1, ..., a_N}, {r_i}, {o'_i}) in D
    end for

    for each training step do
        Sample mini-batch of transitions from D
        for each agent i do
            # 计算目标动作
            Compute target actions {a'_j} using target actor π'_j
            Compute target Q value:
                y_i = r_i + γQ'_i(o'_i, {a'_1, ..., a'_N} | ϕ'_i)
            # 更新 critic
            Update ϕ_i by minimizing:
                L(ϕ_i) = (Q_i(o_i, {a_1, ..., a_N} | ϕ_i) - y_i)²
            # 更新 actor
            Update θ_i using policy gradient:
                ∇_θ_i J(θ_i) = ∇_a Q_i(o_i, {a_1, ..., a_N}) ∇_θ π_i(o_i | θ_i)
        end for
    end for
end for

3. MASAC (Multi-Agent Soft Actor-Critic)

核心思想

  • MASAC 是 SAC(Soft Actor-Critic)的多智能体扩展。
  • 通过引入熵项(Entropy Term),鼓励智能体探索更广泛的策略空间。
  • 适用于高维连续动作空间,能够处理合作和部分竞争的场景。

特点

  • 熵正则化:通过最大化策略的熵,增强鲁棒性和探索能力。
  • 灵活性强:支持部分合作和竞争任务。
  • 高效训练:结合离线数据和在线学习,提升样本利用率。

MASAC 伪代码

# 初始化每个智能体的 actor π_i(θ_i)、critic Q_i(ϕ_i)、温度参数 α 和经验缓冲区 D
Initialize: Actor π_i(θ_i), Critic Q_i(ϕ_i), temperature α for each agent i
Initialize: Replay buffer D

for each episode do
    Initialize environment, get initial observations {o_i} for agents i = 1, ..., N
    for each time step t do
        for each agent i do
            Sample action a_i ~ π_i(o_i | θ_i) + exploration_noise
        end for
        Execute actions {a_1, ..., a_N}, observe rewards {r_i} and next observations {o'_i}
        Store transition ({o_i}, {a_1, ..., a_N}, {r_i}, {o'_i}) in D
    end for

    for each training step do
        Sample mini-batch of transitions from D
        for each agent i do
            # 计算目标 Q 值
            Compute target actions {a'_j} using target actor π'_j
            Compute target Q value:
                y_i = r_i + γ * (Q'_i(o'_i, a'_i) - α log π'_i(a'_i | o'_i))
            # 更新 critic
            Update ϕ_i by minimizing:
                L(ϕ_i) = (Q_i(o_i, a_i | ϕ_i) - y_i)²
            # 更新 actor
            Update θ_i using soft policy gradient:
                ∇_θ_i J(θ_i) = ∇_a [α log π_i(a | o) - Q_i(o, a)] ∇_θ π_i(o | θ_i)
            # 更新温度参数
            Adjust α to control entropy:
                L(α) = -α * (log π_i(a | o) + target_entropy)
        end for
    end for
end for

对比与应用场景总结

特性MAPPOMADDPGMASAC
动作空间离散或连续连续连续
探索机制剪裁策略变化添加噪声最大化熵
适用场景多智能体协作任务连续动作的合作或竞争任务高维连续动作场景,鼓励探索
训练框架CTDECTDECTDE
优点稳定性高,适合复杂任务高效学习,适合竞争场景强探索性,适合复杂协作场景

参考方向

这三种算法的设计各有侧重,可根据具体任务选择。MAPPO 更适合协作性任务;MADDPG 针对竞争任务表现优异;MASAC 适合高维连续动作的复杂任务,特别是需要平衡探索和利用的场景。

【资源说明】 基于生物启发式算法多智能体强化学习算法python实现源码+项目说明+模型及注释.zip ## 项目介绍: 多智能体系统(MAS)由于具有解决复杂任务的灵活性、可靠性和智能性,已被广泛地应用于不同的应用领域,如计算机网络、机器人和智能电网等。通信是多代理世界保持组织和生产的重要因素。然而,以往的多代理通信研究大多试图预先定义通信协议或采用额外的决策模块进行通信调度,这将造成巨大的通信开销,并且不能直接推广到一个大型代理集合。本文提出了一个轻量级的通信框架:**基于信息素协同机制的分布式深度Q网络算法(Pheromone Collaborative Deep Q-Network, PCDQN)**,它结合了深度Q网络和stigmergy机制。它利用stigmergy机制作为部分可观察环境下独立强化学习代理之间的间接沟通桥梁。我们证明了PCDQN框架的优越性,同时也将我们的模型转移到解决多代理路径搜索问题上。利用PCDQN框架,多代理编队能够学习适当的策略,成功地在雷区导航环境中获得最优路径。 *** ## 实验环境 ```sh Windows10操作系统,8GB内存,2核Intel Core i7-6500U pytorch-1.4.0+cpu python 3.8 ``` 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值