real_data_model.m
开发者说明文档
脚本概述
本MATLAB脚本实现了基于论文《大规模电动汽车充换电设施可调能力聚合评估与预测》(鲍志远,胡泽春)中提出的预测模型和评估方法。脚本使用真实的充电数据、天气数据和分时电价数据,实现了LSTM与线性模型混合的预测方法,并通过累积能量-功率边界模型评估充电设施的可调能力。
满足的需求
需求 | 实现方式 |
---|---|
1. 使用真实数据进行预测 | 读取Dataset 目录下的真实充电交易数据、天气数据和分时电价数据 |
2. 符合论文提出的预测模型 | 实现了LSTM+线性模型的混合预测方法以及"先聚合,后分解"策略 |
3. 确保结果合理性 | 完整的数据预处理、异常值过滤和鲁棒的错误处理机制 |
4. 提供可视化功能 | 自动生成预测结果对比、功率边界模型和累积能量容量图 |
文件依赖
- 必需文件:
real_data_model.m
- 主脚本文件Dataset/Charging_Data.csv
- 充电交易数据Dataset/Weather_Data.csv
- 气象数据Dataset/Time-of-use_Price.csv
- 分时电价数据
主要功能模块
脚本按功能模块化设计,主要包括:
1. 系统环境检查与数据路径设置
- 检查必要工具箱是否安装
- 自动检测数据路径或允许用户输入
- 验证必要文件是否存在
2. 数据加载与预处理
- 加载分时电价、天气和充电数据
- 使用datastore处理大型CSV文件
- 鲁棒的错误处理确保数据加载过程中的异常不会导致程序终止
3. 数据清洗和特征工程
- 多格式日期时间解析
- 提取充电时间特征(时长、小时、星期几、月份、年、是否周末)
- 过滤异常充电时长和电量记录
4. 按小时聚合充电负荷
- 选择数据量最多的区域进行分析
- 创建时间序列数据并聚合每小时充电负荷
- 平滑处理异常尖峰负荷
5. 合并天气与电价数据
- 为每个小时的负荷数据匹配对应的天气信息
- 根据时段匹配电价数据
- 生成完整的特征数据集用于模型训练
6. 模型训练与测试数据准备
- 准备序列特征矩阵,包含历史负荷和环境特征
- 划分训练集和测试集
- 为LSTM格式化输入数据
7. 线性回归模型训练
- 使用fitlm训练线性回归模型
- 计算预测指标(RMSE、MAE、MAPE)
8. LSTM深度学习模型训练
- 构建LSTM神经网络结构
- 设置训练参数并训练模型
- 保存训练好的LSTM模型
9. 混合模型预测
- 结合线性模型和LSTM模型的预测结果
- 计算混合模型性能指标
10. "先聚合,后分解"策略实现
- 模拟多个充电站点负荷
- 将聚合预测分解到各站点
- 评估分解策略的性能
11. 累积能量-功率边界模型
- 计算上调和下调功率边界
- 计算累积能量容量
- 评估充电设施的可调容量
12. 结果可视化
- 绘制预测结果对比图
- 绘制功率边界模型图
- 绘制累积能量容量图
- 保存图像结果
13. 结果保存
- 将分析结果保存为MAT文件
- 生成包含详细指标的文本报告
- 创建中间结果备份
运行要求
-
MATLAB环境:
- MATLAB R2019b或更新版本
- Statistics and Machine Learning Toolbox
- Deep Learning Toolbox
-
硬件建议:
- 处理大型数据集推荐8GB以上RAM
- 训练LSTM模型推荐GPU加速
参数配置
脚本提供多个参数用于配置运行方式:
% 主要参数
sample_size = 50000; % 读取的充电记录数量,-1表示全部读取
sequence_length = 24; % 序列长度,使用前24小时预测下一小时
test_ratio = 0.2; % 测试集比例
lstm_weight = 0.7; % LSTM模型在混合模型中的权重
% 可调能力边界参数
params.upper_margin = 0.3; % 上调功率边界系数
params.lower_margin = 0.2; % 下调功率边界系数
params.min_power = 0; % 最小功率限制
params.max_power = inf; % 最大功率限制
params.time_resolution = 1; % 时间分辨率(小时)
输出结果
脚本运行后生成以下输出:
- 实时日志:运行过程中打印处理进度和关键指标
- MAT文件:
real_data_ev_charging_results.mat
包含完整的分析结果 - 文本报告:
real_data_ev_charging_results.txt
包含结果摘要 - 图像文件:
real_data_flexibility_results.png
包含可视化结果 - 备份文件:
partial_results_backup.mat
包含中间计算结果
使用示例
% 简单运行脚本
run('real_data_model.m');
% 加载结果进行进一步分析
results = load('real_data_ev_charging_results.mat');
disp(['混合模型RMSE: ', num2str(results.rmse_hybrid)]);
disp(['总可调容量: ', num2str(results.total_capacity), ' kWh']);
符合论文要求的关键实现
-
混合预测模型:
- 线性回归模型捕获基本趋势
- LSTM深度学习模型捕获非线性时序特征
- 加权组合最终预测结果
-
"先聚合,后分解"策略:
- 先聚合所有充电站点数据进行整体预测
- 根据各站点特征将预测结果分解到各站点
- 降低了计算复杂度,提高了预测效率
-
累积能量-功率边界模型:
- 计算上下调功率边界
- 累积评估能量容量
- 量化充电设施的灵活调节能力
-
真实数据适配:
- 鲁棒的数据处理机制应对真实世界的脏数据
- 多种数据格式兼容
- 异常检测和平滑处理
注意事项
- 处理大型数据集时可能需要调整
sample_size
参数避免内存溢出 - LSTM模型训练可能较为耗时,可根据需要调整网络结构和训练参数
- 数据文件路径按需调整,支持相对或绝对路径
- 输出图像默认保存在当前工作目录