Skip to content

11.4 AI交通预测与优化

11.4.1 交通流量预测模型

短时交通流量预测是智慧交通从“感知”走向“决策”的关键环节。信号灯配时优化、动态路径诱导、拥堵预警,都依赖对未来几分钟到半小时内车流量的判断。传统方法(例如历史平均或ARIMA模型)在平稳路况下尚可,一旦遇到早晚高峰的突变或节假日模式切换,误差就陡然上升。深度学习,尤其是长短期记忆网络(LSTM),因其对时间序列长期依赖关系的捕捉能力,已成为短时流量预测的主流方案;近年来,Transformer类模型(如Informer、PatchTST)与图神经网络在部分场景下精度更优,工程选型时可结合数据规模与推理时延综合权衡。

数据来源与特征工程

预测模型依赖优质的历史数据。城市路网的交通流观测源主要有三类,各有优劣:

  • 线圈检测器:埋设在路口的感应线圈,通过电磁感应记录车辆通过数、瞬时车速和车道占有率。数据精度高、时间分辨率精细(可达秒级),不受天气影响,是传统意义上的“黄金标准”;缺点在于只覆盖有线圈的断面,且维护时需开挖路面。
  • 视频摄像头与微波雷达:通过图像识别或微波回波分析提取车流量、车型分类和平均速度。覆盖范围更广,可同时监测多条车道,但光照变化、雨雪遮挡会降低识别率,计算资源消耗也更高。
  • GPS浮动车:出租车、网约车或物流车辆定期上报位置和速度,汇成路段的旅行时间估计值。优势是路网覆盖全域且能反映行车路径,缺点在于低流量时段(如深夜)样本量不足,统计偏差明显。

在工程实践中,这些源会混合使用,通过数据融合算法(如卡尔曼滤波)补齐各自的盲区。以一个具体场景为例,假设对一个关键路口连续采集数周的逐分钟流量数据,前大部分用于训练,后小部分用于测试。

特征工程的核心是构造滑动窗口:用过去 T 个时间步的历史流量作为输入,预测未来 k 个时间步的流量。此外还需要加入时间特征。具体步骤如下:

  1. 设定窗口长度 T=96(对应过去96分钟)和预测步数 k=6(预测未来6分钟)。
  2. 对每个时间点 t,提取区间 [t-T+1, t] 的流量序列作为样本输入,区间 [t+1, t+k] 的流量序列作为标签。样本间隔为1分钟。
  3. 为每个样本附加辅助特征:当天时刻(一天中的第几分钟,归一化到 [0,1])、星期几(编码为0~1之间的归一化标量)、以及是否节假日(二值变量)。
  4. 对全体样本做Z-score标准化,消除量纲差异。

这样最终输入张量的形状为 (样本数, 96, 3),其中3个通道分别是流量值、时刻编码(归一化标量)和星期编码(归一化标量;节假日标记并入星期通道)。

图11-9 LSTM交通流预测模型架构图三通道的 96 步历史序列经 LSTM 压缩为 64 维,Dropout 不改变维度,Dense(6) 输出未来六步预测。图11-9 LSTM交通流预测模型架构图维度链严格对应 Keras 模型:输入序列 → 隐状态 → 正则化 → 六步预测特征提取阶段输入序列(batch, 96, 3)流量 · 时刻 · 星期过去 96 分钟LSTM(64)return_sequences=False遗忘门 · 输入门 · 输出门输出隐藏状态:64 维Dropout(0.2)维度保持 64抑制过拟合Dense(6)线性激活未来 6 分钟流量(96,3)→(64)(64)(64)→(6)输入通道(96 步 × 3 通道)① 流量值(实数,已标准化)② 时刻编码(归一化标量,[0,1])③ 星期特征(示意星期一的 one-hot 编码值)维度契约(batch, 96, 3) → (batch, 64) → (batch, 64) → (batch, 6)Dropout 不改变维度;Dense(6) 用线性激活输出未来六步预测。图11-9 三通道的 96 步历史序列经 LSTM 压缩为 64 维,Dropout 不改变维度,Dense(6) 输出未来六步预测。
图 11-9 LSTM交通流预测模型架构图

LSTM原理与工程实现

LSTM通过遗忘门、输入门、输出门三个门控单元来管理信息的记忆与遗忘,避免长序列训练时的梯度消失/爆炸。在交通流场景中,LSTM能在窗口内捕捉数小时级的依赖——早高峰的爬升趋势、潮汐车道的方向翻转——这是ARIMA等线性模型难以表达的;但本节输入窗口T=96分钟,周尺度的周期无法靠隐含状态自动保留,必须显式构造“一周前同时段流量”的滞后特征加入输入,模型才能利用周周期信息。

以下代码片段基于 TensorFlow 2.x 的 Keras(tf.keras)接口实现上述模型的训练,数据处理方式为假设:

python
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)

训练完成后,用测试集评估预测效果:

python
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 ) 进行标定。

图11-10 十字路口强化学习框架十字路口RL框架中,从环境到智能体目标网络的训练主链路,以及经验回放和双网络结构对训练稳定性的支撑作用。图11-10 十字路口强化学习框架十字路口RL框架中,从环境到智能体目标网络的训练主链路,以及经验回放和双网络结构对训练稳定性的支撑作用。环境域物理路口与信号灯执行边界智能决策域模型训练与推理边界状态S_t输入当前状态动作a_t · 经安全约束奖励r_t随机采样小批量每C步参数复制十字路口环境路网、车流、排队车流生成到达模型信号灯执行器相位切换与计时状态构建排队、相位时间、时段在线Q网络全连接层,输出Q值经验回放缓冲区(S, a, r, S')四元组目标Q网络定期软更新参数权重更新采样小批量,计算TD误差1状态 S_t排队长度、相位剩余时间、时段编码,是动作决策的全部依据。2经验回放切断时间相关性,使在线 Q 网络训练更稳定。3目标 Q 网络为 TD 误差计算提供固定目标,避免训练震荡。4奖励 r_t直接惩罚排队长度,是控制目标的量化表达。蓝色实线箭头:状态与动作的主交互链路橙色虚线箭头:奖励反馈与经验回放青绿色节点:环境域组件橙色节点:智能决策域组件图11-10 状态 S_t 由排队、相位与时段编码构成,奖励 r_t 直接惩罚排队长度;经验回放切断时间相关性、目标 Q 网络提供固定 TD 目标,共同抑制训练震荡。
图 11-10 十字路口强化学习框架

训练方案与典型挑战

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秒范围内调优。

节能效果评估

在本例中,评估常关注三个指标(指标用于说明控制权衡):节电效果、照度达标情况、突发车流后的恢复响应。以下为一条次干道的功率曲线对比。

图11-11 能耗数据对比图(智能照明 vs 传统照明,假设场景)深夜低流量时段 DQN 策略可显著降低功率,但安全响应仍保留快速回弹能力。图11-11 能耗数据对比图(智能照明 vs 传统照明,假设场景)深夜低流量时段 DQN 策略可显著降低功率,但安全响应仍保留快速回弹能力。0:002:004:006:008:0010:0012:0014:0016:0018:0020:0022:0024:00015305060功率 (W)晚高峰段需求量大深夜低流量段清晨作业安全响应节省能耗(示意)传统照明(定时全亮)DQN智能照明(动态调光)传统曲线在深夜保持满功率,DQN 可降至 30% 以下。05:00 功率短暂回升,说明 DQN 保留了突发响应机制。蓝色实线 = DQN 策略功率曲线灰色虚线 = 传统定时策略功率曲线绿色填充区域 = 节省能耗(示意)图11-11 假设场景下 50W LED 路灯在典型工作日的功率曲线示例。传统策略定时全亮;DQN 策略根据实时传感器反馈动态调光。实际节电比例因部署路段车流和天气条件而异,但定性上可表明低流量时段的调光节能效果。
图 11-11 能耗数据对比图(智能照明 vs 传统照明,假设场景)

单纯节能不是终点。路灯是城市公共空间中密度较高的基础设施之一,自带供电、网络和杆体结构。照明层用AI优化到位后,同一根杆上集成的摄像头、环境传感器、5G微基站都可以共享这套决策框架。交通预测的结论能反向驱动照明策略:如果AI预判半小时后该路段即将拥堵,灯的亮度可提前提升。照明与交通之间逐渐模糊的协同调度,正是城市智能体从单点优化走向系统智能的落脚点。

从工业软件到 AI 智能体 · 构建面向智能体演进的多协议、云原生、开源工业物联网平台