首页 / 专利库 / 人工智能 / 剪枝 / 一种基于模式数据库的路径规划方法及系统

一种基于模式数据库的路径规划方法及系统

阅读:839发布:2020-05-12

专利汇可以提供一种基于模式数据库的路径规划方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开一种基于模式 数据库 的路径规划方法及系统,该方法包括以下步骤:以均匀网格地图中塌缩跳点的网格点所在 位置 进行预处理;获取起点和终点位置;采用connect-search 算法 在所有跳点中搜索最优路径,在起点与终点之间需要寻找最优复合主序路径时,在连接过程中生成起始子 节点 时和/或在搜索过程中扩展跳点进行 剪枝 ;根据剪枝后的起点 子节点 和/或搜索过程中生成的子节点搭建起点与终点之间的最优路径并存储。解决 现有技术 中预处理占用存储空间且搜索速度受限问题,实现减小存储空间并提升搜索速度。,下面是一种基于模式数据库的路径规划方法及系统专利的具体信息内容。

1.一种基于模式数据库的路径规划方法,其特征在于,包括以下步骤:
以均匀网格地图中塌缩跳点的网格点所在位置进行预处理;
获取起点和终点位置;
在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式在所有跳点中搜索最优路径,在连接过程中生成起始子节点时和/或在搜索过程中扩展跳点时均通过读取压缩模式数据库对不可能达到终点的路径进行剪枝
根据剪枝后生成的起点子节点和/或搜索过程中生成的子节点搭建起点与终点之间的最优路径并存储。
2.如权利要求1所述的基于模式数据库的路径规划方法,其特征在于,所述以均匀网格地图中塌缩跳点的网格位置进行预处理的步骤中采用的是压缩模式数据库算法,包括:
对均匀网格地图进行结构分析,根据可通行点与障碍点的位置关系识别出所有轴向跳点;
为均匀网格地图上所有可通行节点的所有可通行方向计算跳跃距离表,并记载与该方向上下一跳点或与障碍物的距离;
根据所述轴向跳点在对方向上利用跳跃距离表识别出所有对角跳点;
以每个跳点塌缩位置为源节点进行面向全地图的Dijkstra搜索,获取其对于所有可达节点的最优起始边;将上述对所有可达节点的最优边存储生成压缩模式数据库。
3.如权利要求2所述的基于模式数据库的路径规划方法,其特征在于,所述在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式在所有跳点中搜索最优路径,在生成起始子节点的过程中进行剪枝的步骤包括:
根据跳跃距离表获得起点所有符合对角优先原则的轴向跳点子节点;
在所述轴向跳点子节点的所有主序扩展方向与压缩模式数据库中存储的该节点的最优方向不存在交集时,删除该轴向跳点子节点;
遍历所有所述轴向跳点子节点,获得起始子节点。
4.如权利要求3所述的基于模式数据库的路径规划方法,其特征在于,所述采用connect-search方式在所有跳点中搜索最优路径,在起点与终点之间需要寻找最优复合主序路径时,搜索过程中在扩展跳点时进行剪枝的步骤包括:
以所有所述起始子节点作为待扩展跳点分别进行部分扩展;
对所述待扩展跳点在对角方向上扩展获取中转跳点;
读取所述中转跳点在压缩模式数据库中存储的最优边,与该中转跳点所有主序方向进行比较,检测二者是否存在交集;
二者存在交集,且交集中存在一轴向方向时,将该方向的轴向跳点生成子节点,并加入open表中,然后结束该分支的搜索,无需继续向下搜索。
5.如权利要求4所述的基于模式数据库的路径规划方法,其特征在于,所述读取所述中转跳点在压缩模式数据库中存储的最优边,与该中转跳点所有主序方向进行比较,检测二者是否存在交集的步骤还包括:
若无交集,则可结束该分支的搜索。
6.如权利要求4所述的基于模式数据库的路径规划方法,其特征在于,所述读取所述中转跳点在压缩模式数据库中存储的最优边,与该中转跳点所有主序方向进行比较,检测二者是否存在交集的步骤还包括:
二者存在交集,且交集中仅有一对角方向,则递归地重复中转跳点的扩展步骤。
7.如权利要求1~6任一项所述的基于模式数据库的路径规划方法,其特征在于,搜索最优路径时采用A*算法运行最佳优先搜索的流程。
8.如权利要求1所述的基于模式数据库的路径规划方法,其特征在于,所述在起点与终点之间需要寻找最优复合主序路径时的步骤之前还包括:
判断起点和终点是否为障碍物;
在起点和终点均非障碍物时,判断两者位置是否重合;
在起点和终点位置不重合时,判断是否存在一条简单主序路径连接起点与终点;
存在简单主序路径时,将所述简单主序路径作为最优路径并存储;不存在简单主序路径时,采用connect-search方式在所有跳点中搜索最优路径,进入剪枝步骤。
9.一种基于模式数据库的路径规划系统,其特征在于,包括存储器和处理器,所述存储器中存储有路径规划程序,在所述处理器运行所述路径规划程序时执行所述权利要求1~8任一项所述方法的步骤。

说明书全文

一种基于模式数据库的路径规划方法及系统

技术领域

[0001] 本发明涉及人工智能路径规划技术领域,具体是一种基于压缩模式数据库的路径规划方法及系统。

背景技术

[0002] 在人工智能领域,机器人技术和计算机游戏智能被视为建模人类在复杂环境下的感知、规划、决策和行动能的综合领域。近年来,各类型机器人在生产生活中广泛使用,以及学界与工业界对计算机游戏智能的重视程度逐渐提高,典型的例子包括DeepMind团队开发的StarCraft游戏AI和OpenAI公司开发的Dota游戏AI等。作为机器人和游戏非玩家色(NPC,Non-Player Characters)各方面技术的基础,基于均匀网格(uniform grids)地图的最短路径规划技术随着GPPC(Grid-based Path Planning Competitions)竞赛的举行和工业界对典型地图测试集的开放,在近十年也取得了显著的进步。作为一个基础服务,在人工智能中经典的启发式搜索问题求解技术、地图空间拓扑结构提取技术领域中,很多场景中有限的计算资源需要同时应答大量智能体的路径规划请求,因此规划技术的快速响应能力最受关注。
[0003] 其中最为著名的一类算法称为跳点搜索(JPS,Jump Point Search),主要由澳大利亚莫纳什大学的Daniel Harabor博士提出(Harabor D,Grastien A.Online Graph Pruning for Pathfinding on Grid Maps[C]//National Conference on Artificial Intelligence.2011:1114–1119.Harabor D,Grastien A.Improving Jump Point Search[C]//International Conference on Automated Planning and Scheduling.2014.)。当智能体在网格地图上移动时,JPS在相同起点和终点、相等长度的对称路径中,将对角方向移动优先路径确定为主要偏序(diagonal-first canonical ordering),将不满足该原则的其他所有路径剔除在搜索空间之外。理论证明,任何可通行的两个位置之间都存在至少一条满足该规则的最短路径。如图1所示,被该偏序规则剔除的子节点(灰色所示)通常可以由当前节点的父节点从更短的路径或长度相同但对角移动出现更早的路径到达。通常,这样的剪枝递归使用可以使某一节点的子节点仅剩1个或0个,不仅降低了正在被扩展节点的分支因子,也减小了子节点的分支因子。
[0004] 另外,JPS应用A*算法时并不将中间节点加入Open表中,除非遇到图1(c)中需要将前进方向向其他分支扩展的节点时,才将这样的节点加入Open表中以待扩展。中间节点都将被跳过,因此图1(c)中的特殊节点称为“跳点”。
[0005] JPS算法仅需在线处理,不涉及地图预处理,相较单纯的A*算法速度提高了一个数量级。但它的一个主要缺点是扩展节点时需要进行大量的逐行逐列的中间节点扫描和判断。基于此,JPS+在离线阶段为每一可通行节点的每一可通行方向计算和存储与通过该方向可到达的第一个跳点或障碍物的距离。这一预存信息进一步提高了搜索速度。进一步地,JPS+(P)在搜索时采用中转剪枝(intermediate pruning)技术,将对角跳点视为过渡节点不加入Open表进行处理,相比JPS+一定程度降低了Open表操作次数。
[0006] 通过与压缩模式数据库(CPD,Compressed Pattern Databases)技术的结合,JPS的性能得到了进一步大幅度的提升。CPD技术是用空间换时间的基于预处理的路径规划技术,它在离线阶段通过以每个可通行节点为源发起Dijkstra搜索,为当前节点找到能够以最短路径到达其他所有连通节点的出边(outgoing edge)。若以矩阵M表示这一预处理得到的数据,则M[i,j]表示从第i个节点到达第j个节点的最短路径上源于节点i的第一边。为压缩这一矩阵的存储空间,SRC(Single-Row Compression)算法对其每一行(对应每一个源节点)采用RLE(Run-Length Encoding)方法进行数据压缩,一般可得到300-400的压缩比(Strasser B,Harabor D,Botea A.Fast First-Move Queries through Run-Length Encoding[C]//the Seventh Annual Symposium on Combinatorial Search.2014(SoCS):157–165.Strasser B,Botea A,Harabor D.Compressing Optimal Paths with Run Length Encoding[J].Journal of Artificial Intelligence Research,2015,54:593–
629.)。在线进行路径规划时,SRC则在从起点开始的每一个当前节点向CPD中检索其到达给定目标点的最佳移动,从而迭代得到完整的最短路径。其中的每一次检索都需要在对应行压缩数据中进行二分查找。SRC因为完全不需要进行A*算法的在线搜索,因此成为GPPC-
2014比赛最快的算法之一。
[0007] JPS与SRC结合产生了Topping(Two-Oracle Path PlannING)算法,原理是仅在关键节点上(如起点、跳点)上进行CPD的二分查找得到最优方向,而同时访问JPS的距离表得到对应方向可以重复执行的步数,从而免去了在中间节点上多余的二分查询(Salvetti M,Botea A,Gerevini A,et al.Two-Oracle Optimal Path Planning on Grid Maps[C]//International Conference on Automated Planning and Scheduling.2018(Sturtevant 2012):227–231.)。因为对JPS距离表的访问是常数级的,Topping算法相较SRC提高了数倍的路径规划效率。需要注意地是,与SRC不同,预处理阶段的Dijkstra搜索采用了与JPS一致的diagonal-first偏序,保证两者结合的最大效益,即能将CPD查询的次数降到最低。这一基于离线预先计算的剪枝技术为JPS+和SRC算法分别提升了一个数量级左右和数倍的性能提升,使其能够在经典测试集下取得微秒级别的搜索速度。然而,这一显著进步的代价则是必须在预处理阶段投入大量的CPU时间和存储空间。
[0008] 若要降低这一代价,则仅需对跳点位置进行预处理即可。然而这一处理将造成算法预处理信息一定程度上的丢失,主要在于若起点是普通节点而非跳点,则算法无法直接检索起点到终点最优路径上的第一步移动方向,因此无法采用迭代检索的方式,可通过按照A*算法对起点进行扩展并开始搜索,然而单纯地按照JPS模式的搜索将使Topping算法的搜索速度受到非常显著的影响。另外,JPS+式的搜索,在对角跳点上也进行了加入Open表和从其中取出的操作。由于Open表一般采用二叉堆优先队列的数据结构进行表示,这些操作都将引起堆结构的重排序,一定程度限制了搜索速度的提升。

发明内容

[0009] 本发明提供一种基于模式数据库的路径规划方法及系统,用于克服现有技术中在预处理过程中信息被压缩导致丢失的情况下搜索速度受限等缺陷,在对起点进行扩展并搜索的过程中通过对不必要的路径进行剪枝,实现局部扩展,从而减少了Open表中的子节点数量,进而实现了相对于现有技术实现搜索速度大幅提升。为实现上述目的,本发明提供一种基于模式数据库的路径规划方法,包括:
[0010] 以均匀网格地图进中塌缩跳点的网格点所在位置进行预处理;
[0011] 获取起点和终点位置;
[0012] 在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式在所有跳点中搜索最优路径,在连接过程中生成起始子节点时和/或在搜索过程中扩展跳点时均通过读取压缩模式数据库对不可能达到终点的路径进行剪枝;
[0013] 根据剪枝后生成的起点子节点和/或在搜索过程中生成的子节点搭建起点与终点之间的最优路径并存储。
[0014] 为实现上述目的,本发明还提供一种路径规划系统,包括存储器和处理器,所述存储器中存储有路径规划程序,在所述处理器运行所述路径规划程序时执行上述方法的步骤。
[0015] 本发明提供的基于模式数据库的路径规划方法及系统,在搜索过程中,在起点与终点之间没有简单主序路径连接时需要寻找最优复合主序路径,采用connect-search方式在跳点中搜索最优路径,在连接过程中根据跳跃距离表寻找起点所有符合对角优先原则的轴向跳点并生成起始子节点,所述轴向跳点通常数量较多,对不可能到达的终点的轴向跳点进行剪枝,以缩减初始加入Open表的节点的数量,从而按照原搜索思路使搜索速度得到提升;或者在搜索过程中,对某一跳点进行扩展时在对角方向寻找中间跳点,中间跳点并不作为子节点放入Open表,而仅将中间跳点主序扩展方向中与记录在压缩模式数据库中最优方向重合的分支方向上的轴向跳点作为子节点进行生成并放入Open表,并不对同一对角分支上的所有中间跳点进行探索,仅对有可能到达终点的最优路径展开局部扩展,其余中间跳点进行剪枝,以缩减在搜索过程中生成的子节点的存储;在将在搜索过程中生成的子节点加入Open表和从其中取出的操作过程中,Open表一般采用二叉堆优先队列的数据结构进行表示,这些剪枝操作避免引起堆结构的频繁重排序,从而实现加速搜索的目的。附图说明
[0016] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
[0017] 图1(a)为现有JPS技术中非跳点情景下对角移动时的剪枝示意图;
[0018] 图1(b)为现有JPS技术中非跳点情景下轴向移动时的剪枝示意图;
[0019] 图1(c)为现有JPS技术中在跳点位置处的剪枝示意图;
[0020] 图2(a)为本发明实施例一提供的路径规划方法中轴向跳点的示意图;
[0021] 图2(b)为本发明实施例一提供的路径规划方法中对角跳点的示意图;
[0022] 图3为实施例一中主序路径分类示意图;
[0023] 图4为实施例一中CPD进行路径规划的主要算法流程图
[0024] 图5为实施例一中利用已有的压缩数据库进行延后的剪枝算法流程图;
[0025] 图6为实施例一中对当前处于搜索前沿的节点进行扩展的算法流程图;
[0026] 图7为实施例一中connect示例图;
[0027] 图8为实施例一中serach扩展过程示例图;
[0028] 图9为实施例二中serach扩展过程示例图。
[0029] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0030] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0031] 需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
[0032] 另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0033] 在本发明中,除非另有明确的规定和限定,术语“连接”、“固定”等应做广义理解,例如,“固定”可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接,还可以是物理连接或无线通信连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0034] 另外,本发明各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
[0035] 实施例一
[0036] 如附图1-9所示,本发明实施例提供一种路径规划方法,包括以下步骤:
[0037] S1,以均匀网格地图进中塌缩跳点的网格点所在位置进行预处理;
[0038] 跳点包括轴向跳点和对角跳点,定义如下:
[0039] 轴向跳点为:均匀网格地图中障碍物对角方向的可通行点;至少能在平方向和垂直方向上移动;一个轴向跳点(straight jump point)可视为一个三元组 其中包含一个网格位置n和两个轴向的移动方向。它们满足:(1) 和 是两个可通行的移动;(2) (3) 不可通行。
[0040] 直观来说,定义1中的网格位置n即为障碍物的拐角,而方向 称为该跳点的父方向,为搜索的来向。以图2(a)为例,由实心圆和箭头分别表示位置和来向,图中标出了所有的轴向跳点和对应的父方向,可以看到符合条件的n一般附着有两个以上的轴向跳点。另外,将 和 称为该跳点的主序扩展方向。
[0041] 一个对角跳点(diagonal jump point)可表示为一个二元组 其中包含一个网格位置n和一个对角方向 位置n由来自 方向的移动到达,并可经过或 到达某一以 或 为父方向的轴向跳点,或到达目标点。
[0042] 图2(b)展示了对角跳点与轴向跳点的位置关系。空心圆圈和灰色箭头分别表示位置和来向,需要注意,同一轴向跳点可同时被多个对角跳点到达,甚至同一位置可能同时使到达某一轴向跳点的不同对角跳点的位置,如(D1/D2/D3,SW/SE)。
[0043] 这里塌缩跳点的网格点的含义指的是:位于同一网格点位置至少具有来自于两个方向的父节点,该两个方向来自于:上、下、左、右、右上、右下、左上、左下中任意两个,这里的跳点可以是轴向跳点,也可以是对角跳点,也可以同时即是轴向跳点也是对角跳点;如果同一网格点塌缩多方向跳点,则仅就该位置搜索计算一次,不做重复计算;
[0044] 如上所述,轴向跳点的位置可简单地根据其与障碍物的相对位置关系通过对所有格点的一次扫描而全部快速识别。然而,我们并不需要将所有的对角跳点都识别出来并对其进行包围盒计算。这里,对两类对角跳点进行区分。
[0045] 一个有源对角跳点 (active diagonal jump point)是具有一个轴向跳点作为其父节点,其中 是该轴向跳点的对角主序扩展方向,n可以有s经过无障碍的 移动到达。不满足该条件的其余位置为无源对角跳点。举例来说,图2(b)中的(F5,SE)因为有(D3,E,S)作为父节点,为一个有源对角跳点,可以通过向东运动到达另一轴向跳点(I5,E,N)。而(E5,SE)则为无源对角跳点。
[0046] 所有符合diagonal-first规则的路径可以归为两类,如图3所示。第一类,我们称其为简单主序路径(Simple Canonical Paths),它们不涉及在跳点位置的搜索方向转换,这里的转换是某一轴向跳点处由其父方向转换到其中一个主序扩展方向,如图中所示,寻路时可以通过一次深度优先搜索判断。第二类称为复合主序路径(Compound Canonical Paths),可表示为,如图中所示。这类路径可划分为三个部分:(1)起始部分:从起点s到第一个轴向跳点s1,其中可能包含一个无源对角跳点ds;(2)中间部分:从第一个轴向跳点s1到最后一个轴向跳点sn,相邻两个之间有xi个有源对角跳点;(3)结尾部分:从sn到终点t,可能包含一个无源跳点。
[0047] 需要说明的是,有些网格点既附着有轴向跳点,同时也有对角跳点;
[0048] 获取轴向跳点和对角跳点的方法可以根据上面的定义由程序来实现,具体方法不限。在本发明一实施例中,例如:通过识别障碍物的拐点来获取轴向跳点,即通过识别与障碍物的位置关系获得;对角跳点可通过识别与轴向跳点的位置关系获得;
[0049] 预处理搜索算法可以是压缩模式数据库搜索算法进行预处理;
[0050] 若要降低预处理阶段背景技术中存在投入大量的CPU时间和存储空间这一代价,则仅需对跳点位置进行预处理即可。这一处理将造成算法预处理信息一定程度上的丢失,主要在于若起点是普通节点而非跳点,则算法无法直接检索起点到终点最优路径上的第一步移动方向,因此无法采用迭代检索的方式,本发明通过按照A*算法对起点进行扩展并开始搜索。然而单纯地按照JPS模式的搜索将使Topping算法的搜索速度受到非常显著的影响。因此,本发明Topping+算法充分利用跳点位置上在预处理阶段存下的模式数据库,对起点的子节点进行剪枝,减小Open表的规模。另一点,JPS+式的搜索,在对角跳点上也进行了加入Open表和从其中取出的操作。由于Open表一般采用二叉堆优先队列的数据结构进行表示,这些操作都将引起堆结构的重排序,一定程度限制了搜索速度的提升。本发明的局部扩展方法就是为解决该问题而提出的。
[0051] S2,获取起点和终点位置;
[0052] 在本发明一实施例中,智能机器人所在网格点位置或智能游戏中可移动对象所在网格点位置形成这里的起点,由操作者或玩家输入的指定网格点位置形成终点。
[0053] 优选地,S2之后还包括:
[0054] S21,判断起点和终点是否为障碍物;
[0055] S22,在起点和终点均非障碍物时,判断两者位置是否重合;
[0056] S23,在起点和终点位置不重合时,判断是否存在一条简单主序路径连接起点与终点;
[0057] S24,存在简单主序路径时,将所述简单主序路径作为最优路径并存储;不存在简单主序路径时,采用connect-search方式在跳点中搜索最优路径,进入下面的剪枝步骤S3。
[0058] 可以看出,轴向跳点和有源对角跳点是构成主序路径的关键位置。基于上述观察,给出本发明Topping+进行路径规划的主要流程。如Algorithm 1所示。以起点s和目标点t为输入,算法首先判断起点终点是否为障碍物,或两者是否位置重合(第2-3行)。若非,再判断是否可通过一条简单主序路径连接两点,若可则直接返回该路径(第4-5行)。若非,则需要寻找到连接两点的最优复合主序路径,采用connect-search方式的寻路过程,其中connect是指生成起点的所有合法轴向跳点子节点(对应复合主序路径定义中的s1),并将它们加入Open表中以待扩展(第6行)。然后按照A*算法最佳优先搜索的流程运行算法(第7-12行)。参见图4。
[0059] S3,在起点与终点之间需要寻找最优复合主序路径时,采用connect-search方式在所有跳点中搜索最优路径,在在连接过程中生成起始子节点时和/或在搜索过程中扩展跳点时均通过读取压缩模式数据库对不可能达到终点的路径行剪枝;
[0060] 根据压缩模式数据库对路径进行筛选,仅在有可能到达终点位置的局部路径上生成起始子节点和/或在搜索过程中生成的子节点;对于不可能到达终点位置的路径进行剪枝;
[0061] 剪枝过程具体基于上述预处理算法而相应通过压缩模式数据库加速算法等加速算法实现。
[0062] 这里生成起始子节点的过程是connect程序,建立给定起点与塌缩跳点之间的连接关系,这里的起始子节点的含义指的是从起点出发符合对角优先原则的轴向跳点;在生成起始子节点的过程中可能同时存在不止一个轴向上节点满足起始子节点要求,在扩展某一跳点的过程中,也存在轴向和对角等多类型子节点和多个合法的主序扩展方向;如果都放入open表进行搜索计算,将会导致Open表的节点数量增加,从而若按照原搜索思路则将使搜索速度受到影响,剪枝就是缩减Open表的节点数量的过程;因此在上述两个过程中至少一个过程进行剪枝;在本发明一优选实施例中,最后只保留可能到达目标节点(终点)的起始子节点,其余不可能到达目标节点的起始子节点均删除,完成起始子节点的剪枝;扩展某一跳点时,仅将对角跳点作为剪枝位置,而并不将其加入Open表,同时每次扩展仅选择一个子节点进行生成;最后保留的起始子节点和搜索过程中生成的子节点放入open表进行搜索计算,将会大大提升搜索速度。
[0063] 需要说明的是,在连接过程中生成的起始子节点可以不唯一,但是在搜索过程中,一个起始子节点对应的分支下只选择唯一的一条路径,通过若干次扩展跳点的过程来确定该路径。对于给定的起点和终点位置,在起始子节点只有一个时,则待考察路径只生成一条;在起始子节点有两个时,则待考察路径也有两条。因为采用了A*算法的最佳优先搜索,所述不同路径的搜索并非分离的,每次扩展的节点都是Open表中当前优先级最高的节点。
[0064] S4,根据剪枝后生成的起点子节点和/或在搜索过程中生成的子节点搭建起点与终点之间的最优路径并存储。
[0065] 可以根据上述起始子节点和/或在搜索过程中生成的子节点在其主序扩展方向上依次扩展获得;也可在步骤S3中寻路过程中即搜索在搜索过程中生成的子节点的过程中,进行过路径计算,并保存了路径,可直接从存储的数据库中提取获得。
[0066] 本发明将从充分利用稀疏的预处理数据的角度解决现有技术中单纯地按照JPS模式的搜索将使Topping算法的搜索速度受到影响,及JPS+式的搜索导致Open表将引起堆结构的重排序限制了搜索速度提升两个问题,进行搜索速度的提升。
[0067] 优选地,所述以均匀网格地图中塌缩跳点的网格位置进行预处理的步骤中采用的是压缩模式数据库算法,包括:
[0068] S01,对均匀网格地图进行结构分析,根据可通行点与障碍点的位置关系识别出所有轴向跳点;为均匀网格地图上所有可通行节点的所有可通行方向计算跳跃距离表,并记载与该方向上下一跳点或与障碍物的距离;
[0069] S02,根据所述轴向跳点在对角方向上的利用跳跃距离表识别出所有对角跳点;
[0070] S03,以每个跳点塌缩位置为源节点进行面向全地图的Dijkstra搜索,获取其对于所有可达节点的最优起始边;将上述对所有可达节点的最优边存储生成压缩模式数据库。
[0071] 塌缩位置指的是附着有至少两个方向轴向跳点和/或对角跳点的网格点。这里的起始边的意思指的是起始方向,八临域网格中的八个方向作为起始方向的选择。
[0072] 优选地,步骤S3中在连接过程中生成起始子节点进行剪枝的步骤包括:
[0073] S301,根据跳跃距离表获得起点所有符合对角优先原则的轴向跳点子节点;
[0074] S302,在所述轴向跳点子节点的所有主序扩展方向与压缩模式数据库中存储的该节点的最优方向不存在交集时,删除该合法轴向跳点子节点;
[0075] S303,遍历所有所述轴向跳点子节点,获得起始子节点。
[0076] 虽然稀疏的预处理意味着很难从起点就开始利用压缩模式数据库进行剪枝,从而减少起点的子节点数量,但是当所有合法子节点找到之后,由于它们都是轴向跳点,可利用它们已有的最优起始边进行延后的剪枝。算法流程如图5的Algorithm 2所示。连接过程中,通过压缩数据库中存储的最优方向与轴向跳点的主序扩展方向是否一致,剔除不可能到达目标节点的合法轴向跳点子节点,例如:在多个合法轴向跳点子节点中,通过在压缩数据库中提取各轴向跳点子节点的最优方向,只有一个最优方向与主序扩展方向存在交集,那么仅将这一个轴向跳点子节点作为起始子节点放入open表;如果发现只有两个最优方向与其主序扩展方向存在交集,那么将该两个轴向跳点子节点作为起始子节点放入open表。
[0077] 算法输入为起点s、终点t和跳跃距离表T,符号 表示节点n在方向 上的距离值。算法遍历所有八个方向,通过距离值快速获得所有可能的子节点(第3、13行),其中对角方向需要一个迭代的过程(第9行)。对于这些没有通过起点的模式数据库进行剪枝的节点,可以一定程度通过自身的模式数据库和主序扩展方向进行剪枝(第4-6、14-16行)。若节点的所有主序方向的集合与CPD检索出的最优方向集合没有交集,则可安全地将其剔除搜素空间而不加入Open表中;反之,应考虑该节点。经过这一剪枝过程,能够留下的子节点一般只有1-2个,极大地减轻了搜索负担,从而与信息完备的Topping更为接近。
[0078] 优选地,所述步骤S3搜索过程中在扩展跳点时进行剪枝的步骤包括:
[0079] S30,以所有所述起始子节点作为待扩展跳点分别进行部分扩展;
[0080] S31,对所述待扩展跳点在对角方向上扩展并获取中转跳点;这里的中间跳点是有源对角跳点,待扩展跳点包括起始子节点和在扩展扩充中任意回归该扩展过程的中转跳点;
[0081] S32,读取所述中转跳点在压缩模式数据库中存储的最优边,与该中转跳点所有主序方向进行比较,检测二者是否存在交集;
[0082] S33,二者存在交集,且交集中存在一轴向方向时,将该方向的轴向跳点生成在搜索过程中生成的子节点,并加入open表中,然后可以提前结束该分支的探索,从而减少计算开销。
[0083] 若中转跳点的主序方向与预处理后该中转跳点存储在压缩模式数据库中的最优方向存在交集时,在所述中转跳点的所有主序方向中选择从压缩模式数据库中获取的最优方向,检测终点是否在所述中转跳点的最优方向覆盖的范围内;在终点在所述中转跳点的最优方向覆盖的范围内,且所述最优方向为轴向时;将所述中转跳点作为在搜索过程中生成的子节点加入open表,结束剪枝流程。
[0084] 搜索过程中,在对角方向上扩展跳点时,并不对所有对角跳点进行扩展,而是进行一个判断,仅在满足判断条件的对角跳点主序方向上扩展,并且不直接将该对角跳点加入Open表,而将该对角跳点主序方向上与压缩数据库中存储的最优方向重合的分支方向上能直接到达目标节点或通过简单路径能够达到目标节点的轴向跳点作为在搜索过程中生成的子节点生成并放入open表。
[0085] 需要说明的是,本实施例的方案中,对角跳点的作用在于作为轴向跳点的父节点和轴向跳点子节点的中转跳点,因此在找到一个对角跳点时,必然意味着他的两个轴向主序方向上至少有一个能找到子节点,因此可以安全地跳过对角跳点但不作为子节点生成。本方案的核心思想在于在每个起始子节点与终点的路径规划中仅将扩展路径中一个能直接到达终点的轴向跳点加入open表中,而对于在路径中的对角跳点均不加入open表,每次扩展中存在一个或数个这样的对角跳点,这种方式使得从open表中剔除了无用的中转跳点,并且也无需对这些中转跳点进行不必要的扩展,因此能大大提升搜索速度。
[0086] 优选地,S32中的检测结果除了上述的步骤S33之外还有以下两种:
[0087] S33a,若无交集,则可结束该分支的搜索;
[0088] S33b,若二者存在交集,且交集中仅有一对角方向,则递归地重复中转跳点的扩展步骤。即将该中转跳点作为待扩展跳点重新回到步骤S31,继续沿着对角方向扩展下一个中转跳点,扩展一个轴向跳点时,在它的对角方向上可能不止一个对角跳点,会有一串,如果上一个对角跳点的最优边是对角方向,那就继续往下一个对角跳点探索,是个递归的过程。直到找到轴向跳点。
[0089] 另一改进之处是节点的扩展过程,本发明借鉴JPS+(P)的中转剪枝(intermediate pruning)思路,将对角跳点仅作为可用于剪枝的中转位置,而无需将其加入Open表中而引发更多的操作。本发明Topping+仅生成和扩展轴向跳点,而递归地剪除对角跳点。对当前处于搜索前沿的节点进行扩展的流程如Algorithm 3所示,对应Algorithm 1中的第12行。无论是轴向的还是对角的分支,算法首先通过canPruneEdge函数判断该分支是否为当前节点到达目标位置的最优方向之一(第3、10和14行)。若是,再检查目标点是否就在该分支的覆盖范围内,若是则可直接将其加入Open表中并返回。需要注意,在扩展轴向分支时,通过检测的子节点即加入Open表中(第6行);而在扩展对角方向时,并不处理对角跳点,而直到遇到轴向延伸方向的跳点时才将其加入(第16行),而并不没有将第12行中的节点n过多考虑。另外,由于CPD存储的是准确信息,因此一旦发现任意一个最优方向生成子节点后,都可不再对其他方向进行检测,而直接返回(第7和17行)。参见图6。优选地,在跳点中搜索最优路径时采用A*算法运行最佳优先搜索的流程。
[0090] 如图7所示,给出了一个本发明实施连接过程剪枝的示例。起点和终点分别为F2和J1。通过对有效距离值(加粗表示)的提取,快速找到了所有未经剪枝的子节点B0、F5和H5。图中将它们各自的主序扩展方向和CPD中存储的最优方向分别用灰色和红色的短箭头标出。可以看到,仅H5向右边的主序扩展方向与最优方向重合,因此B0和F5都被剔除,仅向Open表中加入一个节点,即H5。
[0091] 图8给出了一个扩展过程的示例,其中起点和终点分别为A0和A5。通过连接过程,生成了唯一的起点子节点B0。对其进行扩展时,首先读取到第一个对角跳点D2。算法没有将D2加入Open表,而是检测它对应的所有主序方向是否为最优方向。由于D2仅有向下方向为最优方向,因此对角方向的移动提前停止,而向下的子节点D5被加入Open表中。依此过程扩展D5时通过目标检测(虚线标出),即对比跳跃距离和当前节点与目标点的坐标差值,发现目标。然后将其加入Open表中最终取出。
[0092] 给出一个示例:参见图9,其中起点和终点分别为A0和J1。通过连接过程,生成了唯一的起点子节点B0。对其进行扩展时,首先读取到第一个对角跳点D2。算法没有将D2加入Open表,而是检测它对应的所有主序方向是否为最优方向。由于D2仅有向右下对角方向为最优方向,递归重复扩展,因此继续沿对角方向的移动读取到第二个对角跳点G5,由于G5有向右方向为最优方向,而向右的子节点I5具有右上方对角方向为最优方向,依此过程扩展I5时通过目标检测(虚线标出),即对比跳跃距离和当前节点与目标点的坐标差值,发现目标。然后将I5加入在搜索过程中生成的子节点加入Open表中,最终取出作扩展计算。
[0093] 如前所述,一般网格地图中两类跳点塌缩位置的数量远小于所有可通行节点的总量。因此本发明将大大地节省所需的预处理时间和空间。这里以取自https://movingai.com的通用测试集为地图,其基本信息如表1所示。其中既包含典型的游戏地图,也有人工合成的房间和迷宫。每张地图中还包含大量的路径规划测试问题。
[0094] 实验结果如表2所示。其中,SRC和Topping为原算法,Topping+为本发明。我们另外加入了Topping+WSSP/WPE和Topping+WPE的变形,第一个没有采用起点子节点剪枝和部分扩展,而第二个采用了起点子节点剪枝。展示该变形的实验结果可以清楚地看到本发明的两个技术分别对搜索速度起到的提升的作用。结果表明,在预处理信息相对稀疏的情况下,通过本发明提出的起点子节点剪枝和部分扩展技术,Topping+算法的搜索速度相较SRC提升了数倍,与Topping已相当接近,基本在一个数量级上。
[0095] 表1实验所用地图
[0096]
[0097]
[0098] 表2路径搜索结果对比。
[0099]  StarCraft DAO BG Warcraft Rooms Mazes
SRC 29.3 13.7 10.1 9.9 26.6 57.7
Topping 8.0 5.8 2.9 2.4 8.3 39.3
Topping+WSSP/WPE 32.9 12.5 5.6 8.2 14.3 73.7
Topping+WPE 32.5 10.4 4.3 5.3 14.3 73.5
Topping+ 12.5 6.2 2.9 3.3 14.3 58.0
[0100] 指标为平均搜索时间,单位为微秒。结果数目越小表明速度越快。纵轴为算法名称,横轴为地图集。
[0101] 实施例二
[0102] 在上述实施例一的基础上,本发明实施例还提供一种路径规划系统,包括存储器和处理器,所述存储器中存储有基于模式数据库的路径规划程序,在所述处理器运行所述路径规划程序时执行上述任意路径优化方法的步骤。
[0103] 以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈