# gaungfu_predict **Repository Path**: chen-lei12/gaungfu_predict ## Basic Information - **Project Name**: gaungfu_predict - **Description**: 光伏预测 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-24 - **Last Updated**: 2025-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 光伏滚动预测系统 这个项目实现了一个光伏发电功率的滚动预测系统,使用双向LSTM模型,每隔15分钟预测未来2小时的功率。系统设计为模块化结构,便于扩展和维护。 ## 特点 - 使用双向LSTM进行时序预测 - 基于晴天数据进行训练,提高预测精度 - 支持两种预测模式: - 标准滚动预测模式:符合实际应用场景,使用预测结果作为后续预测的输入 - 仅预测模式:每次预测都只使用真实历史数据,用于评估模型性能 - 每15分钟预测未来2小时的功率 - 可将功率转换为辐射度进行可视化和分析 - 支持时间偏移机制,解决预测滞后问题 - 可添加趋势特征,提高预测准确性 - 生成预测精度图表和评估指标 - 模块化设计,易于扩展和维护 ## 项目结构 ``` ./ ├── data/ │ └── sunny_days_data.csv # 晴天数据 ├── models/ # 存放训练好的模型 ├── outputs/ # 存放输出结果 │ ├── predictions/ # 预测结果数据 │ ├── figures/ # 生成的图表 │ └── reports/ # 评估报告 ├── src/ # 源代码 │ ├── data_processor.py # 数据处理模块 │ ├── model.py # 模型定义 │ ├── trainer.py # 模型训练 │ ├── predictor.py # 滚动预测实现 │ └── evaluator.py # 评估和可视化模块 ├── main.py # 主程序 ├── README.md # 项目说明 └── requirements.txt # 依赖项 ``` ## 安装依赖 ```bash pip install -r requirements.txt ``` ## 数据格式 系统使用的晴天数据需要包含以下字段: - 日期:时间戳 - 压力:大气压力 - 湿度:空气湿度 - 云量:云量 - 温度:环境温度 - 风速:风速 - 辐照度:太阳辐照度 - 实际功率:实际输出功率 - 理论功率:理论输出功率 ## 使用方法 ### 训练模型 ```bash python main.py --mode train --data_path sunny_days_data.csv --epochs 50 ``` ### 滚动预测模式(默认,适合实际应用) ```bash python main.py --mode predict --data_path sunny_days_data.csv --predict_start "2023-06-01 00:00:00" --predict_end "2023-06-02 12:00:00" ``` ### 使用时间偏移解决滞后问题 ```bash python main.py --mode predict --data_path sunny_days_data.csv --predict_start "2023-06-01 00:00:00" --predict_end "2023-06-02 12:00:00" --time_offset 1 ``` ### 启用趋势特征增强预测 ```bash python main.py --mode predict --data_path sunny_days_data.csv --predict_start "2023-06-01 00:00:00" --predict_end "2023-06-02 12:00:00" --add_trend_features ``` ### 仅预测模式(适合模型评估) ```bash python main.py --mode predict --data_path sunny_days_data.csv --predict_start "2023-06-01 00:00:00" --predict_end "2023-06-02 12:00:00" --prediction_only_mode ``` ### 训练并预测 ```bash python main.py --mode both --data_path sunny_days_data.csv --epochs 50 --predict_start "2023-06-01 00:00:00" --predict_end "2023-06-02 12:00:00" ``` ## 新增功能说明 ### 功率到辐射度的转换 系统现在能够将功率输出转换为等效太阳辐射度,提供更直观的能源输入指标。辐射度的计算使用以下公式: ``` 辐射度(W/m²) = 功率(kW) / (效率 × 面积(m²)) × 1000 ``` 默认使用: - 光伏板效率:17% - 光伏板面积:100平方米 转换后的辐射度图表会自动保存到`outputs/figures/irradiance_comparison.png`。 ### 时间偏移机制 通过设置`--time_offset`参数,可以解决预测结果滞后的问题。例如,设置`--time_offset 1`表示将预测结果前移1个时间步(15分钟),使预测曲线更接近实际曲线。 时间偏移适用于以下场景: - 需要在显示上补偿模型固有的滞后性 - 当预测曲线与实际曲线存在系统性时间差时 ### 趋势特征增强 启用`--add_trend_features`选项会自动为输入数据添加以下额外特征: - 一阶差分:捕捉变量变化率 - 二阶差分:捕捉变化的加速度 - 移动平均:减少短期波动,突出趋势 - 时间周期特征:通过三角函数编码时间周期性 这些特征有助于模型更好地捕捉变化趋势,特别是在变化剧烈的时间点提高预测准确性。 ## 预测模式说明 系统支持两种预测模式: 1. **标准滚动预测模式** (默认): - 这是符合实际应用场景的预测模式 - 初始预测使用可用的真实历史数据 - 随着时间推移,会逐渐将之前的预测结果纳入输入序列 - 例如:预测t+1到t+8时,使用t-24到t的数据;预测t+2到t+9时,使用t-23到t+1的数据,其中t+1是之前的预测值 - 这种模式能够评估模型在长期预测中的稳定性和预测误差累积效应 2. **仅预测模式** (`--prediction_only_mode`): - 这是一种专门用于模型评估的模式 - 每次预测只使用真实历史数据,不使用之前的预测结果 - 如果没有足够的真实历史数据,则跳过该时间点 - 这种模式可以评估模型在理想条件下的性能,但不符合实际应用场景 ## 命令行参数 - `--data_path`: 数据文件路径,默认为 'sunny_days_data.csv' - `--mode`: 运行模式,可选 'train'(仅训练), 'predict'(仅预测), 'both'(训练和预测),默认为 'both' - `--epochs`: 训练轮数,默认为 50 - `--batch_size`: 批次大小,默认为 64 - `--hidden_size`: LSTM隐藏层大小,默认为 64 - `--num_layers`: LSTM层数,默认为 2 - `--seq_length`: 输入序列长度,默认为 24(对应6小时,每15分钟一个数据点) - `--learning_rate`: 学习率,默认为 0.001 - `--predict_start`: 预测开始时间,默认为 '2023-06-01 00:00:00' - `--predict_end`: 预测结束时间,默认为 '2023-06-02 12:00:00' - `--model_path`: 模型保存/加载路径,默认为 'models/bidirectional_lstm_model.pth' - `--prediction_only_mode`: 启用仅预测模式,不使用之前的预测结果进行后续预测 - `--time_offset`: 时间偏移量,用于解决预测滞后问题,单位为时间步数(15分钟/步),默认为0 - `--add_trend_features`: 是否添加趋势特征,帮助模型捕捉变化趋势 ## 输出结果 预测结果会保存在 `outputs/predictions/` 目录中: - `all_predictions_rolling.csv`: 滚动预测模式的所有结果 - `all_predictions_prediction_only.csv`: 仅预测模式的所有结果 - `first_step_comparison_rolling.csv`: 滚动预测模式下,每次预测的第一个时间点与实际值的对比 - `first_step_comparison_prediction_only.csv`: 仅预测模式下,每次预测的第一个时间点与实际值的对比 评估图表会保存在 `outputs/figures/` 目录中: - `predictions_vs_actual.png`: 预测值与实际值的对比图 - `first_step_comparison.png`: 每次预测的第一个时间点与实际值的对比图(功率) - `irradiance_comparison.png`: 辐射度对比图(从功率转换) - `error_distribution.png`: 预测误差分布图 - `error_over_time.png`: 预测误差随时间变化图 评估指标会保存在 `outputs/reports/` 目录中: - `evaluation_metrics.csv`: 包含RMSE、MAE、MAPE、R²等评估指标