# A Photovoltaic Uncertainty Estimation Method Based on VAE-WSDE-Net **Repository Path**: copycat666/vae-wsde-net ## Basic Information - **Project Name**: A Photovoltaic Uncertainty Estimation Method Based on VAE-WSDE-Net - **Description**: 基于VAE-WSDE-Net的光伏出力不确定性预测方法。VAE-WSDE-Net是基于流形学习的SDE-Net改进模型。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-18 - **Last Updated**: 2026-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VAE-WSDE-Net:基于不确定性估计的光伏发电功率预测 ## 项目概述 本项目实现了一个变分自编码器Wasserstein随机微分方程网络(VAE-WSDE-Net),用于光伏发电功率预测和几何语义不确定性估计。与传统将不确定性视为抽象统计量的不确定性量化方法不同,VAE-WSDE-Net将不确定性建模为数据流形的内在属性,在数据的几何结构上演化随机扰动,并采用Wasserstein距离作为几何直观的不确定性度量。 该方法不仅能够实现准确的光伏发电预测,还能提供反映光伏发电系统中复杂多源不确定性的有意义的不确定性估计。这包括来自外部因素(天气变化)的偶然不确定性(aleatoric uncertainty)和来自内部系统退化的认知不确定性(epistemic uncertainty),为稳健的电网管理和规划提供关键信息。 ## 项目结构 ``` VAE-WSDE-Net/ ├── data/ # 原始数据文件 │ ├── train/ # 训练数据 │ ├── test/ # 测试数据 │ └── userinfo/ # 用户信息数据 ├── geo/ # 地理信息和地图绘制 ├── models/ # 模型实现 │ ├── BayesNN/ # 贝叶斯神经网络实现 │ ├── CNN/ # 卷积神经网络实现 │ ├── CNN-SDE-Net/ # CNN-SDE-Net模型实现 │ ├── LSTM/ # LSTM模型实现 │ ├── LightGBM/ # LightGBM模型实现 │ ├── LightGBM-SDE-Net/ # LightGBM-SDE-Net模型实现 │ ├── MC_Dropout/ # 蒙特卡洛Dropout实现 │ ├── QRegression/ # 分位数回归实现 │ ├── SDE_Net/ # SDE-Net模型实现 │ ├── VAE-WSDE-Net/ # VAE-WSDE-Net模型实现 │ ├── XGBoost/ # XGBoost模型实现 │ ├── XGBoost-SDE-Net/ # XGBoost-SDE-Net模型实现 │ ├── config.py # 配置设置 │ ├── features.py # 集中特征定义 │ ├── metrics.py # 评估指标 │ └── preprocessing/ # 数据预处理脚本 ├── pipelines/ # 流水线脚本,用于训练和评估 ├── processed_data/ # 预处理后的数据 ├── results/ # 结果输出 ├── ui/ # 用户界面组件 ├── weights/ # 模型权重 ├── README.md # 英文说明文件 └── README_zh.md # 本文件 ``` ### 目录详情 - **data/**: 包含9个用户(f1-f9)的原始气象和光伏发电数据,分为训练集和测试集。还包括用户信息数据。 - **geo/**: 用于可视化用户位置的地理信息处理脚本和地图数据。 - **models/**: 包含所有模型实现,包括多种基线模型和SDE-Net。 - **BayesNN/**: 贝叶斯神经网络实现,用于不确定性量化。 - **CNN/**: 卷积神经网络实现,用于光伏发电功率预测。 - **CNN-SDE-Net/**: CNN-SDE-Net模型实现,结合CNN与SDE-Net方法。 - **LSTM/**: 用于确定性光伏发电功率预测的LSTM模型实现。 - **LightGBM/**: LightGBM梯度提升实现。 - **LightGBM-SDE-Net/**: LightGBM-SDE-Net模型实现,结合LightGBM与SDE-Net方法。 - **MC_Dropout/**: 蒙特卡洛Dropout实现,用于不确定性估计。 - **QRegression/**: 分位数回归实现,用于预测区间。 - **SDE_Net/**: 具有漂移和扩散组件的随机微分方程网络实现。 - **VAE-WSDE-Net/**: VAE-WSDE-Net模型实现,结合变分自编码器与Wasserstein SDE方法。 - **XGBoost/**: XGBoost梯度提升实现。 - **XGBoost-SDE-Net/**: XGBoost-SDE-Net模型实现,结合XGBoost与SDE-Net方法。 - **features.py**: 集中特征定义,确保所有模型的一致性。 - **pipelines/**: 用于执行完整工作流程(包括预处理、训练和评估)的流水线脚本。 - **processed_data/**: 已预处理的数据,可用于模型训练和评估。 - **results/**: 评估结果和指标的输出目录。 - **ui/**: 用于可视化结果的用户界面组件。 - **weights/**: 所有实现模型的保存权重。 ## 数据集 ### 数据来源 数据集包含9个用户(f1-f9)的气象数据和实际光伏发电记录。数据包括: 1. **气象数据**: 各种天气特征,包括: - 大气压力(Pa) - 相对湿度(%) - 云量 - 10米和100米高度的风速和风向 - 温度(K) - 辐照强度(J/m²) - 降水量(m) 2. **光伏发电数据**: 全天每15分钟记录一次的实际发电量测量值(p1-p96)。 3. **用户信息**: 每个用户的地理位置和装机容量。 ### 数据结构 - **训练/测试划分**: 数据按训练和测试目录组织。 - **基于用户的组织**: 每个用户都有独立的气象和光伏发电文件。 - **时间序列格式**: 气象数据以时间序列特征形式提供,而光伏发电数据包含96个时间点(p1-p96),代表全天的发电量。 ## 模型和方法论 ### LSTM基线模型 LSTM(长短期记忆)模型作为确定性光伏发电功率预测的基线。它以气象数据作为输入特征,预测当天相应的光伏发电输出(96个时间点)。 ### SDE-Net(随机微分方程网络) SDE-Net是一个基础模型框架,它将随机微分方程的概念与深度学习相结合,既提供预测结果,又提供不确定性估计。它是我们增强版VAE-WSDE-Net模型的基础。 #### 架构 1. **漂移网络**: - 使用LSTM实现 - 提供确定性预测 - 捕获数据中的主要模式 2. **扩散网络**: - 估计模型不确定性 - 输出不确定性缩放因子 - 帮助生成置信区间 #### 核心思想 SDE-Net受到随机微分方程的启发: - **漂移项**: 表示系统的确定性趋势(由LSTM处理) - **扩散项**: 模拟随机波动和不确定性 这种方法使模型不仅能够进行预测,还能量化与这些预测相关的不确定性,这对实际部署非常重要,因为在实际应用中理解预测置信度与预测本身同样重要。 ### SDE-Net变体 在SDE-Net基础之上,我们扩展了该方法以适用于不同的基础模型: - **CNN-SDE-Net**: 将CNN作为漂移网络与扩散网络结合 - **XGBoost-SDE-Net**: 将XGBoost作为漂移网络与扩散网络结合 - **LightGBM-SDE-Net**: 将LightGBM作为漂移网络与扩散网络结合 ### VAE-WSDE-Net(变分自编码器Wasserstein随机微分方程网络) VAE-WSDE-Net代表了从统计不确定性到几何和语义不确定性的范式转变。这是一种新颖的框架,它通过流形学习将高维数据映射到低维语义空间,在此空间中构建具有切向各向异性噪声的随机微分方程。其关键创新包括: - **流形约束的动力学系统**:摒弃在原始高维数据空间中直接操作的传统思路,VAE-WSDE-Net通过变分自编码器学习数据的本质低维流形表示。所有的随机过程都被约束在这个光滑、紧凑的语义空间中进行,确保系统演化的每一步都处于物理上合理的状态邻域内。 - **语义驱动的随机扰动**:传统SDE添加的是"愚蠢"的各向同性高斯噪声,在高维空间中绝大部分方向都是无意义的。VAE-WSDE-Net中的扩散网络学习的是**切向各向异性噪声**,即噪声的强度与方向被精确地调制,使其仅沿着数据流形的切平面进行扰动。这意味着,模型在探索不确定性时,只会产生"在阴天条件下可能的功率波动"这类语义合理的样本,而非产生物理上不可能出现的异常值。 - **几何直观的不确定性度量**:我们采用**Wasserstein距离**作为最终的不确定性分数。该距离衡量的是将模型输出的**预测分布**"压缩"回一个绝对确定的**坍缩分布**所需的最小"工作量"。它能敏锐地捕捉到预测分布的分散程度与多模态特性,相比方差提供了更丰富、更几何直观的不确定性信息。 #### 光伏预测的特殊优势 VAE-WSDE-Net框架特别适用于**光伏功率预测**,因为它完美契合了该领域内在的、复杂的**不确定性根源**。光伏出力的不确定性并非单一来源,而是由**内在的设备性能退化**与**外部的气象条件剧变**共同交织而成的复杂系统。 1. **设备性能退化与内部状态异常**: 传统阈值报警法反应迟钝。VAE-WSDE-Net则能通过其流形学习能力,构建一个"健康运行状态"的基准流形。当组件(如光伏板、逆变器)开始出现细微的性能衰减时,其数据点在潜在空间中的表示会变得不稳定,即使尚未触发报警阈值,其演化路径的随机性(即扩散项强度)也会显著增加,导致Wasserstein不确定性分数单调上升。这为实现**预测性维护**提供了前所未有的早期预警信号。 2. **外部气象因素的极端不确定性**: 对于突如其来的云层覆盖、风暴或雾霾,模型需要区分这种"分布外"事件与正常的昼夜、季节变化。VAE-WSDE-Net的流形结构自然地定义了"熟悉"与"陌生"的边界。当遇到前所未见的气象模式时,数据点会落在流形之外的"陌生区域",此时SDE过程会变得极不稳定,产生巨大的预测分布分散度,从而输出一个极高的不确定性分数,明确告知调度员:"此预测不可信,请启动备用方案。" #### 数学基础 VAE-WSDE-Net框架建立在坚实的数学基础之上: 1. **用于流形学习的变分推断**: VAE组件在潜在空间中学习变分后验$q_\phi(z|x)$,并通过解码器$p_\theta(x|z)$重构数据。证据下界(ELBO)为: $$\mathcal{L} = \mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{KL}(q_\phi(z|x)||p(z))$$ 关键创新在于将潜在空间$Z$构造成与数据流形$\mathcal{M}$同胚的微分流形,使得$\text{dim}(Z) \ll \text{dim}(X)$。这相当于找到了光伏数据(辐照度、温度、历史功率等)的内在低维参数化表示。 2. **几何约束的随机微分方程**: 在潜在空间中,我们构建Itô型SDE: $$dz_t = f_\theta(z_t,t)dt + g_\phi(z_t,t)dW_t$$ 关键突破在于对扩散项的几何约束。传统方法中$g_\phi$输出标量方差,我们令其输出切向量场: $$g_\phi(z_t,t) = \text{diag}(\sigma_t) \cdot J_{dec}(z_t)^\dagger$$ 其中$J_{dec}$是解码器在$z_t$处的雅可比矩阵,$\dagger$表示伪逆。这确保噪声方向$dW_t$始终位于流形切空间$T_{z_t}\mathcal{M}$内,数学上保证$z_t$始终在流形上演化。 3. **基于最优传输理论的Wasserstein度量**: 我们采用Sliced Wasserstein Distance的蒙特卡洛近似: $$W(P_z,\delta_\mu) \approx \frac{1}{K}\sum_{k=1}^K \int_0^1 |F^{-1}_{P_z,\theta_k}(q) - F^{-1}_{\delta_\mu,\theta_k}(q)|dq$$ 其中$F^{-1}$是累积分布函数的逆,$\theta_k$是随机投影方向。这避免了传统KL散度在分布支撑集不重叠时的发散问题。 #### 架构 1. **VAE编码器**: 将高维数据映射到低维潜在空间(流形学习) 2. **漂移网络**: 在潜在空间中预测确定性部分 3. **流形扩散网络**: 使用切向异性噪声估计不确定性 4. **VAE解码器**: 映射回原始空间 ### 训练过程 1. **数据预处理**: - 清洗负功率值 - 按时间排序数据(已调整为第一步) - 检查气象数据和光伏发电数据的时间对齐 - 应用循环特征编码(时间和风向特征) - 添加辐照度一阶差分特征 - 对风相关特征进行分组 - 保存处理后的数据,不进行归一化或高级处理 2. **特征工程**: - 移除与风相关的特征(按项目要求) - 应用去噪和异常值移除 3. **模型训练**: - 训练LSTM和SDE-Net模型 - 使用组合损失函数优化 - 保存模型权重 4. **模型评估**: - 计算标准指标(MSE、MAE、RMSE) - 计算不确定性指标(平均区间宽度、覆盖率、CWC) ## 使用方法 1. **运行完整流程**: ```bash python pipelines/pipeline_full.py ``` 2. **运行特定流程**: ```bash # 仅运行数值预测模型 python pipelines/pipeline1.py # 仅运行不确定性预测模型 python pipelines/pipeline2.py # 仅运行SDE-Net组合模型 python pipelines/pipeline3.py # 运行评估流程 python pipelines/pipeline_eval.py # 运行训练流程 python pipelines/pipeline_train.py ``` 3. **数据预处理**: ```bash python models/preprocessing/preprocess.py ``` 4. **数据可视化**: ```bash # 使用GUI查看处理后的数据 python processed_data/view_data.py ``` 5. **训练各个模型**: ```bash python models/LSTM/train_lstm.py python models/SDE_Net/train_sdenet.py python models/BayesNN/train_bnn.py python models/MC_Dropout/train_mc_dropout.py python models/QRegression/train_qregression.py python models/CNN/train_cnn.py python models/XGBoost/train_xgb.py python models/LightGBM/train_lgbm.py python models/CNN-SDE-Net/train_cnn_sdenet.py python models/XGBoost-SDE-Net/train_xgboost_sdenet.py python models/LightGBM-SDE-Net/train_lightgbm_sdenet.py python models/VAE-WSDE-Net/train_vae_wsdenet.py ``` 6. **评估模型**: ```bash python models/SDE_Net/eval_sdenet.py python models/LSTM/eval_lstm.py # ... 其他模型的类似评估脚本 ``` ## 主要特点 - **不确定性量化**: 与传统确定性模型不同,VAE-WSDE-Net在预测时提供基于流形学习和Wasserstein距离的不确定性估计。 - **几何不确定性建模**: 使用变分自编码器进行流形学习,并采用Wasserstein距离作为不确定性度量的高级不确定性量化方法。 - **置信区间**: 生成有助于风险评估和决策制定的预测区间。 - **鲁棒训练**: 特殊的损失函数平衡预测准确性和不确定性质量。 - **全面评估**: 涵盖预测准确性和不确定性质量的指标。 - **多模型支持**: 支持各种基础模型(LSTM、CNN、XGBoost、LightGBM)与SDE-Net方法结合。 - **增强预处理**: 改进的预处理流程,包含循环特征编码、特征分组和集中特征定义。 - **数据可视化**: 基于GUI的数据查看器,支持探索光伏和气象数据,并提供特征特定的可视化。 ## 结果 VAE-WSDE-Net模型提供: - 与LSTM基线相当的准确光伏发电预测 - 基于流形学习和Wasserstein距离的有意义的不确定性估计 - 具有良好覆盖特性的置信区间 - 用于不确定性评估的有用指标(CWC、区间宽度、覆盖率) - 设备性能退化的早期预警信号 - 通过流形约束动力学更好地处理极端气象条件