尝试利用PARL框架,解决GYM的'CarRacing-v0'问题。
GYM BOX2D CarRacing-v0
print(env.observation_space)
print(env.action_space)
Box(96, 96, 3)
Box(3,)
observation_space,长宽为96,通道数为3。 action_space,3个连续值,分别表示方向,加速,减速。
车每驶过一小段未经过的路,得到约3的奖励值。 每一帧得到约0.1的惩罚值。 车驶出场地边界,将得到100惩罚值。
计划分为三个解决方案
- 方案一
问题最简化,易训练,但跑完一局的时间可能比较长。
默认开局前N帧加速,之后速度保持不变。 这样Agent的决策空间简化为前进,左转,右转,三个离散值。 训练难度下降,但是由于速度不变,不会拿到高分。 本方案为了加速训练,增加了一个惩罚条件。连续若干帧拿不到正值的时候,手动给一个负值。也就是说,当车离开路的时候,会更早拿到惩罚。
observation的处理上,首先,去掉96*96下面的非地图部分,高变为84。然后把图片缩小为原来的3分之1,高28,宽32。接下来,把赛道以外的深浅两种绿色像素替换为黑色,并把通道数降成1。最后把黑色以外的像素替换成白色,预处理完成。
- 方案二
方案一的基础上增加动作,训练难度增加,跑完一局的时间应该可以缩短。
增加加速,减速等动作,决策空间增加到七个离散值。 还在训练中。
- 方案三
利用最原本的动作空间训练,目前难以收敛,还需要调整。
- 方案一
左转控制比较好,部分右转情况控制还不理想。
- 方案二
训练中,敬请期待。
- 方案三
计划中,敬请期待。