1 简介
- 该文章预发表于arXiv,后为KDD 2023(CCF-A,数据库/数据挖掘/内容检索)接收
2 Introduction
- 越来越多的研究倾向于使用real-time traffic data来进行交通控制策略的优化
- 缺陷:数据量不足,难以支撑交通策略的训练;训练效果不叫可能进一步导致交通恶化
- 交通模拟器能够为策略训练提供大量的数据受到关注
- 疑问:数据真实性(分布效果)
- 现有模拟方案的缺陷:
-
- 规模小:一般被限定在100各交叉口之内,难以扩展到city-level模拟
-
- 存在限定条件:例如假设模拟区域内无车辆增减等
-
- 数据集有限:此处的数据集指的是能够作为模拟器输入的路网数据;虽然现阶段各大城市的路网是完善的,但数据却难以获取,即使能够获取到也难以直接作为模拟器的输入使用;因此现阶段的做法主要是人工收集(处理)或使用公共数据集(但这些数据集的规模很小)
-
- CBLab
-
- CBEngine:一直city-level的microscopic交通模拟器;支持超过10,000个交叉口以及100,000辆车的模拟;模拟效率超过1:4(即现实1s,模拟4s)
单纯以模拟速度作为衡量标准,该速度并不快
- CBEngine:一直city-level的microscopic交通模拟器;支持超过10,000个交叉口以及100,000辆车的模拟;模拟效率超过1:4(即现实1s,模拟4s)
-
- CBData:提供了超过100个城市的模拟输入
这点难能可贵
- CBData:提供了超过100个城市的模拟输入
-
- CBSenarios:提供了一种交互式的交通控制策略训练方案;支持交通信号控制(signal control)以及拥塞收费(congestion pricing)策略
不完整
- CBSenarios:提供了一种交互式的交通控制策略训练方案;支持交通信号控制(signal control)以及拥塞收费(congestion pricing)策略
3 CBEngine
- 即交通模拟器
- 包含四大组件:道路(Roads)、交叉口(intersection)、信号灯(traffic signal light)、车辆(vehicle)
- Roads:构成城市路网的拓扑结构,每一条Road包含多条Lane(车道),每条车道上可以包含多辆车
- Intersetion:roads的关联结构(内部由多条Lane构成——lane links)
- Traffic signal light:通过true-false组合控制每条lane link的通行状态
- Vehicle
没有人流干扰
没有详细介绍车辆组成:推测仅包含私家车(一般车辆)
- 数据组成:
- 状态数据(status)
- 行动数据(actions)
- 更新方案:
s
t
+
a
t
=
s
t
+
1
s_t + a_t = s_{t+1}
st+at=st+1
- 即T时刻状态与T时刻行动作用得到T+1时刻状态
- 车辆驾驶行为模型(Drving Model)
即车辆如何控制加减速以及变道
- 论文中使用的驾驶模型源自Cityflow(稍作修改)
- 车辆速度控制的四条规则:
-
- 道路限速:每一条道路都有独立的限速
-
- Collision-free following & leading:车速不能过快(撞前车)不能过慢(撞后车)
-
- Cutting-in collision-free
- 该模拟器支持车辆变道
- 即变道不撞车
-
- Traffic signal safe speed:根据信号灯状态调整车速
很常规
-
- 高效性和可扩展性(efficiency and scalability)
- 即针对大规模模拟进行的针对性设计
- Parallel Design in Computing the Vehicle Behavior(针对efficiency)
-
- 将状态获取(GetVehicleStatus())与行为计算(GetVehicleAction())合并为一个计算过程
常规
- 将状态获取(GetVehicleStatus())与行为计算(GetVehicleAction())合并为一个计算过程
-
- 将车辆状态信息与计算线程(Thread)绑定而不是与Vehicle单元进行绑定
- 空间消耗更小
问题:按照常规理解,无论数据绑定给哪个单位(Thread还是Vehicle),需求的数据量应该不会发生变化;例如车辆行为计算所需要的状态应该是保持不变的,这里没有解释清楚
- 提升内存访问效率
即提升数据的空间局部性
-
- Lane Changing in Driving Model (针对Scalability)
部分交通模拟器不支持常规变道(例如Cityflow)
- CBLab支持车辆变道
- Intersection Links(针对Scalability)
- 即交叉口用Lane links表示的方案
这里其实没有解释很清楚
- 实验
- 实验设备:Ubuntu20.04,40-core CPU,128G RAM
- 对比:SUMO,Cityflow
- Efficiency
- Scalability
当车辆数达到100,000时,CBEngine的单步模拟时间在0.2610s,单从这项数据来看,速度并没有很快
- 合理性(Plausibility)
基于车辆驾驶的速度分布以及平均速度描述Driving Model的合理性——这里有待商榷
- 对比SUMO
速度分布相近但CBEngine的速度波动相交SUMO更大
4 CBData
- 本质上是一个工具:提供了与CBEngine的对接能力
- Dataset:收集了超过100各城市的路网数据并开源 ------ 这里
- Preprocessor
-
- 识别城市路网的点(node)线(edge)构成基础路网
-
- 数据清洗:删除无用数据
-
- FlowGenerator
交通流生成
- 输入车辆数——返回每辆车的OD(origin-destination)
- OD分布为平均分布
- 默认路由为最短路由(shortest path)——可基于routing model进行修改
- CBData还提供了两种基于真实交通数据的学习方法以提升模拟合理性
- Learning to Simulate Driving
- 针对Driving Model:目标是使得车辆能够更加合理的进行加减速以及变道
- 背景:驾驶员行为并不是简单的规则能够进行规范以及说明的,不同环境下的驾驶行为可能有很大的区别
- 学习目标:找到一组参数以尽量减小真实数据与模拟数据的average speed的差距
- 参数集:最大加速度、最大减速度、限速
- 数据集:深圳市两条道路上1个消失的GPS轨迹数据
- 基于OpenBox进行优化寻参
该方案的环境单位为Road,也就是说默认不同道路的行为模式不同,而同一道路的行为模式相同
没有考虑时间,天气等因素的影响
以车辆周围环境为驾驶模式区别的出发点或许更具优势:具有更强的适应性
- Learning to Simulate Routing
文章中车辆的导航由自己决定
- 训练目标:基于OD,导航模块能够给出与真实数据中的驾驶轨迹尽量相似的路径
- 数据集:深圳市22条不同导航的轨迹数据
- 训练方案:基于RNN进行训练
训练结果倾向于忽略一些不长出现的路径
这里的训练过程描述的不清晰
- Learning to Simulate Driving
5 CBScenario
- 提出了一种基于CBEngine的交通控制策略训练机制 —— 信号控制,拥塞收费
本质上就是用需要被训练的控制策略替换原模拟器中的相关组件
- 交通控制策略
- 建模为Markov Decision Process
- State:交叉口以及道路观测数据,统计数据等;例如道路上的等待车辆数、不同相位的平均通行车辆数等
- Action:相位调整
- Reward:交叉口总等待车辆数、action interval内的平均等待车辆数
- 建模为Markov Decision Process
- 拥塞收费策略
- 建模为MDP
- State:车辆数、车辆平均速度
- Action:道路价格
- Reward:评估城市总体交通状况的指标,例如平均车辆形势长度
- 建模为MDP