1. 研究背景
在车辆行驶工况预测与能量管理策略中,准确预测未来车速对优化燃油经济性、电池 SOC 规划及智能驾驶决策至关重要。传统时序模型难以捕捉序列中的长期依赖和非线性特性,因此引入LSTM(长短期记忆网络)与自注意力机制结合的深度学习模型,以提升多步车速预测的精度与鲁棒性。该代码通过混合多种标准循环工况数据训练模型,并在特定工况上测试,验证 LSTM-Attention 架构在车速预测任务中的有效性。
2. 主要功能
- 加载并融合多种标准车辆行驶工况(China_urban、HWFET、LA92、US06、cltcp、JC08)作为训练集。
- 支持选定 NEDC、UDDS 或 WLTC 三种工况之一作为测试集。
- 构建滑动窗口式的输入-输出对:用历史 ( d ) 步车速预测未来 ( p ) 步车速。
- 设计并训练带有自注意力层的 LSTM 回归网络。
- 对训练集和测试集分别计算 20 余项评价指标(RMSE、MAE、MAPE、R²、NSE、相关系数、峰值误差等)。
- 生成多维度可视化结果:预测曲线、误差分布、热力图、训练集/测试集指标对比表等。
- 将评价结果和模型参数保存为
.mat文件及 PNG 图片。
3. 算法步骤
- 数据准备:拼接六种训练工况的车速序列,根据设置的输入长度 ( d ) 和输出长度 ( p ) 构造监督学习样本。
- 归一化:使用
mapminmax将训练数据缩放到 [0,1],并保存映射参数以用于测试集。 - LSTM-Attention 网络构建:
- 输入层 → LSTM 层(100 个隐藏单元,输出模式为“sequence”)→ 自注意力层(4 个头,每头 32 通道)→ 全连接层(50)→ ReLU → 全连接输出层(( p ))→ 回归层。
- 训练:使用 Adam 优化器,分段学习率衰减,训练最大 100 个 epoch。
- 测试集预测:将归一化后的测试输入输入网络,获得归一化预测序列,反归一化得到实际车速预测。
- 指标计算:分别对训练集和测试集评估多类误差和拟合优度指标。
- 可视化:绘制序列对比、误差分布直方图、误差热力图、散点图、残差自相关图、QQ 图、指标对比表格等。
4. 技术路线
数据层→预处理层(滑动窗口、归一化) →模型层(LSTM + Self-Attention + 全连接层) →训练层(Adam 优化、分段学习率) →评估层(多指标计算) →可视化层(误差分析、泛化能力评估)。
整体采用监督学习多步滚动预测范式,用大量的多工况混合数据驱动模型学习车速变化的动态模式,最后在单工况上验证模型的泛化能力。
5. 公式原理
- 滑动窗口构造:
Xi=[vi,vi+1,…,vi+d−1],Yi=[vi+d,vi+d+1,…,vi+d+p−1] \mathbf{X}_i = [v_i, v_{i+1}, \dots, v_{i+d-1}], \quad \mathbf{Y}_i = [v_{i+d}, v_{i+d+1}, \dots, v_{i+d+p-1}]Xi=[vi,vi+1,…,vi+d−1],Yi=[vi+d,vi+d+1,…,vi+d+p−1] - Min-Max 归一化:
xnorm=x−xminxmax−xmin x_{\text{norm}} = \frac{x - x_{\min}}{x_{\max} - x_{\min}}xnorm=xmax−xminx−xmin - LSTM 单元:包含输入门、遗忘门、输出门和细胞状态更新,通过门控机制捕获长程依赖。
- 自注意力机制(Multi-Head Self-Attention):
对 LSTM 输出的序列计算 Query、Key、Value,通过缩放点积注意力公式加权融合序列信息:
Attention(Q,K,V)=softmax (QK⊤dk)V \text{Attention}(Q,K,V) = \text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)VAttention(Q,K,V)=softmax(dkQK⊤)V
多头并行计算后拼接结果。 - 损失函数:回归任务的均方误差(MSE):
L=1Np∑i=1N∑j=1p(yi,j−y^i,j)2 \mathcal{L} = \frac{1}{Np}\sum_{i=1}^N \sum_{j=1}^p (y_{i,j} - \hat{y}_{i,j})^2L=Np1i=1∑Nj=1∑p(yi,j−y^i,j)2 - 评价指标:
- RMSE:1Np∑(y−y^)2\sqrt{\frac{1}{Np}\sum (y-\hat{y})^2}Np1∑(y−y^)2
- MAE:1Np∑∣y−y^∣\frac{1}{Np}\sum |y-\hat{y}|Np1∑∣y−y^∣
- MAPE:100%Np∑∣y−y^y∣\frac{100\%}{Np}\sum \left|\frac{y-\hat{y}}{y}\right|Np100%∑yy−y^(输出中为 Inf,因车速存在零值导致除零)
- R²:1−SSresSStot1 - \frac{SS_{\text{res}}}{SS_{\text{tot}}}1−SStotSSres
- NSE(纳什效率系数):同 R² 形式
- PBIAS:100∑(y^−y)∑y100\frac{\sum(\hat{y}-y)}{\sum y}100∑y∑(y^−y)
- sMAPE:100%⋅2∣y^−y∣∣y^∣+∣y∣100\%\cdot\frac{2|\hat{y}-y|}{|\hat{y}|+|y|}100%⋅∣y^∣+∣y∣2∣y^−y∣的平均
- RMSLE:1n∑(log(1+y^)−log(1+y))2\sqrt{\frac{1}{n}\sum(\log(1+\hat{y})-\log(1+y))^2}n1∑(log(1+y^)−log(1+y))2
6. 参数设定
| 参数 | 设定值 |
|---|---|
| 输入序列长度 ( d ) | 5 |
| 输出序列长度 ( p ) | 5 |
随机种子rng(0) | 确保可复现 |
| 测试工况选择 | 3(WLTC) |
| LSTM 隐藏单元数 | 100 |
| 注意力头数 | 4 |
| 每头键通道数 | 32(总键通道 128) |
| 全连接中间层 | 50 神经元 |
| 优化器 | Adam |
| 学习率初始值 | 0.01 |
| 学习率衰减策略 | Piecewise,每 50 epoch 衰减 0.5 |
| 梯度裁剪阈值 | 1 |
| 最大训练轮数 | 100 |
| Mini-Batch 大小 | 64 |
| 验证频率 | 每 30 次迭代 |
7. 运行环境
- 软件:MATLAB2023b
8. 应用场景
- 混合动力汽车 / 电动汽车能量管理:预测未来短时域车速,用于优化发动机与电机功率分配、电池 SOC 参考轨迹规划。
- 自适应巡航控制(ACC):前车速度预测,辅助决策跟车距离和加速度。
- 智能交通系统:短时交通流速度预测,为路径规划和信号灯协调提供依据。
- 车辆仿真测试:生成符合特定工况的虚拟驾驶轨迹,用于模型在环(MIL)或硬件在环(HIL)验证。
- 工况分析与排放测试:预测实际驾驶循环中的速度波动,评估油耗与排放。