掌桥专利:专业的专利平台
掌桥专利
首页

一种基于GPU的微观交通模拟方法和装置

文献发布时间:2024-04-18 19:58:53


一种基于GPU的微观交通模拟方法和装置

技术领域

本发明涉及交通模拟技术领域,尤其涉及一种基于GPU的微观交通模拟方法和装置。

背景技术

微观交通模拟是对城市道路网上的车辆驾驶行为以及多个车辆之间的关联关系和相互影响进行模拟的过程,通过微观交通模拟可以得到城市微观与宏观的交通运行态势,从而帮助决策者选择更优的城市道路网规划方案或进行城市交通承载力的测算。因此,微观交通模拟对于城市建设有着重要意义。

对于城市级别的微观交通模拟,其存在需要消耗大量算力的特点,这对微观交通模拟所选用的计算设备与计算模型提出了高的要求。然而,目前的微观交通模拟基本上采用单线程或多线程的方式进行计算,如SUMO[1]、CityFlow[2]、QarSUMO[3]等,存在着单台计算机的CPU难以支撑城市级别的细粒度微观交通模拟的情况,这制约了微观交通模拟真正发挥其价值,使得下游的决策优化任务无法高效开展。

近年来,GPU的大算力特点使得GPU计算加速在许多领域都取得了突破性的成果,特别是在深度学习领域。因此,将GPU应用于微观交通模拟中是支撑城市级别的细粒度微观交通模拟的有效手段,故而如何设计基于GPU的微观交通模拟方法是一个亟待解决的问题。

发明内容

为解决上述问题,本发明提供一种基于GPU的微观交通模拟方法和装置,适配性的将GPU用于微观交通模拟中,以使GPU承担城市级别的细粒度微观交通模拟所需的海量算力,从而大幅度提高微观交通模拟的效率。

第一方面,本发明提供一种基于GPU的微观交通模拟方法,用于GPU中执行的每一轮模拟迭代,所述方法包括:

构建城市道路网每一个车道的主链-支链链表;

基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;

根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;

其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置关系;

每一个所述车辆的车辆索引,用于索引每一个所述车辆所属车道以及每一个所述车辆的其周围车辆;

每一个所述车辆的所述路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。

根据本发明提供的基于GPU的微观交通模拟方法,所述构建城市道路网每一个车道的主链-支链链表,包括:

令GPU中一个线程负责城市道路网中一个车道的主链-支链链表构建任务,通过GPU多线程并行执行方式生成城市道路网每一个车道的主链-支链链表;

其中,GPU的任一线程执行城市道路网任一车道的主链-支链链表构建任务的过程,包括:

向所述任一线程的编程框架中写入所述任一车道初始信息以及主链-支链链表构建算法代码,以使所述任一线程生成所述任一车道的主链-支链链表;

所述任一车道初始信息包括上一轮模拟迭代时所述任一车道的主链、离开车辆列表和加入车辆列表。

根据本发明提供的基于GPU的微观交通模拟方法,所述主链-支链链表构建算法,包括:

输入上一轮模拟迭代时目标车道的主链、离开车辆列表和加入车辆列表;

记录上一轮模拟迭代时所述目标车道的主链和离开车辆列表共有的车辆节点,并删除上一轮模拟迭代时所述目标车道的主链中的所述车辆节点,得到第一链表;

对上一轮模拟迭代时目标车道的加入车辆列表进行车辆位置排序,并将车辆有序序列对应的有序链表记为第二链表;

基于所述第一链表和所述第二链表,生成本轮模拟迭代时所述目标车道的主链;

根据本轮模拟迭代时所述目标车道及其每一个相邻车道的主链,建立所述目标车道中每一个车辆与其在所述目标车道的每一个相邻车道上的最接近的前车和后车之间的链接,以生成本轮模拟迭代时所述目标车道的支链;

基于本轮模拟迭代时所述目标车道的主链和支链,组成本轮模拟迭代时所述目标车道的主链-支链链表。

根据本发明提供的基于GPU的微观交通模拟方法,所述基于所述第一链表和所述第二链表,生成本轮模拟迭代时所述目标车道的主链,包括:

将所述第一链表和所述第二链表进行有序合并,得到本轮模拟迭代时所述目标车道的主链;

或者

对所述第一链表进行重排序,并将重排序后的所述第一链表和所述第二链表进行有序合并,得到本轮模拟迭代时所述目标车道的主链。

根据本发明提供的基于GPU的微观交通模拟方法,所述根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行,包括:

令GPU中一个线程负责城市道路网中一个车辆的交通运行模拟任务,通过GPU多线程并行执行方式模拟每一个车辆的交通运行;

其中,GPU的任一线程模拟城市道路网任一车辆的交通运行的过程,包括:

向所述任一线程的编程框架中写入基于预设行车策略、目标车辆的车辆索引以及目标车辆的路径规划模拟目标车辆交通运行的模拟算法代码,以使所述任一线程基于所述模拟算法、所述任一车辆的路径规划以及所述任一车辆的车辆索引的访问结果模拟所述任一车辆的交通运行。

根据本发明提供的基于GPU的微观交通模拟方法,所述预设行车策略包括但不限于下述子策略:

第一子策略:在目标车辆的路径规划中指示目标车辆需要变道至第一车道时,基于目标车辆与其在所述第一车道上最接近的前车和后车之间的位置速度相对关系,确定变道是否会发生追尾,并在变道不发生追尾时执行变道操作;其中,所述第一车道为目标车辆自身所属车道的相邻车道;

第二子策略;目标车辆尽可能达到其所在车道的最高限速;

第三子策略;基于目标车辆与其前后车辆之间的位置速度相对关系,利用跟驰模型计算目标车辆的加速度;

第四子策略;根据目标车辆的路径规划中指示的目标车辆将进入的下一车道的限速,及时减速慢行;

第五子策略;根据目标车辆的路径规划中指示目标车辆距终点的距离,及时减速慢行。

根据本发明提供的基于GPU的微观交通模拟方法,所述城市道路网每一个车辆的路径规划的生成过程,包括:

将城市道路网中车道建模为边,路口建模为点,车道通行时间建模为边的代价,路口转向所对应的预设值建模为点的代价,以生成城市道路网的带权有向图;

将所述城市道路网每一个车辆的给定起点到给定终点代价最小的路径,作为所述城市道路网每一个车辆的最优路径;

在所述最优路径上标注关键辅助信息,得到所述城市道路网每一个车辆的路径规划;

其中,所述关键辅助信息包括:驾驶行为、车道限速和车辆距给定终点的距离;

所述驾驶行为,包括变道、直行。

第二方面,本发明提供一种基于GPU的微观交通模拟装置,用于GPU中执行的每一轮模拟迭代,所述装置包括:

链表构建模块,用于构建城市道路网每一个车道的主链-支链链表;

车辆索引构建模块,用于基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;

车辆交通模拟模块,用于根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;

其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置关系;

每一个所述车辆的车辆索引,用于索引每一个所述车辆所属车道以及每一个所述车辆的其周围车辆;

每一个所述车辆的所述路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。

第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述基于GPU的微观交通模拟方法。

第四方面,本发明提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述基于GPU的微观交通模拟方法。

本发明提供的一种基于GPU的微观交通模拟方法和装置,用于GPU中执行的每一轮模拟迭代,包括:构建城市道路网每一个车道的主链-支链链表;基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置关系;每一个所述车辆的车辆索引,用于索引每一个所述车辆所属车道以及每一个所述车辆的其周围车辆;每一个所述车辆的路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。本发明考虑到GPU擅长处理海量的同质化的并行任务,能提供远超CPU的超大算力,但执行复杂的分支跳转和差异化并行任务时会降低其执行效率的特点,设计了微观交通模拟框架仅包含索引构建任务、车辆模拟等的高度同质化任务,以使微观交通模拟与GPU适配。从而使GPU承担城市级别的细粒度微观交通模拟所需的海量算力,进而大幅度提高微观交通模拟的效率。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的基于GPU的微观交通模拟方法的流程示意图;

图2是本发明提供的基于GPU的微观交通模拟方法的原理示意图;

图3是本发明提供的车辆的主链构建流程示意图;

图4是本发明提供的车辆的支链构建流程示意图;

图5是本发明提供的车辆模拟原理示意图;

图6是本发明提供的基于A*算法的路径规划原理示意图;

图7是本发明提供的基于A*算法的路径规划实施例示意图;

图8是本发明提供的基于GPU的微观交通模拟装置的结构示意图;

图9是本发明提供的电子设备的结构示意图;

附图标记:

910:处理器;920:通信接口;930:存储器;940:通信总线。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1-图9描述本发明的基于GPU的微观交通模拟方法和装置。

第一方面,GPU作为常见的计算加速设备能够提供远超CPU的超大算力,考虑到对城市级别的亚秒级细粒度微观交通模拟任务的快速执行需要海量算力,GPU能够有效地承担这一任务,从而大幅提高微观交通模拟任务执行效率,充分发挥微观交通模拟的应用价值。但是目前采用单线程或多线程的微观交通模拟实现方式,缺少基于GPU实现微观交通模拟的系统模型与软件框架,因此,本发明目标是构建基于GPU硬件加速的微观交通模拟方法。鉴于此,本发明提供一种基于GPU的微观交通模拟方法,其用于GPU中执行的每一轮模拟迭代中,如图1所示,所述方法包括:

S11、构建城市道路网每一个车道的主链-支链链表;

S12、基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;

S13、根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;

其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置关系;

每一个所述车辆的车辆索引,用于索引每一个所述车辆所属车道以及每一个所述车辆的其周围车辆;

每一个所述车辆的路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。

事实上,本发明根据GPU擅长处理海量的同质化的并行任务,能提供远超CPU的超大算力,但执行复杂的分支跳转和差异化并行任务时会降低其执行效率的特点,将微观交通模拟任务分为索引构建、车辆模拟、路径规划3个子任务,其中,索引构建包含车道主链-支链链表构建以及车辆索引构建两部分,索引构建和车辆模拟在GPU上完成,路径规划在GPU之外的组件上完成。

图2示例了基于GPU的微观交通模拟方法的原理示意图,如图2所示,在微观交通模拟的过程中,计算程序首先进行索引构建的计算过程,由于车辆在城市道路网中行驶需要感知周围车辆的相对位置与车速等信息,索引构建计算过程的一个计算内容即是为车辆构建可查询其周围车辆的索引。另外,在模拟计算过程中,车辆会在不同的车道之间移动,索引构建计算过程也需要将车辆归属到当前其实际所处的车道的索引中。完成了索引构建后,计算程序进入车辆模拟的计算过程,在车辆模拟的计算过程中,车辆依靠城市道路网的拓扑结构信息、车辆的路径规划、所构建的车辆索引,通过综合考虑周边车辆的行驶情况、道路网的客观条件等信息,计算出车辆的驾驶行为(直行、变道等),再根据驾驶行为更新车辆的位置与速度,从而达到微观交通模拟的目的。计算完成后,将循环迭代地进行下一轮的索引构建与模拟计算。

路径规划是在给定出发地与目的地的情况下,根据城市道路网拓扑计算出出发地到目的地的最短路径的过程,其结果将作为车辆在道路网上驾驶行为计算的重要输入。在车辆进入新的行程或车辆需要改变目的地等情况下,车辆可能会按需触发路径规划的计算过程,重新确定新的路径规划。

本发明提供的基于GPU的微观交通模拟方法,考虑到GPU擅长处理海量的同质化的并行任务,能提供远超CPU的超大算力,但执行复杂的分支跳转和差异化并行任务时会降低其执行效率的特点,设计了微观交通模拟框架仅包含索引构建任务、车辆模拟等的高度同质化任务,以使微观交通模拟与GPU适配。从而使GPU承担城市级别的细粒度微观交通模拟所需的海量算力,进而大幅度提高微观交通模拟的效率。

具体的,所述S11,包括:

令GPU中一个线程负责城市道路网中一个车道的主链-支链链表构建任务,通过GPU多线程并行执行方式生成城市道路网每一个车道的主链-支链链表;

其中,GPU的任一线程执行城市道路网任一车道的主链-支链链表构建任务的过程,包括:

向所述任一线程的编程框架中写入所述任一车道初始信息以及主链-支链链表构建算法代码,以使所述任一线程生成所述任一车道的主链-支链链表;

所述任一车道初始信息包括上一轮模拟迭代时所述任一车道的主链、离开车辆列表和加入车辆列表。

需要说明的是,现实中会出现GPU线程数少于城市道路网车道数的情况,此时利用GPU多线程对城市道路网的车道分批次的构建主链-支链链表。

进一步的,所述主链-支链链表构建算法,包括:

输入上一轮模拟迭代时目标车道的主链、离开车辆列表和加入车辆列表;

记录上一轮模拟迭代时所述目标车道的主链和离开车辆列表共有的车辆节点,并删除上一轮模拟迭代时所述目标车道的主链中的所述车辆节点,得到第一链表;

对上一轮模拟迭代时目标车道的加入车辆列表进行车辆位置排序,并将车辆有序序列对应的有序链表记为第二链表;

基于所述第一链表和所述第二链表,生成本轮模拟迭代时所述目标车道的主链;

根据本轮模拟迭代时所述目标车道及其每一个相邻车道的主链,建立所述目标车道中每一个车辆与其在所述目标车道的每一个相邻车道上的最接近的前车和后车之间的链接,以生成本轮模拟迭代时所述目标车道的支链;

基于本轮模拟迭代时所述目标车道的主链和支链,组成本轮模拟迭代时所述目标车道的主链-支链链表。

再进一步的,所述基于所述第一链表和所述第二链表,生成本轮模拟迭代时所述目标车道的主链,包括:

将所述第一链表和所述第二链表进行有序合并,得到本轮模拟迭代时所述目标车道的主链;

或者

对所述第一链表进行重排序,并将重排序后的所述第一链表和所述第二链表进行有序合并,得到本轮模拟迭代时所述目标车道的主链。

也就是说,索引构建是每轮模拟迭代时车辆模拟计算过程的前置流程。由于车辆在每轮模拟迭代中可能驶入或驶出车道、前后交换相对位置,因此索引构建用于在新的车辆位置关系下重新确定车辆与车道的归属关系以及车辆之间的相对关系,以便后续车辆的模拟计算能够正常开展。

在索引构建中,每个车道上的车辆按照相对位置顺序组成一个双向链表结构,称为“主链”;而车辆与相邻车道上相近的车辆之间的链接关系称为“支链”。车道的“主链”采取增量式计算构建方式,具体而言,图3为车辆的主链构建流程示意图,如图3所示,在车辆模拟的计算过程中,车辆会将自己离开车道的情况记录到对应的车道的离开列表中,将自己进入车道的情况记录到对应的车道的加入列表中,在每轮模拟迭代的索引构建计算过程中,以车道为GPU设备上的并行基本单位,对每个车道的离开列表与加入列表进行扫描,先分别从原有的“主链”中删除相应的车辆节点,经过全局同步后再加入新增的车辆节点,从而得到本轮迭代中车辆模拟可用的“主链”索引。在这当中,由于车道上的车辆索引的“主链”存在有序性的要求,因此加入新增车辆节点的过程被实现为排序的过程,首先将根据车辆的新的位置对原有“主链”进行一次排序操作,修正其中由于行车模拟计算特殊结果造成的逆序对(或者扫描定义并修正逆序对),其次将新加入的少量车辆排序后组织成有序链表,最后通过有序的链表合并算法将两条有序链表合成为一条有序链表,形成新的“主链”。当然,由于原有“主链”出现逆序对的概率比较小,可以视情况删除原有“主链”重排序的步骤。由于每步中进出车道的车辆数量是相对小的,因此通过这样的过程,可以尽可能地降低计算开销。

对于车道的“支链”,由于不同车道上的车辆之间的位置关系发生改变的可能性较大,因此采用全量构建的方式保证构建结果的正确性。具体地,图4为车辆的支链构建流程示意图,如图4所示,“支链”的全量构建过程以车道为GPU上的并行基本单元,每个车道与自己的左/右侧车道组成“支链”构建对,由于两个车道的“主链”都已经是有序链表,因此可以从两个车道的首车开始,交替向前扫描以得到每辆车在左/右侧车道上最靠近自己的前车与后车。

具体的,所述S12,包括:

本发明根据每一个车道的主链-支链链表,生成每一个车道上每一个车辆的车辆索引;其中,每一个所述车辆的车辆索引用于索引每一个所述车辆所属车道以及每一个所述车辆的周围车辆,这里周围车辆仅指前车、后车、左侧车道上最靠近自己的前车与后车,右侧车道上最靠近自己的前车与后车。

具体的,所述S13,包括:

令GPU中一个线程负责城市道路网中一个车辆的交通运行模拟任务,通过GPU多线程并行执行方式模拟每一个车辆的交通运行;

其中,GPU的任一线程模拟城市道路网任一车辆的交通运行的过程,包括:

向所述任一线程的编程框架中写入基于预设行车策略、目标车辆的车辆索引以及目标车辆的路径规划模拟目标车辆交通运行的模拟算法代码,以使所述任一线程基于所述模拟算法、所述任一车辆的路径规划以及所述任一车辆的车辆索引的访问结果模拟所述任一车辆的交通运行。

显而易见的,这里将车辆作为GPU设备上的并行基本单位。

进一步的,所述预设行车策略包括但不限于下述子策略:

第一子策略:在目标车辆的路径规划中指示目标车辆需要变道至第一车道时,基于目标车辆与其在所述第一车道上最接近的前车和后车之间的位置速度相对关系,确定变道是否会发生追尾,并在变道不发生追尾时执行变道操作;其中,所述第一车道为目标车辆自身所属车道的相邻车道;

第二子策略;目标车辆尽可能达到其所在车道的最高限速;

第三子策略;基于目标车辆与其前后车辆之间的位置速度相对关系,利用跟驰模型计算目标车辆的加速度;

第四子策略;根据目标车辆的路径规划中指示的目标车辆将进入的下一车道的限速,及时减速慢行;

第五子策略;根据目标车辆的路径规划中指示目标车辆距终点的距离,及时减速慢行。

其中,车辆的减速速度是预先设定的,第四子策略和第五子策略重点在于确定开始减速时机执行减速操作。除上述5个策略外,还需要设定一个路口策略,以避免路口处的碰撞。

也即,车辆模拟是每轮模拟迭代过程的主要环节。在车辆模拟中,车辆将根据周围环境信息与自身路径,依照预置的各个行车策略决定本轮迭代中所做出的驾驶行为,包括选择的加速度和是否换道行驶。此后,将依照车辆做出的驾驶行为,计算更新车辆在本轮迭代后新的速度、位置。图5示例了车辆模拟原理示意图,如图5所示,车辆的行车策略包括:(1)根据自身路径要求(变道要求)和相邻车道的前后车位置速度相对关系,决定是否进行变道,并利用跟驰模型确定变道过程的加速度;(2)尽可能地达到当前车道的最高限速;(3)考虑前后方车辆的位置速度相对关系,利用跟驰模型计算合适的加速度以保持安全距离避免碰撞;(4)考虑将进入的下一车道的车道限速,及时减速慢行;(5)将行驶到终点时减速停车;(6)在路口中,考虑所有可能交汇的车流情况,以避免碰撞的保守安全原则选择合适的加速度。

当然,因为车辆模拟要综合考虑上述所有行车策略,因此最终加速度选择其中最适合的(一般是最小值)。

在上述行车策略中,车辆可以通过有限且固定次数的指针访存操作后获取相应的周围车辆信息,从而保证整个计算过程中不存在过多的分支跳转逻辑,保证对GPU设备的计算资源利用效率。例如,每一个车辆的位置速度信息都存储在GPU的内存上,车道上的车辆索引的存在,使得车辆通过有限次访存操作即可获知相邻车道的前后车位置速度相对关系与同一车道前后方车辆的位置速度相对关系;通过路径中的信息,可以获知车道的限速以及距终点的剩余距离。

具体的,所述S12中所述城市道路网每一个车辆的路径规划的生成过程,包括:

将城市道路网中车道建模为边,路口建模为点,车道通行时间建模为边的代价,路口转向所对应的预设值建模为点的代价,以生成城市道路网的带权有向图;

将所述城市道路网每一个车辆的给定起点到给定终点代价最小的路径,作为所述城市道路网每一个车辆的最优路径;

在所述最优路径上标注关键辅助信息,得到所述城市道路网每一个车辆的路径规划;

其中,所述关键辅助信息包括:驾驶行为、车道限速和车辆距给定终点的距离;

所述驾驶行为,包括变道、直行。

具体来讲,路径规划组件按需提供在指定城市道路网上从给定起点到终点的最短通行路径。在路径规划计算中,车道被建模为图上的边,路口被建模为图上的点;车道的通行时间被建模为通过边的代价,路口的左转、右转、直行被预设了相应的数值(左转>直行>右转)来体现通过路口的代价。在这样的抽象下,路径规划计算过程被建模为带权有向图上点到点之间的最短路径算法。对于最短路径算法,常见的有基于贪心策略与松弛过程的迪杰斯特拉算法,也有基于启发式搜索方法的A*算法等。本发明主要以A*算法为主。图6示例了基于A*算法的路径规划原理示意图,如图6所示,A*算法依赖一个预先给定的距终点最小代价估计函数,并在搜索过程中依赖该估计函数确定通向终点的大致方向和有限搜索的拓扑邻居。在微观交通模拟中,由于城市路网的特点,采用曼哈顿距离除以城市平均自由流车速作为通往终点的最小代价估计函数,引导启发式搜索算法快速收敛并找到正确的路径。除了计算最短路径外,路径规划计算模型还为得到的路径标记了相应的驾驶行为,即变道与直行,并提供了所经过的车道的限速情况与距终点的距离等关键辅助信息。

为了更清楚地说明本发明技术方案,下面提供了两种具体实施方式。显而易见地,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这两种具体实施方式获得其他的实施方式。

实施方式一:使用者想利用该模拟计算模型模拟A地在2022年6月1日全天的城市微观交通运行状况,A地的城市道路网中总计有37521条车道。

在GPU设备上,索引构建的过程被实现为多个Kernel函数RemoveVehicleFromIndex<<>> 、InsertAndBuildMainIndex<<>>、BuildSecondIndex<<>>,分别用于从“主链”中移除车辆、向“主链”中添加车辆并增量式构建“主链”、全量构建“支链”,其中num_lanes的数值等于37521。具体地,在时刻5,ID为1023的车道上存在车辆A、B、C、D,其相对于车道起点的距离分别为100、200、300、306,在完成时刻5的模拟计算后,车辆B离开车道1023,车辆E进入车道1023且距起点位置为3,车辆A、C、D的新位置相对起点的距离分别为102、320、310。在这样的情况下,首先RemoveVehicleFromIndex函数将车辆B从车道的“主链”中移除,剩余A、C、D;下一步,InsertAndBuildMainIndex函数首先将“主链”重新排序为A、D、C,再将车辆E加入“主链”,得到E、A、D、C;最后,调用BuildSecondIndex为车辆E、A、D、C构建其与相邻车道上最接近的车辆的前后车关联关系。以上所有处理都以车道最为并行基本单元,从而充分利用GPU的并行能力与算力优势。

车辆模拟计算过程被实现为一个Kernel函数UpdateVehicle<<>>,其中按照要执行的行车策略和位置速度更新区分为多个环节。由于索引构建过程充分消除了车辆获取信息的不确定性成本,因此该Kernel函数在GPU设备上的执行不需要再获取除车辆自身信息外的额外信息,因此可以在GPU上高效运行。具体地,车辆需要按照下述方式运行,(1)检查路径中是否要求向左或向右变道,如果存在变道要求,则获取变道方向上的前车与后车距离自己相对位置和相对速度,根据相对位置和相对速度可以计算出变道后是否通过普通的减速或加速行为即可避免碰撞发生,如果不存在碰撞的可能,则车辆的驾驶行为被设置为向左/右变道,车辆当前时刻的加速度被设置为安全范围内的中间值;(2)车辆根据当前车道的限速与下一车道的限速,选择合适的加速或减速行为使得车辆的速度能够在限制范围内尽可能地高;(3)车辆检查当前车道的前车,利用自己与前车的相对位置和相对速度判断是否会发生碰撞,如果会则根据所需的加速度选择一般刹车或紧急刹车两种驾驶行为中的一种;(4),车辆检查自己与终点的距离,在距终点的距离进入一般刹车的停止距离后,选择一般刹车驾驶行为;(5),如果车辆在路口中,则会考虑行车方向矢量与自己行车方向矢量相交叉的车辆,根据通行优先级判断是否让行以及选择让行行为采用的加速度与驾驶行为。上述所有环节产生的加速度和驾驶行为都通过规则进行聚合,保证最终的驾驶行为在符合不发生碰撞的约束下实现最高的通行效率。在获得驾驶行为后,位置速度更新体现为根据车辆上一时刻的速度,加上当前时刻的加速过程后得到下一时刻的速度,并通过两个时刻的速度,利用匀加速公式得出本轮模拟计算后车辆的行驶距离,从而得到车辆的新位置。相应的,车辆如果离开了当前车道,则将自身的离开信息与进入信息记录到对应车道中。

路径规划模型被实现为A*算法。图7示例了基于A*算法的路径规划实施例示意图,如图7所示,城市道路网中的路口C、G、I、L等被转换为图上的点,相应的路口具有通过的代价4、3、2、1等,连接路口的道路被转换为图上的边,且边具有一定的通行代价。当车辆要求获取从路口S前往路口T的最短路径时,路径规划模型从出发点路口S开始,在曼哈顿距离的引导下,依次搜索路径S-B-E-D、S-B-E-F、S-D-H-J-K-T,最终找到能够到达目的地的最短路径。

实施方式二:

使用者想利用该模拟计算模型模拟B地在2022年3月1日全天的城市微观交通运行状况。B地的城市道路网中总计有56612条车道。在GPU设备上,索引构建的过程被实现为多个Kernel函数RemoveVehicleFromIndex<<>> 、InsertAndBuildMainIndex<<>> 、BuildSecondIndex<<>>,分别用于从“主链”中移除车辆、向“主链”中添加车辆并增量式构建“主链”、全量构建“支链”,其中num_lanes的数值等于56612。具体地,在时刻102,ID为5的车道上存在车辆A、B、C、D,其相对于车道起点的距离分别为150、250、350、358,在完成时刻102的模拟计算后,车辆C离开车道5,车辆E进入车道5且距起点位置为103,车辆A、B、D的新位置相对起点的距离分别为152、252、360。在这样的情况下,首先RemoveVehicleFromIndex函数将车辆C从车道的“主链”中移除,剩余A、B、D;下一步,InsertAndBuildMainIndex函数首先将“主链”重新排序为A、B、D,再将车辆E加入“主链”,得到E、A、B、D;最后,调用BuildSecondIndex为车辆E、A、B、D构建其与相邻车道上最接近的车辆的前后车关联关系。以上所有处理都以车道最为并行基本单元,从而充分利用GPU的并行能力与算力优势。

车辆模拟计算过程被实现为一个Kernel函数UpdateVehicle<<>>,其中按照要执行的行车策略和位置速度更新区分为多个环节。由于索引构建过程充分消除了车辆获取信息的不确定性成本,因此该Kernel函数在GPU设备上的执行不需要再获取除车辆自身信息外的额外信息,因此可以在GPU上高效运行。具体地,车辆需要按照下述方式运行,(1)车辆首先检查路径中是否要求向左或向右变道,如果存在变道要求,则获取变道方向上的前车与后车距离自己相对位置和相对速度,根据相对位置和相对速度可以计算出变道后是否通过普通的减速或加速行为即可避免碰撞发生,如果不存在碰撞的可能,则车辆的驾驶行为被设置为向左/右变道,车辆当前时刻的加速度被设置为安全范围内的中间值;(2)车辆根据当前车道的限速与下一车道的限速,选择合适的加速或减速行为使得车辆的速度能够在限制范围内尽可能地高;(3)车辆检查当前车道的前车,利用自己与前车的相对位置和相对速度判断是否会发生碰撞,如果会则根据所需的加速度选择一般刹车或紧急刹车两种驾驶行为中的一种;(4)车辆检查自己与终点的距离,在距终点的距离进入一般刹车的停止距离后,选择一般刹车驾驶行为;(5)如果车辆在路口中,则会考虑行车方向矢量与自己行车方向矢量相交叉的车辆,根据通行优先级判断是否让行以及选择让行行为采用的加速度与驾驶行为。上述所有环节产生的加速度和驾驶行为都通过规则进行聚合,保证最终的驾驶行为在符合不发生碰撞的约束下实现最高的通行效率。在获得驾驶行为后,位置速度更新体现为根据车辆上一时刻的速度,加上当前时刻的加速过程后得到下一时刻的速度,并通过两个时刻的速度,利用匀加速公式得出本轮模拟计算后车辆的行驶距离,从而得到车辆的新位置。相应的,车辆如果离开了当前车道,则将自身的离开信息与进入信息记录到对应车道中。

路径规划模型被实现为迪杰斯特拉算法。城市道路网中的路口A、B、C、D等被转换为图上的点,相应的路口具有通过的代价14、5、12、4等,连接路口的道路被转换为图上的边,且边具有一定的通行代价。当车辆要求获取从路口A前往路口D的最短路径时,路径规划模型从出发点路口A开始,在欧式距离的引导下,依次搜索路径A-B-G-T、A-B-G-C、A-B-D-C,最终找到能够到达目的地的最短路径。

第二方面,对本发明提供的基于GPU的微观交通模拟装置进行描述,下文描述的基于GPU的微观交通模拟装置与上文描述的基于GPU的微观交通模拟方法可相互对应参照。如图8所示,所述装置包括:

链表构建模块21,用于构建城市道路网每一个车道的主链-支链链表;

车辆索引构建模块22,用于基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;

车辆交通模拟模块23,用于根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;

其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置关系;

每一个所述车辆的车辆索引,用于索引每一个所述车辆所属车道以及每一个所述车辆的周围车辆;

每一个所述车辆的路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。

本发明提供的基于GPU的微观交通模拟装置,考虑到GPU擅长处理海量的同质化的并行任务,能提供远超CPU的超大算力,但执行复杂的分支跳转和差异化并行任务时会降低其执行效率的特点,设计了微观交通模拟框架仅包含索引构建任务、车辆模拟等的高度同质化任务,以使微观交通模拟与GPU适配。从而使GPU承担城市级别的细粒度微观交通模拟所需的海量算力,进而大幅度提高微观交通模拟的效率。

第三方面,图9示例了一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行基于GPU的微观交通模拟方法,该方法包括:构建城市道路网每一个车道的主链-支链链表;基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置速度相对关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置速度相对关系;每一个所述车辆的车辆索引,用于访问每一个所述车辆所属车道以及每一个所述车辆与其周围车辆之间的位置速度相对关系;每一个所述车辆的路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。

此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

第四方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于GPU的微观交通模拟方法,该方法包括:构建城市道路网每一个车道的主链-支链链表;基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置速度相对关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置速度相对关系;每一个所述车辆的车辆索引,用于访问每一个所述车辆所属车道以及每一个所述车辆与其周围车辆之间的位置速度相对关系;每一个所述车辆的路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。

第五方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于GPU的微观交通模拟方法,该方法包括:构建城市道路网每一个车道的主链-支链链表;基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置速度相对关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置速度相对关系;每一个所述车辆的车辆索引,用于访问每一个所述车辆所属车道以及每一个所述车辆与其周围车辆之间的位置速度相对关系;每一个所述车辆的路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 一种基于AI云的GPU资源调度方法和装置
  • 一种基于GPU的遥感影像DSM快速提取方法及装置
  • 一种基于单GPU卡的图像并发处理方法、装置及系统
  • 一种基于BIM与VISSIM微观仿真的双向交通导改模拟方法
  • 一种基于多智能体的城市快速路交织区微观交通仿真方法及装置
技术分类

06120116508486