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

王 茂南 2021年10月19日07:19:17
评论
1650字阅读5分30秒
摘要本文会介绍 OpenAI 中 MountainCar-v0 这个环境。主要介绍其中 action 和 observation 分别是什么。以及最后给一个简单的 policy,可以使得小车完成任务。

简介

这里介绍一个 OpenAI 中的环境,MountainCar-v0。该环境是一辆汽车在一维轨道上,位于两座「山」之间。目标是在右边开车上山;然而,这辆车的引擎不够强劲,无法一次性翻越这座山。因此,成功的唯一方法是来回驱动以积聚动力。

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

参考资料

 

MountainCar 环境介绍

Action 与 Observation 介绍

MountainCar-v0 环境中,action 是离散值,有三个不同的选项,分别是 0 表示「向左行驶」,1 表示「停止」,2 表示「向右行驶」。我们可以用下面的 dict 来表示:

  1. actions = {'left': 0, 'stop': 1, 'right': 2}

Observation 由两个值表示,分别是 position, velocity,表示「小车当前的位置」和「小车当前的速度」。其中:

  • 关于 position,最左侧的位置为 -1.2,最右侧的值为 0.6,谷底是 -0.5
  • 关于 velocity,向右侧行驶速度为「正」,左侧为「负」。这里速度的取值为 [-0.07, 0.07]

 

使用 Toy Policy 完成任务

我们尝试定义一个非常简单的策略,来帮助小车达到「右侧山顶」。策略整体的思路很简单:

  • 当小车在向右移动的时候
    • 当到达「右侧一定高度」,且无法继续上升的时候,则向左移动;
    • 其他时候都向右移动;
  • 当小车向左移动的时候:
    • 当到达「左侧一定高度」,且无法继续上升的时候,则向右移动;
    • 其他时候都向左移动;

于是根据上面的思路我们可以完成下面的策略:

  1. def policy(obs, t):
  2.     actions = {'left': 0, 'stop': 1, 'right': 2}
  3.     position, velocity = obs
  4.     # 相当于可以左右运动, 利用惯性使得车辆向上移动
  5.     if velocity>=0: # velocity>=0 表示车辆正在向右移动
  6.         if (position>-0.5) and (abs(velocity)<0.01): # 当到达右侧一定位置无法向右时, 则向左
  7.             return actions['left']
  8.         else:
  9.             return actions['right']
  10.     elif velocity<0: # velocity<0 表示车辆正在向左移动
  11.         if (position<-0.7) and (abs(velocity)<0.01): # 当到达左侧一定位置无法向左时, 则向右
  12.             return actions['right']
  13.         else:
  14.             return actions['left']

我们尝试使用上面的策略与环境进行交互:

  1. obs = env.reset()
  2. TIME_LIMIT = 200
  3. for t in range(TIME_LIMIT):
  4.     action = policy(obs, t)  # Call your policy
  5.     obs, reward, done, _ = env.step(action)  # Pass the action chosen by the policy to the environment
  6.     env.render()
  7.     if done:
  8.         print("Well done!")
  9.         break
  10. else:
  11.     print("Time limit exceeded. Try again.")

最终的效果如下所示,可以看到车辆最终达到「右侧山顶」:

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

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

发表评论

匿名网友 填写信息

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