文章目录(Table of Contents)
简介
这里介绍的是 OpenAI Gym
中的 LunarLander-v2
环境。这个环境的动作是离散的。LunarLander-v2
这个环境是在模拟登月小艇降落在月球表面时的情形。这个任务的目标是让登月小艇「安全地」降落在两个黄色旗帜间的平地上。
参考资料
OpenAI
中对该环境(LunarLander-v2
)的介绍:LunarLander-v2 环境介绍- 关于该环境(
LunarLander-v2
)的代码可以查看 Github 的链接,LunarLander-v2 代码介绍 - 利用
Actor-Critic
的方式来解决LunarLander-v2
:李宏毅机器学习2020 - 作业15:强化学习
LunarLander-v2 环境介绍
Obs 与 Action 介绍
该环境共有 8 个观测值(obs
),分别是:
- 水平坐标 x;
- 垂直坐标 y;
- 水平速度;
- 垂直速度;
- 角度;
- 角速度;
- 腿1触地;
- 腿2触地;
agent
可以采取四种离散的行动,分别是:
0
代表不采取任何行动2
代表主引擎向下喷射1, 3
则是向左右喷射
下面我们初始化环境,并随机选择一个动作与环境进行交互:
- import gym
- env = gym.make('LunarLander-v2')
- # 初始化环境
- initial_state = env.reset()
- print(initial_state)
- # 随机选择一个与环境交互
- random_action = env.action_space.sample()
- print(random_action)
- observation, reward, done, info = env.step(random_action)
- print(observation, reward)
Reward 介绍
「环境」给予的 reward
大致是这样计算:
- 小艇坠毁得到 -100 分;
- 小艇在黄旗帜之间成功着地则得 100~140 分;
- 喷射主引擎(向下喷火)每次 -0.3 分;
- 小艇最终完全静止则再得 100 分;
- 「腿 1」或是「腿 2」都能获得 10 分;
使用随机策略进行控制
上面介绍完 LunarLander-v2
环境的 Obs
,Action
和 Reward
,接下来我们使用随机的策略来控制一下 Agent
:
- import gym
- env = gym.make('LunarLander-v2')
- # 随机策略
- env.reset()
- done = False
- while not done:
- action = env.action_space.sample()
- observation, reward, done, _ = env.step(action)
- env.render(mode='rgb_array')
最终的运行的效果如下图所示:
报错 AttributeError: module 'gym.envs.box2d' has no attribute 'LunarLander'
如果出现报错 AttributeError: module 'gym.envs.box2d' has no attribute 'LunarLander'
,只需要安装 Box2D
就可以解决:
- pip install Box2D
如果在安装的过程中出现 swig
的错误,可以使用 conda
进行安装:
- conda install swig
- 微信公众号
- 关注微信公众号
- QQ群
- 我们的QQ群号
评论