资讯动态

配电网电压不确定性量化:从光伏概率预测到概率潮流

发布时间:2026/10/19 14:18:25 来源:尧图企业网站定制
电压不确定性量化听起来是一堆概率统计推导但落到配电网现场它其实就是一个非常实际的问题中午阳光最好的时候屋顶光伏满发馈线末端的电压到底会不会超过限值超限的概率有多大如果只靠确定性潮流你算出来的是一个确定的电压值——比如1.052标幺值低于1.07的上限结论是安全。但现实是云层随便飘一下光伏出力就从满发跌到三成电压在几分钟内大幅波动你根本无法用一个点去判断整条馈线的风险。这个项目基于光伏功率概率预测的新能源配电系统节点电压不确定性量化方法就是在解决这个问题。它把光伏出力的随机性用概率预测刻画出来再通过概率潮流传递到配电网络的每个节点最后量化出节点电压的均值、标准差、越限概率和分位数区间。简单说就是从电压大概是多少升级到电压有多大可能落在什么范围。对正在复现EI论文、做新能源并网方向研究的研究生来说这篇文章会把整条技术链路拆开揉碎讲清楚对做配电网规划运行的工程师这套方法也可以直接用于光伏接入方案的风险评估。1. 光伏并网带来的电压失守问题为什么确定性计算不够用了1.1 光伏出力的三性特征与配电网电压控制的新挑战传统的配电网是无源网潮流方向单一电压分布相对稳定调度员根据负荷变化做几个典型断面的计算就能把握全局。分布式光伏大量接入后配电网变成了有源网这让电压问题一下子复杂起来。原因在于光伏出力有三个固有特性我习惯把它们称为三性。第一是间歇性。光伏出力严格跟随日出日落夜间出力为零早晨和傍晚出力快速爬坡和回落。这个规律性很强可以预测但爬坡速率给电压调节带来了压力。尤其是傍晚负荷高峰恰好撞上光伏快速退出电压从偏高跌到偏低可能只需要一两个小时。第二是随机性。云层遮挡、天气变化让光伏出力无法被精确预知。晴天时光伏功率预测误差可能在5%到10%多云天或阵雨天气误差轻松超过20%甚至出现十分钟内出力从满发跌到三成再恢复的剧烈波动。这部分不确定性是电压不确定性最主要的来源。第三是波动性。光伏出力变化率快逆变器响应快但配电网里的有载调压变压器、无功补偿电容器这些常规调节手段动作速度是分钟级甚至更慢根本追不上光伏的秒级到分钟级波动。于是光伏出力一波动节点电压就跟着波动而且越靠近馈线末端电压波动越剧烈。这三个特性决定了光伏接入后配电网节电电压不再是一个确定值而是一个随机变量。这个随机变量的分布形态、波动范围、越限概率才是评估配电网安全性的关键信息。1.2 确定性潮流计算在不确定性场景下的局限为了说明确定性计算的局限我常用一个简单的台区算例来讲。假设某条馈线末端接了一个屋顶分布式光伏容量是100kW。某天中午预测的光伏出力是50kW用这50kW做一次确定性潮流计算得到末端节点电压是1.03标幺值没超过1.07上限看起来一切正常。但光伏实际出力因为云层遮挡只有30kW电压其实只有1.015而如果天空晴朗但温度偏低光伏实发出力到了70kW电压可能已经冲到1.06逼近上限。同一个预测值实际电压的波动范围可能横跨1.015到1.06。在这个场景里你用哪个数值去判断安全性用预测值的计算结果下结论本质上是拿平均值冒充最坏情况风险被低估了。更麻烦的是潮流方程本身是非线性的。光伏出力的随机波动经过线路阻抗、变压器分接头的作用电压响应并不是简单的线性缩放。当多个光伏电站接入不同位置时它们之间的出力相关性、电压波动的叠加效应都会让确定性计算彻底失去代表性。所以需要在输入侧保留光伏出力的概率信息在输出侧得到电压的概率分布——这就是概率潮流要干的事。1.3 电压不确定性量化到底要度量什么很多人一听到不确定性量化就觉得很高深其实落到工程上它回答的问题非常具体。第一个问题电压期望值是多少这是电压分布的中心位置对接入方案设计最有参考价值。第二个问题电压围绕期望值的波动幅度有多大一般用标准差来度量它直接反映节点电压的稳定性。第三个问题电压落在正常运行区间之外的概率有多大这就是越限概率是风险判断的核心指标。第四个问题在给定置信水平下电压的波动区间是什么比如95%置信水平下的电压区间相当于电压大概率落在哪里的边界。这四个问题分别对应均值、标准差、越限概率、分位数区间四类输出指标。在项目实施时按照我给的顺序逐个计算最后汇总成一张节点电压不确定性指标表就能完整回答光伏接入后这个节点到底安不安全。2. 光伏功率概率预测的建模路线从点预测到分布输出2.1 为什么点预测满足不了电压风险评估的需求光伏功率预测按照输出形式可以分为点预测和概率预测。点预测给出未来某个时刻或某个时段的光伏功率期望值比如明天中午12点光伏出力约80kW。概率预测给出的不是一个数值而是一个概率分布比如明天中午12点光伏出力以90%的概率落在65kW到90kW之间。做电压不确定性量化上游必须用概率预测。道理很直接如果你的输入只有一个期望值下游再怎么处理也变不出一组分布来。只有上游把光伏出力的随机特征描述完整下游概率潮流才有材料可用。这就像做菜——上游是食材供应商你给他一个茄子他就给你烧鱼做不到的。从EI论文的主流做法看概率预测有三种输出形式分位数区间、概率密度函数、置信区间。分位数区间最常用因为分位数本身不依赖任何分布假设工程实现简单概率密度函数信息最全但需要额外的密度估计步骤。2.2 主流概率预测方法对比与选型光伏功率概率预测的方法大致分成四类我在复现时做了一个完整的对比方法类别代表方法核心优势主要不足适用场景物理方法基于数值天气预报的辐照度-功率模型无需历史数据可预测未来多日依赖气象预报精度局部偏差大中长期预测、新建电站统计方法分位数回归、ARIMA、指数平滑计算快、可解释性强对强非线性时序特征拟合不足短期预测、数据量小的场景机器学习LSTM、GRU、Attention、Transformer能捕捉时序依赖和非线性映射需要大量数据、调参成本高短期预测、数据充足场景混合方法点预测误差分布建模兼备准确性和分布输出能力链路较长误差累积需控制本文推荐兼顾精度与实用性我在复现过程中注意到纯物理方法在晴天表现尚可一到多云天误差就急剧膨胀纯统计方法简单但上限不高纯深度学习方法虽然精度好但直接输出的分布信息不可控。最后选的是混合路线用神经网络做特征提取和点预测基座再在预测误差层面建模概率分布这样既能利用深度学习的拟合能力又能保证输出是合法的概率描述。2.3 本文采用的技术栈深度学习特征提取加误差分布建模具体实现上我推荐的方案分三步。第一步用LSTM长短期记忆网络建模历史辐照度、温度、光伏功率的时间序列关系输出未来时刻的光伏功率点预测值。LSTM的优势在于对光伏这种强时序依赖的序列有天然的建模优势门控机制能记住几天前同时间的出力规律比单纯的时序回归效果好。第二步计算训练集上的预测残差。把每个预测时刻的实测功率减去预测功率得到残差序列。对残差序列做核密度估计或者分位数回归得到残差的概率分布。这一步是整个概率预测的关键——它把预测不准这件事本身变成了模型的一部分。第三步把点预测值和残差分布叠加。如果残差服从均值为0的正态分布那么预测功率的分布就是以点预测值为中心的正态分布如果残差有偏态就用核密度估计保留偏态信息。最终得到的是一组分位数区间可以直接输入给下游概率潮流。有一点要特别提醒光伏出力不可能为负也不可能超过装机容量。所以概率分布的尾部必须做截断处理把小于0或大于Pmax的部分截掉再归一化。很多人在这一步偷懒结果做出来的电压分布出现负功率参与计算的荒谬结果越限概率被严重高估。3. 从出力不确定性到电压不确定性概率潮流的传播机制与解法选择3.1 潮流方程中的不确定性传播链路光伏功率概率预测做完之后下一步就是把不确定性传到节点电压上去。这条传播链路的本质是随机变量通过一组非线性方程进行变换。配电网潮流方程的核心是节点功率平衡方程形式大致是[ P_i U_i \sum_{j} U_j (G_{ij}\cos\theta_{ij} B_{ij}\sin\theta_{ij}) ] [ Q_i U_i \sum_{j} U_j (G_{ij}\sin\theta_{ij} - B_{ij}\cos\theta_{ij}) ]右边是节点电压幅值和相角的非线性函数左边是注入有功和无功。当光伏出力也就是P_i的一部分变成一个随机变量时电压U_i和相角θ_i自然也就变成了随机变量。问题在于我们要的不是单个随机变量的期望而是整个方程组在随机输入下的输出分布。3.2 蒙特卡洛模拟准确但昂贵的基准解概率潮流的第一种解法是蒙特卡洛模拟思路极其朴素从光伏出力的概率分布中大量抽样每一组样本做一次确定性潮流计算得到一组节点电压重复成千上万次之后对电压样本做统计均值、标准差、分位数、越限概率全都出来了。蒙特卡洛的好处是精度高、逻辑简单、不受模型非线性程度的限制是公认的黄金标准。缺点是计算量大。以典型配电网为例一次牛顿-拉夫逊法潮流计算在毫秒级做一万次也就几十秒在不含大量节点的配电网里完全可以接受。如果网络节点多、样本数大可以用parfor并行计算或者削减样本规模。在实际复现中我强烈建议先用蒙特卡洛结果作为基准后续如果用了近似算法就用基准去校验误差。否则你连自己算得对不对都不知道。3.3 半不变量法与Cornish-Fisher级数工程上够用的近似解蒙特卡洛虽然好但论文里通常要展示高效方法。半不变量法是EI论文里的常客核心思想利用了随机变量的半不变量在独立线性叠加下的可加性。我把它的逻辑用大白话讲一遍假设节点注入功率是由光伏出力和负荷共同构成的每个注入功率的随机变量都有自己的分布。先算出每个注入功率的前几阶半不变量一阶半不变量是均值二阶半不变量是方差三阶四阶和偏度峰度相关然后利用潮流方程在运行点附近的线性化处理把输入半不变量变换成电压的半不变量。最后用Gram-Charlier级数或Cornish-Fisher级数从半不变量反推出电压的概率密度函数或分位数。这个方法的工程意义在于它不需要成千上万次潮流计算只要一次基准潮流加若干次线性化计算速度比蒙特卡洛快几个数量级。但代价是它默认了输入随机变量之间的独立性或者弱相关性而且对潮流方程做了线性化近似。如果光伏电站集中接入且出力相关性很强这个方法算出来的标准差和尾部概率会明显偏小。3.4 解法对比与最终选择我做了一张对比表供参考方法计算量精度对相关性的处理复杂度适用场景蒙特卡洛模拟大高基准可通过Copula建模低验证、小规模网络半不变量法级数展开小中高弱中快速评估、大规模网络点估计法中中弱中近似评估、工程快速判断复现EI论文时我的建议是两手抓先用蒙特卡洛做基准保证结果的正确性再实现半不变量法做效率对比论文里的验证部分就有内容可写了。如果你只是想拿到正确的电压不确定性指标不追求论文里的算法对比章节那就老老实实用蒙特卡洛把样本数设到1万以上结果完全够用。4. Matlab代码实现的整体架构与模块划分4.1 代码整体流程与文件组织Matlab代码的工程化组织直接决定你调bug的效率。这一点我在复现项目时深有体会一开始所有脚本写在一个文件里改一处错三处后来按功能拆分模块调试速度快了好几倍。建议按这样的文件结构组织main.m主流程脚本按步骤依次调用各模块控制全局参数。loadData.m数据加载与预处理负责读取历史辐照度、温度、功率数据完成时间对齐。trainProbModel.m训练概率预测模型输出预测均值和残差分布参数。generateScenarios.m基于训练好的概率模型生成光伏出力场景集合。runPLF.m对每个场景执行确定性潮流计算返回所有节点的电压结果。calcVoltageMetrics.m对电压结果做统计分析输出均值、标准差、分位数、越限概率。plotResults.m绘制电压分布直方图、时序带、CDF曲线。整体流程是loadData → trainProbModel → generateScenarios → runPLF → calcVoltageMetrics → plotResults。主流程清晰任何一个环节想单独验证都可以断开跑。4.2 数据准备与光伏节点建模的细节数据准备在复现中最容易被轻视却最影响结果。光伏概率预测需要至少数周到数月的历史数据包括时间戳、光伏实测功率、辐照度、温度等。数据预处理有几个关键点。时间戳对齐是第一个坑。逆变器上报功率数据的频率可能是5分钟或15分钟气象数据的频率可能是1小时两者时间戳经常对不上。我的做法是统一重采样到15分钟间隔以功率数据的时间戳为基准做前向填充或线性插值。缺失值处理要区分昼夜夜间光伏功率本来就该是0不能拿前后均值去填白天少量缺失可以用前后时刻数据做线性插值连续缺失超过2小时的数据段建议整段剔除。光伏节点在潮流计算中怎么建模也是一个容易出错的地方。光伏逆变器有两种典型控制模式恒功率因数控制和恒电压控制。恒功率因数模式下光伏节点当PQ节点处理有功按场景输出无功按功率因数计算恒电压控制模式下节点当PV节点处理有功固定无功用于维持电压。在matpower类的开源潮流计算工具箱里修改bus矩阵的类型列和对应的有功无功列就行。做复现时如果不确定论文里用的是哪种控制默认用PQ节点恒功率因数0.95到1.0之间基本不会错。4.3 核心函数的关键实现思路场景生成函数是承接概率预测和概率潮流的枢纽。用LSTM做预测之后每个预测时刻t可以拿到预测均值mu_t和残差分布比如标准差sigma_t或者通过核密度估计得到的分位数表。如果按正态分布近似生成场景的代码核心逻辑如下function pvScen generateScenarios(mu, sigma, Pmax, Nscen) % mu: Nt x 1 预测均值 % sigma: Nt x 1 预测标准差 % Pmax: 装机容量上限 % Nscen: 需要生成的场景数 Nt length(mu); pvScen zeros(Nt, Nscen); for t 1:Nt s mu(t) sigma(t) * randn(Nscen, 1); s(s 0) 0; s(s Pmax) Pmax; pvScen(t, :) s; end end这里做了截断处理保证出力在物理可行范围内。如果要多电站联合场景则用Copula函数把各电站的边际分布关联起来先抽样得到相关系数一致的随机数再逆变换到各电站的出力分布上。多个光伏电站距离越近Copula的相关系数设得越高。概率潮流求解函数的核心是把场景矩阵拆开逐个跑潮流。由于不同场景之间相互独立直接用parfor并行循环就能吃到多核加速的福利。function V_all runPLF(mpc_orig, pvScen, pvBusIdx, Nt, Nscen) % mpc_orig: 不含光伏时的潮流数据 % pvScen: Nt x Nscen 的光伏出力场景矩阵 % pvBusIdx: 光伏接入节点编号 V_all zeros(Nscen, size(mpc_orig.bus, 1)); parfor k 1:Nscen mpc mpc_orig; for t 1:Nt mpc.bus(pvBusIdx, PD) mpc.bus(pvBusIdx, PD) - pvScen(t, k); end results runpf(mpc); V_all(k, :) results.bus(:, VM); end end上面是示意代码实际工程中建议按时间断面来组织场景矩阵即每个时间段Nscen个场景这样可以得到电压随时间变化的场景族。电压指标统计函数我比较建议用向量化写法避免写大量循环function metrics calcVoltageMetrics(V_all, Vmax, Vmin) % V_all: Nscen x Nbus 的电压幅值矩阵 metrics.mu mean(V_all, 1); metrics.sigma std(V_all, 0, 1); q quantile(V_all, [0.05 0.95], 1); metrics.P5 q(1, :); metrics.P95 q(2, :); metrics.violProb mean(V_all Vmax | V_all Vmin, 1); end4.4 算例搭建与参数设置建议算例我用的是某个常见的33节点辐射状配电网测试系统基准电压12.66kV总负荷大约3.7MW。这套系统在业内非常通用是用来验证配电网算法最经典的平台。复现时在这个网络上选3到5个节点分别接入100kW到300kW的光伏容量再调整光伏渗透率光伏装机总容量占负荷峰值的比例从20%到60%观察电压不确定性指标的变化。渗透率是关键参数直接影响结果的差异度。渗透率低的时候电压波动不大标准差可能只有0.003标幺值越限概率接近于零结果看起来太平淡渗透率超过40%以后末端节点的越限概率会急剧上升这时候论文里的对比图才真正有说服力。所以在搭建算例时建议至少算三个渗透率水平。5. 典型配电网算例的结果解读哪些指标才算量化电压不确定性5.1 电压幅值的均值与标准差最直观的两类指标跑完概率潮流后第一个看的指标是电压均值和标准差。以我复现的33节点算例为例在40%渗透率下接入光伏的末端节点电压均值大约在1.03到1.05标幺值之间标准差在0.01到0.02标幺值之间。不同节点的差异非常明显。比较有意思的规律是越靠近馈线末端电压均值越高标准差也越大。首端节点电压标准差可能只有0.005末端节点却能到0.02。这个现象的原因是末端节点距离电源点电气距离远线路阻抗大光伏出力的波动在末端产生了更大的电压响应。标准差随节点位置的变化曲线就是电压不确定性在空间上的分布图论文里画出来之后信息量很足。5.2 越限概率与分位数区间工程风险评估的关键输出标准差只能描述波动大小工程上真正做决策要看越限概率和分位数区间。按照电压偏差允许范围一般取0.95到1.07标幺值我统计出各节点的越限概率典型的结果长这样馈线节点接入光伏容量(kW)电压均值(p.u.)标准差(p.u.)95%分位数(p.u.)越限概率(%)节点182001.0350.0181.0652.3节点223001.0520.0211.0888.7节点331501.0440.0151.0715.1越限概率超过5%的节点基本可以判定为光伏接入后的薄弱节点需要考虑无功补偿、光伏有功削减或者扩容改造。95%分位数超过上限的节点哪怕均值还在安全范围内也意味着在部分场景下电压确实越限了——这就是确定性计算看不出来的风险。5.3 结果可视化与论文图表复现复现论文的时候图表呈现和数值结果同样重要。我最常用三类图。第一类是电压概率密度曲线图。对某个关键节点把所有场景的电压幅值画成直方图再用核密度做平滑曲线。这张图能直观看到电压分布的形态、中心位置和拖尾。第二类是电压时序带图。横轴是时间一天24小时纵轴是电压幅值把每个时刻所有场景的电压均值画成一条中线再用均值±2倍标准差画一个带状区域。可以看到中午光伏大发时段带状区域显著上移变宽这就是电压不确定性随时间变化的全景图。第三类是CDF对比图。将不同渗透率下某个节点的电压累积分布函数画在一起曲线越陡峭说明电压越稳定越平缓说明不确定性越大。这类图用来做方案对比最合适。6. 论文复现中的几个关键坑数据、迭代、验证与提速6.1 数据质量与时间对齐的坑我复现时在数据上栽过跟头。最早用的某个公开数据集功率数据和气象数据来自不同来源时间戳差了约47分钟。没有对齐直接训练LSTM模型的验证误差一直降不下去以为是模型结构不对折腾了好几天才发现是数据错位。处理办法是拿到数据先做时间戳对齐统一重采样到固定频率比如15分钟然后做数据可视化把功率曲线和辐照度曲线画在一起肉眼确认波峰波谷是否对齐最后再做异常值剔除比如辐照度小于50W/m²却输出大功率的数据点基本是数据错误。还有一个细节训练集和测试集的划分不能随机打乱。光伏数据有强季节性和日周期性随机打乱会让模型偷看未来信息测试指标虚高。正确做法是按时间顺序划分比如前70%的数据训练后30%测试。6.2 潮流计算收敛性检查与参数调优批量跑场景时最烦人的是部分场景潮流不收敛。牛顿-拉夫逊法对初值敏感光伏出力极端场景比如出力为零或满发可能导致迭代发散。我排查过几次主要原因是光伏节点类型设置不当、负荷模型选了恒阻抗但数据没匹配、或者无功上下限设置不合理。解决办法有几步。第一步把潮流计算的容差调松一点从默认的1e-6调到1e-5大多数场景能正常收敛。第二步在代码里捕获不收敛的场景并进行记录单独核查而不是直接让程序崩溃。第三步检查光伏节点的无功出力是否超过逆变器容量限制如果超限需要把节点类型从PV改成PQ重新计算。批量计算的代码一定要加try-catch否则一个坏场景会弄死整个任务。6.3 蒙特卡洛样本数的收敛性判断与并行加速很多人问蒙特卡洛到底要多少样本。这个不能拍脑袋定我的做法是看收敛曲线。把样本数从1000逐渐增加到20000观察关键节点的电压均值和标准差随样本数的变化。当样本数超过某个值时均值和标准差的变化幅度小于0.001标幺值基本可以认为收敛了。在实际复现中典型的配电网算例一万次场景计算就足够了。如果算力紧张可以用sobol序列、拉丁超立方采样替代纯随机采样在相同样本数下能明显降低方差。再配合parfor并行一万个场景分分钟跑完。注意parfor循环的随机数种子要单独设置否则每个worker可能生成完全相同的场景序列这个坑隐蔽性很高。6.4 如何验证自己复现的结果是对的结果验证是很多人忽略但非常重要的环节。我分享一套三重校验的方法。第一重把光伏出力固定到预测均值场景只做一个确定性潮流对比概率潮流结果中所有场景电压的均值。均值应该接近如果偏差很大说明场景生成或者潮流计算有bug。第二重把光伏全部置零回到纯负荷状态用确定性潮流计算各节点电压再对比相同条件下蒙特卡洛结果的均值两者应该完全一致。这一步能验证代码框架的正确性。第三重增加样本数观察关键指标是否稳定。如果样本数从5000增到20000越限概率从7.2%变到2.8%说明样本数不够或者场景生成本身有异常。合理的稳定性标准是各项指标变化不超过0.5%。这三重校验全部通过之后复现结果才算可信。最后分享一点体会。复现这样的EI论文最大的收获往往不是代码跑通那一刻而是把光伏出力的随机性如何穿过潮流方程变成电压的波动这个链条彻底想明白。如果后续想在这个方向上深入我个人觉得有两个不错的扩展方向一是把电动汽车充电负荷的不确定性也纳入进来做多源不确定性叠加二是用深度代理模型替代蒙特卡洛训练一个输入光伏出力和负荷、直接输出节点电压分布的神经网络计算速度还能再快一个量级。代码跑通只是开始能基于这套框架设计自己的实验才算真正把方法吃透了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑