简单加密

../../../_images/mpe_simple_crypto.gif

警告

环境 pettingzoo.mpe.simple_crypto_v3 已迁移到新的 MPE2 包,并将在未来版本中从 PettingZoo 中移除。请将你的导入更新为 mpe2.simple_crypto_v3

此环境是 MPE 环境 的一部分。请先阅读该页面以获取一般信息。

导入

from pettingzoo.mpe import simple_crypto_v3

动作

离散/连续

Parallel API

手动控制

智能体

agents= [eve_0, bob_0, alice_0]

智能体

2

动作形状

(4)

动作值

离散(4)/Box(0.0, 1.0, (4))

观测形状

(4),(8)

观测值

(-inf,inf)

状态形状

(20,)

状态值

(-inf,inf)

在此环境中,有 2 个善良的智能体(Alice 和 Bob)和 1 个对抗智能体(Eve)。Alice 必须通过公共信道向 Bob 发送一个私有的 1 位消息。如果 Bob 重建了消息,Alice 和 Bob 将获得 +2 的奖励;如果 Eve 重建了消息,他们将获得 -2 的奖励(如果双方都重建了该位,总奖励为 0)。如果 Eve 无法重建信号,则奖励为 -2;如果可以,则奖励为 0。Alice 和 Bob 拥有一个私钥(在每个回合开始时随机生成),他们必须学习使用该私钥来加密消息。

Alice 观测空间:[message, private_key]

Bob 观测空间:[private_key, alices_comm]

Eve 观测空间:[alices_comm]

Alice 动作空间:[say_0, say_1, say_2, say_3]

Bob 动作空间:[say_0, say_1, say_2, say_3]

Eve 动作空间:[say_0, say_1, say_2, say_3]

对于 Bob 和 Eve,会检查他们的通信内容是否是 Alice 试图传达的那个 1 位信息。

参数

simple_crypto_v3.env(max_cycles=25, continuous_actions=False, dynamic_rescaling=False)

max_cycles:游戏终止前的帧数(每个智能体的一步)

continuous_actions:智能体的动作空间是离散(默认)还是连续

dynamic_rescaling:是否根据屏幕大小重新缩放智能体和地标的大小

用法

AEC

from pettingzoo.mpe import simple_crypto_v3

env = simple_crypto_v3.env(render_mode="human")
env.reset(seed=42)

for agent in env.agent_iter():
    observation, reward, termination, truncation, info = env.last()

    if termination or truncation:
        action = None
    else:
        # this is where you would insert your policy
        action = env.action_space(agent).sample()

    env.step(action)
env.close()

Parallel

from pettingzoo.mpe import simple_crypto_v3

env = simple_crypto_v3.parallel_env(render_mode="human")
observations, infos = env.reset()

while env.agents:
    # this is where you would insert your policy
    actions = {agent: env.action_space(agent).sample() for agent in env.agents}

    observations, rewards, terminations, truncations, infos = env.step(actions)
env.close()

API

class pettingzoo.mpe.simple_crypto.simple_crypto.raw_env(max_cycles=25, continuous_actions=False, render_mode=None, dynamic_rescaling=False)[source]