MPE¶
警告
包 pettingzoo.mpe 已移至新的 MPE2 包,并将在 PettingZoo 的未来版本中移除。请更新您的导入为 mpe2。









多粒子环境 (MPE) 是一组面向通信的环境,其中粒子智能体可以(有时)移动、通信、相互看见、相互推搡,并与固定地标互动。
这些环境来自 OpenAI 的 MPE 代码库,并进行了一些小的修复,主要涉及默认将动作空间设为离散、保持奖励一致性以及清理某些环境的观测空间。
安装¶
这组环境的独特依赖项可以通过以下方式安装
pip install 'pettingzoo[mpe]'
用法¶
要使用随机智能体启动 Simple Tag 环境
from pettingzoo.mpe import simple_tag_v3
env = simple_tag_v3.env(render_mode='human')
env.reset()
for agent in env.agent_iter():
observation, reward, termination, truncation, info = env.last()
if termination or truncation:
action = None
else:
action = env.action_space(agent).sample() # this is where you would insert your policy
env.step(action)
env.close()
环境类型¶
Simple Adversary、Simple Crypto、Simple Push、Simple Tag 和 Simple World Comm 环境是对抗性的(“好”智能体获得奖励意味着“对抗性”智能体受到惩罚,反之亦然,尽管并非总是完全零和方式)。在大多数这些环境中,“好”智能体以绿色渲染,“对抗性”队伍以红色渲染。
Simple Reference、Simple Speaker Listener 和 Simple Spread 环境是合作性的(智能体必须共同努力实现目标,并根据自身成功和其他智能体的成功获得混合奖励)。
关键概念¶
地标:地标是环境中无法控制的静态圆形特征。在某些环境(如 Simple)中,它们是目的地,根据智能体与它们的距离影响智能体的奖励。在其他环境中,它们可能是阻碍智能体移动的障碍物。这些在每个环境的文档中有更详细的描述。
可见性:当一个智能体对另一个智能体可见时,另一个智能体的观测中包含第一个智能体的相对位置(在 Simple World Comm 和 Simple Tag 中,还包含第一个智能体的速度)。如果一个智能体暂时隐藏(仅在 Simple World Comm 中可能),则该智能体的位置和速度被设为零。
通信:某些环境中的某些智能体可以作为其动作的一部分广播消息(详见动作空间),该消息将被传输给允许看到该消息的每个智能体。在 Simple Crypto 中,此消息用于表示 Bob 和 Eve 已重建消息。
颜色:由于所有智能体都渲染为圆形,智能体只能通过颜色来被人识别,因此大多数环境中都描述了智能体的颜色。智能体无法观测到颜色。
距离:地标和智能体通常在地图上从 -1 到 1 之间均匀随机放置。这意味着它们通常相距约 1-2 个单位。在考虑奖励的尺度(通常取决于距离)和包含相对和绝对位置的观测空间时,记住这一点很重要。
终止¶
游戏在执行完 max_cycles
环境参数指定的周期数后终止。所有环境的默认值是 25 个周期,与原始 OpenAI 源代码一致。
观测空间¶
智能体的观测空间是一个向量,通常由智能体的位置和速度、其他智能体的相对位置和速度、地标的相对位置、地标和智能体的类型以及从其他智能体接收到的通信组成。具体的构成形式在环境文档中有详细说明。
如果一个智能体无法看到或观测到第二个智能体的通信,则第二个智能体不包含在第一个智能体的观测空间中,导致在某些环境中不同智能体具有不同的观测空间大小。
动作空间¶
注意:OpenAI 的 MPE 默认使用连续动作空间。
离散动作空间(默认)
动作空间是一个离散动作空间,表示智能体可以执行的移动和通信组合。可以移动的智能体可以选择 4 个基本方向或不执行任何操作。可以通信的智能体可以选择 2 到 10 个取决于环境的通信选项,这些选项会将消息广播给所有能听到它的智能体。
连续动作空间(通过 continuous_actions=True 设置)
动作空间是一个连续动作空间,表示智能体可以执行的移动和通信。可以移动的智能体可以在四个基本方向上分别输入介于 0.0 和 1.0 之间的速度,其中相反方向的速度(例如左和右)相加。可以通信的智能体可以在环境中每个可访问的通信通道上输出连续值。
渲染¶
渲染在一个窗口中显示场景,如果智能体超出边界,窗口会自动放大。通信在场景底部渲染。render()
方法也返回渲染区域的像素图。
引用¶
MPE 环境最初在以下工作中描述
@article{mordatch2017emergence,
title={Emergence of Grounded Compositional Language in Multi-Agent Populations},
author={Mordatch, Igor and Abbeel, Pieter},
journal={arXiv preprint arXiv:1703.04908},
year={2017}
}
但首次作为此工作的一部分发布
@article{lowe2017multi,
title={Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments},
author={Lowe, Ryan and Wu, Yi and Tamar, Aviv and Harb, Jean and Abbeel, Pieter and Mordatch, Igor},
journal={Neural Information Processing Systems (NIPS)},
year={2017}
}
如果您在研究中使用这些环境,请引用其中一项或两项。