本发明涉及交通模拟,尤其涉及一种基于gpu的微观交通模拟方法和装置。
背景技术:
1、微观交通模拟是对城市道路网上的车辆驾驶行为以及多个车辆之间的关联关系和相互影响进行模拟的过程,通过微观交通模拟可以得到城市微观与宏观的交通运行态势,从而帮助决策者选择更优的城市道路网规划方案或进行城市交通承载力的测算。因此,微观交通模拟对于城市建设有着重要意义。
2、对于城市级别的微观交通模拟,其存在需要消耗大量算力的特点,这对微观交通模拟所选用的计算设备与计算模型提出了高的要求。然而,目前的微观交通模拟基本上采用单线程或多线程的方式进行计算,如sumo[1]、cityflow[2]、qarsumo[3]等,存在着单台计算机的cpu难以支撑城市级别的细粒度微观交通模拟的情况,这制约了微观交通模拟真正发挥其价值,使得下游的决策优化任务无法高效开展。
3、近年来,gpu的大算力特点使得gpu计算加速在许多领域都取得了突破性的成果,特别是在深度学习领域。因此,将gpu应用于微观交通模拟中是支撑城市级别的细粒度微观交通模拟的有效手段,故而如何设计基于gpu的微观交通模拟方法是一个亟待解决的问题。
技术实现思路
1、为解决上述问题,本发明提供一种基于gpu的微观交通模拟方法和装置,适配性的将gpu用于微观交通模拟中,以使gpu承担城市级别的细粒度微观交通模拟所需的海量算力,从而大幅度提高微观交通模拟的效率。
2、第一方面,本发明提供一种基于gpu的微观交通模拟方法,用于gpu中执行的每一轮模拟迭代,所述方法包括:
3、构建城市道路网每一个车道的主链-支链链表;
4、基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;
5、根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;
6、其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置关系;
7、每一个所述车辆的车辆索引,用于索引每一个所述车辆所属车道以及每一个所述车辆的其周围车辆;
8、每一个所述车辆的所述路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。
9、根据本发明提供的基于gpu的微观交通模拟方法,所述构建城市道路网每一个车道的主链-支链链表,包括:
10、令gpu中一个线程负责城市道路网中一个车道的主链-支链链表构建任务,通过gpu多线程并行执行方式生成城市道路网每一个车道的主链-支链链表;
11、其中,gpu的任一线程执行城市道路网任一车道的主链-支链链表构建任务的过程,包括:
12、向所述任一线程的编程框架中写入所述任一车道初始信息以及主链-支链链表构建算法代码,以使所述任一线程生成所述任一车道的主链-支链链表;
13、所述任一车道初始信息包括上一轮模拟迭代时所述任一车道的主链、离开车辆列表和加入车辆列表。
14、根据本发明提供的基于gpu的微观交通模拟方法,所述主链-支链链表构建算法,包括:
15、输入上一轮模拟迭代时目标车道的主链、离开车辆列表和加入车辆列表;
16、记录上一轮模拟迭代时所述目标车道的主链和离开车辆列表共有的车辆节点,并删除上一轮模拟迭代时所述目标车道的主链中的所述车辆节点,得到第一链表;
17、对上一轮模拟迭代时目标车道的加入车辆列表进行车辆位置排序,并将车辆有序序列对应的有序链表记为第二链表;
18、基于所述第一链表和所述第二链表,生成本轮模拟迭代时所述目标车道的主链;
19、根据本轮模拟迭代时所述目标车道及其每一个相邻车道的主链,建立所述目标车道中每一个车辆与其在所述目标车道的每一个相邻车道上的最接近的前车和后车之间的链接,以生成本轮模拟迭代时所述目标车道的支链;
20、基于本轮模拟迭代时所述目标车道的主链和支链,组成本轮模拟迭代时所述目标车道的主链-支链链表。
21、根据本发明提供的基于gpu的微观交通模拟方法,所述基于所述第一链表和所述第二链表,生成本轮模拟迭代时所述目标车道的主链,包括:
22、将所述第一链表和所述第二链表进行有序合并,得到本轮模拟迭代时所述目标车道的主链;
23、或者
24、对所述第一链表进行重排序,并将重排序后的所述第一链表和所述第二链表进行有序合并,得到本轮模拟迭代时所述目标车道的主链。
25、根据本发明提供的基于gpu的微观交通模拟方法,所述根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行,包括:
26、令gpu中一个线程负责城市道路网中一个车辆的交通运行模拟任务,通过gpu多线程并行执行方式模拟每一个车辆的交通运行;
27、其中,gpu的任一线程模拟城市道路网任一车辆的交通运行的过程,包括:
28、向所述任一线程的编程框架中写入基于预设行车策略、目标车辆的车辆索引以及目标车辆的路径规划模拟目标车辆交通运行的模拟算法代码,以使所述任一线程基于所述模拟算法、所述任一车辆的路径规划以及所述任一车辆的车辆索引的访问结果模拟所述任一车辆的交通运行。
29、根据本发明提供的基于gpu的微观交通模拟方法,所述预设行车策略包括但不限于下述子策略:
30、第一子策略:在目标车辆的路径规划中指示目标车辆需要变道至第一车道时,基于目标车辆与其在所述第一车道上最接近的前车和后车之间的位置速度相对关系,确定变道是否会发生追尾,并在变道不发生追尾时执行变道操作;其中,所述第一车道为目标车辆自身所属车道的相邻车道;
31、第二子策略;目标车辆尽可能达到其所在车道的最高限速;
32、第三子策略;基于目标车辆与其前后车辆之间的位置速度相对关系,利用跟驰模型计算目标车辆的加速度;
33、第四子策略;根据目标车辆的路径规划中指示的目标车辆将进入的下一车道的限速,及时减速慢行;
34、第五子策略;根据目标车辆的路径规划中指示目标车辆距终点的距离,及时减速慢行。
35、根据本发明提供的基于gpu的微观交通模拟方法,所述城市道路网每一个车辆的路径规划的生成过程,包括:
36、将城市道路网中车道建模为边,路口建模为点,车道通行时间建模为边的代价,路口转向所对应的预设值建模为点的代价,以生成城市道路网的带权有向图;
37、将所述城市道路网每一个车辆的给定起点到给定终点代价最小的路径,作为所述城市道路网每一个车辆的最优路径;
38、在所述最优路径上标注关键辅助信息,得到所述城市道路网每一个车辆的路径规划;
39、其中,所述关键辅助信息包括:驾驶行为、车道限速和车辆距给定终点的距离;
40、所述驾驶行为,包括变道、直行。
41、第二方面,本发明提供一种基于gpu的微观交通模拟装置,用于gpu中执行的每一轮模拟迭代,所述装置包括:
42、链表构建模块,用于构建城市道路网每一个车道的主链-支链链表;
43、车辆索引构建模块,用于基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;
44、车辆交通模拟模块,用于根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;
45、其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置关系;
46、每一个所述车辆的车辆索引,用于索引每一个所述车辆所属车道以及每一个所述车辆的其周围车辆;
47、每一个所述车辆的所述路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。
48、第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述基于gpu的微观交通模拟方法。
49、第四方面,本发明提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述基于gpu的微观交通模拟方法。
50、本发明提供的一种基于gpu的微观交通模拟方法和装置,用于gpu中执行的每一轮模拟迭代,包括:构建城市道路网每一个车道的主链-支链链表;基于所述主链-支链链表,生成城市道路网每一个车辆的车辆索引;根据城市道路网每一个车辆的车辆索引和从外部获取的城市道路网每一个车辆的路径规划,模拟每一个车辆的交通运行;其中,每一个所述车道的主链-支链链表中的主链用于描述每一个所述车道上的车辆及其之间的位置关系,支链用于描述每一个所述车道及其相邻车道上车辆之间的位置关系;每一个所述车辆的车辆索引,用于索引每一个所述车辆所属车道以及每一个所述车辆的其周围车辆;每一个所述车辆的路径规划,为每一个所述车辆从给定起点到给定终点的驾驶导航。本发明考虑到gpu擅长处理海量的同质化的并行任务,能提供远超cpu的超大算力,但执行复杂的分支跳转和差异化并行任务时会降低其执行效率的特点,设计了微观交通模拟框架仅包含索引构建任务、车辆模拟等的高度同质化任务,以使微观交通模拟与gpu适配。从而使gpu承担城市级别的细粒度微观交通模拟所需的海量算力,进而大幅度提高微观交通模拟的效率。