异构多智能体强化学习怎么建模?先核对观察与动作维度

为不同角色建立各自空间并检查错误的共享输出。提供演示输入、可核对结果和适用限制。

异构多智能体指各个体可能有不同能力、角色或观察动作空间。最先需要解决的是输入输出契约。下面用车辆和仓库控制器的自造接口,说明为什么直接把同一个动作整数发给两人可能出错;不声称已训练配送系统。

把角色差异写成空间表

角色 观察示例 动作编号 含义
truck [2, 1, 0.6] 0..4 等待、上、下、左、右
depot [3, 1] 0..1 暂停派单、允许派单

车辆观察是 x、y、剩余电量,仓库观察是待派单数和可用车数;同样编号 1,在两人动作中含义完全不同。PettingZoo Parallel 允许个体拥有不同的观察和动作空间。RLlib 的多智能体配置则需要把个体映射到适当的策略,不能只按 agent 名称数量建一个任意输出层。

异构多智能体强化学习怎么建模?先核对观察与动作维度

先用普通函数检查契约

保存 spaces_check.py 后运行 python spaces_check.py。这不是 Gymnasium 空间对象的替代品,而是接入前最小的形状与取值核对。输入是一个当前观察字典和动作字典,完整训练环境还需检查数据类型、数值边界和动作掩码。

spec = {"truck": (3, 5), "depot": (2, 2)}
observations = {"truck": [2, 1, 0.6], "depot": [3, 1]}
def validate(actions):
    assert set(actions) == set(spec)
    for agent, (obs_dim, action_count) in spec.items():
        assert len(observations[agent]) == obs_dim
        action = actions[agent]
        assert type(action) is int and 0 <= action < action_count
validate({"truck": 4, "depot": 1})
try:
    validate({"truck": 4, "depot": 4})
except AssertionError:
    print("rejected: depot action 4 is invalid")
else:
    raise RuntimeError("invalid action accepted")

应拒绝 depot 的动作 4。若把车辆五维 logits 直接交给仓库,选择到 4 会违反仓库动作域;截断向量也不自动保留概率分布和动作语义。先确定角色自己的输出和解码器,再考虑共享可兼容的编码层。

三种可讨论的策略组织

不同角色各用一套策略,结构清楚,成本是参数和样本需求增加。共享部分特征编码、再接角色专属输出头,可以复用信息但需要明确输入编码。统一填充观察并加角色标记、动作掩码,也是可设计方案,但填充值不能与真实零值混淆,掩码必须禁止不存在的动作。它们都是建模选择,不是无需验证的通用技巧。

集中训练可以使用联合信息,分散执行时每个角色只能依靠可获得的信息;训练特征不能把执行端没有的全局数据偷偷带入。验证时先各跑一回合合法固定动作,再在角色缺席、退出或数量变化时检查字典键与映射。

本例只演示静态两角色空间检查,没有运行策略优化。真实任务还要验证角色之间的时间同步、通信限制、奖励与目标;输入输出合法也不代表协作策略有效。

资料与核对依据

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

赞 (0)
AI小管家的头像AI小管家
多智能体强化学习框架怎么选?分清 Gymnasium、PettingZoo 与 RLlib
上一篇 19小时前
多智能体马尔可夫决策怎么表示?用双车移动写出联合转移
下一篇 19小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

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

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