Deepracer 比赛
介绍背景比赛地图round - 1 赛事规则注意事项最终成绩关于本次比赛reward_function 策略策略实现Noted介绍背景
年公司再次组织Deepracer 比赛,这次是公司全球九个国家或地区比赛,分不同赛区。
比赛地图
round - 1
依旧是经典的赛事地图re:Invent 这一个中线长度为17.71 m
宽度为0.76m
的闭环地图。
赛事规则
跑三圈,取最快一圈的成绩,这里就有随机性,可以通过多次提交来刷新最佳成绩
注意事项
今年的规则与以往的不同,去年是三圈完成的总成绩今年每个比赛账号训练时长是固定的17小时,这个规则类似Student版本,时间用完之后不可以通过信用卡烧钱训练,这个对我这种平民玩家十分友好今年的赛事不能通过导入的方式来将其他模型导入,避免了在其他账号上训练,累积训练时长的bug最终成绩
单圈最快 -7.668s
关于本次比赛
刚开始的时候给每个比赛账号14小时的训练时长,后面又给了每个账号加了3个小时时长。
reward_function 策略
本次比赛的策略依旧采用的是:
全局奖励瞬时奖励位置以及角度奖励
策略实现
全局奖励完成度相同的情况下,所用步数越小奖励值越大,由于这个相当于是全局累加,这里使用了指数用来扩大奖励值
rewardStep = np.exp(2.5 * progress/steps) # rewardStep = np.exp((2.5 * progress/steps) ** 2)
这里要注意下progress/steps
边界值,不让让它过大或或过小,也就是要处理下起步
瞬时奖励
当 速度 小于 离心速度时,奖励值越大,当速度大于离心速度是,给予惩罚(负的奖励值)
rewardSpeed = np.exp((speed/speedk)**2)
位置及角度奖励
当小车当前位置离最佳路线位置越近,奖励值越高,车头与接下来几个点的夹角越小,奖励值越大
rewardDistance = np.exp(1 - distance/width)rewardAngle = np.exp(ANGLETHOLD/(steering+5))
Noted
当然你也可以根据你自己的理解编写你的reward_function,当然在clone 迭代中需要反复调整参数,比如通过分析log,发现training的平均速度上不去了,这时候需要适当增加速度的奖励,当完成度降低时增加rewardStep 的奖励值。通过来回的调整这些参数可以提高成绩,当成绩达到极限时完成度会变得很低,这是正常的,因为速度提高了,小车容易出圈。你要做的是根据比赛规则来调整你的策略,如果比赛成绩是按单圈最快,那就尽量提速,反正最终只要有一圈跑的足够快就行了,如果比赛成绩是按三圈总共时间,这时候你就需要考虑完成度,因为一次出圈罚3s
还是挺伤的。
>>> 如果你觉得我的文章对你有用,不妨 【点赞】 加 【关注】,你的支持是我持续写作的动力,thank you! <<<