CN109540165A - 一种启发式搜索的高速路网约束寻路算法 - Google Patents
一种启发式搜索的高速路网约束寻路算法 Download PDFInfo
- Publication number
- CN109540165A CN109540165A CN201811415513.3A CN201811415513A CN109540165A CN 109540165 A CN109540165 A CN 109540165A CN 201811415513 A CN201811415513 A CN 201811415513A CN 109540165 A CN109540165 A CN 109540165A
- Authority
- CN
- China
- Prior art keywords
- path
- section
- state
- atom
- charging section
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/26—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
- G01C21/34—Route searching; Route guidance
- G01C21/3446—Details of route searching algorithms, e.g. Dijkstra, A*, arc-flags, using precalculated routes
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01C—MEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
- G01C21/00—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
- G01C21/26—Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
- G01C21/34—Route searching; Route guidance
- G01C21/3407—Route searching; Route guidance specially adapted for specific applications
- G01C21/3415—Dynamic re-routing, e.g. recalculating the route when the user deviates from calculated route or after detecting real-time traffic data or accidents
Landscapes
- Engineering & Computer Science (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Automation & Control Theory (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Navigation (AREA)
- Devices For Checking Fares Or Tickets At Control Points (AREA)
Abstract
本发明公布了一种基于启发式搜索的高速路网约束寻路算法,以指定路网、指定路网中的道路起点、道路终点和驶经的收费路段集合为输入数据,通过启发式搜索,生成连接道路起点与道路终点之间的多条路径,并从多条路径中选择一条与输入的收费路段重合度最高的路径,作为输出路径。采用本发明技术方案,通过可复用的路网结构与记录的起点、终点和收费路段集合来进行路径解析,能够节省大量路径储存空间;可以得到该行驶记录中用户的行驶路径是从起点到终点的第几短路,也可以得到该路径在集合中覆盖到了几个有效收费路段;且算法速度快,效率高,具有比较好的可调节性。
Description
技术领域
本发明属于智能交通技术领域,涉及路网寻路方法,尤其涉及一种启发式的高速路网约束寻路算法,实现在给定路径提示的约束下在高速路网上的两点间的寻路。
背景技术
高速出行已经是我国的骨干交通方式之一,高速路网的运行状况将与民生直接相关。为了使其长久平稳地运行,车辆在路网上的行驶信息需要被记录在数据库中。但每日路网上行驶的车次数目巨大,车辆的行驶路径也很多变。将每条行驶路径直接记录在数据库中是不现实的,它所需的存储代价过大;另一方面,直接保存行驶路径也要求车辆在经过交汇口时能被准确追踪,这也是不现实的。
在一种对高速路网的建模方式中,结点通常指代收费站、交叉口等实体,而原子路段则是连接这些实体之间的基本单元。路网上的收费站可以被划分成多个不相交的集合以便管理,并且每个集合都有一个唯一编号。类似的,路网上的每个结点和原子路段也都有一个唯一编号。在数据库中记录车辆驶过的不同收费站集合的编号来间接保存行驶路径,是一种对原始的行驶路径的压缩。这种方式虽然会使行驶路径有一定的精确性损失,但其在存储和管理上带来的好处是巨大的。不过,在后续利用以这种方式存储的行驶记录时,必须先从记录中的各个收费站集合解析出车辆的行驶路径,才能进行下一步的统计研究。
车辆行驶在原子路段上,因此上述以收费站集合为单元的表示方式与这个情景并不直接相容。以每个收费站为起点,以遇到其他收费站为截止条件,使用搜索算法对路网上的原子路段染色,可以取得一个收费站控制的原子路段集合。将一个收费站集合中所有收费站控制的原子路段集合取并集,可以实现从收费站集合到原子路段集合的转换。因此在这里引入“收费路段”的概念,它与“收费站集合”一一对应,收费路段包含的原子路段列表,就是对应的收费站集合通过上述方式求得的原子路段集合。
现有技术中,一种用于从收费路段的集合解析出行驶路径的算法需要对路网进行预处理,算法先枚举路网上所有不同收费站的二元组,然后对每个二元组计算得到连接它们的最短的N条路径,最后将这些路径保存在某张表中该二元组对应的表项内。该算法解析路径时,首先依据记录中的起点和终点,在上述表中找到保存的N条路径的表项,再遍历这些路径,以确定与记录中收费路段的集合最为匹配的一条。
但是,上述方法存在很大的局限性。首先,当路网规模固定时,路径解析的准确性将与预处理环节中保存的路径数量N有关。N从小到大时,准确性增加的速度将会放缓,而保存的路径总数也会增大,运行时处理每一条记录需要比对的路径数量也会随之增大。其次,由于保存的路径总数量与路网中收费站数量的平方呈正比关系,当路网规模增大、收费站数量增加时,存储这些预处理路径的代价将迅速增大。因此,这种解析路径算法的局限性比较大。
启发式搜索是一种利用提示条件来寻找目标最优解(或较优解)的有效算法。这种方法的应用范围很大,算法使用的启发函数可以任意配置,在使用上非常灵活。另外,启发函数可以使算法在效率和精确性之间取得平衡,而在处理海量的高速公路行驶记录时,效率和精确性都是重要的因素。启发式搜索是一种重要的寻路算法,但目前在解析路径的过程中还没有使用启发式搜索的高速路网约束寻路算法。
发明内容
为了克服上述现有技术的不足,本发明提供一种基于启发式搜索的高速路网约束寻路算法,在真实路网的大小规模下可以高效地解析行驶路径,能够满足实际应用需求。
本发明提供的寻路算法首先加载路网信息以及对应的图结构;再从数据库中的某条行驶记录中提取出起点、终点和驶经的收费路段集合;接着把路网以及其图结构、记录的起点、终点和收费路段集合作为输入提供给启发式搜索算法,并通过搜索范围参数来进行调整,最后能得到算法对记录进行路径解析的结果。
本发明提供的技术方案是:
一种基于启发式搜索的高速路网约束寻路算法,所述算法以指定的路网及其图结构、道路的起点、终点和驶经的收费路段集合为输入数据,根据指定的搜索范围参数,使用启发式搜索从短到长生成连接起终点的多条路径,并在搜索范围参数允许的范围内从这些路径中选择出一条与输入的收费路段重合度最高的路径,作为输出路径。具体包括如下步骤:
1)遍历输入的收费路段集合中每个收费路段包含的原子路段,生成有效收费路段的集合,建立从路网中的原子路段到所在收费路段集合的映射;初始化用于启发式搜索的优先队列和其他与记录搜索状态及对应路径有关的数据结构;
其中,有效收费路段是指输入的收费路段包含的原子路段中,至少有一条原子路段在输入中给定的路网上的收费路段,而建立的映射的定义域仅需要包含所有有效收费路段包含的原子路段;
用于启发式搜索的优先队列中的元素,即搜索的状态,具有以下结构:
1C)当前状态所处位置的索引;这里的位置是对路网结点的抽象表达,包括收费站和交叉口等不同类型,它与路网的数据结构有关;
1D)当前路径覆盖的有效收费路段集合,以D维布尔向量表示;
1E)当前路径的长度;
1F)从当前位置到达终点的预估距离;
1G)存放路径链表的线性表中的索引,指向当前路径在边链上的最后一个结点在线性表中的位置。
在初始化时,优先队列中将用起点的索引构建初始元素;
2)不断取出优先队列的队首状态为当前状态,以当前状态所处位置(即1C)项)为中心,沿着当前位置所有的邻接原子路段进行移动,以扩展产生新状态的集合,并通过设定的条件来进行筛选;如果优先队列已为空,则结束操作,返回已有的最佳路径;
采用本发明寻路方法,完美路径是一条从起点到终点的路径,同时要求路径中包含的原子路段覆盖了所有有效的收费路段,而且是在所有满足该要求的路径中长度最短的那条;在没有找到完美路径时,最佳路径同样是一条从起点到终点的路径,并且除了要求它在所有这样的路径中覆盖了最多的有效收费路段以外,还要求它在此前提之下路径长度最短;
3)如果筛选后的新状态没有抵达终点,则将这个新状态插入到优先队列中的有序位置,再回到步骤2)以继续扩展新的状态;如果新状态抵达了终点,则:或者该状态对应了一条完美路径,该路径将被直接返回,或者该状态将被用来尝试更新当前的最佳路径;
启发式搜索的核心要点是为优先队列中的每个元素计算一个估计值,并按该估计值从小到大的顺序排列优先队列中的元素;相应地,把一个状态插入到优先队列中的有序位置,就要求插入后的优先队列中的元素仍然符合上述估值大小顺序的约束。为元素计算估计值的函数被称为启发函数,本发明寻路算法使用的启发函数使用了路网结点的地理位置信息以进行辅助导向。
针对上述基于启发式搜索的高速路网约束寻路算法,进一步地,
步骤1)所述的生成有效收费路段集合,建立从路网中的原子路段到所在收费路段集合的映射,具体包括如下步骤:
11)建立一个空映射,它将原子路段映射到所属的有效收费路段的集合;建立一个有效收费路段的空集;
12)遍历输入的所有收费路段,执行如下操作13)~16);
13)从路网中取得该收费路段包含的原子路段列表;如果该列表为空,即没有属于该收费路段的原子路段存在于指定路网中,则回到步骤12)并选择下一个收费路段,否则将该收费路段添加到有效收费路段集合中;
14)遍历取得的原子路段列表中的每一条原子路段,重复执行步骤15);
15)如果该原子路段已在映射的定义域中,则将当前收费路段添加到原子路段映射后的收费路段集合中,并更新映射,否则,将该原子路段添加到映射的定义域中,并使其映射后的值为只包含该收费路段的单元集;
16)回到步骤12)并选择下一个收费路段。
步骤2)所述扩展并筛选新的状态具体包括如下步骤:
21)不断取出优先队列的队首状态为当前状态,执行步骤22)~25);如果队列已为空,则返回当前的最佳路径;特别的是,如果最佳路径为空(即初始值),则说明路网中没有从起点到终点的通路;
22)找到当前状态所处位置的邻接原子路段集合,遍历该集合中的原子路段并执行步骤23)~25);
23)计算从当前状态经过该原子路段后到达的新状态;如果新状态到达终点的预估距离超过了已有最佳路径的长度的指定倍数,则回到步骤22)并选择下一个原子路段;其中,这一步的指定倍数是算法的范围参数,用于控制算法在尚未找到完美路径时的最大搜索范围;
24)考察在搜索产生的历史状态中,所处位置和上一步得到的新状态的位置是相同的,并且具有相同的有效收费路段覆盖集合的所有历史状态,并确定这些状态对应的路径长度的最小值;其中,一个状态覆盖的有效收费路段集合指的是状态对应的路径上所有原子路段所属的有效收费路段集合的并集;
25)如果新状态对应的路径长度大于等于该最小值,则回到步骤22)并选择下一个原子路段,否则接纳该状态到历史状态中,然后进入步骤3)。
步骤3)所述的判断完美路径及更新当前最佳路径具体包括如下步骤:
31)如果新状态到达的位置不是终点,那么将该状态添加到优先队列中的有序位置,再回到步骤22)以选择下一个原子路段;
32)如果新状态覆盖了所有的有效收费路段,则直接返回该状态对应的路径并标注其为完美路径,而且是从起点到终点的第k短路,其中k是搜索历史上到达终点的次数;
33)如果新状态覆盖的有效收费路段数量大于已有最佳路径的覆盖数量,或者两者的覆盖数量相等,但新状态对应路径的长度小于最佳路径长度时,用新状态的对应路径作为新的最佳路径。
与现有技术相比,本发明的有益效果是:
本发明提供的寻路算法能节省大量路径储存空间。不论是直接储存路径在行驶记录中,还是通过预处理的方法进行路径解析,都会浪费巨大的空间,而本算法仅通过可复用的路网结构与记录的起点、终点和收费路段集合来进行路径解析。
本算法能得到有用的辅助性信息。在算法完成寻路后,可以得到该行驶记录中用户的行驶路径是从起点到终点的第几短路,也可以得到该路径在集合中覆盖到了几个有效收费路段。
本算法速度快,效率高。启发式搜索使用的启发函数,能利用路网结构具有的地理位置信息,可以快速从起点导向到终点,使其在实际应用中达到近乎线性的速度,减少无用浪费。
本算法具有比较好的可调节性。在搜索时可以指定范围参数来合理控制搜索范围,消减难以找到完美路径时浪费的无用搜索时间,以提前结束搜索而取得具有一定准确度的路径;另外,算法使用了启发式搜索的框架,启发函数可以根据路网实际特点添加更多细节,能在精确性和效率之间进行与路网结构更贴合的调节。
因此,本发明基于启发式搜索的高速路网约束寻路算法,其具有高效性、节省存储代价、灵活可调节、可产生辅助性信息等优势,可以成为现有高速公路网信息化技术发展与统计研究的有效基础性工具。通过本发明提供的技术方案,短期来看,高速路网约束寻路能帮助管理部门和研究人员快速地解析出原始行驶路径,能对均衡高速公路负载和其他相关应用起到支撑性作用;长期来看,高速路网约束寻路是高速路网信息化建设中的重要基础环节,是在准确性和存储空间中寻求平衡时的有力工具。
附图说明
图1是本发明提供的寻路算法的整体流程框图。
图2是本发明实施例中生成有效收费路段集合,并建立原子路段到所在收费路段集合的映射所采用方法的流程框图。
图3是本发明实施例中扩展并筛选新状态所采用方法的流程框图。
图4是本发明实施例中判断完美路径与更新当前最佳路径所采用方法的流程框图。
上述图2、图3和图4一起构成了整个寻路算法的具体流程框图。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供一种基于启发式搜索的高速路网约束寻路算法,图1是本发明提供算法的整体流程图。首先根据路网结构和输入信息,生成有效收费路段集合,建立原子路段到收费路段集合的映射并初始化其他相关的数据结构;然后不断从优先队列中取出当前状态,直到优先队列为空时返回当前最佳路径,否则遍历当前状态的邻接结点以扩展和筛选新的状态;再根据新状态的属性来判断完美路径,或尝试更新当前的最佳路径。具体包括如下步骤:
1)根据路网结构和行驶记录,生成有效收费路段集合,建立原子路段到所在收费路段集合的映射,并初始化其他相关数据结构
因为本算法并不局限于固定的路网或固定的行驶记录集合,而每一条行驶记录涉及到的收费路段集合也各有不同,因此,有效收费路段的集合以及原子路段到所在收费路段集合的映射,在不同的路网和行驶记录之间均有所不同,需要在给定路网和行驶记录之后动态计算。在所用路网固定时,也可以对路网上的原子路段和收费路段的关系进行预处理,从而加速算法中这一步的动态计算。
简单来说,这一步开始将建立空的映射与空的有效收费路段集合,接着遍历输入中的每个收费路段并取得其在路网中包含的原子路段列表。若不为空则将其加入到有效收费路段集合中,并将该收费路段添加到该原子路段在映射中对应的收费路段集合中。直到输入的收费路段集合遍历完毕后,有效收费路段集合与上述映射也将构建完毕。
图2是本发明中的生成有效收费路段集合,并建立原子路段到所在收费路段集合的映射的流程框图。这一过程包括如下步骤:
11)建立一个从原子路段的索引到D维布尔向量的空映射F,其中向量维度D应大于等于输入的收费路段集合中的元素数量;
12)初始化有效收费路段的集合此后将用n来表示该集合的大小|E|;
13)遍历输入的收费路段集合中的所有收费路段,执行如下操作14)~19);如果已经遍历完毕,则映射F和集合E业已计算完成;
14)从路网中取得当前收费路段包含的原子路段列表;如果该列表为空,则回到步骤13)并选择下一个收费路段,否则将该收费路段添加到E中;
15)遍历取得的原子路段列表中的每一条原子路段,重复执行步骤16)~19);如果列表已被全部遍历,则回到步骤13)并选择下一个收费路段;
16)如果该原子路段的索引值I存在于当前映射F的定义域中,执行步骤18);
17)取一个D维向量N,并且N的第n个分量(从0始计)为1而其他分量全为0,然后使映射F=F∪{<I,N>},再执行步骤19);
18)设N=F(I),再取D维向量N′=N,然后将其第n个分量(从0始计)置为1,最后令F(I)=N′以更新映射;
19)回到步骤15)并选择下一条原子路段。
与这些步骤相关的D维布尔向量,可以通过类似位向量(bitset)的实现方式以节省空间,而映射F和集合E可以使用散列表或平衡二叉树等数据结构来实现。
流程图中没有包含初始化有关数据结构的步骤。本算法在运行过程中将主要产生并维护三个数据结构:用于启发式搜索的优先队列,用于存放路径链表的线性表,和用于查找及更新历史状态的映射。
用于存放路径链表的线性表
该线性表中的元素(即链表的结点)具有以下结构:
1A)当前路径的最后一条原子路段的索引;
1B)当前路径的上一条原子路段所在结点在该线性表中的索引。
在初始化时,该线性表置为空。
这个线性表中各元素1B)项的串联,使其容纳了多个逻辑上的单链表,每个单链表保存了一条在搜索过程中产生的路径。各个链表之间往往会共享部分靠前的结点以节省空间,所以它们将耦合形成树结构,因此线性表中实际存储了一片树林来保存搜索产生的路径分支。
可以有多种数据结构用来保存搜索中产生的路径,以在空间占用或维护速度上取得优势。但事实上它们只是不同的保存路径的手段,改用了这些数据结构的算法均为本算法的变体,它们并不改变本算法的主体结构。
用于启发式搜索的优先队列中的元素(即搜索的状态)具有以下结构:
1C)当前所处位置的索引;这里的位置是对路网结点的抽象表达,包括收费站和交叉口等不同类型,它与路网的数据结构有关;
1D)当前路径覆盖的有效收费路段集合,以D维布尔向量表示;
1E)当前路径的长度;
1F)从当前位置到达终点的预估距离;
1G)存放路径链表的线性表中的索引,指向当前路径在边链上的最后一个结点在线性表中的位置。
在初始化时,优先队列中将用起点的索引构建初始元素。
从当前位置到达终点的预估距离,即其1F)项,可以通过预处理的方式以实现常数时间的生成,而另一种比较简单的做法则是用当前位置到终点的直线距离来代替预估距离,并且直线距离可以从路网上保存的各结点的地理位置信息中计算。但不论如何,总是要求预估距离不能大于从当前位置到达终点的最短真实距离。
在优先队列中,如果一个状态的1E)与1F)项之和更小,那么它具有更高的优先级,应该排在优先队列中的更前位置。优先队列可以采用最小堆实现,但不论优先队列和其中元素的具体结构与布局,它们都是一种用于启发式搜索的优化方法,改用了这些数据结构的算法均为本算法的变体,它们并不改变本算法的主体结构。
用于查找和更新旧有状态的映射具有以下结构:
1H)映射的键为路网上不同位置的索引;
1I)映射的值为一个从D维布尔向量到实数的映射。
在初始化时,该映射置为空。
在搜索过程中的某一时刻,考虑当前所有的处于1H)项对应位置的历史状态,则1I)项中的映射的定义域,就是上述历史状态能覆盖到的有效收费路段集合,而1I)项中映射的值则为这些历史状态的对应路径中长度的最小值。
这种数据结构的主要作用是进行状态的查重与对整个搜索的剪枝,来减少搜索中的冗余计算,加快搜索速度。能起到类似作用的数据结构有很多,但改用了这些数据结构的算法均为本算法的变体,它们并不改变本算法的主体结构。
2)扩展并筛选新的状态
寻路算法的核心是搜索,而搜索的基础是对状态进行生成与扩展。从上一部分描述的三种数据结构可以看出,本算法中的状态不仅仅代表了在寻路过程中到达的某处位置,更代表了从起点到达该位置的一条可选路径。另外,为了实现搜索中所要求的约束条件,对状态的筛选也必不可少。
简单来说,这一步将不断取出优先队列的队首状态为当前状态,如果队列为空则返回当前最佳路径,否则将找到此状态的邻接原子路段集合并遍历之;对于每个原子路段计算当前状态经由之可到达的新状态,再通过已有最佳路径的长度上限等关卡实现对状态的筛选,从而允许将状态传递到下一步中。
图3是本发明中的扩展并筛选新状态的流程框图。这一过程具体包括如下步骤:
21)取起始点为初始状态,并放入优先队列中;
22)不断从优先队列中取出队首状态S,执行如下步骤23)~29);如果队列已为空,则返回当前的最佳路径,并返回该路径覆盖的有效收费路段个数c′;特别地,如果返回的最佳路径为空(即初始值),则说明路网中没有从始点到终点的通路;
23)如果状态S有对应的路径链表结点的索引(即S不是初始状态,其1G项有意义),则以该原子路段的起点b作为当前位置的来处,否则令b为空;
24)设状态S所处的当前位置(即其1C项)的邻接原子路段集为L,遍历L中的每一条原子路段,执行步骤25)~29);如果L已被遍历完毕,则回到步骤22)并选择下一个队首状态;
25)设当前原子路段为e,若e的终点为b,则回到步骤24)并选择下一条原子路段;
26)计算从状态S经过原子路段e后到达的新状态S′;其中,设状态S覆盖的有效收费路段集合(即其1D项)为T,又设原子路段e的索引为Ie,则新状态S′覆盖的有效收费路段集合为T∪F(Ie);新状态S′的其他域计算类似,但其1G)项将延迟到步骤3)中计算,因为此时该状态还未加进边链中;
27)若S′的预估距离,即其1F)项,大于当前最佳路径的长度的m倍(m为算法的范围参数,可选1.5),则回到步骤24)并选择下一条原子路段;特别地,最佳路径的初始值为空,而此时其长度定义为无穷大;
28)在步骤1)中初始化的查找和更新旧有状态的映射之中,利用S′所处位置的索引和具有的有效收费路段覆盖集合作为两次查询的键,取得在所有的和S′具有相同位置且有相同的有效收费路段覆盖集合的历史状态中,对应路径的最短长度d;特别地,如果S′所处位置的索引值不在外层映射的定义域中,则以此索引为键、以空映射为值,将此键值对添加到外层映射中;而如果S′覆盖的有效收费路段集合不在内层映射的定义域中,则类似地,以此集合为键,以无穷大为值,将此键值对添加到该内层映射中;
29)如果S′的当前路径长度,即其1E)项,大于等于d,则回到24)并选择下一条原子路段,否则接纳S′为历史状态,即更新上一步在映射中取得的值d,使其为S′的路径长度,然后进入步骤3);
3)判断完美路径与更新当前最佳路径
在已取得通过筛选的新状态后,为了完成算法的既定目标,需要对新状态对应路径的属性进行检测。在路网上从起点到终点可能有多条路径,在给定约束条件(即输入的收费路段集合)下,如何衡量这多条路径与约束条件的匹配程度呢?本算法采用的一种衡量标准是,在所有路径中有效收费路段数量覆盖多的有更好的匹配度,而在有同样覆盖数量的路径中,长度更短的路径有更好的匹配度。
简单来说,这一步将先确定新状态是否处于终点;如果它不在终点,那么将新状态插入到优先队列的合适位置中,然后继续在步骤2)中遍历下一条邻接的原子路段;否则新状态将处于终点,如果其覆盖了所有的有效收费路段,则代表了这是一条完美路径,将直接返回路径及其相关信息,否则这有可能是一条最佳路径,尝试与现有的最佳路径比较并更新。
图4是本发明的判断完美路径与更新当前最佳路径的步骤的详细展示。该环节包括如下步骤:
31)将当前状态S的1G)项和当前原子路段e的索引,组合成路径链表中的一个新结点并放在保存路径链表的线性表的末尾;
32)如果S′所处的当前位置(即其1C项)不是终点,那么上步中新结点存放位置的索引将被填入状态S′的1G)项,然后将S′添加到优先队列中的有序位置,再回到步骤2)中的步骤24),并选择下一条原子路段;
33)如果当前是首次到达终点,则初始化当前最短路序数k为1,否则使k=k+1;再取c为S′覆盖的有效收费路段的个数(即其1D项中取值为1的向量分量个数),如果c与总有效收费路段数n相等,则状态S′对应的路径是完美路径,且是路网上从始点到终点的第k短路,从边链上取得该完美路径,并将其与k返回;
34)如果c大于当前最佳路径覆盖的有效收费路段个数c′(初始为0),或c=c′,但S′的路径长度比当前最佳路径长度要小,则令c′=c,并使S′对应的路径为新的最佳路径;
35)返回步骤2)中的步骤24),并选择下一条原子路段。
本发明一实施例针对某省级高速路网,利用路网的图结构及其上各结点的地理位置信息,结合该省级高速路网某节日的高速路车辆行驶记录,通过本发明解析该日各条行驶记录的详细路径,以备对整个路网的车流情况进行统计分析。该省的高速路网密度高,拓扑结构复杂,路网结点数很大,而选用的数据正值节假日,行驶记录的数量巨大。因此,为了能对数据进行快速有效的分析,要有很高效的从行驶记录中解析出行驶路径的约束寻路算法。快速分析大量行驶记录是评估路网状态、分析通行模式,以及提高高速公路运行效率的重要基础。现采用基于启发式搜索的高速路网约束寻路算法,获得极为快速的行驶记录路径解析。
管理人员整合已有路网的相关信息作为算法指定使用的路网,然后进行算法的范围参数的设定,再按照如下步骤,对行驶记录进行快速的路径解析,以备后续使用:
步骤一:输入一条行驶记录,解析得到其起点、终点与涉及到的收费路段集合;
步骤二:建立记录中的有效收费路段集合与路网中的原子路段到其所属的收费路段集合的映射;
步骤三:初始化优先队列,将起点作为初始状态放入其中;
步骤四:不断从优先队列中取出当前状态,并遍历该状态所在位置在路网上的邻接原子路段集合;
步骤五:对于每个原子路段,判断其是否走了回边,如果不是回边则计算从当前状态沿此原子路段行进后可达到的新状态;
步骤六:如果该新状态已经走出了已有最佳路径的指定倍数(即范围参数),说明已经超出了搜索范围,丢弃这个新状态;
步骤七:判断在所有达到相同位置、具有相同收费路段覆盖集合的历史状态中这个新状态是否有最小的路径长度,如果为真则说明上述新状态取得了更优的解,接受这个状态,否则丢弃这个状态;
步骤八:对于接受了的新状态,如果它还没有到达终点,则将其添加到优先队列中,然后继续处理下一个新状态;
步骤九:如果当前到达终点的新状态覆盖了所有的有效的收费路段集合,那么它必然是一个完美解,对应的路径是完美路径,算法结束;否则,比较新状态的路径与当前最优路径之间的匹配度高低,并尝试用之更新,然后继续处理下一个新状态;
步骤十:如果直到队列为空还没有找到完美路径,则用当前的最佳路径作为一个较优的解返回。特别的是,如果最佳路径为空,代表在路网上起点与终点没有通路,说明路网的结构或者该条记录存在问题。
上述具体过程根据路网结构和输入信息,生成有效收费路段集合,建立原子路段到收费路段集合的映射并初始化其他相关的数据结构;然后不断从优先队列中取出当前状态,直到优先队列为空时返回当前最佳路径,否则遍历当前状态的邻接结点以扩展和筛选新的状态;再根据新状态的属性来判断完美路径并直接返回,或尝试更新当前的最佳路径。通过本发明提供的技术方案,高速公路管理与研究人员可以快速地解析行驶记录的路径,极大地提高决策的效率,从而为快速准确地获知某一时刻的路网历史状态或最近状态提供有力基础。
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (6)
1.一种基于启发式搜索的高速路网约束寻路算法,以指定路网、指定路网中的道路起点、道路终点和驶经的收费路段集合为输入数据,通过启发式搜索,生成连接道路起点与道路终点之间的多条路径,并从多条路径中选择一条与输入的收费路段重合度最高的路径,作为输出路径;包括如下步骤:
1)遍历输入的收费路段集合中的每个收费路段的原子路段,将收费路段包含的原子路段中至少有一条原子路段在所述指定路网上的收费路段作为有效收费路段,生成有效收费路段集合,建立从原子路段到所在收费路段集合的映射;所述映射的定义域仅需要包含所有有效收费路段包含的原子路段;
初始化寻路算法的数据结构,包括:用于启发式搜索的优先队列和用于记录搜索状态及对应路径的数据结构;
优先队列中的元素为搜索的状态;优先队列具有以下结构:
1C)当前所处位置的索引;所述位置为不同类型的路网结点;
1D)当前路径覆盖的有效收费路段集合;
1E)当前路径的长度;
1F)从当前位置到达终点的预估距离;
1G)存放路径链表的线性表中的索引,指向当前路径在边链上的最后一个结点在线性表中的位置;
初始化优先队列即用起点的索引构建优先队列的初始元素;优先队列的启发函数使用路网结点的地理位置信息进行辅助导向;
2)取出优先队列的队首状态,作为当前状态;以当前状态所处位置为中心,在路网上遍历邻接的原子路段,扩展并筛选得到新状态;如果优先队列已为空,则返回已有的最佳路径;具体执行如下步骤:
21)不断取出优先队列的队首状态为当前状态,执行步骤22)~25);如果优先队列已为空,则返回当前的最佳路径;此时如果最佳路径为空,说明路网中没有从起点到终点的通路;
22)找到当前状态所处位置的邻接原子路段集合,遍历该集合中的原子路段并执行步骤23)~25);
23)计算从当前状态经过该原子路段后到达的新状态;如果新状态到达终点的预估距离超过了已有最佳路径的长度的指定倍数,则回到步骤22)并选择下一个原子路段;其中,所述指定倍数是算法的范围参数,用于控制算法在尚未找到完美路径时的最大搜索范围;
所述完美路径是一条从起点到终点的路径,该路径包含的原子路段覆盖了所有有效的收费路段,而且是在满足该要求的所有路径中长度最短的那条路径;
尚未找到完美路径时,最佳路径是一条从起点到终点的、覆盖了最多的有效收费路段的所有路径中,路径长度最短的路径;
24)考察在搜索产生的历史状态中,所处位置和上一步得到的新状态的位置是相同的,并且具有相同的有效收费路段覆盖集合的所有历史状态,并确定状态中对应路径长度的最小值;其中,一个状态的有效收费路段覆盖集合指的是状态对应的路径上所有原子路段所属的有效收费路段集合的并集;
25)如果新状态对应的路径长度大于等于该最小值,则返回步骤22)并选择下一个原子路段,否则接纳该状态到历史状态中;
3)如果新状态没有抵达终点,则将该新状态插入到优先队列中的有序位置,再回到步骤2)以继续扩展新的状态;
如果新状态抵达了终点,则表示该状态对应了一条完美路径或该状态将被用来尝试更新当前的最佳路径;若该状态对应了一条完美路径,则直接返回该完美路径;
通过上述步骤,实现基于启发式搜索的高速路网约束寻路。
2.如权利要求1所述基于启发式搜索的高速路网约束寻路算法,其特征是,步骤1)生成有效收费路段的集合,建立从路网中的原子路段到所在收费路段集合的映射,具体包括如下步骤:
11)建立一个空映射,将原子路段映射到所属的有效收费路段的集合;建立一个有效收费路段的空集;
12)遍历输入的所有收费路段,执行步骤13)~16);
13)从路网中取得当前收费路段包含的原子路段列表;如果该列表为空,即没有属于该收费路段的原子路段存在于指定路网中,则回到步骤12)并选择下一个收费路段,否则将该收费路段添加到有效收费路段集合中;
14)遍历取得的原子路段列表中的每一条原子路段,重复执行步骤15);
15)如果该原子路段已在映射的定义域中,则将当前收费路段添加到原子路段映射后的收费路段集合中,并更新映射,否则,将该原子路段添加到映射的定义域中,并使其映射后的值为只包含该收费路段的单元集;
16)返回步骤12)并选择下一个收费路段。
3.如权利要求1所述基于启发式搜索的高速路网约束寻路算法,其特征是,步骤3)具体包括如下步骤:
31)如果新状态到达的位置不是终点,那么将该状态添加到优先队列中的有序位置,再返回步骤22)选择下一个原子路段;
32)如果新状态覆盖了所有的有效收费路段,则直接返回该状态对应的路径作为完美路径,该路径是从起点到终点的第k短路,其中k是搜索历史上到达终点的次数;
33)如果新状态覆盖的有效收费路段数量大于已有最佳路径的覆盖数量,或者两者的覆盖数量相等,但新状态对应路径的长度小于最佳路径长度时,用新状态的对应路径作为新的最佳路径。
4.如权利要求1所述基于启发式搜索的高速路网约束寻路算法,其特征是,步骤1)所述用于记录搜索状态及对应路径的数据结构包括:用于存放路径链表的线性表和用于查找及更新历史状态的映射。
5.如权利要求4所述基于启发式搜索的高速路网约束寻路算法,其特征是,
所述用于存放路径链表的线性表的元素为链表的结点,具有以下结构:
1A)当前路径的最后一条原子路段的索引;
1B)当前路径的上一条原子路段所在结点在该线性表中的索引;
在初始化时,将线性表置为空;
所述用于查找及更新历史状态的映射具有以下结构:
1H)映射的键为路网上不同位置的索引;
1I)映射的值为一个从D维布尔向量到实数的映射;
在初始化时,将该映射置为空。
6.如权利要求4所述基于启发式搜索的高速路网约束寻路算法,其特征是,步骤3)判断状态是对应一条完美路径或是该状态将被用来尝试更新当前的最佳路径,具体包括如下步骤:
31)将当前状态S的1G)项和当前原子路段e的索引,组合成路径链表中的一个新结点并放在保存路径链表的线性表的末尾;
32)如果S′所处的当前位置1C项不是终点,将步骤31)中新结点存放位置的索引填入状态S′的1G)项,然后将S′添加到优先队列中的有序位置,再返回步骤24),并选择下一条原子路段;
33)如果当前是首次到达终点,则初始化当前最短路序数k为1,否则使k=k+1;再取c为S′覆盖的有效收费路段的个数,即1D项中取值为1的向量分量个数;如果c与总有效收费路段数n相等,则状态S′对应的路径是完美路径,且是路网上从始点到终点的第k短路,从边链上取得该完美路径,并将其与k返回;
34)如果c大于当前最佳路径覆盖的有效收费路段个数c′,或c=c′,但S′的路径长度比当前最佳路径长度小,则令c′=c,并使S′对应的路径为新的最佳路径;
35)返回步骤24),并选择下一条原子路段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811415513.3A CN109540165B (zh) | 2018-11-26 | 2018-11-26 | 一种启发式搜索的高速路网约束寻路算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811415513.3A CN109540165B (zh) | 2018-11-26 | 2018-11-26 | 一种启发式搜索的高速路网约束寻路算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109540165A true CN109540165A (zh) | 2019-03-29 |
CN109540165B CN109540165B (zh) | 2022-07-01 |
Family
ID=65849646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811415513.3A Active CN109540165B (zh) | 2018-11-26 | 2018-11-26 | 一种启发式搜索的高速路网约束寻路算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109540165B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110516938A (zh) * | 2019-08-14 | 2019-11-29 | 天津市市政工程设计研究院 | 一种基于启发式算法的区域禁货道路划定方法 |
CN112330026A (zh) * | 2020-11-06 | 2021-02-05 | 思创数码科技股份有限公司 | 一种基于动态路网的行程请求批处理方法 |
CN112347216A (zh) * | 2020-11-06 | 2021-02-09 | 思创数码科技股份有限公司 | 一种基于动态路网的初始线路搜索方法 |
CN114648491A (zh) * | 2022-02-22 | 2022-06-21 | 山东土地集团数字科技有限公司 | 一种用于耕地道路的遥感监测系统和方法 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1900655A (zh) * | 2005-07-22 | 2007-01-24 | 株式会社电装 | 导航系统 |
CN101603837A (zh) * | 2009-05-14 | 2009-12-16 | 深圳市凯立德计算机系统技术有限公司 | 一种导航路径计算方法、装置和导航装置 |
CN102081846A (zh) * | 2011-02-22 | 2011-06-01 | 交通运输部公路科学研究所 | 基于高速公路收费数据轨迹匹配的交通状态识别方法 |
CN102460072A (zh) * | 2009-06-08 | 2012-05-16 | 歌乐株式会社 | 路径搜索装置和路径搜索方法 |
CN102682076A (zh) * | 2012-03-13 | 2012-09-19 | 百度在线网络技术(北京)有限公司 | 一种用于提供路径信息的方法与设备 |
CN104019822A (zh) * | 2013-02-28 | 2014-09-03 | 北京四维图新科技股份有限公司 | 一种汽车导航方法、装置及导航终端 |
CN104807468A (zh) * | 2014-11-13 | 2015-07-29 | 厦门大学 | 一种多目的地地图的自动简化及布局优化方法和系统 |
CN105023434A (zh) * | 2015-07-03 | 2015-11-04 | 信融源大数据科技(北京)有限公司 | 一种高速公路拥堵指数的获取方法 |
CN105606105A (zh) * | 2014-11-19 | 2016-05-25 | 比亚迪股份有限公司 | 导航方法、导航服务器和导航系统 |
JP2018072193A (ja) * | 2016-10-31 | 2018-05-10 | パイオニア株式会社 | 経路探索装置、制御方法、プログラム及び記憶媒体 |
CN108230217A (zh) * | 2017-12-28 | 2018-06-29 | 江苏交科能源科技发展有限公司 | 一种基于高速公路收费数据的能耗排放总量核算系统及其核算方法 |
CN108492558A (zh) * | 2018-03-27 | 2018-09-04 | 深圳大学 | 一种高速公路预约出行方法、存储介质及终端 |
-
2018
- 2018-11-26 CN CN201811415513.3A patent/CN109540165B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1900655A (zh) * | 2005-07-22 | 2007-01-24 | 株式会社电装 | 导航系统 |
CN101603837A (zh) * | 2009-05-14 | 2009-12-16 | 深圳市凯立德计算机系统技术有限公司 | 一种导航路径计算方法、装置和导航装置 |
CN102460072A (zh) * | 2009-06-08 | 2012-05-16 | 歌乐株式会社 | 路径搜索装置和路径搜索方法 |
CN102081846A (zh) * | 2011-02-22 | 2011-06-01 | 交通运输部公路科学研究所 | 基于高速公路收费数据轨迹匹配的交通状态识别方法 |
CN102682076A (zh) * | 2012-03-13 | 2012-09-19 | 百度在线网络技术(北京)有限公司 | 一种用于提供路径信息的方法与设备 |
CN104019822A (zh) * | 2013-02-28 | 2014-09-03 | 北京四维图新科技股份有限公司 | 一种汽车导航方法、装置及导航终端 |
CN104807468A (zh) * | 2014-11-13 | 2015-07-29 | 厦门大学 | 一种多目的地地图的自动简化及布局优化方法和系统 |
CN105606105A (zh) * | 2014-11-19 | 2016-05-25 | 比亚迪股份有限公司 | 导航方法、导航服务器和导航系统 |
CN105023434A (zh) * | 2015-07-03 | 2015-11-04 | 信融源大数据科技(北京)有限公司 | 一种高速公路拥堵指数的获取方法 |
JP2018072193A (ja) * | 2016-10-31 | 2018-05-10 | パイオニア株式会社 | 経路探索装置、制御方法、プログラム及び記憶媒体 |
CN108230217A (zh) * | 2017-12-28 | 2018-06-29 | 江苏交科能源科技发展有限公司 | 一种基于高速公路收费数据的能耗排放总量核算系统及其核算方法 |
CN108492558A (zh) * | 2018-03-27 | 2018-09-04 | 深圳大学 | 一种高速公路预约出行方法、存储介质及终端 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110516938A (zh) * | 2019-08-14 | 2019-11-29 | 天津市市政工程设计研究院 | 一种基于启发式算法的区域禁货道路划定方法 |
CN110516938B (zh) * | 2019-08-14 | 2023-09-05 | 天津市政工程设计研究总院有限公司 | 一种基于启发式算法的区域禁货道路划定方法 |
CN112330026A (zh) * | 2020-11-06 | 2021-02-05 | 思创数码科技股份有限公司 | 一种基于动态路网的行程请求批处理方法 |
CN112347216A (zh) * | 2020-11-06 | 2021-02-09 | 思创数码科技股份有限公司 | 一种基于动态路网的初始线路搜索方法 |
CN112347216B (zh) * | 2020-11-06 | 2023-10-31 | 思创数码科技股份有限公司 | 一种基于动态路网的初始线路搜索方法 |
CN112330026B (zh) * | 2020-11-06 | 2024-04-05 | 思创数码科技股份有限公司 | 一种基于动态路网的行程请求批处理方法 |
CN114648491A (zh) * | 2022-02-22 | 2022-06-21 | 山东土地集团数字科技有限公司 | 一种用于耕地道路的遥感监测系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109540165B (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109540165A (zh) | 一种启发式搜索的高速路网约束寻路算法 | |
CN105241458B (zh) | 用于产生、管理、和共享运动路径的方法和装置 | |
CN110008413B (zh) | 一种交通出行问题查询方法和装置 | |
CN103533501B (zh) | 一种地理围栏生成方法 | |
CN102538806B (zh) | 一种路径规划方法以及相关设备 | |
CN103699664B (zh) | 一种配电网动态拓扑分析方法 | |
CN103323018A (zh) | 基于时段的热点路径的特征识别与快速搜索方法 | |
CN109271562B (zh) | 通行费用确定方法、路网节点关系模型构建方法及装置 | |
CN109561386A (zh) | 一种基于多源定位数据的城市居民出行活动模式获取方法 | |
CN109242214A (zh) | 配送路线规划方法和配送路线规划装置 | |
CN103149576A (zh) | 一种浮动车数据的地图匹配方法 | |
CN107798079A (zh) | 基于车辆轨迹数据的路段拼接方法及系统 | |
CN108362293A (zh) | 一种基于关键点技术的车辆轨迹匹配方法 | |
CN111879329B (zh) | 基于a*算法的定制公交可通行最短路径计算方法 | |
CN108388642A (zh) | 一种子图查询方法、装置及计算机可读存储介质 | |
CN107167136A (zh) | 一种面向电子地图的位置推荐方法及系统 | |
CN105976048A (zh) | 一种基于改进人工蜂群算法的输电网扩展规划方法 | |
CN108694278A (zh) | 一种基于道路负载均衡的城市离散交通网络设计方法 | |
Klunder et al. | The shortest path problem on large‐scale real‐road networks | |
Wang et al. | Constrained route planning over large multi-modal time-dependent networks | |
Zhiling et al. | Location: A feature for service selection in the era of big data | |
CN107426315A (zh) | 一种基于BP神经网络的分布式缓存系统Memcached的改进方法 | |
CN107655490A (zh) | 基于移动用户轨迹分段和最热搜索的热点路径发现方法 | |
CN117194600B (zh) | 一种面向业务的地理实体组装方法及系统 | |
Garcia et al. | Hybrid approach for the public transportation time dependent orienteering problem with time windows |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |