基于路链的快速最短路径规划方法与流程

文档序号:12589181阅读:221来源:国知局
基于路链的快速最短路径规划方法与流程

本发明属于道路网络技术领域,特别是涉及一种最短路径规划方法,可用于车辆、步行导航。



背景技术:

对城市道路网进行最短路径分析,首先必须将现实中的城市道路网络实体抽象化为网络图论理论中的网络,现有技术通常基于“节点-路段”拓扑数据模型实现两者之间的相互映射,每一条自然道路被人为分割为若干条路段。这样做的不足之处是,首先,路径规划算法所需处理的数据单元较多,其次,规划出的出行路径由路段拼接而成,导致出行路径存在较多次转弯,不符合人们的出行规划经验。

刘康等人在其发表的论文“基于路网拓扑层次性表达的驾车路径规划方法”(《地球信息科学学报》2015年9月第17卷)中提出一种将路链应用于路径规划中的方法。该方法通过构建基于路链的对偶图来获取路链的拓扑结构指标,并将其赋予组成该路链的路段。综合考虑路段长度、路网拓扑结构特征及道路交通状态3个因素通过Dijkstra算法进行路径规划。该方法存在的不足之处是:首先,该方案只是将路链转换成路段的一个指标,用来反映路段的重要程度,但仍旧基于“节点-路段”的拓扑网络关系进行路径规划,没有考虑到基于“节点-路段”的拓扑网络关系会将每一条自然道路人为分割为若干条路段,进而导致算法处理数据单元较多,其次,该方法采用Dijkstra算法进行路径规划,并没有采用时间复杂度更低的A*算法。

重庆邮电大学在其申请的专利“基于二叉堆节点排序的A星寻路方法及系统”(公开号CN 104268420A,申请号CN 201410531309.3)中公开了一种基于二叉堆节点排序的A*寻路方法及系统。该方法在普通A*算法中引入堆排序,以此大幅提高A*算法执行效率。该方法虽然克服了传统A*算法需要频繁维护open和close表。但是,open表中元素过多,单次维护open表的时间较长,使得路径规划整体所用时间较长。



技术实现要素:

本发明目的在于针对上述现有技术的不足,提出一种基于路链的快速最短路径规划方法,以减少路径规划的所需时间以及减少规划出的路径的转弯次数。

本发明的技术方案是在现有A*算法的基础上进行改进,其实现步骤如下:

1)根据道路网生成节点拓扑表K,该节点拓扑表K包含节点的相邻节点、节点与相邻节点之间弧段的长度;

2)创建一张路链拓扑表U,用以保存路链的拓扑关系,该路链拓扑表U包含路链的相邻路链、路链与相邻路链的交点、路链所包含的节点以及相邻节点之间的距离;

3)通过节点拓扑表K中每一对相邻的节点生成路链,保存到路链拓扑表U,并将路链拓扑表U中以相同节点为端点且夹角大于120度的两条路链合并成一条新的路链,若多条路链与同一条路链夹角都大于120度,则选取夹角最大的两条路链组合成一条路链;

4)根据路链拓扑表U进行路径规划:

4.1)创建两张表:open表和closed表,其中closed表中用于保存已扩展过的路链,open表用于保存已生成尚未扩展的路链;

4.2)设路链s的数据结构包含前继路链pre、从初始节点到该路链的实际代价g、从该路链到目标节点最佳路径的估计代价h、从初始节点经由该路链到达目的节点的估计代价f;

4.3)确定步骤4.2)中g、h、f的值:

4.31)g值的确定:

若路链s是初始节点所在的路链,则路链s的g值为零,否则路链s的g值等于路链s的前继路链t的g值加上Δg,其中Δg是路链t上第一节点a和第二节点b之间路链的长度,其中第一节点a在路链t的前继路链不存在时,为路径规划的初始节点,否则为路链t的前继路链与路链t的交点,第二节点b为路链t与路链s的交点;

4.32)h的确定:

路链s的h值等于节点c到目标节点的欧式距离加上路链s上以第二节点b和第三节点c为端点的之间路链的长度,其中第三节点c是路链s上距离目标节点欧式距离最近的节点;

4.33)根据确定的g值和h值,得到f值为:f=g+h;

4.4)将初始节点n所在路链插入到open表,并计算其f值;

4.5)判断open表是否为空,若是,结束路径搜索,路径规划失败,未能规划出一条从初始节点到目标节点的路径,否则,执行步骤4.6);

4.6)从open表中选取f值最小的路链m放入到closed表内,再判断f值最小的路链m是否为目标节点所在的路链,若是,则结束搜索,输出路径,否则执行步骤4.7);

4.7)判断f值最小的路链m是否有相邻路链,若是,则将所有相邻路链存入集合r中,否则返回步骤4.6);

4.8)判断集合r是否为空,若是,则返回步骤4.6),否则,从集合r中取出一条相邻路链记为p;

4.9)判断相邻路链p是否存在于closed表中,若是,则返回步骤4.8),否则执行步骤4.10);

4.10)判断相邻路链p是否存在于open表中,若是,则执行步骤4.11),否则,将f值最小的路链m设置为该相邻路链p的前继路链,计算相邻路链p的f值,并将该相邻路链p添加到open表中,返回步骤4.8);

4.11)假设f值最小的路链m为相邻路链p的前继路链,计算相邻路链p的f值,判断在假设前提下的f值是否比4.10)步骤计算的f值大,若是,则返回步骤4.8),否则,更新路链p的f值为假设前提下的f值,且设置f值最小的路链m为该路链p的前继路链,返回步骤4.8)。

本发明具有如下优点:

1.本发明由于将节点拓扑表转换成路链拓扑表,依据路链拓扑表进行路径规划,减少了路径规划所需处理的数据单元,从而降低了路径规划所需的时间。

2.本发明的输出路径由于通过路链拼接而成,保持了道路的整体性和视觉上的连贯性,从而降低了输出路径中转弯的次数。

附图说明

图1为本发明使用的场景示意图;

图2为本发明的实现流程图。

具体实施方式

下面结合附图对本发明作进一步的描述。

参照图1,本发明具体实施方式的场景示意图中,其道路网由18个节点组成,即节点n1至n18,其中任意一对相邻节点之间的距离为1,路径规划的初始节点为节点n1,路径规划的目标节点为节点n18。

参照图2,对本发明的实现流程如下:

步骤1,生成节点拓扑表。

根据道路网生成节点拓扑表K,该节点拓扑表K包含节点的相邻节点、节点与相邻节点之间弧段的长度。

步骤2,创建路链拓扑表。

创建一张路链拓扑表U,用以保存路链的拓扑关系,该路链拓扑表U包含路链的相邻路链、路链与相邻路链的交点、路链所包含的节点以及相邻节点之间的距离。

所述路链,是指一条自然延伸的不被割断的道路,是道路自然形态的基本单元。

所述相邻路链,是指与路链有且仅有一个交点的路链。

步骤3,构建路链,并存入路链拓扑表

通过节点拓扑表K中每一对相邻的节点生成路链,保存到路链拓扑表U,并将路链拓扑表U中以相同节点为端点且夹角大于120度的两条路链合并成一条新的路链,若多条路链与同一条路链夹角都大于120度,则选取夹角最大的两条路链组合成一条路链。

本实例参照图1,通过节点拓扑表K中的18对相邻节点生成18条初始路链为:第一条路链(n1,n2)、第二条路链(n2,n3)、第三条路链(n3,n4)、第四条路链(n4,n5)、第五条路链(n5,n6)、第六条路链(n6,n7)、第七条路链(n7,n8)、第八条路链(n8,n9)、第九条路链(n9,n18)、第十条路链(n9,n16)、第十一条路链(n9,n17)、第十二条路链(n10,n3)、第十三条路链(n3,n11)、第十四条路链(n12,n11)、第十五条路链(n13,n12)、第十六条路链(n12,n14)、第十七条路链(n14,n7)和第十八条路链(n7,n15),并将这18条初始路链存放到路链拓扑表U中;

路链拓扑表U中的第一条初始路链(n1,n2)与第二条初始路链(n2,n3)均以节点n2为端点且夹角为180度,因此将第一条初始路链(n1,n2)与第二条初始路链(n2,n3)进行合成,得到一次合成后的第一条路链(n1,n2,n3),该一次合成后的第一条路链(n1,n2,n3)与第三条初始路链(n3,n4)均以节点n3为端点且夹角为180度,因此将一次合成后的第一条路链(n1,n2,n3)与第三条初始路链(n3,n4)再进行合成,得到一次合成后的第二条路链(n1,n2,n3,n4),同理,将该一次合成后的第二条路链(n1,n2,n3,n4)与第四条初始路链(n4,n5)再进行合成,得到一次合成后的第三条路链(n1,n2,n3,n4,n5),因为该一次合成后的第三条路链(n1,n2,n3,n4,n5)与其他路链均不满足合成的条件,所以将该一次合成后的第三条路链(n1,n2,n3,n4,n5)作为第一条最终路链。以此类推,经过二次、三次和四次合成,分别得到第二条最终路链(n5,n6,n7,n8,n9)、第三条最终路链(n10,n3,n11,n12)和第四条最终路链(n13,n12,n14,n7,n15);

第九条初始路链(n9,n18),第十条初始路链(n16,n9)和第十一条初始路链(n17,n9)均以节点n9为端点,第九条初始路链(n9,n18)与第十条初始路链(n16,n9)的夹角为180度,第九条初始路链(n9,n18)与第十一条初始路链(n17,n9)的夹角为170度,依据选取夹角最大的两条路链合成一条路链的原则,将第九条初始路链(n9,n18)与第十条初始路链(n16,n9)进行合成,得到五次合成后的第一条路链(n16,n9,n18),因为该五次合成后的第一条路链(n16,n9,n18)与其他路链均不满足合成的条件,所以将该五次合成后的第一条路链(n16,n9,n18)作为第五条最终路链,同理,因为第十一条初始路链(n17,n9)与其他路链均不满足合成的条件,所以将第十一条初始路链(n17,n9)作为第六条最终路链。

步骤4,创建open表和closed表。

创建两张表:一张是open表,另一个是closed表,其中closed表中用于保存已扩展过的路链,open表用于保存已生成尚未扩展的路链。

步骤5,构建路链的数据结构。

5.1)设路链s的数据结构包含前继路链pre,并设从初始节点到该路链的实际代价值为g、从该路链到目标节点最佳路径的估计代价值为h、从初始节点经由该路链到达目的节点的估计代价值为f;

5.2)确定5.2)中的g、h、f值:

5.21)g值的确定:

若路链s是初始节点所在的路链,则路链s的g值为零;否则,路链s的g值等于路链s的前继路链t的g值加上Δg,其中Δg是路链t上第一节点a和第二节点b之间路链的长度,第一节点a在路链t的前继路链不存在时,为路径规划的初始节点,否则为路链t的前继路链与路链t的交点,第二节点b为路链t与路链s的交点;

5.22)h值的确定:

路链s的h值等于节点c到目标节点的欧式距离加上路链s上以第二节点b和第三节点c为端点的之间路链的长度,其中第三节点c是路链s上距离目标节点欧式距离最近的节点;

5.23)根据确定的g值和h值,得到f值为:f=g+h。

步骤6,初始化open表。

首先将初始节点n所在路链插入到open表,再依据公式f=d+e计算出初始节点n所在路链的f值,其中d为初始节点n所在路链上初始节点与第三节点c之间路链的长度,e为第三节点c到目标节点的欧式距离。

本实施例参照图1,首先将第一条最终路链(n1,n2,n3,n4,n5)插入open表,再依据公式f=d+e计算出该第一条最终路链的f值,其中d为该第一条最终路链上节点n1与节点n5之间路链的长度,等于4,e为节点n5到目标节点n18的欧式距离,等于因此第一条最终路链(n1,n2,n3,n4,n5)的f值等于

步骤7,维护open表和closed表,划分路径。

7.1)判断open表是否为空,若是,结束路径搜索,路径规划失败,否则,执行步骤7.2);

7.2)从open表中选取f值最小的路链m放入到closed表内,再判断f值最小的路链m是否为目标节点所在的路链,若是,则结束搜索,输出路径,否则,执行步骤7.3);

7.3)判断f值最小的路链m是否有相邻路链,若是,则将所有相邻路链存入集合r中,否则,返回步骤7.1);

7.3)判断集合r是否为空,若是,则返回步骤7.1),否则,从集合r中取出一条相邻路链记为p;

7.4)判断相邻路链p是否存在于closed表中,若是,则返回步骤7.3),否则,执行步骤7.5);

7.5)判断相邻路链p是否存在于open表中,若是,则执行步骤7.7),否则,将f值最小的路链m设置为该相邻路链p的前继路链,并将该相邻路链p添加到open表中,执行步骤7.6);

7.6)计算路链p的f值:

7.61)获得路链p的前继路链m,判断该前继路链m是否存在自己的前继路链mf,若存在,则将m的前继路链mf与p的前继路链v的交点记为第一节点a,否则,将路径规划的初始节点记为第一节点a;

7.62)将路链p的前继路链m与路链p的交点,记为第二节点b,并计算路链m上第一节点a与第二节点b之间路链的长度i;

7.63)将路链p上距离目标节点欧式距离最近的节点,记为第三节点c,并计算路链p上第二节点b和第三节点c之间路链的长度j,以及第三节点c到目标节点的欧式长度x;

7.64)将路链m的g值记为mg,得出路链路链p的f值,即:f=i+x+j+mg,最后返回步骤7.3);

7.7)假设f值最小的路链m为相邻路链p的前继路链,计算相邻路链p的f值:

7.71)判断f值最小的路链m是否存在自己的前继路链mf,若存在,则将路链m的前继路链mf与路链m的交点记为第一节点a,否则,将路径规划的初始节点记为第一节点a;

7.72)将路链m与路链p的交点记为第二节点b,并计算路链m上第一节点a与第二节点b之间路链的长度z;

7.73)将路链p上距离目标节点欧式距离最近的节点记为第三节点c,并计算路链p上以第二节点b和第三节点c为端点的之间路链的长度q,以及第三节点c到目标节点的欧式长度y;

7.74)将路链m的g值记为mg,得出假设前提下路链路链p的f值,即:f=z+q+y+mg,执行步骤7.8);

7.8)判断在假设前提下的路链p的f值是否比路链p实际的f值大,若是,则返回步骤7.3),否则,令路链p的f值为假设前提下的f值,且设置f值最小的路链m为该路链p的前继路链,返回步骤7.3)。

以上描述的仅是本发明的一个具体实例,不构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1