一、任务描述
·必做:使用强化学习算法,解决MountainCar v0;
使用强化学习算法,解决MountainCarContinous v0
环境配置
python(3.6) + gym(0.15.4) + tensorflow(1.2.1) + keras(2.2.4)
二、算法设计
离散版本
问题背景
现有一小车在两座山峰之间的谷底,小车动力有限,无法直接登上右侧山峰,需要借助动能和势能之间的转化才能到达目的地。在离散版本的MountainCar中,小车的行为(action)是离散的,有向左、向右、静止三个选项,每个状态(state)下小车的观测值包含位置(position)和速度(velocity)两个方面,小车从-0.4—-0.6 之间的任意位置开始运动,在一个 episode步)内抵达 0.5 处即为成功,每走一步获得-1 的回报值。
Action | Push left | No push | Push right |
---|---|---|---|
Num | 0 | 1 | 2 |
State | Max | Min |
---|---|---|
Position | 0.6 | 1.2 |
Velocity | 0.07 | 0.07 |
-learning 算法
Q-learning 算法主要流程如图 1 所示,算法借助 Q 表完成,Q 表列出了在不同状态时采取不同行动的行动价值,需要在程序中不断更新。
在每个 episode 开始时初始化 Q 表,在每一步后更新 Q 表,Q-learning 中,行为策略采取 贪心策略,目标策略为贪心策略,从当前状态 S 下选择一个行动 A,有的概率随机选择,1 的概率选取价值最大的行动,获得的 Q 值作为 Q 估计,获得回报 R,进入下一状态S′;在S′状态下根据贪心策略选取最大价值的行动,该最大价值乘以回报因子γ,再加上之前的回报 R,作为 Q 现实;Q 现实减去 Q 估计,乘以学习率,作为误差更新 Q 表,其中学习率代表了从误差中学到新东西的能力。
图 1 Q-learning 算法
源码和文档都托管在了【WRITE-BUG数字空间】上面了,有需要的可自取~