遍历多点归原的路径规划方法技术

技术编号:28835460 阅读:23 留言:0更新日期:2021-06-11 23:32
本发明专利技术公开了一种遍历多点归原的路径规划方法,涉及计算机智能路径规划技术领域。所述方法包括如下步骤:先知条件;求最小生成树;取最小生成树中的各子树;求最密子树;在最密子树中找到最边沿叶子1;针对最密子树找最边沿叶子端点2;在两个最边沿叶子端点中,确定一个是最密子树始点,另外一个是最密子树终点:以最密子树根节点和最密子树始点和最密子树终点组成的回路为主线,把最密子树中的叶子端点合并到主线中;原点与主线合并,形成回路;对剩下的子树进行判断,点数超过1的子树以上部分步骤,让子树形成回路;所有的回路合并后,最终的回路就是我们的最终的路径规划结果。所述方法具有计算量小,计算速度快,稳定性强等优点。

【技术实现步骤摘要】
遍历多点归原的路径规划方法
本专利技术涉及涉及计算机智能路径规划
,尤其涉及一种围绕最小生成树方法的遍历多点归原的遍历多点归原的路径规划方法。
技术介绍
在现实应用领域,现流行的导航软件有百度、高德、腾讯等导航APP,它们的主要功能就是根据用户的需要和根据现实的交通情况,实现一辆车到一个目的地的不考虑回程的合理的路径规划。而现实中需要更复杂的路径规划,比如要合理规划出货车从物流中心出发,到多个目的地进行收货,收货完毕后返回物流中心的路径规划,即遍历多点归原的路径规划,而这种路径规划在现在的导航APP中是没有的。在已有的软件服务平台中,滴滴快车的顺风车服务、美团外买骑手APP、公交线路规划等,都被误认为是我们的路径规划算法的程序实现,其实它们都不是我们前面所说的遍历多点归原的路径规划,它们只是两点路线规划在现实应用中的升级改进,或是多次两点路线规划的结果。在路径规划领域,遍历多点归原的最短路径规划算法属于TSP(TravelingSalesmanProblem)问题(可百度搜索TSP问题),它是一个组合优化问题。该问题已经被证明具有NPC计算复杂性,也就是说,针对大型实例,不存在高效稳定且最佳算法这一猜想。所以,高效稳定且接近最佳路径规划方案是众多人的研究方向。现在常见的算法有全排列算法及其提速法、近似算法和各种模拟算法,但这三种算法都不能做到高效稳定且近似最佳,现分析如下:全排列算法,它是唯一能解决遍历多点归原的路径规划的算法,但它是一种低效的计算方法,在目的地较多的情况下,计算效率极低,无法在可接受的时间内得到结果,比如在20个点的情况下,它的计算次数为2432902008176640000次,对于一般计算机来说,实在太多了,用户等待计算时间过长。所以全排列算法不是高效的算法。全排列算法的提速法,比如:分界截支算法,它们在一定程序上提高了组合排列算法的效率,但提高后的效率仍然不理想。各种近似算法,这些算法有最近点算法、节省路程算法、最小生成树算法(不是多点归原算法)、随机算法等,它们可以做到高效,但不稳定,存在多种可能的近似方案,并且经常得不到近似结果。各种模拟算法:这些算法包括有:人工智能的神经网络算法、蚁群算法、鱼群算法、退火算法、遗传算法等等,这些算法都站不住脚,现具体分析如下:1)首先人工智能的神经网络算法,它的特点是需要人的大量训练后,计算机才能拥有相关的功能,但对于多点路径规划来说,本来凭借人的智力也难在一时三刻找到最佳路径,更不用说要人对机器做大量训练了。所以这种命题是伪命题。2)其次是蚁群算法、鱼群算法、退火算法,这类低级智商动物算法更不用与人工智能算法比了。并且在平时观察可了解蚁群和鱼群并不走最短路径,它们一般走安全路径,最明显的是蚁群。其次,这些算法是局部最优算法,不稳定,每次计算,结果可能不一样,并且一但路径规划失败,将重新规划,耗时绝对不低。3)遗传算法,与上面的算法也有相同的缺点,首先它是局部最优算法,没有宏观调控,并且这种算法有随机性(不稳定),失败后又要重新计算,消耗时间变长。总的来说,现在还没有一种符合现实应用的高效且稳定的接近最佳的算法。
技术实现思路
本专利技术所要解决的技术问题是如何提供一种计算量小,计算速度快,稳定性强的遍历多点归原的路径规划方法。为解决上述技术问题,本专利技术所采取的技术方案是:一种遍历多点归原的路径规划方法,其特征在于包括如下步骤:1)先知条件:已知原点及其它地点的经纬度,并且所有的点的数目超过10个;已知所有点之间的最短路程,并且形成最短路程矩阵;两点间的路程不分方向,路径的正反向路程值相等;通过上述条件,得到这些点的网络图GA和最短路程矩阵PT;2)求最小生成树:基于第1步的条件,求最小生成树;通过上述步骤得最小生成树邻接矩阵TM并得到最小生成树图;3)取最小生成树中的各子树:根据得到的最小生成树邻接矩阵TM以及最小生成树图,并根据取子树的组合公式,进行计算;得各子树的根结点集合B0、各子树的点的集合、各子树图;4)求最密子树:根据前面步骤的条件,结合子树密度组合公式,得各子树密度值;把各子树密度值作为条件,用取最密子树公式,筛选出最密子树集;5)在最密子树中找到最边沿叶子1;使用数据结构技术中的后序遍历方法,对最密子树进行遍历,得到各节点的遍历顺序集合;在集合中的第一个节点为最边沿叶子1;6)针对最密子树找最边沿叶子端点2:根据第5步的遍历顺序集合,以集合作为条件,通过取叶子公式,可得后序遍历顺序的叶子端点集合;叶子端点集合的最后一个节点为最边沿叶子端点2;7)在两个最边沿叶子端点中,确定一个是最密子树始点,另外一个是最密子树终点:根据综合路程值公式,求两个最边沿叶子端点的综合路程值;综合路程值小者为最密子树始点,另外一个是最密子树终点;8)以最密子树根节点和最密子树始点和最密子树终点组成的回路为主线,把最密子树中的叶子端点合并到主线中:以最密子树根节点和最密子树始点和最密子树终点组成的回路为主线;把最密子树中,不在主线上叶子端点合并到主线中,形成新的主线;删除最密子树中叶子的分支;判断最密子树中是否有叶子端点,如果有关步骤,一直到最密子树中没有叶子端点为止;在进行上述步骤的同时,TM矩阵作相应的设置;9)原点与主线合并,形成回路:使用Jsprit的Rebuild方法,把原点合并到主线中;根据删除公式,删除原点与最密子树根结点间的路径;经过上面的步骤,从而形成一个:以原点为始点,经过原来的最密子树上的点,回到根结点的回路;10)对剩下的子树进行判断,点数超过1的子树重复步骤4)到步骤9),让子树形成回路,过程如下:除了原点,排除现有的回路上的点和路径。把剩下的点所组成的各个子树,逐个经过步骤4)到步骤9),都各自形成回路;重复上面操作,一直进行到没有点数超过1的子树为止;点数为1的子树就当成一个回路,它们都是从原点出发,经过叶子,回到原点的回路;第1颗最密子树形成的回路,用H1代表,按顺时针方式,在H1旁的回路,用H2代表;11)求各回路的回路始点与回路终点:针对只有2点的回路,其叶子端点就是回路始点,也是回路终点;针对超过2点的回路,从原点开始,顺时针遍历回路;除了根结点,第一个遍历的节点是回路始点,用as代表,最后一个是回路终点,用ae代表;所有超过2点的回路用同样的方法,都得到它们各自的回路始点与回路终点;12)使用回路间节约里程公式,求节约里程值:根据我们的回路间节约里程公式,求上一回路终点与下一回路始点间的节约里程数值;13)根据节约里程数值,使用节约里程方法,对回路进行合并:根据节约里程数值,本文档来自技高网
...

【技术保护点】
1.一种遍历多点归原的路径规划方法,其特征在于包括如下步骤:/n1)先知条件:/n已知原点及其它地点的经纬度,并且所有的点的数目超过10个;/n已知所有点之间的最短路程,并且形成最短路程矩阵;/n两点间的路程不分方向,路径的正反向路程值相等;/n通过上述条件,得到这些点的网络图GA和最短路程矩阵PT;/n2)求最小生成树:/n基于第1步的条件,求最小生成树;/n通过上述步骤得最小生成树邻接矩阵TM并得到最小生成树图;/n3)取最小生成树中的各子树:/n根据得到的最小生成树邻接矩阵TM以及最小生成树图,并根据取子树的组合公式,进行计算;/n得各子树的根结点集合B0、各子树的点的集合、各子树图;/n4)求最密子树:/n根据前面步骤的条件,结合子树密度组合公式,得各子树密度值;/n把各子树密度值作为条件,用取最密子树公式,筛选出最密子树集;/n5)在最密子树中找到最边沿叶子1;/n使用数据结构技术中的后序遍历方法,对最密子树进行遍历,得到各节点的遍历顺序集合;/n在集合中的第一个节点为最边沿叶子1;/n6)针对最密子树找最边沿叶子端点2:/n根据第5步的遍历顺序集合,以集合作为条件,通过取叶子公式,可得后序遍历顺序的叶子端点集合;/n叶子端点集合的最后一个节点为最边沿叶子端点2;/n7)在两个最边沿叶子端点中,确定一个是最密子树始点,另外一个是最密子树终点:/n根据综合路程值公式,求两个最边沿叶子端点的综合路程值;/n综合路程值小者为最密子树始点,另外一个是最密子树终点;/n8)以最密子树根节点和最密子树始点和最密子树终点组成的回路为主线,把最密子树中的叶子端点合并到主线中:/n以最密子树根节点和最密子树始点和最密子树终点组成的回路为主线;/n把最密子树中,不在主线上叶子端点合并到主线中,形成新的主线;/n删除最密子树中叶子的分支;/n判断最密子树中是否有叶子端点,如果有关步骤,一直到最密子树中没有叶子端点为止;/n在进行上述步骤的同时,TM矩阵作相应的设置;/n9)原点与主线合并,形成回路:/n使用Jsprit的Rebuild方法,把原点合并到主线中;/n根据删除公式,删除原点与最密子树根结点间的路径;/n经过上面的步骤,从而形成一个:以原点为始点,经过原来的最密子树上的点,回到根结点的回路;/n10)对剩下的子树进行判断,点数超过1的子树重复步骤4)到步骤9),让子树形成回路,过程如下:/n除了原点,排除现有的回路上的点和路径;/n把剩下的点所组成的各个子树,逐个经过步骤4)到步骤9),都各自形成回路;/n重复上面操作,一直进行到没有点数超过1的子树为止;/n点数为1的子树就当成一个回路,它们都是从原点出发,经过叶子,回到原点的回路;/n第1颗最密子树形成的回路,用H1代表,按顺时针方式,在H1旁的回路,用H2代表;/n11)求各回路的回路始点与回路终点:/n针对只有2点的回路,其叶子端点就是回路始点,也是回路终点;/n针对超过2点的回路,从原点开始,顺时针遍历回路;/n除了根结点,第一个遍历的节点是回路始点,用as代表,最后一个是回路终点,用ae代表;/n所有超过2点的回路用同样的方法,都得到它们各自的回路始点与回路终点;/n12)使用回路间节约里程公式,求节约里程值:/n根据我们的回路间节约里程公式,求上一回路终点与下一回路始点间的节约里程数值;/n13)根据节约里程数值,使用节约里程方法,对回路进行合并:/n根据节约里程数值,使用节约里程方法,对节约里程值大的两个回路先进行合并;/n重复步骤11)至步骤13)的过程,一直合并到回路数量为1时停止;/n14)所有的回路合并后,最终的回路就是我们的最终的路径规划结果。/n...

【技术特征摘要】
1.一种遍历多点归原的路径规划方法,其特征在于包括如下步骤:
1)先知条件:
已知原点及其它地点的经纬度,并且所有的点的数目超过10个;
已知所有点之间的最短路程,并且形成最短路程矩阵;
两点间的路程不分方向,路径的正反向路程值相等;
通过上述条件,得到这些点的网络图GA和最短路程矩阵PT;
2)求最小生成树:
基于第1步的条件,求最小生成树;
通过上述步骤得最小生成树邻接矩阵TM并得到最小生成树图;
3)取最小生成树中的各子树:
根据得到的最小生成树邻接矩阵TM以及最小生成树图,并根据取子树的组合公式,进行计算;
得各子树的根结点集合B0、各子树的点的集合、各子树图;
4)求最密子树:
根据前面步骤的条件,结合子树密度组合公式,得各子树密度值;
把各子树密度值作为条件,用取最密子树公式,筛选出最密子树集;
5)在最密子树中找到最边沿叶子1;
使用数据结构技术中的后序遍历方法,对最密子树进行遍历,得到各节点的遍历顺序集合;
在集合中的第一个节点为最边沿叶子1;
6)针对最密子树找最边沿叶子端点2:
根据第5步的遍历顺序集合,以集合作为条件,通过取叶子公式,可得后序遍历顺序的叶子端点集合;
叶子端点集合的最后一个节点为最边沿叶子端点2;
7)在两个最边沿叶子端点中,确定一个是最密子树始点,另外一个是最密子树终点:
根据综合路程值公式,求两个最边沿叶子端点的综合路程值;
综合路程值小者为最密子树始点,另外一个是最密子树终点;
8)以最密子树根节点和最密子树始点和最密子树终点组成的回路为主线,把最密子树中的叶子端点合并到主线中:
以最密子树根节点和最密子树始点和最密子树终点组成的回路为主线;
把最密子树中,不在主线上叶子端点合并到主线中,形成新的主线;
删除最密子树中叶子的分支;
判断最密子树中是否有叶子端点,如果有关步骤,一直到最密子树中没有叶子端点为止;
在进行上述步骤的同时,TM矩阵作相应的设置;
9)原点与主线合并,形成回路:
使用Jsprit的Rebuild方法,把原点合并到主线中;
根据删除公式,删除原点与最密子树根结点间的路径;
经过上面的步骤,从而形成一个:以原点为始点,经过原来的最密子树上的点,回到根结点的回路;
10)对剩下的子树进行判断,点数超过1的子树重复步骤4)到步骤9),让子树形成回路,过程如下:
除了原点,排除现有的回路上的点和路径;
把剩下的点所组成的各个子树,逐个经过步骤4)到步骤9),都各自形成回路;
重复上面操作,一直进行到没有点数超过1的子树为止;
点数为1的子树就当成一个回路,它们都是从原点出发,经过叶子,回到原点的回路;
第1颗最密子树形成的回路,用H1代表,按顺时针方式,在H1旁的回路,用H2代表;
11)求各回路的回路始点与回路终点:
针对只有2点的回路,其叶子端点就是回路始点,也是回路终点;
针对超过2点的回路,从原点开始,顺时针遍历回路;
除了根结点,第一个遍历的节点是回路始点,用as代表,最后一个是回路终点,用ae代表;
所有超过2点的回路用同样的方法,都得到它们各自的回路始点与回路终点;
12)使用回路间节约里程公式,求节约里程值:
根据我们的回路间节约里程公式,求上一回路终点与下一回路始点间的节约里程数值;
13)根据节约里程数值,使用节约里程方法,对回路进行合并:
根据节约里程数值,使用节约里程方法,对节约里程值大的两个回路先进行合并;
重复步骤11)至步骤13)的过程,一直合并到回路数量为1时停止;
14)所有的回路合并后,最终的回路就是我们的最终的路径规划结果。


2.如权利要求1所述的遍历多点归原的路径规划方法,其特征在于,所述步骤已知原点及其它地点的经纬度,并且所有的点的数目超过10个具体包括如下步骤:
设定点数为M,M>10,原点为1个,所有的点都已知经纬度,所有点我们用集合KP表示:
KP={Pi(xi,yi)|P0(x0,y0),P1(x1,y1),…,Pn(xn,yn)}(0≤n<M)
其中Pi代表第i个点,它的经度为xi,表示为Pi.xi,纬度为yi,表示为Pi.yi,并且设定P0为原点。


3.如权利要求1所述的遍历多点归原的路径规划方法,其特征在于,取子树的组合公式如下:
设B0为所有子树的根节点的集合,定义为:
B0={Pi|TM(P0,Pi)≠Φ∧(i∈N+)∧(0<i<M)}
设B1为B0中某根结点Px下的第一代子节点的集合,它的定义为:
B1={Pi|TM(Px,Pi)≠Φ∧(i∈N+)∧(0<i<M)∧(Px∈B0)}
与B1的定义类似,设B2为B1中某根结点Px下的第一代子节点的集合,它的定义为:
B2={Pi|TM(Px,Pi)≠Φ∧(i∈N+)∧(0<i<M)∧(Px∈B1)}
按此类推,设Bj为Bj-1中某根结点Px下的第一代子节点的集合,它的定义为:
Bj={Pi|TM(Px,Pi)≠Φ∧(i∈N+)∧(0<i<M)∧(Px∈Bj-1)}
取某一子树所有点的公式为:



SonTri代表第i子树所有点的集合。


4.如权利要求1所述的遍历多点归原的路径规划方法,其特征在于求最密子树的方法如下:
根据前面步骤的条件,结合下面的求子树密...

【专利技术属性】
技术研发人员:李斌骆剑锋朱展延陈逸婷曾雄庾文聪
申请(专利权)人:东莞职业技术学院骆剑锋
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1