11.4 AI交通预测与优化
11.4.1 交通流量预测模型
短时交通流量预测是智慧交通从“感知”走向“决策”的关键环节。信号灯配时优化、动态路径诱导、拥堵预警,都依赖对未来几分钟到半小时内车流量的判断。传统方法(例如历史平均或ARIMA模型)在平稳路况下尚可,一旦遇到早晚高峰的突变或节假日模式切换,误差就陡然上升。深度学习,尤其是长短期记忆网络(LSTM),因其对时间序列长期依赖关系的捕捉能力,已成为短时流量预测的主流方案;近年来,Transformer类模型(如Informer、PatchTST)与图神经网络在部分场景下精度更优,工程选型时可结合数据规模与推理时延综合权衡。
数据来源与特征工程
预测模型依赖优质的历史数据。城市路网的交通流观测源主要有三类,各有优劣:
- 线圈检测器:埋设在路口的感应线圈,通过电磁感应记录车辆通过数、瞬时车速和车道占有率。数据精度高、时间分辨率精细(可达秒级),不受天气影响,是传统意义上的“黄金标准”;缺点在于只覆盖有线圈的断面,且维护时需开挖路面。
- 视频摄像头与微波雷达:通过图像识别或微波回波分析提取车流量、车型分类和平均速度。覆盖范围更广,可同时监测多条车道,但光照变化、雨雪遮挡会降低识别率,计算资源消耗也更高。
- GPS浮动车:出租车、网约车或物流车辆定期上报位置和速度,汇成路段的旅行时间估计值。优势是路网覆盖全域且能反映行车路径,缺点在于低流量时段(如深夜)样本量不足,统计偏差明显。
在工程实践中,这些源会混合使用,通过数据融合算法(如卡尔曼滤波)补齐各自的盲区。以一个具体场景为例,假设对一个关键路口连续采集数周的逐分钟流量数据,前大部分用于训练,后小部分用于测试。
特征工程的核心是构造滑动窗口:用过去 T 个时间步的历史流量作为输入,预测未来 k 个时间步的流量。此外还需要加入时间特征。具体步骤如下:
- 设定窗口长度
T=96(对应过去96分钟)和预测步数k=6(预测未来6分钟)。 - 对每个时间点
t,提取区间[t-T+1, t]的流量序列作为样本输入,区间[t+1, t+k]的流量序列作为标签。样本间隔为1分钟。 - 为每个样本附加辅助特征:当天时刻(一天中的第几分钟,归一化到 [0,1])、星期几(编码为0~1之间的归一化标量)、以及是否节假日(二值变量)。
- 对全体样本做Z-score标准化,消除量纲差异。
这样最终输入张量的形状为 (样本数, 96, 3),其中3个通道分别是流量值、时刻编码(归一化标量)和星期编码(归一化标量;节假日标记并入星期通道)。
LSTM原理与工程实现
LSTM通过遗忘门、输入门、输出门三个门控单元来管理信息的记忆与遗忘,避免长序列训练时的梯度消失/爆炸。在交通流场景中,LSTM能在窗口内捕捉数小时级的依赖——早高峰的爬升趋势、潮汐车道的方向翻转——这是ARIMA等线性模型难以表达的;但本节输入窗口T=96分钟,周尺度的周期无法靠隐含状态自动保留,必须显式构造“一周前同时段流量”的滞后特征加入输入,模型才能利用周周期信息。
以下代码片段基于 TensorFlow 2.x 的 Keras(tf.keras)接口实现上述模型的训练,数据处理方式为假设:
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense, Dropout
from tensorflow.keras.optimizers import Adam
# 假设数据已完成预处理:X_train (样本数, 96, 3), y_train (样本数, 6)
model = Sequential([
LSTM(units=64, input_shape=(96, 3), return_sequences=False),
Dropout(0.2),
Dense(6)
])
model.compile(optimizer=Adam(learning_rate=0.001),
loss='mse',
metrics=['mae'])
history = model.fit(X_train, y_train,
epochs=50,
batch_size=32,
validation_split=0.1)训练完成后,用测试集评估预测效果:
from sklearn.metrics import mean_absolute_error, mean_squared_error
# X_test / y_test 来自前文的数据切分:连续采集数据的前大部分用于训练,后小部分用于测试
y_pred = model.predict(X_test)
mae = mean_absolute_error(y_test, y_pred)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f"MAE: {mae:.2f} 辆/分钟, RMSE: {rmse:.2f} 辆/分钟")评价指标与工程权衡
- 平均绝对误差(MAE):预测误差的绝对值平均,单位同原始流量(辆/分钟)。解释给交通工程师时最直观。
- 均方根误差(RMSE):对较大误差的惩罚更重,适合衡量模型对异常流量尖峰(如事故、临时管制)的捕捉能力。如果MAE较低但RMSE明显偏高,说明模型在少数极端时段表现不稳定。
调优时,工程师需要平衡几个因素:窗口长度 T 增大可保留更长的历史依赖,但也会增加模型参数和过拟合风险;隐藏单元数通常设置在32~128之间,64对于多数城市路口已够用;层数不建议超过2层,否则训练稳定性和推理速度都会下降。
城市路网的流量模式会随季节、大型活动、道路施工等因素缓慢漂移,因此模型需要周期性重新训练(例如每周一次),并利用云边协同架构(参见11.3.3节)将最新模型下发到边缘节点,实现“训练在云、推理在边”。通过这种云边协同的训练-推理分离,预测模型能够应对模式漂移,保持长期有效性,从而支撑动态配时闭环。
11.4.2 信号灯优化控制算法
作为讨论,固定配时方案可以代表许多路口的传统控制方式——根据历史流量预排好一天之中若干时段的相位表,遇到突发拥堵或车流异动只能等待下一轮调整。强化学习把这个调度问题重新定义为决策优化问题:让路口智能体通过“观测—决策—反馈”的闭环,学习在不同交通流条件下动态分配绿灯时间。这个方向从学术研究走向工程试点,依赖路侧感知设备、边缘计算和交通仿真环境逐步成熟。
问题建模:路口作为智能体
在例子中,将单个十字路口抽象为强化学习智能体。环境包含来车、排队、相位时间约束;智能体观测到系统状态后选择一个动作,环境反馈一个奖励信号,智能体据此更新策略。整个过程可以抽象为马尔可夫决策过程,核心在于定义好状态、动作与奖励三要素。
状态空间设计——状态需要捕获路口当前的拥堵特征。以下是一组典型设计,具体维度可根据路口拓扑调整:
表11-10 信号灯强化学习状态空间示例
| 状态维度 | 说明(示例) |
|---|---|
| 四个方向各车道排队长度 | 车辆数,来自线圈或摄像头检测 |
| 当前相位剩余绿灯时间 | 连续值,秒为单位 |
| 上一周期各相位通过流量 | 反映流入趋势 |
| 当前时段编码 | 早高峰、平峰、晚高峰、夜间 |
排队长度和相位剩余时间是最核心的两个维度——前者直接反映拥堵程度,后者决定了动作的紧迫性。时段编码的作用是帮助模型在不同流量模式下快速收敛,平峰时段避免过度激进地延长绿灯。
动作空间——采用离散动作集合。假设一个标准十字路口有4个主要相位(东西直行、东西左转、南北直行、南北左转)。一个常用做法是将动作定义为(相位编号,绿灯延长时间)的元组。延长时间步长设为固定步长,假设每个相位可延伸若干步,动作空间为两者的笛卡尔积。DQN(Deep Q-Network)在这类中等规模离散空间上能够稳定收敛。如果只输出相位ID、强制切换到下一个相位,就会丢失灵活延长绿灯的能力,平峰时段容易造成绿灯空放。
奖励函数设计——奖励函数直接反映控制目标:最小化交叉口总体延误。定义如下:
$$ R_t = -\left( \sum_{i \in L} w_i \cdot q_i(t) + \alpha \cdot s(t) \right) $$
其中:
- ( R_t ):第 ( t ) 个决策时刻的即时奖励;
- ( L ):所有进车道集合;
- ( q_i(t) ):第 ( i ) 条车道的排队长度;
- ( w_i ):车道权重,主干道系数更大;
- ( s(t) ):本周期内各车道因红灯导致的停车总次数;
- ( \alpha ):超参数,平衡平均等待时间与停车舒适度。
当持续有车驶入但绿灯时间过短时,排队快速增加,奖励下降,推动智能体延长当前相位或切换;当进车减少时,排队缩短,智能体学会缩短绿灯,减少空放。这正是固定配时方案做不到的动态调节能力。
说明:上述奖励函数属于交叉口RL问题中的经典设计,实际部署时需要根据路口特征对权重 ( w_i ) 和 ( \alpha ) 进行标定。
训练方案与典型挑战
RL算法的训练依赖交通模拟器。学术界普遍使用SUMO(Simulation of Urban Mobility)作为环境,通过TraCI接口接入DQN进行大规模交互训练。工程成本主要在于搭建逼真的路网拓扑和配置合理的交通流参数,而非算法代码本身。
工程应用中有两个突出难点。
状态不完全观测。真实路口只能通过磁感线圈或摄像头看到进车口的排队长度,无法像模拟器那样获得全局精确值。一个有效办法是在状态向量中引入过去几步的动作历史记录,部分恢复未观测信息。也可以改用部分可观测MDP变体,但训练复杂度会显著增加。
训练稳定性。训练初始阶段,智能体随机动作产生的奖励普遍很低,Q值方差巨大。常见解决方案包括:设置“热身期”,以固定配时为主、RL在小范围内探索;或使用带优先经验回放的DQN变体,以TD误差绝对值作为采样优先级,加速关键样本学习。
经过充分训练后,智能体在不同交通量下的表现通常会显著优于固定配时方案。具体改善幅度因路口拓扑和车流量而异。需要强调的是,工程部署中强化学习的输出并非无条件直出绿灯时长:最小绿灯时长、黄灯过渡、应急车辆优先等约束由确定性规则兜底,模型输出仅在这些安全边界内生效。
从单路口到联网控制
单路口RL控制只是起点。实际城市交通需要区域级协同——相邻路口的相位差和排队长度必须互通。多智能体强化学习已有大量学术研究,但工程落地尚少,主要瓶颈在于信号机厂商的私有协议和时延敏感的通信约束。一个工程上可操作的折中方案是:在单路口奖励函数中引入邻路口平均排队长度的正则项,使每个智能体的优化目标包含一部分全局信息,从而在一定程度上趋向区域协调。
11.4.3 能耗优化与智能照明
路灯照明优化是智慧城市节能中的一个典型切入点。传统策略多采用定时全开全关——后半夜街道流量很低时,整条街仍保持满功率输出。AI调光的目标是在不降低公共安全的前提下,根据实时人流量和车流量动态调节单灯亮度。本节以下内容均为示例场景,数据与参数用于说明原理和方法论,不代表实际项目效果。
深度Q网络调光建模
将路灯调光纳入强化学习框架时,每盏灯被抽象为一个独立智能体。以下状态、动作与奖励的设计均为示例。
状态空间。 以单根智能路灯杆为中心,状态向量由四类观测构成:环境背景照度(来自光敏电阻)、雷达检测的车流量、红外传感器统计的人流量,以及相邻路灯的当前亮度比例。加入邻居亮度是为了防止相邻灯亮度差异过大产生路面“斑马纹“效应。所有观测值送入网络前归一化到[0,1]。
动作空间。 离散动作集合,本例中可设计为四档:关灯、微光、节能、全亮。档位划分与PWM占空比一一映射,具体百分比需根据灯具型号和现场验收标准标定。采用离散档位而非连续调光,是出于推理引擎部署在资源受限微控制器上的工程折中——档位过细会膨胀探索空间,嵌入式处理器的算力和内存都难以支持。
奖励函数同时驱动低功耗与公共安全两个目标。公式为 R = -w₁·Power - w₂·Defect_penalty,其中 w₁、w₂ 为待调校的权重系数。Defect_penalty 在路面照度低于安全阈值且同时检测到行人与车辆时触发,权重通常显著大于节能权重。
训练在数字孪生环境中完成。每盏灯独立学习策略,但状态包含相邻灯当前亮度,因此智能体能够自动实现集群协同——一条街的灯可以随行人移动依次亮起和渐次暗下。这种“集中式训练、分布式执行“的思路与11.4.2节信号灯强化学习的设计一脉相承。
调光策略决策循环
以下为单根路灯智能体判断循环的伪代码,参数取决于硬件选型与部署场景。
# 调光策略循环(决策间隔为可调参数,示意值 30s)
INTERVAL_S = 30
BRIGHTNESS = [0, 30, 60, 100] # 四档亮度百分比,示意值
while True:
sleep(INTERVAL_S)
# 1. 收集传感器观测
state = normalize([
read_ambient_light(), # 环境照度
read_radar_flow(), # 车流量
read_pir_count(), # 人流量
mean_neighbor_bright() # 相邻灯归一化亮度
])
# 2. DQN 选择动作(epsilon-greedy 探索)
if random() < EPSILON:
action = random_choice(4) # 随机探索
else:
q_values = dqn.predict(state)
action = argmax(q_values) # 贪心动作
# 3. 设置 PWM 占空比
pwm_duty = BRIGHTNESS[action] / 100.0
set_pwm(pwm_duty)
# 4. 经验缓存(由边缘节点异步计算)
# push_to_replay_buffer(state, action, next_state)决策间隔在控制器寿命和车流变化速度之间需折中,实践中可在10到60秒范围内调优。
节能效果评估
在本例中,评估常关注三个指标(指标用于说明控制权衡):节电效果、照度达标情况、突发车流后的恢复响应。以下为一条次干道的功率曲线对比。
单纯节能不是终点。路灯是城市公共空间中密度较高的基础设施之一,自带供电、网络和杆体结构。照明层用AI优化到位后,同一根杆上集成的摄像头、环境传感器、5G微基站都可以共享这套决策框架。交通预测的结论能反向驱动照明策略:如果AI预判半小时后该路段即将拥堵,灯的亮度可提前提升。照明与交通之间逐渐模糊的协同调度,正是城市智能体从单点优化走向系统智能的落脚点。