本发明涉及路径导航规划技术领域,具体为一种大规模路网的分块预处理路径规划方法。
背景技术:
目前现有的大规模路网的路径规划技术中,通常采用a*与dijkstra算法或其变体为基础规划算法,并辅以预处理方法提高计算效率。所谓预处理方法,是指对路网数据进行预先计算处理,将得到的计算结果保存为预处理数据,在路径规划计算时使用,以加快路径规划计算速度的方法。
目前一般使用的预处理方法包括:alt算法,c-h算法,h-h算法等,目前使用的预处理规划算法均是对整体路网进行计算和处理的方法,即使仅有局部范围内的少量道路发生变化,也需要重新生成所有预处理数据,在大规模路网应用中需要花费较长的时间,影响了数据更新效率,同时也不利于数据按区域更新。
为此,我们提出一种大规模路网的分块预处理路径规划方法。
技术实现要素:
本发明的目的在于提供一种大规模路网的分块预处理路径规划方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种大规模路网的分块预处理路径规划方法,包括分块路网,分块路网包括数据预处理阶段与利用预处理数据的加速路径规划阶段,数据预处理阶段包括将整体路网中的所有路段进行分块,即划分为若干独立局部路网,每一个局部路网称为一个路块,路块可根据行政区划或者其它给定的划分方式进行,路块为部分或完全连通的独立路网,可以对最短路径进行计算。
进一步的,最短路径计算可采用a*或dijkstra算法,分块完成后,整体路网中的任意路段都属于某一路块;
路网中的任意节点,若其连接的所有路段都属于同一路块,则节点为该路块的内部节点;
否则节点为路块边界节点,若其连接的路段可进入某一路块,则称节点为该路块的入口,若其连接的路段可离开某一路块,则称节点为该路块的出口。
进一步的,数据预处理阶段还包括路径规划数据预处理,对于任意一个路块的预处理方法如下:
对于路块的每一入口,应用dijkstra算法在路块内部计算从该节点到路块所有出口的最优路,保存计算得到的各最优路径以及代价;
所有入口计算完成后即得到该路块内部所有入口到所有出口两两最优路数据,将该数据保存为该路块的预处理数据文件;
路块预处理仅与路块内数据相关,当进行地图数据增量更新时,仅对发生更新的路块重新进行预处理即可。
进一步的,路径规划阶段包括根据路径规划起点和终点的位置,确定起点、终点所属的路块,如果起点、终点位于同一路块,则直接通过a*算法利用整体路网数据计算出最优路径,否则继续下一步。
进一步的,在起点路块内进行路块内规划计算包括在路块内部,通过dijkstra算法计算从起点到路块所有出口的最优路及其代价,得到正向拓展节点集合。
进一步的,在终点路块内进行路块内规划计算包括在路块内部,通过反向dijkstra算法计算从路块所有入口到终点的最优路及其代价,得到反向拓展节点集合。
进一步的,根据上述步骤得到的正反方向拓展节点集合,在预处理数据中应用双向dijkstra算法计算得到块间最优路;
在进行双向拓展时,仅需处理边界节点,正向拓展到某一边界节点时,如果该节点是某一路块的入口,则从该路块预处理数据中读取该节点到所有出口的路径数据,从而拓展到这些出口节点;
反向拓展时,同样可以从某一路块出口拓展到所有入口节点;
通过直接读取路块内部最优路,省去了拓展块内节点的步骤,可以大大减少计算时间;
根据最优路的性质,如果最优路通过某一路块,则必然通过该路块的某一入口和某一出口,且从这一入口到出口的子路径也是路块内部的最优路,通过此性质确保了本发明方法结果路径的最优性。
进一步的,连接块内和块间最优路径,得到起点到终点的完整最优路径,路径规划结束。
与现有技术相比,本发明的有益效果是:本发明采用分块进行路径规划预处理的计算方法与路径规划时利用分块预处理数据的加速方法,通过分块方法把大规划路网的预处理转化为若干局部较小路网的预处理计算,可以通过并行处理方法提高预处理计算的效率;另外,当局部路网进行更新时,只需要重新计算和更新路网范围内的少量路块的预处理数据文件,大大提高数据更新的速度。
附图说明
图1为本发明路径规划方法的流程示意图;
图2为本发明路划分的a、b两个路块。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-2,本发明提供一种技术方案:一种大规模路网的分块预处理路径规划方法,包括分块路网,分块路网包括数据预处理阶段与利用预处理数据的加速路径规划阶段;
步骤101:数据预处理阶段包括将整体路网中的所有路段进行分块,即划分为若干独立局部路网,每一个局部路网称为一个路块,路块可根据行政区划或者其它给定的划分方式进行,路块为部分或完全连通的独立路网,可以对最短路径进行计算。
最短路径计算可采用a*或dijkstra算法,分块完成后,整体路网中的任意路段都属于某一路块;
路网中的任意节点,若其连接的所有路段都属于同一路块,则节点为该路块的内部节点;
否则节点为路块边界节点,若其连接的路段可进入某一路块,则称节点为该路块的入口,若其连接的路段可离开某一路块,则称节点为该路块的出口,如图1所示,路网划分为a、b两个路块,节点1、2、3为路块a内部节点,节点5、6、7为路块b内部节点,节点4为路块a与b的边界节点,假设各路段均为双向可通行,则节点4同时为路块a与b的出口与入口。
步骤102:数据预处理阶段还包括路径规划数据预处理,对于任意一个路块的预处理方法如下:
对于路块的每一入口,应用dijkstra算法在路块内部计算从该节点到路块所有出口的最优路,保存计算得到的各最优路径以及代价;
所有入口计算完成后即得到该路块内部所有入口到所有出口两两最优路数据,将该数据保存为该路块的预处理数据文件;
路块预处理仅与路块内数据相关,当进行地图数据增量更新时,仅对发生更新的路块重新进行预处理即可。
步骤201:路径规划阶段包括根据路径规划起点和终点的位置,确定起点、终点所属的路块,如果起点、终点位于同一路块,则直接通过a*算法利用整体路网数据计算出最优路径(这种情况距离较短,不需要预处理方法也能快速完成计算),否则继续下一步。
步骤202:在起点路块内进行路块内规划计算包括在路块内部,通过dijkstra算法计算从起点到路块所有出口的最优路及其代价,得到正向拓展节点集合。
步骤203:在终点路块内进行路块内规划计算包括在路块内部,通过反向dijkstra算法计算从路块所有入口到终点的最优路及其代价,得到反向拓展节点集合。
步骤204:根据上述步骤得到的正反方向拓展节点集合,在预处理数据中应用双向dijkstra算法计算得到块间最优路;
在进行双向拓展时,仅需处理边界节点,正向拓展到某一边界节点时,如果该节点是某一路块的入口,则从该路块预处理数据中读取该节点到所有出口的路径数据,从而拓展到这些出口节点;
反向拓展时,同样可以从某一路块出口拓展到所有入口节点;
通过直接读取路块内部最优路,省去了拓展块内节点的步骤,可以大大减少计算时间;
根据最优路的性质,如果最优路通过某一路块,则必然通过该路块的某一入口和某一出口,且从这一入口到出口的子路径也是路块内部的最优路,通过此性质确保了本发明方法结果路径的最优性。
步骤205:连接块内和块间最优路径,得到起点到终点的完整最优路径,路径规划结束。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。