多智能体环境怎么调用?用 PettingZoo 对照 Parallel 与 AEC

运行石头剪刀布环境并核对同时行动和轮流调用的接口。提供演示输入、可核对结果和适用限制。

多智能体环境接口最容易混淆的是:一次 step 传一个动作,还是传所有当前智能体的动作字典。PettingZoo 用 AEC 和 Parallel 表达这两种交互方式。下面跑同一个石头剪刀布环境,只检查环境协议;固定出拳没有学习过程。

准备环境和动作含义

本例按 PettingZoo 1.27.0 的 make 接口编写,使用 Python 3.11。先在独立虚拟环境安装 pettingzoo==1.27.0 与 pygame==2.6.1。命令是 python -m pip install “pettingzoo==1.27.0” “pygame==2.6.1″。旧版本若不能导入 make,应查对应版本文档,不能混用入口。无渲染模式无需打开窗口。

多智能体环境怎么调用?用 PettingZoo 对照 Parallel 与 AEC

rps-v2 有 player_0、player_1 两个个体,动作 0/1/2 分别是石头/布/剪刀。观察值 3 表示尚没有对手上一轮动作;它不是第 4 个可选动作。玩家 0 固定出石头,玩家 1 固定出剪刀,完整回合的即时奖励应为 +1 和 -1。

Parallel 一次提交联合动作

保存为 parallel_rps.py,执行 python parallel_rps.py。reset 返回观察字典和信息字典;step 的五个返回值都是按个体名称组织的字典。循环按 env.agents 取当前仍在环境里的个体,不按历史 possible_agents 强行发送失效动作。

from pettingzoo import make
env = make("parallel", "classic/rps-v2", max_cycles=3)
observations, infos = env.reset(seed=7)
rounds = 0
while env.agents:
    actions = {a: (0 if a == "player_0" else 2) for a in env.agents}
    observations, rewards, terminated, truncated, infos = env.step(actions)
    rounds += 1
    print(rounds, dict(rewards), dict(truncated))
    assert rewards["player_0"] == 1 and rewards["player_1"] == -1
assert rounds == 3
env.close()

应有三轮,奖励每轮为 +1/-1,最后一轮因 max_cycles 达到而截断。不要把 truncation 当成“玩家输了”。如果出现无效动作错误,先核对 actions 的键和 action_space(agent),再看环境版本。

AEC 每次处理当前轮到的个体

下面是另一份独立脚本 aec_rps.py。AEC 先通过 agent_iter 得到当前个体,再用 last 读取它的观察和累计奖励。已终止或截断的个体要传 None,不能继续传出拳动作。last 里的奖励时点也不能直接当作 Parallel 同一轮返回值逐行比较。

from pettingzoo import make
env = make("aec", "classic/rps-v2", max_cycles=3)
env.reset(seed=7)
active_moves = 0
for agent in env.agent_iter():
    observation, reward, terminated, truncated, info = env.last()
    action = None if terminated or truncated else (0 if agent == "player_0" else 2)
    if action is not None:
        active_moves += 1
    env.step(action)
env.close()
print("active moves:", active_moves)
assert active_moves == 6

这里应有 6 次有效个体动作,对应三轮双方出拳。AEC 的轮流调用不等于游戏一定轮流决策;石头剪刀布仍是同时决策游戏,环境管理了动作收集时点。并非所有 AEC 环境都能无条件转换成 Parallel。确认接口后再接入策略网络,并另行验证训练、合法动作和回合结束逻辑。

资料与核对依据

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

赞 (0)
AI小管家的头像AI小管家
多智能体训练曲线怎么读?先分开每个体回报,再看团队均值
上一篇 1天前
强化学习智能体怎么训练?用 FrozenLake 跑通表格 Q-learning
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

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

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