Page 278 - 《软件学报》2025年第8期
P. 278
何贤浩 等: 面向天河新一代超算的大规模平行城市交通仿真 3701
(1) 获取驾驶环境, 如周围车辆的信息、车道信息 (如限速、是否在交叉口等)、车辆自身的状态.
(2) 计算车辆驾驶行为, 如前进的加速度、是否变道, 以及变道长度等.
(3) 根据步骤 (2) 得到的驾驶行为进行车辆状态更新, 如位置、车速.
而对于车辆变道的行为, 主要包括以下几个步骤.
(1) 获取目标车道和距离, 判断是否存在目标车道.
(2) 获取前后车辆信息, 并计算前后车辆的相对距离.
(3) 如果车辆准备进行车道变换, 判断是否直接变道会导致碰撞或者被后车追尾. 如果是, 则设置车辆状态为
等待. 否则, 允许车辆进行变道.
(4) 如果车辆变换车道, 则更新前后车辆的信息.
在大规模交通仿真任务中, 车辆的运行状态时刻在改变, 由于每个节点内的车辆数量较多, 需要利用高性能计
算系统的多核特点, 设计并行处理算法. 根据上述的车辆模拟流程, 可以观察到车辆在当前运行时的状态仅与其上
一个时间点的状态相关, 而与其他车辆的状态是相互独立的. 基于这种特性, 可以在每个计算节点内为每辆车分配
一个执行线程. 在具体实现过程中, 采用 OpenMP 框架以完成并行化的车辆状态计算. 每个执行线程负责处理一个
车辆的状态更新, 并且线程之间可以独立地执行计算任务. 这样可以充分利用计算节点上多核 CPU 的多个计算核
心, 并行地计算车辆状态, 从而提高整体计算性能.
此外, 在车辆执行的过程中, 车道也需要根据车流的变化更新其状态信息, 如当前车道中车辆的位置信息. 与
行车算法相同, 每个车道状态的更新流程同样与其他车道相互独立, 采用行车并行算法的思路, 将每个车道的更新
分配到一个执行线程. 同样地, 采用 OpenMP 框架, 完成并行化的车道状态更新算法.
3.3 信号灯控制及其并行优化
本交通仿真以相位 (phase) 作为信号灯的控制粒度, 信号灯相位主要是指交通信号灯在不同时间段内显示的
不同信号状态. 通常, 信号灯相位包括绿灯、黄灯和红灯, 用于控制交通流量和行车安全. 八相位模式是一种高级
的交通信号灯控制系统, 用于优化交叉路口的交通流量, 按照空间位置即东西南北方向进行划分. 该模式将信号灯
划分为 8 个不同的相位, 每个相位对应于特定的交通流动模式. 通过精确控制每个相位的时间间隔和顺序, 八相位
模式可以根据交通需求和优先级来动态调整交通信号, 以最大程度地提高交通效率和安全性. 此外, 采用最大压力
法 [26,27] 计算交叉口各相位的压力值, 以调整信号灯的显示控制. 交通仿真中关于信号灯控制的模块有: 压力计算模
块和策略调整模块.
对于压力计算模块, 具体来说, 若将从车道 l 穿过交叉口 i 到车道 m 的交通运动表示为 (l,m), 交通运动 (l,m) 的
a(l,m), 其中, 运动信号包括绿灯允许通行的允许动向信号和红灯禁止通行的禁止动向信号,
运动信号表示为
a(l,m) = 1 表示运动信号为允许动向信号, a(l,m) = 0 表示运动信号为禁止动向信号. 交叉口中一个相位从绿灯切
换为红灯再切换为绿灯的循环为一个控制阶段, 将一个控制阶段表示为 p = {(l,m)|a(l,m) = 1}. 交通运动 (l,m) 的压
力可以通过公式 (9) 进行计算:
x(l) x(m)
w(l,m) = − (9)
x max (l) x max (m)
l
l
其中, w(l,m) 为交通运动 (l,m) 的压力, x(l) 为车道 上的车辆数量, x(m) 为车道 m 上的车辆数量, x max (l) 为车道 上
允许承载的最大车辆数量, x max (m) 为车道 m 上允许承载的最大车辆数量, x(l)/x max (l) 为车道 上的车辆密度,
l
x(m)/x max (m) 为车道 上的车辆密度. 交叉口 的压力可以通过公式 (10) 进行计算:
i
l
∑
P i = w(l,m) (10)
(l,m)∈i
其中, 交叉口 i 的压力 P i 为交叉口 i 内所有交通运动的绝对压力之和.
对于策略调整模块, 用于根据所述最大压力的计算结果, 动态调整所述交通信号灯的显示策略. 在实际应用
中, 通过控制决策时间, 根据以下动态调整公式对当前通行相位进行动态调整:

