gym初级——初始gym环境(二)

描述

接上一篇gym初级——初始gym环境(一)

代码

动作空间和状态空间的数据类型

import gym
env = gym.make('CartPole-v0')
print(env.action_space)
print(env.observation_space)

输出结果为

Discrete(2)
Box(4,)

意思是动作空间中的动作是离散(Discrete)的2个动作,状态空间中的状态是4维的数组

动作空间和状态空间的数据大小

import gym
env = gym.make('CartPole-v0')
print(env.observation_space.high)       
print(env.observation_space.low)

这一点我的输出和官网是不同的,我觉得这可能和python和gym版本相关,没有去纠结

[4.8000002e+00 3.4028235e+38 4.1887903e-01 3.4028235e+38]
[-4.8000002e+00 -3.4028235e+38 -4.1887903e-01 -3.4028235e+38]

官网的是

array([ 2.4, inf, 0.20943951, inf])
array([-2.4, -inf, -0.20943951, -inf])

不过看到这里,我比较怀疑我上一篇的结论了,看这个数据大小,在上一篇文章我说数据是[小车速度,小车加速度,单摆角速度,单摆角加速度],这里看起来速度和加速度应该是相反的,应该是加速度在前,速度在后更合理,这个还需要后期实际开发再研究

判断一个数据是否在动作空间和状态空间中

我们在实际使用中,难免会遇到这种情况:我有一个数据,想判断它是否在动作空间和状态空间中

官网的示例程序是这样的

from gym import spaces
space = spaces.Discrete(8) # 生成了一个离散空间,空间中的数是{0, 1, 2, ..., 7}
x = space.sample() # 从中随机采样
assert space.contains(x) # 判断x是不是在space中
assert space.n == 8  # space的大小是不是8

那么我们在gym里应该怎么用呢,就比较简单了

import gym
env = gym.make('CartPole-v0')
assert env.action_space.contains(0)
assert env.action_space.n == 2
assert env.observation_space.contains([0,0,0,0])
assert env.observation_space.shape[0] == 4

你可能感兴趣的:(强化学习,人工智能,强化学习算法)