# sun_forcast **Repository Path**: ranmufei/sun_forcast ## Basic Information - **Project Name**: sun_forcast - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-06 - **Last Updated**: 2026-02-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 光伏电站功率预测系统 ## 项目概述 基于深度学习+物理约束的光伏电站功率预测系统,实现超短期(4小时)、短期(24小时)、中期(72小时)功率预测。 **精度目标**: - 4小时预测:准确率 ≥ 95%(MAPE ≤ 5%) - 24小时预测:准确率 ≥ 92%(MAPE ≤ 8%) - 72小时预测:准确率 ≥ 90%(MAPE ≤ 10%) --- ## 项目结构 ``` sun_forcast/ ├── data/ # 数据目录 │ ├── processed/ # 预处理后的数据 │ └── station_data/ # 原始场站数据 │ └── 115.3910-30.6922/ # 场站数据 │ ├── station_data_utc.csv # 场站实测数据 │ ├── GFS_forcast_hisory_utc.csv # GFS预报数据 │ └── nc/ # FY-4B卫星数据 ├── src/ # 源代码 │ ├── config.py # 配置文件 │ ├── data_preprocessing.py # 数据预处理 │ ├── physics_model.py # 物理模型 │ ├── lstm_baseline.py # LSTM基线模型 │ ├── cnn_satellite.py # CNN卫星编码器(待开发) │ └── fusion_model.py # 融合模型(待开发) ├── models/ # 保存的模型 ├── logs/ # 日志文件 ├── notebooks/ # Jupyter笔记本 ├── train_baseline.py # 主训练脚本 ├── 光伏发电功率预测技术方案.md # 技术方案文档 ├── 数据可行性评估报告_新场站.md # 数据评估报告 └── README.md # 本文件 ``` --- ## 数据资产 ### 场站实测数据 - **时长**: 365天(2024-08-01至2025-08-01) - **分辨率**: 15分钟 - **记录数**: 35,041条 - **包含要素**: - 实测功率 (act_power): 范围 0-97,500 kW - 直射辐照 (act_dni): 0-686 W/m² - 散射辐照 (act_dhi): 0-644 W/m² - 环境温度 (act_temp): -8.4~39.6 °C ### GFS气象预报数据 - **时长**: 365天(与场站数据对齐) - **分辨率**: 15分钟 - **记录数**: 35,041条 - **包含要素**: 温度、辐照、云量、湿度、气压等 ### FY-4B卫星云图数据 - **时长**: 61天(2025-05-01至2025-07-01) - **文件数**: 5,789个NC文件 - **分辨率**: 15分钟 - **空间对齐**: 完美对齐(场站在窗口中心) --- ## 快速开始 ### 环境要求 ```bash # Python 3.8+ pandas>=1.3.0 numpy>=1.21.0 tensorflow>=2.10.0 scikit-learn>=1.0.0 netCDF4>=1.5.0 ``` ### 安装依赖 ```bash pip install pandas numpy tensorflow scikit-learn netCDF4 ``` ### 运行训练 ```bash # 运行基线模型训练(物理模型 + LSTM) python train_baseline.py ``` ### 训练流程 训练脚本包含4个阶段: 1. **数据预处理** - 时间对齐(UTC) - 质量控制 - 特征工程(太阳位置、晴空指数、倾斜面辐照、滞后特征) 2. **物理模型基线** - 基于辐照-温度-功率物理关系 - 计算理论功率和系统效率 - 评估基线性能 3. **LSTM基线模型** - 输入:历史功率、辐照、温度等时序特征 - 输出:未来4小时功率预测 - 训练、验证、测试 4. **模型对比总结** - 对比物理模型和LSTM模型 - 评估目标达成情况 --- ## 模型架构 ### 当前实现(基线模型) #### 1. 物理模型 ``` 输入:GHI, 温度 ↓ 计算理论功率:P_theo = P_rated × (GHI/GHI_STC) × (1 + α×(T_cell-T_STC)) ↓ 应用系统效率:P_pred = P_theo × η ↓ 输出:预测功率 ``` #### 2. LSTM时序模型 ``` 输入:[历史功率, 辐照, 温度, 时间特征, 滞后特征] shape: (batch, 24, n_features) ↓ LSTM层(128单元) ↓ Dropout(0.2) ↓ LSTM层(64单元) ↓ Dense输出层(16步) ↓ 输出:未来4小时功率预测 ``` ### 待实现(融合模型) #### 3. CNN卫星编码器 ``` 输入:卫星云图序列 shape: (batch, T, H, W, C) ↓ 3D-CNN / 2D-CNN + 时间池化 ↓ 卫星特征向量 ↓ 输出:云系时空特征 ``` #### 4. 多源融合模型 ``` ┌─────────────┬──────────────┬─────────────┐ │ 卫星分支 │ 时序分支 │ 静态分支 │ │ (CNN) │ (LSTM/TFT) │ (MLP) │ └──────┬──────┴──────┬───────┴──────┬──────┘ │ │ │ └─────────────┼──────────────┘ ↓ 融合层(Attention) ↓ ┌──────────┼──────────┐ │ │ │ 4h输出 24h输出 72h输出 ``` --- ## 特征工程 ### 基础特征 - **辐照特征**: GHI, DNI, DHI, POA辐照 - **温度特征**: 环境温度 - **时间特征**: 小时、月份、日序(sin/cos编码) ### 衍生特征 - **太阳位置**: 天顶角、方位角 - **晴空指数**: Kt = GHI / GHI_clear - **倾斜面辐照**: 基于组件倾斜角计算 - **系统效率**: η = P_actual / P_theoretical ### 时序特征 - **滞后特征**: 15min, 1h, 4h前的功率、辐照、温度 - **滚动统计**: 1小时滑动均值 - **变化率**: 相邻时刻差分 --- ## 评估指标 ### 主要指标 - **准确率**: 1 - MAPE_normalized - MAPE_normalized = mean(|P_pred - P_actual| / P_rated) × 100% ### 辅助指标 - **MAE**: 平均绝对误差 (kW) - **RMSE**: 均方根误差 (kW) - **R²**: 决定系数 - **MAPE**: 平均绝对百分比误差 ### 评估策略 - **昼夜分别评估**: 避免夜间低功率掩盖日间误差 - **分时段评估**: 峰值时段(10:00-15:00) - **分天气型评估**: 晴天、多云、阴天、雨天 --- ## 使用示例 ### 1. 数据预处理 ```python from src.data_preprocessing import SolarDataPreprocessor preprocessor = SolarDataPreprocessor() df = preprocessor.run_preprocessing() preprocessor.save_processed_data("processed_data.csv") ``` ### 2. 物理模型预测 ```python from src.physics_model import SolarPhysicsModel model = SolarPhysicsModel() p_theo = model.calculate_theoretical_power( ghi=df['ghi_calc'].values, temp_ambient=df['act_temp'].values ) ``` ### 3. LSTM模型训练 ```python from src.lstm_baseline import LSTMPowerPredictor, create_feature_columns predictor = LSTMPowerPredictor( history_steps=24, # 6小时历史 forecast_steps=16 # 4小时预测 ) feature_cols = create_feature_columns() X, y = predictor.prepare_sequences(df, feature_cols) X_train, X_val, X_test, y_train, y_val, y_test = predictor.split_data(X, y) predictor.build_model(input_shape=(X_train.shape[1], X_train.shape[2])) predictor.train(X_train, y_train, X_val, y_val) metrics = predictor.evaluate(X_test, y_test) ``` --- ## 项目进度 ### ✅ 已完成 - [x] 数据预处理模块 - [x] 物理模型实现 - [x] LSTM基线模型 - [x] 主训练脚本 - [x] 项目文档 ### 🚧 进行中 - [ ] 模型训练与评估 - [ ] 精度优化 ### 📋 待开发 - [ ] CNN卫星云图特征提取 - [ ] 多源融合模型(CNN+LSTM) - [ ] 多任务学习(4h/24h/72h) - [ ] GFS偏差订正模型 - [ ] 在线学习框架 - [ ] 模型部署服务 --- ## 技术方案文档 详细技术方案请参考: - [光伏发电功率预测技术方案.md](光伏发电功率预测技术方案.md) - [数据可行性评估报告_新场站.md](数据可行性评估报告_新场站.md) --- ## 场站信息 - **位置**: 30.6922°N, 115.3910°E - **装机容量**: ≈68 MW - **组件倾斜角**: 30.7°(≈纬度) - **组件方位角**: 0°(正南) - **温度系数**: -0.0045 /°C(晶体硅) --- ## 预期成果 基于现有数据质量评估: | 预测时长 | 目标精度 | 预期可达 | 可行性 | |---------|---------|---------|--------| | **4小时** | ≥95% | 95-97% | ✅ 高度可行 | | **24小时** | ≥92% | 92-94% | ✅ 可行 | | **72小时** | ≥90% | 90-92% | ✅ 可行 | --- ## 联系方式 项目维护:[您的名字] 创建日期:2026年2月6日 版本:v1.0 --- ## 许可证 [待定] --- ## 致谢 本方案基于以下技术: - TensorFlow/Keras深度学习框架 - FY-4B气象卫星数据 - GFS全球预报系统数据 - 场站实测SCADA数据