多车轨道路径规划算法设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多车轨道路径规划算法设计
场景:多车,⾛最顶层轨道⽅格,⽴⽅仓,多车共同取货。

单车路径规划算法选择
常⽤的最短路径规划算法是Dijkstra、A*、D*算法。

Dijkstra算法效率低,D*是对A*的优化版本,减少计算量,区别在于D*以终点为搜索开始点,适合环境变化的场景。

优化在于,障碍物变更,可以利⽤之前的部分计算结果,离终点越远,需要重新计算的计算量越⼩。

由于项⽬场景最⾼是100*100的⽅格,A*已经⾜够,⽽且A*的路径更为优化,所以最终选择使⽤A*算法。

多车运动实现⽅法
多车运动需要考虑的问题是如何不卡死,问题类似于死锁,容易想到的算法是银⾏家算法、优先级;每量车将要⾛下⼀步之前预判是否完成任务,如果不能,停⽌分配新空间。

使⽤这个⽅法可以避免绝⼤多数情况的多车互卡的问题。

只是有两个问题:1.少数情况卡死;2.效率低,远处的阻塞也会带来⼩车等待
问题1是因为多车运动场景和死锁的场景不同,⽆论如何⼩车都会占⽤⼀定的空间,所以如果互邻的车想⾛向对⽅位置,会发⽣互卡,为了避免卡死,选择卡死时间过长会产⽣随机运动的策略避免问题。

多车运动路径规划最优解
多车运动涉及到多辆⼩车的互相影响,阻塞等情况。

如何寻找最优解。

理论上最优解只有两种可能,第⼀种是公式,直接算出,第⼆种是穷举法。

多车运动,是复杂场景,没有公式直接算出。

是需要根据当时情况随时会变化。

⽽每辆车,每⼀秒运动轨迹是(上、下、左、右、不动、取货/放置)六种可能的状态。

假设完成⼀个任务可能需要10秒,假如总共5辆车,以⼀秒为时间单位,需要穷举的可能性是6的5次⽅的10次⽅,也就是8*10的38次⽅,远远超过计算机运算能⼒,故最优解⽆法实现。

当前⼈类⾯对最优解不存在,⼜不想陷⼊局部最优,所选择的⽅法原理都⼀致:使⽤随机数。

例如:蚁群算法、退⽕算法、粒⼦算法、遗传算法还有AlphaGo使⽤的蒙特卡洛随机树,本质都是加⼊⼀定的随机数。

所以为了避免多车运动陷⼊局部最优卡死,必须引⼊随机数。

引⼊随机数带来效率问题
引⼊随机数会导致⼩车很容易发⽣随机运动,重复来回移动,影响效率。

为了增加效率⼜不能陷⼊卡死困境,所以引⼊程序逻辑,尽量避免随机运动:1.通过随机数加权(类似蒙特利尔随机树),同⼀任务⾛过的路,随机⽐重更低,有其他车路径的路,随机⽐重更低;2.通过程序逻辑设计,优先采取预设定会车策略,例如两车相向⾏驶,互相阻塞前进道路,先辆车左旋尝试避让,失败了右旋避让……预设策略都失败了,再使⽤随机防卡死设计。

交通阻塞问题-时间⽚
多车同时⾛,由于算法⼀致,容易发⽣都⾛⼀条路问题,为了避免交通拥堵,对每个⽅格做时间⽚设计,在a*算法时,对不同⽅向做⼀定的加权,拥堵路段权重更低,同时对⾛直线进⾏直线加速,⾛直线权重更⾼。

相关文档
最新文档