一种分布式交通仿真方法、装置及存储介质转让专利

申请号 : CN202210508858.3

文献号 : CN114611337B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吕国林黄志军张贻生陈振武周勇张稷曾贤镜吴若乾阚倩张晓春

申请人 : 深圳市城市交通规划设计研究中心股份有限公司

摘要 :

本发明公开了一种分布式交通仿真方法、装置及存储介质,所述方法包括:确定各子路网的边缘道路;遍历所有尾部边缘道路,确定尾部边缘道路中的可迁移车辆,将尾部边缘道路中的可迁移车辆迁移至虚拟下游道路;将虚拟下游道路中的车辆信息发送至下游子路网;将车辆信息对应车辆插入下游子路网的虚拟上游道路;在下游子路网的进程中,确定下游子路网的虚拟上游道路中可迁移至下游子路网的实际迁移车辆,将实际迁移车辆进行迁移,基于实际迁移车辆更新下游子路网的剩余容量;将实际迁移车辆的数量发送至尾部边缘道路所属子路网,基于实际迁移车辆的数量更新尾部边缘道路的剩余容量。本发明可提高分布式交通仿真的仿真计算效率。

权利要求 :

1.一种分布式交通仿真方法,其特征在于,包括:

确定各子路网的边缘道路,其中,所述边缘道路包括尾部边缘道路,所述尾部边缘道路的下游道路在所述尾部边缘道路所属子路网的下游子路网中;

遍历所有所述尾部边缘道路,对每条所述尾部边缘道路,在所述尾部边缘道路所属子路网的进程内确定所述尾部边缘道路中的可迁移车辆,将所述尾部边缘道路中的可迁移车辆迁移至所述尾部边缘道路的虚拟下游道路,并将所述尾部边缘道路中已迁移至所述尾部边缘道路的虚拟下游道路的车辆删除,同时所述尾部边缘道路的剩余容量保持不变;

将所述尾部边缘道路的虚拟下游道路中的车辆信息发送至所述下游子路网,删除所述尾部边缘道路的虚拟下游道路中的车辆信息;

将所述车辆信息对应车辆插入所述下游子路网的虚拟上游道路;

在所述下游子路网的进程中,确定所述下游子路网的虚拟上游道路中可迁移至所述下游子路网的实际迁移车辆,将所述实际迁移车辆进行迁移,基于所述实际迁移车辆更新所述下游子路网的剩余容量;

将所述实际迁移车辆的数量发送至所述尾部边缘道路所属子路网,基于所述实际迁移车辆的数量更新所述尾部边缘道路的剩余容量。

2.如权利要求1所述的分布式交通仿真方法,其特征在于,所述将所述车辆信息对应车辆插入所述下游子路网的虚拟上游道路包括:将所述车辆信息对应车辆插入所述下游子路网的与所述尾部边缘道路对应的虚拟上游道路尾部,其中,所述下游子路网包括一条或多条虚拟上游道路,每条虚拟上游道路对应一条所述尾部边缘道路。

3.如权利要求1所述的分布式交通仿真方法,其特征在于,所述确定所述下游子路网的虚拟上游道路中可迁移至所述下游子路网的实际迁移车辆,将所述实际迁移车辆进行迁移,基于所述实际迁移车辆更新所述下游子路网的剩余容量包括:判断所述下游子路网的虚拟上游道路中是否存在待迁移车辆;

若是,则获取所述下游子路网的虚拟上游道路对应的下游道路的剩余容量,判断所述下游道路的剩余容量是否大于零;

若所述下游道路的剩余容量大于零,则在所述下游子路网的虚拟上游道路对应的下游道路中插入一辆所述待迁移车辆,将所述下游子路网的虚拟上游道路中已插入下游道路的所述待迁移车辆删除,将所述下游道路的剩余容量减1,将所述实际迁移车辆的数量加1,并返回执行所述判断所述下游子路网的虚拟上游道路中是否存在待迁移车辆的步骤。

4.如权利要求3所述的分布式交通仿真方法,其特征在于,还包括:

若所述下游子路网的虚拟上游道路中不存在待迁移车辆,或者若所述下游道路的剩余容量等于零,则获得最终的实际迁移车辆的数量,并执行所述将所述实际迁移车辆的数量发送至所述尾部边缘道路所属子路网,基于所述实际迁移车辆的数量更新所述尾部边缘道路的剩余容量的步骤。

5.如权利要求1所述的分布式交通仿真方法,其特征在于,所述确定各子路网的边缘道路之前,还包括:在各子路网的进程启动后,获取车辆分配数据,根据所述车辆分配数据预生成途经各子路网的车辆;

所述将所述车辆信息对应车辆插入所述下游子路网的虚拟上游道路还包括:根据所述车辆信息从预生成的车辆中加载相应车辆插入所述下游子路网的虚拟上游道路。

6.如权利要求1所述的分布式交通仿真方法,其特征在于,所述确定各子路网的边缘道路之前,还包括:获取待仿真路网的完整路径;

选取边缘节点,根据预设的子路网数量对所述边缘节点进行分组;

根据分组的所述边缘节点将所述待仿真路网进行路网裁剪,得到子路网。

7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器读取并运行时,实现如权利要求1‑6任一项所述的分布式交通仿真方法。

8.一种分布式交通仿真装置,其特征在于,包括存储有计算机程序的计算机可读存储介质和处理器,所述计算机程序被所述处理器读取并运行时,实现如权利要求1‑6任一项所述的分布式交通仿真方法。

说明书 :

一种分布式交通仿真方法、装置及存储介质

技术领域

[0001] 本发明涉及交通仿真技术领域,具体涉及一种分布式交通仿真方法、装置及存储介质。

背景技术

[0002] 随着国民经济的高速发展和城市化进程的加快,我国机动车拥有量及道路交通量急剧增加,为了更好地管理交通服务,运用交通流仿真还原交通态势成为必不可少的手段。随着城市交通通行量的规模越来越大,仿真处理的数据也越来越大,市面上常见的几种交通仿真软件或系统均为单机版的仿真系统,越来越难以适应大规模仿真运算的需求,因此,分布式仿真成为交通仿真发展的主流。
[0003] 不同于单机版的交通流仿真,分布式交通仿真会把仿真区域的路网切割成若干个子路网,各子路网的仿真独立运行,车辆跨子路网的迁移运动则通过网络通讯实现,可见分布式仿真为CPU密集型与网络通讯密集型混和程序计算模式,在计算机处理运算的过程中,CPU的运行速度远快于网络通讯的速度。在网络通讯频繁时,CPU可能一直处于等待网络通讯收发消息的IO处理状态,极大影响仿真计算效率。

发明内容

[0004] 本发明解决的问题是如何提高分布式交通仿真的仿真计算效率。
[0005] 本发明提出一种分布式交通仿真方法,包括:
[0006] 确定各子路网的边缘道路,其中,所述边缘道路包括尾部边缘道路,所述尾部边缘道路的下游道路在所述尾部边缘道路所属子路网的下游子路网中;
[0007] 遍历所有所述尾部边缘道路,对每条所述尾部边缘道路,在所述尾部边缘道路所属子路网的进程内确定所述尾部边缘道路中的可迁移车辆,将所述尾部边缘道路中的可迁移车辆迁移至所述尾部边缘道路的虚拟下游道路;
[0008] 将所述尾部边缘道路的虚拟下游道路中的车辆信息发送至所述下游子路网;
[0009] 将所述车辆信息对应车辆插入所述下游子路网的虚拟上游道路;
[0010] 在所述下游子路网的进程中,确定所述下游子路网的虚拟上游道路中可迁移至所述下游子路网的实际迁移车辆,将所述实际迁移车辆进行迁移,基于所述实际迁移车辆更新所述下游子路网的剩余容量;
[0011] 将所述实际迁移车辆的数量发送至所述尾部边缘道路所属子路网,基于所述实际迁移车辆的数量更新所述尾部边缘道路的剩余容量。
[0012] 可选地,所述将所述尾部边缘道路中的可迁移车辆迁移至所述尾部边缘道路的虚拟下游道路包括:
[0013] 将所述尾部边缘道路中的可迁移车辆迁移至所述尾部边缘道路的虚拟下游道路,并将所述尾部边缘道路中已迁移至所述尾部边缘道路的虚拟下游道路的车辆删除,同时所述尾部边缘道路的剩余容量保持不变。
[0014] 可选地,所述将所述车辆信息对应车辆插入所述下游子路网的虚拟上游道路包括:
[0015] 将所述车辆信息对应车辆插入所述下游子路网的与所述尾部边缘道路对应的虚拟上游道路尾部,其中,所述下游子路网包括一条或多条虚拟上游道路,每条虚拟上游道路对应一条所述尾部边缘道路。
[0016] 可选地,所述确定所述下游子路网的虚拟上游道路中可迁移至所述下游子路网的实际迁移车辆,将所述实际迁移车辆进行迁移,基于所述实际迁移车辆更新所述下游子路网的剩余容量包括:
[0017] 判断所述下游子路网的虚拟上游道路中是否存在待迁移车辆;
[0018] 若是,则获取所述下游子路网的虚拟上游道路对应的下游道路的剩余容量,判断所述下游道路的剩余容量是否大于零;
[0019] 若所述下游道路的剩余容量大于零,则在所述下游子路网的虚拟上游道路对应的下游道路中插入一辆所述待迁移车辆,将所述下游子路网的虚拟上游道路中已插入下游道路的所述待迁移车辆删除,将所述下游道路的剩余容量减1,将所述实际迁移车辆的数量加1,并返回执行所述判断所述下游子路网的虚拟上游道路中是否存在待迁移车辆的步骤。
[0020] 可选地,分布式交通仿真方法还包括:若所述下游子路网的虚拟上游道路中不存在待迁移车辆,或者若所述下游道路的剩余容量等于零,则获得最终的实际迁移车辆的数量,并执行所述将所述实际迁移车辆的数量发送至所述尾部边缘道路所属子路网,基于所述实际迁移车辆的数量更新所述尾部边缘道路的剩余容量的步骤。
[0021] 可选地,所述确定各子路网的边缘道路之前,还包括:
[0022] 在各子路网的进程启动后,获取车辆分配数据,根据所述车辆分配数据预生成途经各子路网的车辆;
[0023] 所述将所述车辆信息对应车辆插入所述下游子路网的虚拟上游道路还包括:
[0024] 根据所述车辆信息从预生成的车辆中加载相应车辆插入所述下游子路网的虚拟上游道路。
[0025] 可选地,所述将所述尾部边缘道路的虚拟下游道路中的车辆信息发送至所述下游子路网之后,还包括:
[0026] 删除所述尾部边缘道路的虚拟下游道路中的车辆信息。
[0027] 可选地,所述确定各子路网的边缘道路之前,还包括:
[0028] 获取待仿真路网的完整路径;
[0029] 选取边缘节点,根据预设的子路网数量对所述边缘节点进行分组;
[0030] 根据分组的所述边缘节点将所述待仿真路网进行路网裁剪,得到子路网。
[0031] 本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器读取并运行时,实现如上所述的分布式交通仿真方法。
[0032] 本发明还提出一种分布式交通仿真装置,包括存储有计算机程序的计算机可读存储介质和处理器,所述计算机程序被所述处理器读取并运行时,实现如上所述的分布式交通仿真方法。
[0033] 本发明通过在子路网内增加上下游道的虚拟道路,处于边缘路网的车辆不是直接迁移到下游子路网,而是先把本次时间步中处于边缘路网的可迁移车辆迁移到虚拟下游道路中,再通过网络通讯一次性迁移至下游子路网的虚拟上游道路中,在下游子路网的进程内进行车辆迁移判断和实际迁移操作,记录实际迁移车辆,迁移结束后通过网络通讯通知上游子路网剩余容量减去实际迁移车辆数,优化车辆迁移的通讯方式,使得上游子路网的车辆迁出操作仅需与下游子路网通讯一次,下游子路网的车辆迁入操作无需与上游子路网通讯,仅需在迁移结束后通讯一次,使跨子路网的车辆迁移过程中的通讯次数仅与有车辆迁移的边缘道路数量有关,从而实现分布式交通仿真的效率可控,使通讯次数不受实际迁移车辆数的影响,实现将车辆迁移的通讯需求与仿真车辆数目的脱钩,从而大大降低大规模交通仿真中车辆迁移总通讯次数,提高分布式仿真的计算效率,降低仿真CPU等待通讯的时间,提高计算机利用率。

附图说明

[0034] 图1为本发明实施例分布式交通仿真方法一流程示意图;
[0035] 图2为本发明实施例分布式交通仿真方法另一流程示意图;
[0036] 图3为本发明实施例分布式交通仿真方法一实例的迁移结构示意图;
[0037] 图4为区别于本发明实施例的另一种分布式交通仿真方法的流程示意图。

具体实施方式

[0038] 为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
[0039] 如图1,在本发明一实施例中,所述分布式交通仿真方法包括:
[0040] 步骤S100,确定各子路网的边缘道路,其中,所述边缘道路包括尾部边缘道路,所述尾部边缘道路的下游道路在所述尾部边缘道路所属子路网的下游子路网中。
[0041] 在分布式交通仿真中,将待仿真路网根据机器性能切割为若干个子路网,每个子路网都是独立运行的进程,各子路网的仿真独立运行,车辆跨子路网的迁移运动则通过网络通讯实现。
[0042] 子路网的边缘道路,指分布式交通仿真中,处于两个运算子程序的边界的道路。子路网的边缘道路分为两种,一种为首部边缘道路,用于接收上游子路网迁移来的车辆,首部边缘道路与其上游道路属于不同子路网,另一种为尾部边缘道路,用于将所属子路网的车辆迁移出去,尾部边缘道路与其下游道路属于不同子路网。如图3,有子路网A、B、C,子路网A、B是子路网C的上游子路网,道路A、道路B分别用于将子路网A、子路网B的车辆迁移到子路网C,道路A、道路B分别属于子路网A、子路网B的尾部边缘道路,道路C用于接收上游子路网迁移来的车辆,属于子路网C的首部边缘道路。
[0043] 对于下游道路在下游子路网的边缘道路构建虚拟下游道路,对于上游道路在上游子路网的边缘道路构建虚拟上游道路。虚拟下游道路可记录下游道路的通讯句柄,用于将待迁移车辆信息一次性发送至下游道路,虚拟上游道路可记录上游道路的通讯句柄,用于通知上游道路/上游服务器已迁移成功的车辆数。
[0044] 如图3所示示例,路网被切分为子路网A、子路网B、子路网C三个子路网。道路A、道路B、道路C是边缘道路,其中道路A和道路B是道路C的上游道路。路网结构变化如下:
[0045] 子路网A:给道路A构建道路C的虚拟下游道路。
[0046] 子路网B:给道路B构建道路C的虚拟下游道路。
[0047] 子路网C:给道路C构建道路A和道路B的虚拟上游道路。
[0048] 本文中的车辆迁移,指车辆从上游道路转移到下游道路,因而跨子路网的迁移运动,主要涉及车辆从上游子路网的尾部边缘道路迁移到下游子路网的首部边缘道路。
[0049] 步骤S200,遍历所有所述尾部边缘道路,对每条所述尾部边缘道路,在所述尾部边缘道路所属子路网的进程内确定所述尾部边缘道路中的可迁移车辆,将所述尾部边缘道路中的可迁移车辆迁移至所述尾部边缘道路的虚拟下游道路。
[0050] 确定尾部边缘道路中的可迁移车辆,主要包含信号灯判断,即判断当前时间步下车辆是否能通过信号灯进入下游道路,若是,则确定车辆为可迁移车辆,若否,则确定车辆为不可迁移车辆。
[0051] 可在子路网的进程启动后,为子路网的尾部边缘道路创建虚拟下游道路,每条尾部边缘道路对应一条虚拟下游道路。
[0052] 可选地,步骤S200中所述将所述尾部边缘道路中的可迁移车辆迁移至所述尾部边缘道路的虚拟下游道路包括:将所述尾部边缘道路中的可迁移车辆迁移至所述尾部边缘道路的虚拟下游道路,并将所述尾部边缘道路中已迁移至所述尾部边缘道路的虚拟下游道路的车辆删除,同时所述尾部边缘道路的剩余容量保持不变。
[0053] 其中,剩余容量指道路可容纳外来车辆的数量。当道路的剩余容量大于零,该道路可以承接上游道路迁移来的车辆,当道路的剩余容量等于零,该道路无法再承接上游道路迁移来的车辆。
[0054] 通过构建尾部边缘道路的虚拟下游道路,在尾部边缘道路所属子路网的进程内确定尾部边缘道路中的可迁移车辆,以及将尾部边缘道路中的可迁移车辆迁移至虚拟下游道路,可以在尾部边缘道路所属子路网的进程内确定能够迁移至下游子路网的车辆,无需下游子路网参与,无需与下游子路网通信,而保持尾部边缘道路的剩余容量不变,可保证数据的真实性。
[0055] 一实施方式中,遍历尾部边缘道路中的所有车辆,判断每辆车是否可迁移,确定尾部边缘道路中的所有可迁移车辆,再将所有可迁移车辆一次性迁移至尾部边缘道路的虚拟下游道路。
[0056] 另一实施方式中,遍历尾部边缘道路中的所有车辆,对于每辆车,首先判断该辆车是否可迁移,若可迁移,则将该辆车迁移至尾部边缘道路的虚拟下游道路,再对下一辆车进行可迁移判断和迁移操作,直至遍历完尾部边缘道路中的所有车辆。
[0057] 步骤S300,将所述尾部边缘道路的虚拟下游道路中的车辆信息发送至所述下游子路网。
[0058] 每个子路网的进程之间可直接通讯,每个时间步判断虚拟下游道路中是否存在车辆,当虚拟下游道路上存在车辆时,才触发进程之间的通讯。通过进程之间的通讯由上游子路网的进程将尾部边缘道路的虚拟下游道路中的车辆信息一次性发送至下游子路网的进程。如图3,有子路网A、B、C,子路网A、B是子路网C的上游子路网,以道路A的车辆迁移到道路C为例,只有当道路A有车辆量迁移到虚拟下游道路C中,才会触发道路A所属子路网进程与道路C所属子路网进程之间的网络通讯,把虚拟下游道路C中的车辆迁移到道路C所属子路网的虚拟上游道路A中。
[0059] 可选地,将所述尾部边缘道路的虚拟下游道路中的车辆信息发送至所述下游子路网,删除尾部边缘道路的虚拟下游道路中的车辆信息,从而完成上游子路网侧的迁移操作。
[0060] 步骤S400,将所述车辆信息对应车辆插入所述下游子路网的虚拟上游道路。
[0061] 可选地,步骤S400包括:将所述车辆信息对应车辆插入所述下游子路网的与所述尾部边缘道路对应的虚拟上游道路尾部,其中,所述下游子路网包括一条或多条虚拟上游道路,每条虚拟上游道路对应一条所述尾部边缘道路。如图3,道路A和道路B是道路C的上游道路,在子路网C中,为给道路C构建道路A和道路B的虚拟上游道路,分别对应尾部边缘道路A、B。
[0062] 步骤S500,在所述下游子路网的进程中,确定所述下游子路网的虚拟上游道路中可迁移至所述下游子路网的实际迁移车辆,将所述实际迁移车辆进行迁移,基于所述实际迁移车辆更新所述下游子路网的剩余容量。
[0063] 一实施方式中,可在确定虚拟上游道路中可迁移至所述下游子路网的实际迁移车辆后,一次性将所有实际迁移车辆进行迁移。另一实施方式中,可遍历虚拟上游道路中的每辆车,对每辆车进行可迁移判断和实际迁移操作,直至遍历完虚拟上游道路中的所有车辆或者虚拟上游道路的下游道路剩余容量为零。
[0064] 步骤S600,将所述实际迁移车辆的数量发送至所述尾部边缘道路所属子路网,基于所述实际迁移车辆的数量更新所述尾部边缘道路的剩余容量。
[0065] 以如图3中子路网B进程迁移车辆到子路网C进程为例,流程如下:
[0066] 子路网B:把道路B的车辆内部迁移到虚拟下游道路C中,道路B剩余容量不变。
[0067] 子路网B:通过通讯把虚拟道路C中车辆全部发送到子路网C(第一次通讯)。
[0068] 子路网C:把收到的车辆放入虚拟上游道路B的尾部。
[0069] 子路网C:车辆进行内部迁移,记录实际迁移车辆。
[0070] 子路网C:通过网络通讯告知子路网B进程实际迁移车辆数(第二次通讯)。
[0071] 子路网B:收到消息,剩余容量+实际迁移车辆数。
[0072] 通过在子路网内增加上下游道的虚拟道路,处于边缘路网的车辆不是直接迁移到下游子路网,而是先把本次时间步中处于边缘路网的可迁移车辆迁移到虚拟下游道路中,再通过网络通讯一次性迁移至下游子路网的虚拟上游道路中,在下游子路网的进程内进行车辆迁移判断和实际迁移操作,记录实际迁移车辆,迁移结束后通过网络通讯通知上游子路网剩余容量减去实际迁移车辆数,优化车辆迁移的通讯方式,使得上游子路网的车辆迁出操作仅需与下游子路网通讯一次,下游子路网的车辆迁入操作无需与上游子路网通讯,仅需在迁移结束后通讯一次,使跨子路网的车辆迁移过程中的通讯次数仅与有车辆迁移的边缘道路数量有关,从而实现分布式交通仿真的效率可控,使通讯次数不受实际迁移车辆数的影响,实现将车辆迁移的通讯需求与仿真车辆数目的脱钩,从而大大降低大规模交通仿真中车辆迁移总通讯次数,提高分布式仿真的计算效率,降低仿真CPU等待通讯的时间,提高计算机利用率。
[0073] 通过在上游子路网中设置虚拟下游道路,可在上游子路网的进程中完成尾部边缘道路上所有车辆的可迁移判断以及迁移到虚拟下游道路的操作,无需与下游子路网通讯,减少进程间的通讯次数。通过下游子路网中设置虚拟上游道路,可通过网络通讯一次性接收从上游子路网迁移来的车辆,并在下游子路网的进程内判断下游道路是否可以还有剩余容量,以及进行迁移操作,同时,对于有多条上游道路的首部边缘道路,通过设置虚拟上游道路,先将所有从上游子路网迁移来的车辆添加在虚拟上游道路,再进行可迁移判断,只有通过验证并且迁移成功车辆才会通知相应的上游道路更新剩余容量,可保证分布式交通仿真的精确性精度,避免车辆的同步问题,如图3所示示例中道路C,如果在道路C车道容量剩余1的情况,道路A和道路B直同时各迁移1辆车,不经过虚拟上游道路直接判断道路C是否可以通行,此时道路A和道路B可能同时得到道路C是可以通行的,直接把车辆同步到道路C上,就会造成下游道路C车辆溢出,导致仿真精度异常。
[0074] 可选地,步骤S500包括:
[0075] 判断所述下游子路网的虚拟上游道路中是否存在待迁移车辆。此处待迁移车辆即虚拟上游道路中的所有车辆。
[0076] 若下游子路网的虚拟上游道路中存在待迁移车辆,则获取所述下游子路网的虚拟上游道路对应的下游道路的剩余容量,判断所述下游道路的剩余容量是否大于零;
[0077] 若所述下游道路的剩余容量大于零,则在所述下游子路网的虚拟上游道路对应的下游道路中插入一辆所述待迁移车辆,将所述下游子路网的虚拟上游道路中已插入下游道路的所述待迁移车辆删除,将所述下游道路的剩余容量减1,将所述实际迁移车辆的数量加1,并返回执行所述判断所述下游子路网的虚拟上游道路中是否存在待迁移车辆的步骤。
[0078] 进一步地,若所述下游子路网的虚拟上游道路中不存在待迁移车辆,或者若所述下游道路的剩余容量等于零,则结束本次时间步下游子路网的车辆迁移,获得最终的实际迁移车辆的数量,并执行所述步骤S600。
[0079] 通过设置虚拟上游道路,先将所有从上游子路网迁移来的车辆添加在虚拟上游道路,再进行可迁移判断,只有通过验证并且迁移成功车辆才会通知相应的上游道路更新剩余容量,可保证分布式交通仿真的精确性精度,避免车辆的同步问题。
[0080] 可选地,步骤S100之前,还包括:在各子路网的进程启动后,获取车辆分配数据,根据所述车辆分配数据预生成途经各子路网的车辆。
[0081] 车辆分配数据包括路网各路径的车辆分配情况。如仿真路径path1分配1辆车Trip1进行仿真,仿真路径path2分配1辆车Trip2进行仿真。以图3给出的示例为例:1、为子路网A生成Trip1,并为Trip1分配路径[道路Y‑>道路A‑>虚拟道路C]。2、为子路网B生成Trip2,并为Trip2分配路径[道路Y‑>道路A‑>虚拟道路C]。3、为子路网C生成Trip1,并为Trip1分配路径[虚假道路A‑>道路C‑>道路N+1]。4、为子路网C生成Trip2,并为Trip2分配路径[虚拟道路B‑>道路C‑>道路N+1]。
[0082] 进一步地,所述步骤S400包括:根据所述车辆信息从预生成的车辆中加载相应车辆插入所述下游子路网的虚拟上游道路。
[0083] 以Trip1迁移为例:
[0084] 子路网A中Trip1根据路径[道路Y‑>道路A‑>虚拟道路C]进行仿真行进。当车辆达到虚拟下游道路C时候,通过虚拟下游道路C的通讯句柄,把车辆Trip1的信息传输到子路网C。
[0085] 子路网C收到通讯消息后,从预生成的车辆中加载Trip1插入到虚拟上游道路A的道路尾部,然后在子路网C进程内进行本地判断是否能够通行,若能,则将Trip1迁移到道路C尾部,并且通过虚拟上游道路A的通讯句柄,把成功迁移车辆数传输到子路网A。
[0086] 通过在启动仿真的初始阶段就对车辆进行预生成,车辆迁移时能够快速从预生成车辆中找到对应的车辆进而提高仿真效率。
[0087] 可选地,步骤S100之前,还包括:
[0088] 获取待仿真路网的完整路径;
[0089] 选取边缘节点,根据预设的子路网数量对所述边缘节点进行分组;
[0090] 根据分组的所述边缘节点将所述待仿真路网进行路网裁剪,得到子路网。
[0091] 其中,待仿真路网的完整路径预先存储在数据库,在需要时调取。如图3中有两条完整路径:完整路径1:道路Y‑>道路A‑>道路C‑>道路N+1,完整路径2:道路X‑>道路B‑>道路C‑>道路N+1。
[0092] 边缘节点在制作路网模型时选取好,选取边缘节点的原则为:车流量较小(减少通讯消耗),道路密集度低(减少分化子路网后上下游道路数量)。对边缘节点的分组,如图3所示示例,分为{道路X、道路A}、{道路Y、道路B}、{道路C、道路N+1}三组。
[0093] 根据分组的所述边缘节点将所述待仿真路网进行路网裁剪,同时,记录上下游通讯句柄,以便于后续的进程间通讯。如图3所示示例中,有:
[0094] 子路网A分配边缘节点{道路X、道路A},通过遍历所有完整路径,对路径进行裁剪得子路径:[道路X‑>道路A‑>虚拟道路C],其中虚拟道路C记录下游子路网的通讯句柄,用于通讯车辆迁移数据。
[0095] 子路网B分配边缘节点{道路Y、道路B},通过遍历所有完整路径,对路径进行裁剪得子路径:[道路Y‑>道路A‑>虚拟道路C],其中虚拟道路C记录下游子路网的通讯句柄,用于通讯车辆迁移数据。
[0096] 子路网C分配边缘节点{道路C、道路N+1},通过遍历所有完整路径,对路径进行裁剪得子路径:[虚假道路A‑>道路C‑>道路N+1],[虚拟道路B‑>道路C‑>道路N+1]两个路径。其中虚拟道路A和虚拟道路B分别记录对应上游节点的通讯句柄,用于通讯车辆迁移数据。
[0097] 为便于理解本发明,给出如图2所示的实例,具体包括:
[0098] 上游子路网进程:遍历道路,找到边缘道路。
[0099] 上游子路网进程:遍历边缘道路上的车辆,确定可迁移车辆,进行迁移准备。
[0100] 上游子路网进程:将可迁移车辆迁移到虚拟下游道路,边缘道路上的车辆删除,边缘道路的剩余容量不变。
[0101] 上游子路网进程:判断是否遍历完边缘道路上的所有车辆,若否,则继续遍历边缘道路上的车辆。
[0102] 上游子路网进程:若已遍历完边缘道路上的车辆,通过网络通讯一次性把虚拟下游道路中的车辆全部发送到下游子路网。
[0103] 下游子路网进程:收到车辆,把所有车辆插入虚拟上游道路尾部。
[0104] 下游子路网进程:在下游子路网进程内,遍历虚拟上游道路中的待迁移车辆,若存在待迁移车辆,则判断下游道路的剩余容量是否大于0,若是,则进行车辆迁移(同一进程内迁移,无需网络通讯),并删除虚拟上游道路中的车辆,更新下游道路的剩余容量,更新成功迁移车辆数,判断虚拟上游道路中的待迁移车辆是否遍历完成,若是,则返回成功迁移车辆数,若下游道路的剩余容量等于0,则直接返回成功迁移车辆数。
[0105] 下游子路网进程:网络通讯通知上游子路网进程成功迁移车辆数。
[0106] 上游子路网进程:边缘道路的剩余容量减去成功迁移车辆数。
[0107] 上游子路网进程:判断是否遍历完所有道路,若是,则本时间步的仿真结束,开始下一个时间步的仿真,若否,则继续遍历道路,寻找边缘道路。
[0108] 为便于理解本发明实施例的优势,对区别于本发明实施例的另一种分布式交通仿真方法进行说明。如图4为另一种分布式交通仿真方法的流程示意图。如图4,另一种分布式交通仿真方法的流程如下:
[0109] 上游子路网进程:遍历道路,找到边缘道路。
[0110] 上游子路网进程:遍历边缘道路中的车辆。
[0111] 上游子路网进程:通过网络通讯(第一通讯)判断下游子路网的边缘道路是否可以通行(剩余容量大于零为可以通行)。
[0112] 上游子路网进程:如果可以通行,把车辆通过网络通讯(第二通讯)迁移到下游子路网,上游道路删除车辆,剩余容量+1。
[0113] 下游子路网进程:下游道路收到车辆后,在尾部插入车辆,道路剩余容量‑1。
[0114] 如此循环迁移每辆车。
[0115] 该方案中,每个时间步内,车辆迁移的通讯次数与需要迁移的车辆成正比关系,具体为:总通讯次数 = 需要迁移车辆 * 2。
[0116] 而本发明实施例中,参见图2所示实例,其每个时间步内,车辆迁移的通讯次数仅与有车辆迁移边缘道路数有关,且每个时间步内通讯次数=有车辆迁移边缘道路数 * 2,此处有车辆迁移边缘道路数指有车辆迁移出去的边缘道路数,即有车辆迁移的尾部边缘道路数量。
[0117] 可见,在交通流较大时,本发明实施例与上述另一种分布式交通仿真方法相比,车辆迁移过程中的通讯次数大大降低,仿真效率较高。
[0118] 本发明一实施例中,分布式交通仿真装置包括存储有计算机程序的计算机可读存储介质和处理器,所述计算机程序被所述处理器读取并运行时,实现如上所述的分布式交通仿真方法。本发明分布式交通仿真装置相对于现有技术所具有的有益效果与上述分布式交通仿真方法一致,此处不赘述。
[0119] 本发明一实施例中,计算机可读存储介质存储有计算机程序,所述计算机程序被处理器读取并运行时,实现如上所述的分布式交通仿真方法。本发明计算机可读存储介质相对于现有技术所具有的有益效果与上述分布式交通仿真方法一致,此处不赘述。
[0120] 读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0121] 尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。