如何确认OpenAI gym环境中可用的动作?

问题描述 投票:0回答:1

使用OpenAI gym时,在导入库后,使用 import gym,动作空间可以用 env.action_space. 但这只给出了动作空间的大小。我想知道动作空间的每个元素对应的动作是什么类型。有什么简单的方法吗?

reinforcement-learning openai-gym
1个回答
2
投票

如果你的动作空间是离散的、一维的。env.action_space 会给你 Discrete 对象。你可以像这样访问可用动作的数量(简单来说就是一个整数)。

env = gym.make("Acrobot-v1")
a = env.action_space
print(a)                    #prints Discrete(3)
print(a.n)                  #prints 3

如果你的动作空间是离散的和多维的,你会得到一个... MultiDiscrete (而不是 Discrete)对象,你可以在其上调用 nvec (而不是 n)来得到一个描述每个维度的可用动作数的数组。但请注意,这不是一个很常见的情况。

如果你有一个连续的动作空间。env.action_space 会给你 Box 对象。下面是如何访问它的属性。

env = gym.make("MountainCarContinuous-v0")
a = env.action_space
print(a)                    #prints Box(1,)
print(a.shape)              #prints (1,), note that you can do a.shape[0] which is 1 here
print(a.is_bounded())       #prints True if your action space is bounded
print(a.high)               #prints [1.] an array with the maximum value for each dim
print(a.low)                #prints [-1.] same for minimum value
© www.soinside.com 2019 - 2024. All rights reserved.