OpenAI Gym ProcGen - 获取动作含义

OpenAI Gym ProcGen - Getting Action Meanings

在 OpenAI ProcGen gym 中,我没有办法获取动作值的含义,我可以看到使用 [=coinrun 环境有 15 个动作 env.action_space.n。 Gym和Gym3版本我都试过了

我是这样制作环境的(gym版)

env = gym.make('procgen:procgen-%s-v0'%('coinrun'))

这些似乎都不起作用。

env.action_spec()
env.env.get_action_meanings()

我曾尝试将 env 更改为 env.envenv.env.env,但没有任何效果。我收到消息:AttributeError: 'ToGymEnv' object has no attribute 'get_action_meanings'.

请告诉我如何获得带标签的动作列表。

对象类型:envToGymEnv 对象,env.env 是 ,env.env.envProcgenGym3Env

动作含义隐藏在procgen.env中的get_combos方法中。

def get_combos(self):
    return [
        ("LEFT", "DOWN"),
        ("LEFT",),
        ("LEFT", "UP"),
        ("DOWN",),
        (),
        ("UP",),
        ("RIGHT", "DOWN"),
        ("RIGHT",),
        ("RIGHT", "UP"),
        ("D",),
        ("A",),
        ("W",),
        ("S",),
        ("Q",),
        ("E",),
    ]

要从健身房 (procgen==0.10.4) 中创建的环境访问它们,您可以使用:

env = gym.make('procgen:procgen-%s-v0'%('coinrun'))
print(env.unwrapped.env.env.combos)

这将导致:

[('LEFT', 'DOWN'), ('LEFT',), ('LEFT', 'UP'), ('DOWN',), (), ('UP',), ('RIGHT', 'DOWN'), ('RIGHT',), ('RIGHT', 'UP'), ('D',), ('A',), ('W',), ('S',), ('Q',), ('E',)]

为了从 ProcgenEnv 访问它们,请使用:

env = procgen.ProcgenEnv(env_name='maze', num_envs=1)
print(env.env.combos)