接上一篇gym初级——初始gym环境(一)
输出结果为
Discrete(2) Box(4,)意思是动作空间中的动作是离散(Discrete)的2个动作,状态空间中的状态是4维的数组
这一点我的输出和官网是不同的,我觉得这可能和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