文章目录(Table of Contents)
简介
本文介绍 OpenAI Gym
中的一个 Atari
游戏,Pong
。这个游戏内容非常简单,控制板击打对方打过来的求,谁没有接住设就算输(类似于乒乓球)。获胜的一方获得 1 个积分,当谁先到 21 分则游戏结束。
如果想要能正常运行 Atari
游戏,需要按照下面一样进行安装:
- pip install 'gym[atari]'
- pip install 'gym[accept-rom-license]'
参考资料
Pong Game
的在线版本(可以尝试一下),Pong Game OnlineOpenAI Gym
对Pong-v0
的介绍,OpenAI Gym Pong-v0OpenAI Gym
对Pong-ram-v0
的介绍,OpenAI Gym Pong-ram-v0Pong-v0
和Pong-ram-v0
在Github
上的测试,Pong-v0 Introduce Github
Pong 环境介绍
在 gym
中,会有 Pong-v0
和 Pong-v4
,这两者的区别是,带有 v0
的 env
表示会有 25%
的概率执行上一个 action
,而 v4
表示只执行 agent
给出的 action
,不会重复之前的 action
。
Obs 和 Action 的介绍
该环境的观测(obs
)值为一个 2101603
的图像,表示游戏的画面。而动作是六种离散的动作:
- import gym
- env = gym.make("Pong-v0")
- # 查看 obs
- print(env.observation_space.shape)
- # (210, 160, 3)
- # 查看 action
- print(env.action_space)
- # Discrete(6)
我们可以通过 env.unwrapped.get_action_meanings()
拿到每一个 action
的含义,其中的六个动作含义分别如下:
- env.unwrapped.get_action_meanings()
- # ['NOOP', 'FIRE', 'RIGHT', 'LEFT', 'RIGHTFIRE', 'LEFTFIRE']
其实只有三个有效的动作,分别是左,右和不动(其中 Left
和 Leftfire
是一样的,Right
和 Rightfire
是一样的,Noop
和 Fire
是一样的)。
Reward 的介绍
在 Pong-v0
中,reward
的设计十分简单。获胜则 reward=1
,失败则 reward=-1
,否则 reward=0
。
使用随机策略进行游戏
上面介绍完 Pong-v0
的 obs
,action
和 reward
。下面使用随机策略来简答测试一下:
- import gym
- env = gym.make("Pong-v0")
- env.reset()
- env.render()
- # 随机策略
- env.reset()
- done = False
- while not done:
- action = env.action_space.sample()
- observation, reward, done, _ = env.step(action)
- print('obs: {}; reward: {}'.format(observation.shape, reward))
- env.render()
最终的效果如下所示:
Pong-ram-v0 环境
Pong-ram-v0
和 Pong-v0
两个环境只有 obs
是不相同的,其他的包括 action
和 reward
都是相同的。在 Pong-ram-v0
中,observation
是 RAM of the Atari machine, consisting of (only!) 128 bytes。所以 observation
的长度为 128
,每个值的取值范围为 0-255
。
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论