多智能体 IQL 伪代码怎么写?先分清独立 Q 学习与离线 IQL

用两张 Q 表写独立更新流程,明确其他智能体改变带来的边界。提供演示数据、核对方法和适用边界。

在多智能体语境中,IQL 通常指 Independent Q-Learning,即每个智能体各自学习一份 Q 函数。但离线强化学习论文里,IQL 也指 Implicit Q-Learning。写伪代码前先确认缩写含义,不能把两种算法的损失混合。本文只演示前一种独立 Q 学习。

先规定一个同时行动的环境接口

下面是教学接口约定,不是某个库的可直接调用 API:环境一次接收所有智能体的动作,返回下一组观察、每个智能体的奖励和结束标记。每个智能体只使用自己的观察与动作更新自己的 Q 表。

多智能体 IQL 伪代码怎么写?先分清独立 Q 学习与离线 IQL

为每个智能体 i 初始化 Q_i(观察, 动作)
每一轮:
    observations = 环境重置()
    重复:
        每个 i 根据 Q_i 与探索率选择 actions[i]
        next_observations, rewards, terminated, truncated = 环境执行联合动作(actions)
        对每个 i:
            若 terminated[i]:target = rewards[i]
            否则:target = rewards[i] + gamma * max_a Q_i(next_observations[i], a)
            Q_i(observations[i], actions[i]) += alpha * (target - 原 Q 值)
        observations = next_observations
        若达到环境规定的本轮结束条件:退出本轮

对一组同步动作,先全部选完再执行环境,再全部更新,避免后一个智能体意外读到前一个已经更新的当前决策结果。动作是否同时发生必须服从实际环境;轮流行动的环境不能直接套这个接口。

用一个数字核对更新公式

自拟单次更新:旧 Q=2,本次奖励为 1,下一观察的最大 Q=4,学习率 α=0.5,折扣因子 γ=0.9。非真正终止时,目标值为 1+0.9×4=4.6,更新后为 2+0.5×(4.6-2)=3.3;真正终止时,目标值只有 1,更新后是 1.5。

def update(old, reward, next_max, terminated, alpha=0.5, gamma=0.9):
    target = reward if terminated else reward + gamma * next_max
    return old + alpha * (target - old)

assert abs(update(2, 1, 4, False) - 3.3) < 1e-12
assert abs(update(2, 1, 4, True) - 1.5) < 1e-12
print("单次更新算式核对完成")

这段 Python 只验证算式。它没有环境实现、观察编码、动作约束或训练循环,不能称为完整可训练的多智能体系统。

结束回合和停止自举要分别判断

外部时间限制导致的截断可以要求重置回合,但通常不应直接把下一状态的价值清零;任务本身真正终止才不继续自举。使用 Gymnasium 的 terminated 与 truncated 时,应按环境含义区分二者。若任务本来就是有限时域,还需把相应时间信息纳入建模,不能一律把所有时间结束当外部截断。

独立更新不等于稳定收敛

每个智能体把别人的行为视作环境的一部分;当其他智能体同时学习,自己所遇到的转移和奖励分布可能改变。局部观察还可能遗漏影响结果的信息。因此“每人一张表”是实现起点,不能推断它继承所有单智能体条件下的收敛保证。

先固定另一智能体的策略,检查自己的表能否正确更新;再放开共同学习,分别记录各自回报、联合行为和多种随机种子结果。若只看团队平均分,可能看不到某个智能体持续失败。

本文使用自拟接口与单步算式,没有运行多智能体训练。独立学习的挑战参阅 MADDPG 原论文,终止与截断的更新边界参阅 Gymnasium 时间限制说明,与本文不同的离线 IQL 参阅 Implicit Q-Learning 原论文。以上资料于 2026 年 10 月 3 日读取。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32964.html

赞 (0)
AI小管家的头像AI小管家
多智能体强化学习的 Q 值代表什么?分清自身动作与联合动作
上一篇 1天前
DDPG 是多智能体强化学习吗?用 actor 和 critic 的输入判断
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部