Reinforcement Learning(强化学习)-LunarLander-v2 环境介绍

王 茂南 2021年11月2日07:23:42
评论
1341字阅读4分28秒
摘要本文会介绍 OpenAI 中 LunarLander-v2 这个环境。会分别介绍 Observation,Action 和 Reward 的含义。最后给一个随机的 policy,来控制一下 Agent 的移动。

简介

这里介绍的是 OpenAI Gym 中的 LunarLander-v2 环境。这个环境的动作是离散的LunarLander-v2 这个环境是在模拟登月小艇降落在月球表面时的情形。这个任务的目标是让登月小艇「安全地」降落在两个黄色旗帜间的平地上。

Reinforcement Learning(强化学习)-LunarLander-v2 环境介绍

参考资料

 

LunarLander-v2 环境介绍

Obs 与 Action 介绍

该环境共有 8 个观测值(obs),分别是:

  1. 水平坐标 x;
  2. 垂直坐标 y;
  3. 水平速度;
  4. 垂直速度;
  5. 角度;
  6. 角速度;
  7. 腿1触地;
  8. 腿2触地;

agent 可以采取四种离散的行动,分别是:

  1. 0 代表不采取任何行动
  2. 2 代表主引擎向下喷射
  3. 1, 3 则是向左右喷射

下面我们初始化环境,并随机选择一个动作与环境进行交互:

  1. import gym
  2. env = gym.make('LunarLander-v2')
  3. # 初始化环境
  4. initial_state = env.reset()
  5. print(initial_state)
  6. # 随机选择一个与环境交互
  7. random_action = env.action_space.sample()
  8. print(random_action)
  9. observation, reward, done, info = env.step(random_action)
  10. print(observation, reward)

 

Reward 介绍

「环境」给予的 reward 大致是这样计算:

  • 小艇坠毁得到 -100 分;
  • 小艇在黄旗帜之间成功着地则得 100~140 分;
  • 喷射主引擎(向下喷火)每次 -0.3 分;
  • 小艇最终完全静止则再得 100 分;
  • 「腿 1」或是「腿 2」都能获得 10 分;

 

使用随机策略进行控制

上面介绍完 LunarLander-v2 环境的 ObsActionReward,接下来我们使用随机的策略来控制一下 Agent

  1. import gym
  2. env = gym.make('LunarLander-v2')
  3. # 随机策略
  4. env.reset()
  5. done = False
  6. while not done:
  7.     action = env.action_space.sample()
  8.     observation, reward, done, _ = env.step(action)
  9.     env.render(mode='rgb_array')

最终的运行的效果如下图所示:

Reinforcement Learning(强化学习)-LunarLander-v2 环境介绍

 

报错 AttributeError: module 'gym.envs.box2d' has no attribute 'LunarLander'

如果出现报错 AttributeError: module 'gym.envs.box2d' has no attribute 'LunarLander',只需要安装 Box2D 就可以解决:

  1. pip install Box2D

如果在安装的过程中出现 swig 的错误,可以使用 conda 进行安装:

  1. conda install swig

 

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2021年11月2日07:23:42
  • 转载请务必保留本文链接:https://mathpretty.com/14212.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: