文章目录(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群号
-







评论