CN110457352B - 一种基于微观交通仿真车辆数据结构的邻车查询方法 - Google Patents
一种基于微观交通仿真车辆数据结构的邻车查询方法 Download PDFInfo
- Publication number
- CN110457352B CN110457352B CN201910699018.8A CN201910699018A CN110457352B CN 110457352 B CN110457352 B CN 110457352B CN 201910699018 A CN201910699018 A CN 201910699018A CN 110457352 B CN110457352 B CN 110457352B
- Authority
- CN
- China
- Prior art keywords
- vehicle
- node
- pointer
- lane
- car
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Traffic Control Systems (AREA)
Abstract
本发明涉及一种基于微观交通仿真车辆数据结构的邻车查询方法,采用全新车辆数据结构设计,通过改进已有基于链表的邻车查询算法,在车辆所对应节点上增加多条邻车指针,避免了查询某一邻车时,需要遍历整个链表这种情况的发生,只需要在车队的连接结构发生变化时,少数车辆更新邻车指针的指向即可,有效降低了邻车查询的复杂度;应用查询邻近车辆的行驶状态时,不需要从头到尾遍历整条链表,将时间复杂度从线性级降低为常数级。此外,将单向仿真道路进行分段,避免了仿真主干道网络、高速公路等,或者是在己经发生拥堵的路段中,链表会异常长的情况发生,能够有效提高邻车查询工作的效率。
Description
技术领域
本发明涉及一种基于微观交通仿真车辆数据结构的邻车查询方法,属于微观交通仿真技术领域。
背景技术
随着城市的快速发展,城市交通问题日益突出。由于城市交通的复杂性,使得很难运用传统的方法对其进行有效的解决。借助于现代计算机技术,利用交通仿真对城市交通运行状况进行模拟,不仅能有效的模拟出交通运行的状况,有利于学习、规划、设计和优化交通系统,而且具有成本低、效率高的特点。
微观交通仿真,通过仿真个体车辆的行为来反映整个交通流,因此其仿真精度高。但是,微观交通仿真是以单个车辆作为仿真的基本单位,在每一个仿真周期中,所有车辆都需要查询其邻近车辆的行驶状态来决定其自身的行驶状态,车辆在做出行为判断和改变时,需要获知其相邻车辆的信息。随着仿真规模的增加,仿真系统的开销也迅速增大,因此,如何设计微观交通仿真的体系结构、以及相邻车辆查询算法显得尤为重要。
现有的交通仿真系统,包括Paramics、Vissim等,均采用基于链表的方式处理近邻查询,此类方法为每条车道上的车辆序列建立索引,容易创建和维护,且在仿真规模较小、道路中车辆较少的交通状况时有良好的表现,故在现有交通仿真系统中被普遍采用。但是此类方法缺点在于其可扩展性较差,当查询某一车辆时,需要遍历整个链表。即当道路中仿真车辆越多时,此类方法的性能也越差。
基于链表的方法是将同一车道中每辆仿真车辆的信息存储在一个链表中,这就造成在处理相邻车道的近邻车辆查询时,需要遍历相邻车道的链表,当仿真主干道网络、高速公路等,或者是在己经发生拥堵的路段中,该条道路的链表将会异常的长,而查询近邻车辆的性能也大幅降低。
发明内容
本发明所要解决的技术问题是提供一种基于微观交通仿真车辆数据结构的邻车查询方法,采用全新车辆数据结构设计,通过改进已有基于链表的邻车查询算法,能够有效提高邻车查询工作的效率。
本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种基于微观交通仿真车辆数据结构的邻车查询方法,用于针对单向仿真道路上的车辆实现邻车查询;其中,按如下步骤Ⅰ至步骤Ⅲ,构建车辆数据结构;
步骤Ⅰ.按预设分段长度,针对单向仿真道路进行划分,获得单向仿真道路所对应的各段仿真子道路,然后进入步骤Ⅱ;
步骤Ⅱ.构建各段仿真子道路中、各车道分别所对应的链表,并定义各车道中的各个车辆分别一一对应于为相应链表中的各个节点,且链表中各节点排序与其所对应车辆在相应车道中的排序相一致,然后进入步骤Ⅲ;
步骤Ⅲ.分别针对各链表中的各个节点,定义节点所对应的信息域和指针域,其中,信息域包括节点所对应车辆的各指定类型信息,指针域包括节点所对应车辆周围、分别指向各方向的车辆指针;
伴随车辆在各段仿真子道路中、各车道的行驶,车辆数据结构中各链表中的节点、以及各节点分别所对应信息域中的数据、以及指针域中的数据实时变化,实现邻车查询。
作为本发明的一种优选技术方案:所述信息域包括节点所对应车辆的车辆编号、车辆位置、车辆速度、车辆加速度;
其中,车辆编号,表示节点所对应车辆进入单向仿真道路时间先后的序号;
车辆位置,表示节点所对应车辆所在仿真子道路中对应车道起点、到该车辆车头地点的距离;
车辆速度,表示节点所对应车辆的当前速度;
车辆加速度:节点所对应车辆的当前加速度。
作为本发明的一种优选技术方案:所述指针域包括节点所对应车辆周围,指向正前方的前车指针、指向正后方的后车指针、指向左前方的左前车指针、指向右前方的右前车指针、指向左后方的左后车指针、指向右后方的右后车指针;
其中,前车指针,表示指向本车道内车辆位置大于本车辆、且位置最接近本车辆的车辆所对应的节点;若本车辆所对应节点为所在链表中的最前端节点,则前车指针指向下游仿真子道路中、相应车道所对应链表的最末端节点,若该最末端节点不存在,则前车指针指向为空;
后车指针,表示指向本车道内车辆位置小于本车辆、且位置最接近本车辆的车辆所对应的节点;若本车辆所对应节点为所在链表中的最末端节点,则后车指针指向上游仿真子道路中、相应车道所对应链表的最前端节点,若该最前端节点不存在,则后车指针指向为空;
左前车指针,表示指向左侧相邻车道内车辆位置大于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则左前车指针指向下游仿真子道路中、相应左邻车道所对应链表的最末端节点;若该最末端节点不存在,则左前车指针指向为空;若不存在左侧相邻车道,则左前车指针指向为空;
左后车指针,表示指向左侧相邻车道内车辆位置小于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则左后车指针指向上游仿真子道路中、相应左邻车道所对应链表的最前端节点;若该最前端节点不存在,则左后车指针指向为空;若不存在左侧相邻车道,则左后车指针指向为空;
右前车指针,表示指向右侧相邻车道内车辆位置大于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则右前车指针指向下游仿真子道路中、相应右邻车道所对应链表的最末端节点;若该最末端节点不存在,则右前车指针指向为空;若不存在右侧相邻车道,则右前车指针指向为空;
右后车指针,表示指向右侧相邻车道内车辆位置小于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则右后车指针指向上游仿真子道路中、相应右侧相邻车道所对应链表的最前端节点;若该最前端节点不存在,则右后车指针指向为空;若不存在右侧相邻车道,则右后车指针指向为空。
作为本发明的一种优选技术方案:所述伴随车辆在各段仿真子道路中、各车道行驶,车辆数据结构中各链表中的节点、以及各节点分别所对应信息域中的数据、以及指针域中的数据实时变化,实现邻车查询过程中:对于各链表中的各个节点,节点实时根据其所对应指针域中、分别指向各方向的车辆指针,结合各方向车辆指针分别所指向节点对应的信息域,实时获得该节点所对应车辆的信息域中数据、以及该节点所对应车辆周围各车辆的信息域中数据,实现该车辆对其邻车查询数据的获取。
本发明所述一种基于微观交通仿真车辆数据结构的邻车查询方法,采用以上技术方案与现有技术相比,具有以下技术效果:
本发明所设计基于微观交通仿真车辆数据结构的邻车查询方法,采用全新车辆数据结构设计,通过改进已有基于链表的邻车查询算法,在车辆所对应节点上增加多条邻车指针,避免了查询某一邻车时,需要遍历整个链表这种情况的发生,只需要在车队的连接结构发生变化时,少数车辆更新邻车指针的指向即可,有效降低了邻车查询的复杂度;应用查询邻近车辆的行驶状态时,不需要从头到尾遍历整条链表,将时间复杂度从线性级降低为常数级。此外,将单向仿真道路进行分段,避免了仿真主干道网络、高速公路等,或者是在己经发生拥堵的路段中,链表会异常长的情况发生,能够有效提高邻车查询工作的效率。
附图说明
图1是本发明设计基于微观交通仿真车辆数据结构的邻车查询方法的流程示意图;
图2是实施例中D车在换道前、其车视角下的邻车关系图;
图3是实施例中D车在换道后、其车视角下的邻车关系图。
具体实施方式
下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。
本发明设计了一种基于微观交通仿真车辆数据结构的邻车查询方法,用于针对单向仿真道路上的车辆实现邻车查询;实际应用当中,如图1所示,按如下步骤Ⅰ至步骤Ⅲ,构建车辆数据结构。
步骤Ⅰ.按预设分段长度,针对单向仿真道路进行划分,获得单向仿真道路所对应的各段仿真子道路,实际应用中,诸如仿真子道路的长度不超过1km,然后进入步骤Ⅱ,。
步骤Ⅱ.构建各段仿真子道路中、各车道分别所对应的链表,并定义各车道中的各个车辆分别一一对应于为相应链表中的各个节点,且链表中各节点排序与其所对应车辆在相应车道中的排序相一致,然后进入步骤Ⅲ。
步骤Ⅲ.分别针对各链表中的各个节点,定义节点所对应的信息域和指针域,其中,信息域包括节点所对应车辆的各指定类型信息,指针域包括节点所对应车辆周围、分别指向各方向的车辆指针。
其中,信息域包括节点所对应车辆的车辆编号、车辆位置、车辆速度、车辆加速度。
车辆编号,表示节点所对应车辆进入单向仿真道路时间先后的序号。
车辆位置,表示节点所对应车辆所在仿真子道路中对应车道起点、到该车辆车头地点的距离。
车辆速度,表示节点所对应车辆的当前速度。
车辆加速度:节点所对应车辆的当前加速度。
指针域包括节点所对应车辆周围,指向正前方的前车指针、指向正后方的后车指针、指向左前方的左前车指针、指向右前方的右前车指针、指向左后方的左后车指针、指向右后方的右后车指针。
其中,前车指针,表示指向本车道内车辆位置大于本车辆、且位置最接近本车辆的车辆所对应的节点;若本车辆所对应节点为所在链表中的最前端节点,则前车指针指向下游仿真子道路中、相应车道所对应链表的最末端节点,若该最末端节点不存在,则前车指针指向为空。
后车指针,表示指向本车道内车辆位置小于本车辆、且位置最接近本车辆的车辆所对应的节点;若本车辆所对应节点为所在链表中的最末端节点,则后车指针指向上游仿真子道路中、相应车道所对应链表的最前端节点,若该最前端节点不存在,则后车指针指向为空。
左前车指针,表示指向左侧相邻车道内车辆位置大于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则左前车指针指向下游仿真子道路中、相应左邻车道所对应链表的最末端节点;若该最末端节点不存在,则左前车指针指向为空;若不存在左侧相邻车道,则左前车指针指向为空。
左后车指针,表示指向左侧相邻车道内车辆位置小于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则左后车指针指向上游仿真子道路中、相应左邻车道所对应链表的最前端节点;若该最前端节点不存在,则左后车指针指向为空;若不存在左侧相邻车道,则左后车指针指向为空。
右前车指针,表示指向右侧相邻车道内车辆位置大于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则右前车指针指向下游仿真子道路中、相应右邻车道所对应链表的最末端节点;若该最末端节点不存在,则右前车指针指向为空;若不存在右侧相邻车道,则右前车指针指向为空。
右后车指针,表示指向右侧相邻车道内车辆位置小于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则右后车指针指向上游仿真子道路中、相应右侧相邻车道所对应链表的最前端节点;若该最前端节点不存在,则右后车指针指向为空;若不存在右侧相邻车道,则右后车指针指向为空。
伴随车辆在各段仿真子道路中、各车道的行驶,车辆数据结构中各链表中的节点、以及各节点分别所对应信息域中的数据、以及指针域中的数据实时变化,实现邻车查询。
邻车查询实际应用中,如图1所示,因为单向仿真道路中各仿真子道路的范围有限,会不停地有新的车辆诞生,旧的车辆消失;即对于单个仿真子道路来说,不断有车辆从入口进入仿真子道路,从出口离开仿真子道路;当一辆车刚刚诞生,第一次进入仿真子道路时,执行一次插入算法;当该车辆离开了仿真子道路,需要湮灭时,执行一次删除算法。
所有车辆都要执行跟驰和换道行为,过程中要用到每部车辆周边的前车、后车、左前车、左后车、右前车、右后车信息,此时执行查询算法;跟驰换道结束后,车辆信息更新,要改变车队中节点的连接关系时(例如车辆从一个路段前进到下一个路段,或是车辆换道到相邻车道中),执行一次插入算法,将车辆加入新车队;紧接着执行一次删除算法,将车辆从原车队删除。
上述所设计查询算法中,在每辆车做跟驰决策时,每辆车利用查询算法来获取本车道前车的信息;在每辆车做换道决策时,每辆车利用查询算法来获取左邻车道(如果存在)前车后车、右邻车道(如果存在)前车后车的信息;其中,查询算法具体如下;
步骤A1.查询本车道前车:如果本车节点的前车指针这一字段为空,则前方没有车辆;否则通过前车指针获取本车道前车的信息。
步骤A2.查询本车道后车:如果本车节点的后车指针这一字段为空,则后方没有车辆;否则通过后车指针获取本车道后车的信息。
步骤A3.查询左邻车道前车:如果本车节点的左前车指针这一字段为空,则左侧前方没有车辆;否则通过左前车指针获取左邻车道前车的信息。
步骤A4.查询左邻车道后车:如果本车节点的左后车指针这一字段为空,则左侧后方没有车辆;否则通过左后车指针获取左邻车道后车的信息。
步骤A5.查询右邻车道前车:如果本车节点的右前车指针这一字段为空,则右侧前方没有车辆;否则通过右前车指针获取右邻车道前车的信息。
步骤A6.查询右邻车道后车:如果本车节点的右后车指针这一字段为空,则右侧后方没有车辆;否则通过右后车指针获取右邻车道后车的信息。
对于插入算法来说,当有新的车辆进入本路段车道的车队时,即车辆执行跟驰行为,纵向坐标发生变化,需要进入一列不同路段的相同车道的车队;或者车辆执行换道行为,横向坐标发生变化,需要进入一列相同路段的不同车道的车队时,执行插入算法如下步骤所示。
步骤B1.明确插入位置:如果车辆是向左换道,则插入位置是原来的左前车与左后车之间,新前车是原来的左前车,新后车是原来的左后车;如果车辆向右换道,则插入位置是原来的右前车和右后车之间,新前车是原来的左前车,新后车是原来的左后车;如果车辆第一次进入该路段,则插入位置是入口车道所在车队的尾车之后,新前车是该尾车(如果没有尾车则新前车为空),新后车是车辆之前所在路段对应车道的车队的头车(如果没有头车则新后车为空)。
步骤B2.将车辆插入车队的双向链表:将新前车的后车指针指向本车,本车的前车指针指向新前车;将新后车的前车指针指向本车,本车的后车指针指向新后车。
步骤B3.搜索新的左前车、左后车、右前车、右后车:从新前车的左前车与新后车的左后车之间的车辆中(包括这两辆车),寻找车辆位置大于本车位置且最靠近本车的车辆,将本车的左前车指针指向它,同时如果本车的前车在它之前,将它的右后车指针指向本车;寻找车辆位置小于本车位置且最靠近本车的车辆,将本车的左后车指针指向它,同时如果本车的后车在它之后,将它的右前车指针指向本车;同理搜索新的右前车和右后车,并让其与本车建立联系。
删除算法,当有车辆要离开本路段车道的车队,即车辆执行跟驰行为,纵向坐标发生变化,需要从当前路段进入下一路段,离开本路段的车队时;或者车辆执行换道行为,横向坐标发生变化,需要将本车从原车队中删除时,执行删除算法如下步骤所示。
步骤C1.将本车的前车的后车指针指向本车的后车。
步骤C2.将本车的后车的前车指针指向本车的前车。
步骤C3.从本车的左前车开始,向前遍历,直到右后车指针不指向本车为止,执行这样的操作:将遍历的车辆的右后车指针指向本车的后车。
步骤C4.从本车的左后车开始,向后遍历,直到右前车指针不指向本车位置,执行这样的操作:将遍历的车辆的右前车指针指向本车的前车。
步骤C5.从本车的右前车开始,向前遍历,直到左后车指针不指向本车为止,执行这样的操作:将遍历的车辆的左后车指针指向本车的后车。
步骤C6.从本车的右后车开始,向后遍历,直到左前车指针不指向本车为止,执行这样的操作:将遍历的车辆的左前车指针指向本车的前车。
在具体的实际应用中,假设交通仿真系统中仅有A、B、C、D、E、F、G、H八辆车,即图2的当前情况,路段中有三个车道,因此有三条双向链表表示三个车队:
车道1的车队:B-A;
车道2的车队:E-D-C;
车道3的车队:H-G-F;
为突出本专利的优越性,在本案例中分别使用传统的车辆数据结构、邻车查询算法,与本专利基于微观交通仿真车辆数据结构的邻车查询方法进行对比。
当采用传统的车辆数据结构和邻车查询算法时:
传统的车辆数据结构的指针域只包括前车指针和后车指针。在换道过程中,不可避免地需要获得左前车、左后车、右前车、右后车的信息,所以要遍历相邻车道的车队以获取这四辆车的位置。
对于D车而言,前车指针指向E,后车指针指向C,数据结构中没有其他指针信息,此时图2中各车辆节点数据结构,如下表1所示。
车辆编号 | A | B | C | D | E | F | G | H |
车辆位置 | 110 | 355.5 | 90 | 230 | 380 | 140 | 325 | 460 |
车辆速度 | 19 | 21 | 22 | 18 | 19 | 22 | 24 | 21 |
车辆加速度 | 0 | 1 | -1 | 0 | 0 | -1 | 1 | 2 |
前车指针 | B | NULL | D | E | NULL | G | H | NULL |
后车指针 | NULL | A | NULL | C | D | NULL | F | G |
表1
在一个仿真周期内,D车要考虑是否换道。
换道决策期:此时D车要根据环绕在它周围六辆车(前车、后车、左前车、左后车、右前车、右后车)的信息,来决定是否换道。如何根据周围车辆信息进行换道决策属于换道模型内容,不在本专利的范畴内。根据前车指针获得前车信息,后车指针获得后车信息,查询前车和后车的时间复杂度为常数级O(1)。左前车、左后车、右前车、右后车的信息,就需要以遍历车队的方式搜索,以搜索左前车为例:
1、判断本车道左侧是否有其他车道,如果有则执行下一步。若没有则D车左前车为空。在本案例中,D车的左侧存在车道,左侧车道的车队是B-A,则执行下一步。
2、判断左侧车道的车队的头车的位置是否在本车之前,如果是则执行下一步。如果不是,则将左侧车道的下游路段的车队的尾车作为D车的左前车,若没有则D车左前车为空。在本案例中,左侧车道的车队头车是B,其位置在D车之前,则执行下一步。
3、从左侧车道的车队的头车开始往后遍历,找到车队中车辆位置在D车之前,且距离D车最近的车辆,作为D车的左前车。在本案例中B车就是左侧车队中位置在D车之前且距离D车最近的车辆,满足要求,因此B车是D车的左前车。
在上述步骤中,若左侧车队的车辆数为n,步骤1和步骤2的时间复杂度都为O(1),但是步骤3的时间复杂度为O(n)。
换道执行期:假如D车决定向左侧车道换道,首先将D车从车道2的车队中删除:C车的前车指针指向E车;E车的后车指针指向C车;此时完成了从车道2中删除D车的操作。
然后将D车插入车道1的车队中:D车的前车指针指向B车;B车的后车指针指向D车;D车的后车指针指向A车;A车的后车指针指向D车;此时完成了向车道1中插入D车的操作;换道完成后的示意图见图3,换道后各车辆节点数据结构,如下表2所示。
车辆编号 | A | B | C | D | E | F | G | H |
车辆位置 | 110 | 355.5 | 90 | 230 | 380 | 140 | 325 | 460 |
车辆速度 | 19 | 21 | 22 | 18 | 19 | 22 | 24 | 21 |
车辆加速度 | 0 | 1 | -1 | 0 | 0 | -1 | 1 | 2 |
前车指针 | D | NULL | E | B | NULL | G | H | NULL |
后车指针 | NULL | D | NULL | A | C | NULL | F | G |
表2
当采用本专利基于微观交通仿真车辆数据结构的邻车查询方法时:
对于D车而言,前车指针指向E,后车指针指向C,左前车指针指向B,左后车指针指向A,右前车指针指向G,右后车指针指向F;此时图2中各车辆节点数据结构,如下表3所示。
车辆编号 | A | B | C | D | E | F | G | H |
车辆位置 | 110 | 355.5 | 90 | 230 | 380 | 140 | 325 | 460 |
车辆速度 | 19 | 21 | 22 | 18 | 19 | 22 | 24 | 21 |
车辆加速度 | 0 | 1 | -1 | 0 | 0 | -1 | 1 | 2 |
前车指针 | B | NULL | D | E | NULL | G | H | NULL |
后车指针 | NULL | A | NULL | C | D | NULL | F | G |
左前车指针 | NULL | NULL | A | B | NULL | D | E | NULL |
左后车指针 | NULL | NULL | NULL | A | B | C | D | E |
右前车指针 | D | E | F | G | H | NULL | NULL | NULL |
右后车指针 | C | D | NULL | F | G | NULL | NULL | NULL |
表3
在一个仿真周期内,D车要考虑是否换道。
换道决策期:此时D车根据6条邻车指针(前车指针、后车指针、左前车指针、左后车指针、右前车指针、右后车指针),获取环绕在它周围的三个车道的6辆车的信息,查询邻车信息的时间复杂度为O(1)。利用换道模型分析各个车道的效益,决定是否换道。
换道执行期:假如D车决定向左侧车道换道,首先将D车从车道2的车队中删除:C车的前车指针指向E车;E车的后车指针指向C车;A车的右前车指针指向E车;B车的右后车指针指向C车;F车的左前车指针指向E车;G车的左后车指针指向C车;此时完成了从车道2中删除D车的操作。
然后将D车插入车道1的车队中:D车的前车指针指向B车;B车的后车指针指向D车;D车的后车指针指向A车;A车的后车指针指向D车;D车位于最左侧车道,因此将D车的左前车指针、左后车指针都设为NULL;D车的右前车、右后车位于B车的右前车(E车),与A车的右后车(C车)之间,即位于E-C组成的车队中;其中,位于D车前方且最靠近D车的车道2车辆为E车,位于D车后方且最靠近D车的车道2车辆为C车;将D车的右前车指针指向E车;因为B车在E车后方,所以E车的左后车指针仍然指向B车不变;将D车的右后车指针指向C车;因为A车在C车前方,所以C车的左前车指针仍然指向A车不变;此时完成了向车道1中插入D车的操作。换道完成后的示意图见图3,且换道后的数据结构,如表4所示。
表4
在具体的实际应用中,所述伴随车辆在各段仿真子道路中、各车道行驶,车辆数据结构中各链表中的节点、以及各节点分别所对应信息域中的数据、以及指针域中的数据实时变化,实现邻车查询过程中:对于各链表中的各个节点,节点实时根据其所对应指针域中、分别指向各方向的车辆指针,结合各方向车辆指针分别所指向节点对应的信息域,实时获得该节点所对应车辆的信息域中数据、以及该节点所对应车辆周围各车辆的信息域中数据,实现该车辆对其邻车查询数据的获取。
上述技术方案所设计基于微观交通仿真车辆数据结构的邻车查询方法,采用全新车辆数据结构设计,通过改进已有基于链表的邻车查询算法,在车辆所对应节点上增加多条邻车指针,避免了查询某一邻车时,需要遍历整个链表这种情况的发生,只需要在车队的连接结构发生变化时,少数车辆更新邻车指针的指向即可,有效降低了邻车查询的复杂度;应用查询邻近车辆的行驶状态时,不需要从头到尾遍历整条链表,将时间复杂度从线性级降低为常数级。此外,将单向仿真道路进行分段,避免了仿真主干道网络、高速公路等,或者是在己经发生拥堵的路段中,链表会异常长的情况发生,能够有效提高邻车查询工作的效率。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (2)
1.一种基于微观交通仿真车辆数据结构的邻车查询方法,其特征在于,用于针对单向仿真道路上的车辆实现邻车查询;其中,按如下步骤Ⅰ至步骤Ⅲ,构建车辆数据结构;
步骤Ⅰ. 按预设分段长度,针对单向仿真道路进行划分,获得单向仿真道路所对应的各段仿真子道路,然后进入步骤Ⅱ;
步骤Ⅱ. 构建各段仿真子道路中、各车道分别所对应的链表,并定义各车道中的各个车辆分别一一对应于为相应链表中的各个节点,且链表中各节点排序与其所对应车辆在相应车道中的排序相一致,然后进入步骤Ⅲ;
步骤Ⅲ. 分别针对各链表中的各个节点,定义节点所对应的信息域和指针域,其中,信息域包括节点所对应车辆的各指定类型信息,指针域包括节点所对应车辆周围、分别指向各方向的车辆指针;
信息域包括节点所对应车辆的车辆编号、车辆位置、车辆速度、车辆加速度;
其中,车辆编号,表示节点所对应车辆进入单向仿真道路时间先后的序号;
车辆位置,表示节点所对应车辆所在仿真子道路中对应车道起点、到该车辆车头地点的距离;
车辆速度,表示节点所对应车辆的当前速度;
车辆加速度:节点所对应车辆的当前加速度;
指针域包括节点所对应车辆周围,指向正前方的前车指针、指向正后方的后车指针、指向左前方的左前车指针、指向右前方的右前车指针、指向左后方的左后车指针、指向右后方的右后车指针;
其中,前车指针,表示指向本车道内车辆位置大于本车辆、且位置最接近本车辆的车辆所对应的节点;若本车辆所对应节点为所在链表中的最前端节点,则前车指针指向下游仿真子道路中、相应车道所对应链表的最末端节点,若该最末端节点不存在,则前车指针指向为空;
后车指针,表示指向本车道内车辆位置小于本车辆、且位置最接近本车辆的车辆所对应的节点;若本车辆所对应节点为所在链表中的最末端节点,则后车指针指向上游仿真子道路中、相应车道所对应链表的最前端节点,若该最前端节点不存在,则后车指针指向为空;
左前车指针,表示指向左侧相邻车道内车辆位置大于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则左前车指针指向下游仿真子道路中、相应左邻车道所对应链表的最末端节点;若该最末端节点不存在,则左前车指针指向为空;若不存在左侧相邻车道,则左前车指针指向为空;
左后车指针,表示指向左侧相邻车道内车辆位置小于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则左后车指针指向上游仿真子道路中、相应左邻车道所对应链表的最前端节点;若该最前端节点不存在,则左后车指针指向为空;若不存在左侧相邻车道,则左后车指针指向为空;
右前车指针,表示指向右侧相邻车道内车辆位置大于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则右前车指针指向下游仿真子道路中、相应右邻车道所对应链表的最末端节点;若该最末端节点不存在,则右前车指针指向为空;若不存在右侧相邻车道,则右前车指针指向为空;
右后车指针,表示指向右侧相邻车道内车辆位置小于本车辆、且位置最接近本车辆的车辆所对应的节点;若不存在该节点,则右后车指针指向上游仿真子道路中、相应右侧相邻车道所对应链表的最前端节点;若该最前端节点不存在,则右后车指针指向为空;若不存在右侧相邻车道,则右后车指针指向为空;
伴随车辆在各段仿真子道路中、各车道的行驶,车辆数据结构中各链表中的节点、以及各节点分别所对应信息域中的数据、以及指针域中的数据实时变化,实现邻车查询。
2.根据权利要求1所述一种基于微观交通仿真车辆数据结构的邻车查询方法,其特征在于:所述伴随车辆在各段仿真子道路中、各车道行驶,车辆数据结构中各链表中的节点、以及各节点分别所对应信息域中的数据、以及指针域中的数据实时变化,实现邻车查询过程中:对于各链表中的各个节点,节点实时根据其所对应指针域中、分别指向各方向的车辆指针,结合各方向车辆指针分别所指向节点对应的信息域,实时获得该节点所对应车辆的信息域中数据、以及该节点所对应车辆周围各车辆的信息域中数据,实现该车辆对其邻车查询数据的获取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910699018.8A CN110457352B (zh) | 2019-07-31 | 2019-07-31 | 一种基于微观交通仿真车辆数据结构的邻车查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910699018.8A CN110457352B (zh) | 2019-07-31 | 2019-07-31 | 一种基于微观交通仿真车辆数据结构的邻车查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110457352A CN110457352A (zh) | 2019-11-15 |
CN110457352B true CN110457352B (zh) | 2023-05-19 |
Family
ID=68484130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910699018.8A Active CN110457352B (zh) | 2019-07-31 | 2019-07-31 | 一种基于微观交通仿真车辆数据结构的邻车查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110457352B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544291A (zh) * | 2013-10-29 | 2014-01-29 | 东北林业大学 | 道路网络中基于RRN-Tree的移动对象CKNN查询方法 |
CN106570079A (zh) * | 2016-10-18 | 2017-04-19 | 电子科技大学 | 基于颜色索引平衡二叉树的相邻车辆的查询算法 |
-
2019
- 2019-07-31 CN CN201910699018.8A patent/CN110457352B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544291A (zh) * | 2013-10-29 | 2014-01-29 | 东北林业大学 | 道路网络中基于RRN-Tree的移动对象CKNN查询方法 |
CN106570079A (zh) * | 2016-10-18 | 2017-04-19 | 电子科技大学 | 基于颜色索引平衡二叉树的相邻车辆的查询算法 |
Non-Patent Citations (1)
Title |
---|
微观交通仿真系统的近邻查询算法;宋竹等;《计算机应用》;20150210;第35卷(第02期);第572-577页,图1 * |
Also Published As
Publication number | Publication date |
---|---|
CN110457352A (zh) | 2019-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109143291B (zh) | 一种车载gps轨迹空间索引精确匹配方法 | |
CN109405839B (zh) | 一种基于多路径的交通网络离线地图匹配算法 | |
CN102810118B (zh) | 一种变权网k近邻搜索方法 | |
CN107958302B (zh) | 基于虚拟拓扑交通网络的经验路径规划方法 | |
CN106528589B (zh) | 数据管理方法及装置 | |
CN110968617B (zh) | 一种基于位置字段的路网关键路段相关性分析方法 | |
CN111882099A (zh) | 一种基于变邻域并行退火算法的物流配送路径规划方法 | |
CN108120448A (zh) | 引导路径设定装置以及引导路径设定方法 | |
CN109993064B (zh) | 一种提取图片中道路网络节点间的连接路径的方法 | |
CN101694749A (zh) | 一种路径推测方法及装置 | |
WO2022147968A1 (zh) | 一种快速车载gps轨迹精确地图匹配的方法 | |
WO2020125686A1 (zh) | 实时相对地图的生成方法,智能驾驶设备以及计算机存储介质 | |
CN112015835A (zh) | Geohash压缩的地图匹配方法 | |
CN106289287B (zh) | 一种基于选线经验的车载端多目标最短路径计算方法 | |
CN106845703B (zh) | 一种考虑转向延误的城市路网时变k最短路径搜索方法 | |
CN112579921B (zh) | 基于倒排序索引及前缀树的轨迹索引和查询方法及系统 | |
CN105913668A (zh) | 一种基于海量交通数据统计的定向套牌车检测方法 | |
WO2022262741A1 (zh) | 一种高效gps轨迹地图匹配方法 | |
CN111024079B (zh) | 一种根据多个位置点与路线进行匹配的方法和系统 | |
CN110457352B (zh) | 一种基于微观交通仿真车辆数据结构的邻车查询方法 | |
CN104596527A (zh) | 一种划分各级引导道路和细街路的方法 | |
CN113096389B (zh) | 一种基于多源数据的全国高速公路网络拓扑构建方法 | |
CN115631082B (zh) | 一种基于高速路网拓扑结构的多场景路径还原方法 | |
CN113781817A (zh) | 一种基于共用计算的城市路网多源最短路径获取方法 | |
Meng et al. | Topology-Preserving Simplification of OpenStreetMap Network Data for Large-scale Simulation in SUMO |
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 |