官网:http://gym.openai.com/envs/#classic_control
经典应用1:CartPole-v1
CartPole在OpenAI的gym模拟器里面。游戏里面有一个小车,车上有一根杆子。小车需要左右移动来保持杆子竖直。如果杆子的倾斜的角度大于15度,游戏结束。小车也不能移出一个范围(中间到两边各2.4个单位长度),如下图所示:
物理图解:
在gym的Cart Pole环境(env)里面,左移或右移小车的action之后,env都会返回一个+1的reward。到达200个reward之后,游戏也会结束。
环境状态:
初始状态:
四个环境观测值,从U(-0.05,0.05)中随机抽取
动作:
奖励:
每一步的奖励都是1,包括最后一步
终止条件:
杆子的倾斜角度大于15度
小车的位移大于+(-)2.4
奖励达到200
经典应用2:Pendulumn-v0
倒立摆是强化学习的一个经典问题。在这个问题中,钟摆开始在一个随机位置,我们的目的是左右摆动它,让他保持直立。
状态:
Pendulum 的角度(sin和cos)和角速度,记为th和thdot
动作空间:
对于Pendulum问题来说,action space只有一个维度,就是电机的控制力矩,且有最大值和最小值的限制
奖励:
reward = -costs
costs包含三项:
1)angle_normalize(th)**2 对于当前倒立摆与目标位置的角度差的惩罚
2) .1*thdot**2 对角速度的惩罚,如果我们在到达目标之后,如果还有较大的速度,就会过去,不会保持竖直
3) .001*(u**2) 对输入力矩的惩罚,所使用的力矩越大,惩罚越大
经典应用3:MountainCarContinuous环境
一辆汽车位于两个山脉之间的轨道上。目标是在右侧上山,但是这个?的发动机动能不够,不能一次成功爬山。所以,要想爬山的途径就是来回驱动,来建立动力,如下图所示:
连接:https://gym.openai.com/envs/MountainCar-v0/
Step函数
状态
从上图中可以看出,小车的状态包括位置(position)和速度(velocity)
observation space与state space一致,包括位置和速度,二者都有上下限,如下图所示:
而action space是一维的,前进或倒车。要让小车到右手边的山峰,所以goal_position为0.5,这是相对初始位置(最低点)而言的,最低点position为0,向左为负,向右为正。
每执行一个step,就会检查看自己是否越过右边的山峰,据此来给done赋值,如果没有越过山峰,则在这一个step,reward将会记为-1
其它经典应用
Gym Box2D
LunarLander
CarRacing
Atari 2600
Pong :http://www.ponggame.org/
参考连接:https://blog.csdn.net/cuiwader/article/details/77483363
实现demo如下所示:
有需要demo的可自行下载哈,github地址:https://github.com/wangtao666666/Reinforcement-Learning