著录项信息
专利名称 | 适用于大规模交通流仿真的虚拟车辆路由方法 |
申请号 | CN201110002566.4 | 申请日期 | 2011-01-07 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2011-05-11 | 公开/公告号 | CN102054355A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G08G1/00 | IPC分类号 | G;0;8;G;1;/;0;0;;;G;0;6;F;1;7;/;5;0查看分类表>
|
申请人 | 同济大学 | 申请人地址 | 上海市杨浦区四平路1239号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 同济大学 | 当前权利人 | 同济大学 |
发明人 | 蒋昌俊;张栋良;陈闳中;闫春钢;丁志军;张亚英 |
代理机构 | 上海光华专利事务所 | 代理人 | 王松 |
摘要
本发明揭示了一种适用于大规模交通流仿真的虚拟车辆路由方法,所述方法包括:将路径以下一跳的标示方法存入每个节点的路由表;车辆行驶到每个节点时,查询该节点的路由表;若在该表中可查询到欲到达目的地的下一跳节点ID,则按此目标移动,从而实现整个路由;否则计算整条路径,并将路径分解存储到各个相关的路由表。本发明利用查表方式减少重复路径计算,能够显著的节省大量车辆的最短路径计算时间;同时,本发明利用表的动态变化表征动态路况,在动态路网路径计算方面这种方法也有着很大的优势;因为在这种路径查询模式下,最优路径的更新完全取决于路由表的定期更新,其更新模式与计算机网络路由更新机制类似。
1.一种适用于大规模交通流仿真的虚拟车辆路由方法,其特征在于,所述方法包括:
将路径以下一跳的标示方法存入每个节点的路由表;
车辆行驶到每个节点时,查询该节点的路由表;若在该表中可查询到欲到达目的地的下一跳节点ID,则按此目标移动,从而实现整个路由;否则计算整条路径,并将路径分解存储到各个相关的路由表;
如果A节点与B节点之间的道路发生中断,则分别进行以A节点为源点和以B节点为源点的Dijkstra操作。
2.根据权利要求1所述的适用于大规模交通流仿真的虚拟车辆路由方法,其特征在于:
在路由表的生成与更新使用分布式的求解方式,将路网按处理机数目分割,每台处理机处理局部路由表,再由多台处理机交互合成路由表可以加速全局路网路由表的计算。
3.根据权利要求1所述的适用于大规模交通流仿真的虚拟车辆路由方法,其特征在于:
所述Dijkstra操作包括如下步骤:
A1、处理、归并线路;
A2、确定所有线路的端点ID;
A3、判断所有线路是否均处理完毕,若是则转步骤A6;否则转步骤A4;
A4、提取一条线路;
A5、添加该线路信息至路由表,转步骤A3;
A6、结束。
适用于大规模交通流仿真的虚拟车辆路由方法\n技术领域\n[0001] 本发明属于智能交通技术领域,涉及一种交通仿真方法,尤其涉及一种适用于大规模交通流仿真的虚拟车辆路由方法。\n背景技术\n[0002] 在现有的交通仿真系统中仿真车辆往往不遵循最短路径行驶,或是随机行驶,或是在交叉口按流量分配进行选择性转弯,这些仿真方法中车辆的行驶都不是“理性”的行为,单独跟踪一辆仿真车辆,往往会出现车辆在小范围“转圈”现象,这对于基于车辆理性行为的仿真试验非常不利,如考察一个路段受阻情况下交通流的变化情况时无法得到正确结果。因此,仿真系统中的车辆应当以理性方式(最短路径)行驶。\n[0003] 但是,在大范围路网内对大量车辆的最短路径的计算相当耗时,尤其是在系统初始化时,数十万辆车的行驶路线计算使得用户陷入长时间等待。针对这种现象,有人提出路径预存法:事先将一部分具有代表性的路径存在服务器内形成路径库,当车辆要产生是从路径库调出,直接赋予车辆,节省计算路径的时间。但是要形成具有代表性的路径库需要大量的存储空间,因为在上万个节点的路网上全部的路径数目要以亿计甚至几十亿计,而每一个路径平局长度有几百个路段长。在这种情况下即使预存十分之一的路径存储上也是不可接受的。\n发明内容\n[0004] 本发明所要解决的技术问题是:提供一种适用于大规模交通流仿真的虚拟车辆路由方法,能够显著的节省计算时间。\n[0005] 为解决上述技术问题,本发明采用如下技术方案:\n[0006] 一种适用于大规模交通流仿真的虚拟车辆路由方法,所述方法包括:\n[0007] 将路径以下一跳的标示方法存入每个节点的路由表;\n[0008] 车辆行驶到每个节点时,查询该节点的路由表;若在该表中可查询到欲到达目的地的下一跳节点ID,则按此目标移动,从而实现整个路由;否则计算整条路径,并将路径分解存储到各个相关的路由表。\n[0009] 作为本发明的一种优选方案,在路由表的生成与更新使用分布式的求解方式,将路网按处理机数目分割,每台处理机处理局部路由表,再由多台处理机交互合成路由表可以加速全局路网路由表的计算。\n[0010] 作为本发明的一种优选方案,如果A节点与B节点之间的道路发生中断,则分别进行以A节点为源点和以B节点为源点的Dijkstra操作。\n[0011] 作为本发明的一种优选方案,所述Dijkstra操作包括如下步骤:\n[0012] A1、处理、归并线路;\n[0013] A2、确定所有线路的端点ID;\n[0014] A3、判断所有线路是否均处理完毕,若是则转步骤A6;否则转步骤A4;\n[0015] A4、提取一条线路;\n[0016] A5、添加该线路信息至路由表,转步骤A3;\n[0017] A6、结束。\n[0018] 本发明的有益效果在于:本发明提出的适用于大规模交通流仿真的虚拟车辆路由方法,利用查表方式,减少重复路径计算,能够显著的节省大量车辆的最短路径计算时间,其原因是,先计算的路径结果往往可以被后面的计算所利用。\n[0019] 同时,本发明利用表的动态变化表征动态路况,在动态路网路径计算方面这种方法也有着很大的优势;因为在这种路径查询模式下,最优路径的更新完全取决于路由表的定期更新,其更新模式与计算机网络路由更新机制类似。\n附图说明\n[0020] 图1为Dijkstra子函数的流程图。\n[0021] 图2为一个简单的最短路径示意图。\n[0022] 图3为在路由表上更新更改的道路两端节点信息示意图。\n[0023] 图4为路网与路由表示意图。\n[0024] 图5为50个仿真周期内,每个周期内用于计算路径的耗时比较示意图。\n具体实施方式\n[0025] 下面结合附图详细说明本发明的优选实施例。\n[0026] 实施例一\n[0027] 本发明提出模仿计算机网络路由模式,将路径以下一跳的标示方法存入每个节点的路由表。车辆行驶到每个节点时,查询该节点的路由表,在该表中可查询到欲到达目的地的下一跳节点ID,从而实现整个路由。如图1所示。\n[0028] 具体做法是:首先选定一对OD点,察看O点路由表中是否有D点的下一跳信息,如果有按此目标移动,否则计算整条路径,并将路径分解存储到各个相关的路由表。\n[0029] 这种路径生成算法的最大优点是能够显著的节省大量车辆的最短路径计算时间,其原因是,先计算的路径结果往往可以被后面的计算所利用。\n[0030] 在动态路网路径计算方面这种方法也有着很大的优势。因为在这种路径查询模式下,最优路径的更新完全取决于路由表的定期更新,其更新模式与计算机网络路由更新机制类似。\n[0031] 此外在路由表的生成与更新上很适合与分布式的求解方式,将路网按处理机数目分割,每台处理机处理局部路由表,再由多台处理机交互合成路由表可以加速全局路网路由表的计算。\n[0032] Dijkstra算法求的是从origID到其他所有点的最短路径。因为Dijkstra算法有最优子结构性质,即一条两顶点间的最短路径包含了该路径上其他点之间的最短路径。利用该性质,提取出包含尽量多节点的路径作为处理对象,降低需要做处理的路径总数,提高计算效率。\n[0033] 实施例二\n[0034] 如图2所示,左图为有5个道路节点的简单路网示意图,右图为道路节点A为单源的最短路径示意图。\n[0035] 如果从A点到B、C、D、E这4个点的最短路径为:\n[0036] A-B:A-B。\n[0037] A-C:A-B-C。\n[0038] A-D:A-B-D。\n[0039] A-E:A-B-D-E。\n[0040] 那么,经过处理归并,系统接下来需要处理的线路只剩下线路[2]A-C:A-B-C和线路[4]A-E:A-B-D-E,避免了大量的重复计算,提高了效率和性能。\n[0041] 下一步确定所有线路的端点是上一步处理、归并线路的延续。其将上例中的点C和点E作为端点。因为点B和点D包含在了线路[2]或线路[4]中,所以点B、D在接下来的处理中将不作为端点考虑,而仅仅是作为中间节点参与处理。\n[0042] 提取某条线路,将线路信息添加到路由表中。该操作需要不断遍历该条线路,将线路所包含的路由信息添加进入路由表,建立相关的路由表信息。一次Dijkstra算法过后的路由表情况如表1所示。\n[0043] \n[0044] 表1路由表信息\n[0045] 从上表可以看出,点C到点D、E的路由表项为空。因为在以A点为源点的单源最短路径计算时,点C和点D、E从未出现在同一条最短路径上。而当有车辆的起点为C、终点为D或E,或者起点为D或E、终点为C的时候,因为相关路由表项为空,则须进行一次以该起点为单源的Dijkstra操作并更新路由表相关项。\n[0046] 路由表的信息更新发生在交通流仿真等车辆已显示的前提下,发生道路的增加或者删除的情况。路由表信息的更新是适应于动态道路网的情况,能及时相应道路的变动并重新计算相关道路节点的路由信息,引导车辆行驶在正确的路径上。\n[0047] 其核心思想是做两次分别以变更的道路两端的节点为源点的Dijkstra操作并更新路由表。更新过后,因此次更新而使得某些路径已经不是两点之间的最短路径,但是还是一条次优的最短路径。如果A点和B点之间的道路发生中断。则分别进行以A点为源点和以B点为源点的Dijkstra操作;如图3所示。\n[0048] 其功能是调用Dijkstra子函数做两次单源最短路径操作,更新因道路情况发生变化而产生的路由表的变化。\n[0049] 在图2所示的例子基础上,做图3所示的道路节点更新。\n[0050] 当道路节点AB间的道路发生中断时,以A点为源点做一次更新;再以B点作为源点做一次更新。\n[0051] 图3右上方的图为道路节点A为单源的最短路径示意图,图3右下方的图为道路节点B为单源的最短路径示意图。\n[0052] 更新后的路由表情况如表2所示。\n[0053] \n[0055] 表2更新后的路由表情况\n[0056] 以779个路口、1399个路段的路网为计算对象,每次产生200辆车,共产生50次。\n每一次的耗时如图所示,从图5中我们可以看出,传统的方法前后的计算之间没有很大差异,而基于路由表思想的算法中后面的计算受益于先前的计算结果,所以稍后计算所消耗的时间非常小。即使是在第一批200辆车的计算中,路由表的计算方法也大大地减少了计算的时间。\n[0057] 此更新方法有以下3个优势:\n[0058] 用Dijkstra子函数更新更改的道路两端的道路节点,使得该两点之间还是处于连通状态。若有车辆的行驶路径(仿真状态下更改道路)需经过该道路,那么更新后的路由表就可继续引导车辆行驶在更新过后的路径上,而不需要重新赋予车辆一条完整的全新的从起点到终点的最短路径。\n[0059] 由于该交通流仿真软件对车辆的引导是分步进行的,即车辆到达某个交通节点以后才会得知下一个行驶方向。所以,用户提取到的总是当前路由表内最新的行驶方向。用户不必关心该线路有没有经过修改等无关信息。\n[0060] 仅更新道路两端的节点,最大限度的保留了原先的该两点的原始信息。当发生车辆被原始信息引导到这两个节点的时候,节点上的新信息会继续引导车辆往最近更新的下一跳方向行驶。使得车辆能够连续行驶而不发生无法继续行驶的情况。\n[0061] 在空间占用方面,由于每个结点存在一个长度为路网节点个数长度的路由表,表面上需要大量的存储空间,但每个表中的表项只是当前节点相邻几个节点的重复,所以每个表项只需2-3个bit(路口一般不会超过五叉路)就可以描述下一跳的信息,所以有很大的压缩余地。以上海市地图1.4万个路口来计算,每个路由表占用的空间大约为:14K*0.5B=7KB而整个路网的路由表占用空间总合约为7K*14K=98M,因此这种方法在空间站用上也是可以接受的。\n[0062] 实施例三\n[0063] 一种适用于大规模交通流仿真的虚拟车辆路由方法,所述方法包括:\n[0064] -将路径以下一跳的标示方法存入每个节点的路由表;\n[0065] -车辆行驶到每个节点时,查询该节点的路由表;若在该表中可查询到欲到达目的地的下一跳节点ID,则按此目标移动,从而实现整个路由;否则计算整条路径,并将路径分解存储到各个相关的路由表。\n[0066] 在路由表的生成与更新使用分布式的求解方式,将路网按处理机数目分割,每台处理机处理局部路由表,再由多台处理机交互合成路由表可以加速全局路网路由表的计算。\n[0067] 如果A节点与B节点之间的道路发生中断,则分别进行以A节点为源点和以B节点为源点的Dijkstra操作。所述Dijkstra操作包括如下步骤:\n[0068] A1、处理、归并线路;\n[0069] A2、确定所有线路的端点ID;\n[0070] A3、判断所有线路是否均处理完毕,若是则转步骤A6;否则转步骤A4;\n[0071] A4、提取一条线路;\n[0072] A5、添加该线路信息至路由表,转步骤A3;\n[0073] A6、结束。\n[0074] 综上所述,本发明提出的适用于大规模交通流仿真的虚拟车辆路由方法,利用查表方式,减少重复路径计算,能够显著的节省大量车辆的最短路径计算时间,其原因是,先计算的路径结果往往可以被后面的计算所利用。\n[0075] 同时,本发明利用表的动态变化表征动态路况,在动态路网路径计算方面这种方法也有着很大的优势;因为在这种路径查询模式下,最优路径的更新完全取决于路由表的定期更新,其更新模式与计算机网络路由更新机制类似。\n[0076] 这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。
法律信息
- 2013-05-01
- 2011-06-29
实质审查的生效
IPC(主分类): G08G 1/00
专利申请号: 201110002566.4
申请日: 2011.01.07
- 2011-05-11
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |