配电网潮流计算这个方向,说实话早期做的人都是拿输电网那套方法直接往配网上套。但真把算例跑起来就会发现,结果和现场实测数据对不上。一开始我也以为是数据采集有问题,后来才慢慢意识到,问题出在负荷模型上。配电网和输电网的负荷特性差别太大,把所有节点都当成恒功率PQ节点这种简化,在主动配电网场景下误差越放越大。这篇文章我想把我用MATLAB做"考虑综合负荷的主动配电网最优潮流计算"的完整过程整理出来,包括模型推导、代码架构、求解器选择,以及一堆调试到崩溃后总结出来的经验。内容比较长,适合已经会基础潮流计算、想往主动配电网方向深入的同学参考。
1. 为什么潮流计算必须重新审视负荷模型:从一次失败的对标说起
1.1 我踩过的第一个坑:恒功率负荷假设在配电网里的失真
先说一个我印象很深的例子。某工业园区的10kV配电网改造项目,光伏渗透率大概30%,我按IEEE 33节点系统做了潮流计算,结果和现场PMU实测数据对不上:计算出来的节点电压普遍比实测高2%到4%,尤其是馈线末端。当时我第一反应是线路参数不对,重新核对了三遍电缆型号和长度,没问题。后来又怀疑是负荷数据不准,但用户侧装了大量智能电表,统计数据误差不应该那么大。
直到我仔细对比了负荷高峰和低谷两个时段的偏差规律,才发现一个关键特征:偏差大小和节点电压偏离额定值的程度强相关。末端电压越低的节点,计算误差越大。这就不是数据问题了,是模型问题。
我当时的处理方式很简单,所有节点都按恒功率PQ节点处理,也就是不管电压怎么变,有功无功需求量固定。但实际的配电网负荷,尤其是带有大量空调、电机、变频设备的综合负荷,功率消耗是随电压变化而变化的。电压跌了,恒阻抗负荷的功率会下跌,恒电流负荷的功率变化率更低,只有恒功率成分才会维持功率不变。配网末端电压偏低时,我按恒功率算,实际上相当于高估了低压段的负荷需求,计算出的潮流分布自然偏保守,电压降也偏大。但为什么我算出来的电压反而偏高呢?后来才想明白,是因为分布式光伏接入后改变了潮流方向,末端电压被抬升,而恒功率模型没有反映出负荷随电压升高而增加吸收功率的特性,相当于低估了负荷,于是电压整体被算高了。
1.2 综合负荷ZIP模型的引入:从物理意义出发
配电网负荷模型的经典做法是用ZIP模型,也叫多项式负荷模型,把负荷看作恒阻抗(Z)、恒电流(I)、恒功率(P)三种成分的加权组合。数学表达为:
[ P_L = P_0 \left[ a_p \left(\frac{V}{V_0}\right)^2 + b_p \left(\frac{V}{V_0}\right) + c_p \right] ]
[ Q_L = Q_0 \left[ a_q \left(\frac{V}{V_0}\right)^2 + b_q \left(\frac{V}{V_0}\right) + c_q \right] ]
其中 (V_0) 是额定电压,(P_0) 和 (Q_0) 是额定电压下的有功和无功需求,系数 (a)、(b)、(c) 分别对应恒阻抗、恒电流、恒功率占比,且 (a+b+c=1)。这个模型的价值在于,它用一个简洁的多项式形式,刻画了负荷对电压的静态依赖关系。
实际工程中系数的选取有讲究。如果你没有实测数据,可以参考IEEE负荷模型标准里给的推荐值。比如夏季居民混合负荷,恒阻抗系数 (a_p) 大概在0.2到0.4之间,恒功率系数 (c_p) 在0.4到0.6之间,不同地区差异挺大。如果是有实测负荷特性曲线的,那就直接做曲线拟合法,把系数拟合出来。
把ZIP负荷代入潮流计算后,节点注入功率不再是固定值,而是电压的显函数。这就导致潮流方程的雅可比矩阵里,原来对恒功率负荷来说为零的偏导项现在有了非零值,矩阵结构发生变化,迭代格式也要跟着改。这就是从恒功率模型切换到综合负荷模型后,代码不能直接沿用旧版本的关键原因。
1.3 什么时候可以继续用恒功率模型
这不是说恒功率模型一无是处。如果你的系统电压水平很好,所有节点电压都在0.97到1.03 pu之间,那么ZIP模型和恒功率模型的结果差异通常很小,工程上完全可以接受。但如果系统里分布式电源渗透率高、负荷波动大、电压偏移明显,比如末端电压已经到0.93 pu以下了,再用恒功率模型就会带来比较大的偏差。
另外还要看你的研究对象。做输电网的稳定分析、广域控制策略设计,恒功率模型可能是够用的。但做主动配电网的电压控制、无功优化、DG消纳能力评估,负荷模型的电压特性会直接影响结论,这时候必须上ZIP。我自己的经验是:凡是涉及"电压质量""调压手段""DG渗透率上限"这类问题,一律默认使用ZIP模型。
2. 主动配电网最优潮流:决策变量、约束条件与目标函数的设计思路
2.1 主动配电网"主动"在哪里:可调资源的建模
传统配电网是被动的,电源在输电网侧,配网只是单向给负荷供电。主动配电网不一样,网上接了分布式光伏、小型风电、储能系统、电动汽车充电桩,还能通过有载调压变压器(OLTC)、并联电容器组、静止无功补偿器(SVC)、智能软开关(SOP)等手段主动调节运行状态。这种情况下,最优潮流不再只是给定DG出力算潮流,而是要把这些可控设备的运行点当作决策变量,在满足安全约束的前提下寻找最优运行方案。
我的模型里主要考虑了以下几类可调资源:
- 分布式光伏/风电的出力:有功出力有上下限,受天气约束;逆变器可以发无功,但不能超过容量限制。
- 储能系统:充放电功率可调,有功有上下限,同时受SOC约束。
- 有载调压变压器:分接头档位影响变压器两侧电压,是一个整数决策变量。
- 并联电容器组/SVC:无功补偿量可调,改善电压分布。
这些资源的模型不复杂,但组合起来约束数量会膨胀,而且解空间的维度会明显增加。这对求解器的稳定性和初值选取提出了更高要求。
2.2 目标函数:单目标多目标怎么选
经典最优潮流最常用的目标函数是网损最小化:
[ \min \sum_{k \in \mathcal{L}} R_k \frac{P_k^2 + Q_k^2}{V_k^2} ]
其中 (\mathcal{L}) 是所有支路的集合,(R_k) 是支路电阻,(P_k)、(Q_k) 是支路潮流,(V_k) 是支路末端电压(近似)。这个目标函数物理意义明确,而且能直接反映经济运行水平。
但主动配电网场景下,只算网损往往不够。比如DG渗透率高的系统,调度策略会倾向于让DG满发,因为网损最小化会这样引导。但如果所有光伏都满发,午间可能出现反向重潮流,导致部分节点电压越上限,这时候就不得不弃光。所以更合理的目标函数是在网损基础上加入弃光罚项,或者用加权多目标:
[ \min \quad C_1 \cdot P_{\text{loss}} + C_2 \cdot P_{\text{curtailment}} ]
权重 (C_1) 和 (C_2) 的设定要看调度偏好。如果电网公司更看重运行经济性,(C_1) 大一些;如果更看重清洁能源消纳,(C_2) 大一些。
我做仿真对比的时候,分别跑了纯网损目标、网损加弃光罚项两种方案,结果差异很明显。纯网损目标下,午间光伏满发导致末端电压越限,弃光率约12%;加入弃光罚项后,调度策略自动降低了部分DG出力,电压约束满足,弃光率降到4%,但网损略有上升。这种trade-off就是最优潮流要解决的实际问题。
2.3 约束条件不只是潮流方程:安全约束的取舍
最优潮流的标准约束可以分成四类。第一类是潮流平衡方程,也就是节点功率必须平衡:
[ P_{gi} + P_{DG,i} - P_{Li}(V_i) = V_i \sum_{j \in N_i} V_j (G_{ij} \cos\theta_{ij} + B_{ij} \sin\theta_{ij}) ]
[ Q_{gi} + Q_{DG,i} + Q_{C,i} - Q_{Li}(V_i) = V_i \sum_{j \in N_i} V_j (G_{ij} \sin\theta_{ij} - B_{ij} \cos\theta_{ij}) ]
注意这里负荷项 (P_{Li}(V_i)) 和 (Q_{Li}(V_i)) 是电压的函数,这就是前面说的ZIP模型。
第二类是电压安全约束,所有节点电压要在允许范围内,通常是0.95到1.05 pu。第三类是设备容量约束,DG出力和无功补偿量不能超过上下限。第四类是储能约束,充放电功率限制和SOC范围。
这里有一个细节:电压约束本质上是不等式约束,处理不好会严重影响求解效率。我最初用罚函数法,把电压越限量加入目标函数,效果不太行,罚因子小了约束不满足,罚因子大了目标函数被扭曲。后来改用内点法,直接把不等式约束纳入KKT条件处理,收敛性和约束满足情况都好很多。
3. MATLAB建模全过程:从33节点系统到综合负荷接入
3.1 算例选取:为什么首选IEEE 33节点系统
小算例不是万能的,但做研究验证阶段,IEEE 33节点系统确实是很好的起点。拓扑是经典辐射状结构,数据公开,全网基准电压12.66kV,总负荷3715kW和2300kvar,初始网损约202kW,参数我在代码里做了注释可以直接调用。
% IEEE 33节点系统基础数据(部分展示) % 母线编号: [起始节点, 终止节点, 电阻R(ohm), 电抗X(ohm), 有功负荷(kW), 无功负荷(kvar)] branch = [ 1, 2, 0.0922, 0.0470, 100, 60; 2, 3, 0.4930, 0.2511, 90, 40; 3, 4, 0.3660, 0.1864, 120, 80; % ... 其余支路数据省略 ];要注意的是,IEEE 33节点的负荷数据是按恒功率模型给的额定负荷,接入ZIP模型时,这些数值就是公式中的 (P_0) 和 (Q_0)。然后在额定电压 (V_0) 处,ZIP模型的负荷和恒功率模型完全一致。
3.2 ZIP负荷在MATLAB中的实现方式
我实现ZIP负荷时没有把负荷方程单独写成函数在每轮迭代里反复调用,而是把ZIP模型直接嵌入到节点功率注入方程中。核心思路是这样的:
function [Pload, Qload] = zip_load(V, P0, Q0, zip_coeff, V0) % zip_coeff = [a_p, b_p, c_p, a_q, b_q, c_q] % V 是当前节点电压幅值(pu) ap = zip_coeff(1); bp = zip_coeff(2); cp = zip_coeff(3); aq = zip_coeff(4); bq = zip_coeff(5); cq = zip_coeff(6); Vratio = V / V0; Pload = P0 * (ap * Vratio^2 + bp * Vratio + cp); Qload = Q0 * (aq * Vratio^2 + bq * Vratio + cq); end这里有个容易被忽略的问题:牛顿-拉夫逊法需要计算雅可比矩阵,而ZIP负荷对电压有导数,也就是 ( \partial P_L / \partial V_i ),这一项必须加入雅可比矩阵。很多人改了负荷模型却忘了改雅可比矩阵,迭代发散还不知道为什么。
3.3 潮流计算核心:牛顿-拉夫逊还是前推回代
配电网潮流计算通常有两种主流算法。前推回代法实现简单、极快、鲁棒性好,对辐射状网络非常友好;牛顿-拉夫逊法矩阵推导和扩展性更强,适合处理含环网和多种可控设备的网络。
对于最优潮流,我最终选了牛顿-拉夫逊法。原因是前推回代法本质上不是方程求解框架,而是迭代逼近算法,把它嵌入到OPF的约束求导和KKT条件推导里非常别扭。而牛顿法本身就是牛顿-拉夫逊法求解一组非线性方程,天然能和OPF的拉格朗日函数结合。
这段代码是潮流计算核心的简化示意:
function [V, converged] = nr_powerflow(bus, branch, zip_coeff) % 初始化 V = ones(n_bus, 1); % 所有节点电压初始值 theta = zeros(n_bus, 1); max_iter = 50; tol = 1e-8; for iter = 1:max_iter % 计算节点注入功率(含ZIP负荷) [P_calc, Q_calc] = calc_injection(V, bus, branch); % 计算不平衡量 dP = bus.P_gen - P_calc - Pload_zip(V, bus, zip_coeff); dQ = bus.Q_gen - Q_calc - Qload_zip(V, bus, zip_coeff); % 计算雅可比矩阵 J = jacobian_matrix(V, theta, branch, zip_coeff); % 解修正方程 delta = J \ [dP; dQ]; V = V + delta(1:n_bus); theta = theta + delta(n_bus+1:end); % 收敛判断 if norm([dP; dQ], inf) < tol converged = true; return; end end converged = false; end实际工程版本里还需要加入PV节点处理、平衡节点处理,以及OLTC变比变化后节点导纳矩阵的动态修正。这些内容扩展后会复杂很多,但原理上就是在雅可比矩阵中额外增加对应的偏导项。
3.4 可控设备建模的关键细节
储能系统的建模最麻烦,因为它既涉及功率平衡约束,又涉及时间耦合的SOC约束。做单时段OPF时SOC是一个固定值上下限,但做日前的多时段OPF时,SOC的初值和终值之间的耦合会导致整体约束矩阵变成块状结构。
我的处理方式是在模型里引入储能充放电效率:
[ SOC_{t+1} = SOC_t + \eta_c \cdot P_c (t) \Delta t - \frac{1}{\eta_d} \cdot P_d (t) \Delta t ]
其中 (\eta_c) 和 (\eta_d) 分别是充电和放电效率。值得注意的一点是,不能同时充放电,这个约束通常用互补条件或者一个大M法来处理,否则最优解会利用充放电同时进行来"洗"效率。这是我调试时踩过的坑之一,后面细说。
有载调压变压器的建模相对简单,OLTC等价于一个变比可以调节的理想变压器,改变变比就改变了节点导纳矩阵中对应线路的互导纳值。如果把它和OPF耦合求导,会引入离散决策变量,这就要用混合整数优化或者把档位松弛成连续变量后舍入近似。
4. 最优潮流求解:内点法处理综合负荷与约束的实战配置
4.1 为什么不用粒子群或遗传算法
主动配电网最优潮流主流求解方法分为数学规划类(内点法、序列二次规划)和启发式智能算法类(粒子群、遗传、差分进化)。这个话题我见过很多误用。
粒子群或者遗传算法写起来确实简单,目标函数可读性好,能加各种复杂约束而不需要求导数,看起来万能。但这类算法最大的问题是:不保证收敛到全局最优解,而且每次运行结果有随机性,不是确定性的。学术论文里可以接受多次运行取均值,但工程应用里调度方案必须是可复现的,否则无法通过安全校核。其次,随着决策变量维度增加,这类算法的计算代价增长非常快,配电网OPF动辄几十个变量,收敛速度慢到没法用。
我的建议是:如果做教学演示或者没有凸优化基础,粒子群是可以的;如果要做严谨的结果对比、有效性评估,优先用内点法或者基于序列二次规划的求解器。
4.2 MATLAB实现内点法的核心配置
在MATLAB里用内点法求解OPF,我选择用优化工具箱的fmincon函数配合'interior-point'算法,虽然不如直接写原始对偶内点法透明,但胜在稳定性好、写起来快。核心设置如下:
options = optimoptions('fmincon', ... 'Algorithm', 'interior-point', ... 'Display', 'iter', ... 'MaxIterations', 200, ... 'ConstraintTolerance', 1e-6, ... 'OptimalityTolerance', 1e-6, ... 'SpecifyConstraintGradient', false); % 不提供梯度时用数值微分需要提醒的是,如果不提供解析梯度,fmincon会通过有限差分估算梯度,对大规模OPF来说计算量会剧增,而且数值噪声大。建议在纯代码验证阶段先用数值微分确保程序的正确性,后面性能优化时再写解析梯度或者用符号工具求导。
4.3 决策变量与约束的编码布置
以IEEE 33节点系统接入2台光伏、1台储能和负载侧OLTC为例,决策变量向量设计为:
- 光伏1有功出力 (P_{DG1}),范围 [0, 800] kW
- 光伏2有功出力 (P_{DG2}),范围 [0, 600] kW
- 储能放电功率 (P_{ESS}),范围 [-200, 400] kW
- 储能无功功率 (Q_{ESS}),范围 [-150, 150] kvar
- OLTC变比 (t),范围 [0.9, 1.1],步长0.0125,先松弛为连续变量
- SVC无功补偿量 (Q_{SVC}),范围 [-100, 300] kvar
节点电压约束统一加到0.95到1.05 pu,这是最严格的安全约束。松弛OLTC为连续变量后,求解结果通常不是标准档位值,我会做就近取档处理,然后固定档位重新跑一次潮流校核电压是否越限,如果取整后越限,再微调SVC出力。这个"先松弛求解、再取整校核"的方法在工程上比较实用,虽然理论上不如混合整数解准确,但速度快很多,对大多数场景够了。
4.4 初值选取与收敛性的经验
内点法对初值敏感,尤其是含ZIP负荷时,初值给不好很容易收敛到局部解甚至发散。我的经验是:先用恒功率模型快速算一次普通潮流分布作为初值,然后在其附近做微小扰动引入ZIP参数,这样迭代能少一些波动。
更具体的方法是,先用一个"无约束版本"求解一下OPF,也就是暂时把电压约束放宽到0.85到1.1 pu,拿到一个粗解,然后作为热启动初值代入完整约束版本。这样能明显减少约束冲突导致的迭代振荡。我在33节点系统上测试,用这个策略可以让内点法收敛时间从约40秒降到约8秒,差别很大。
5. 完整算例结果分析:综合负荷模型如何影响最优调度
5.1 仿真场景设置与参数
为了量化分析综合负荷模型的影响,我设计了三个对照场景,其他条件保持一致:
- 场景A:所有负荷采用恒功率模型(传统做法)
- 场景B:所有负荷采用ZIP模型,参数为典型居民负荷混合系数:(a_p=0.3), (b_p=0.3), (c_p=0.4),无功侧 (a_q=0.3), (b_q=0.4), (c_q=0.3)
- 场景C:ZIP模型基础上,末端节点加入高渗透率光伏(节点18和22各接入500kW光伏)
目标函数统一为系统网损最小化,电压约束0.95到1.05 pu。
5.2 最优潮流结果对比
三个场景的最优网损和电压分布结果汇总如下:
| 场景 | 网损(kW) | 末端节点电压(pu) | 最高节点电压(pu) | 求解耗时(s) |
|---|---|---|---|---|
| A:恒功率 | 121.6 | 0.931(越限) | 1.028 | 5.6 |
| B:ZIP模型 | 104.3 | 0.942(越限) | 1.022 | 8.9 |
| C:ZIP+高光伏 | 88.7 | 0.958(合格) | 1.041 | 11.2 |
场景A是恒功率模型,看起来网损最大,而且末端电压已经低于0.95。换到ZIP模型场景B后,网损从121.6降到了104.3,这个降幅超出我的预期,所以我特意核对了迭代中间数据。原因在于ZIP模型下,末端电压越低,实际负荷功率越小,所以系统总负荷下降,对应的经济性指标自然会改善。这就是负荷模型对结论影响最直观的证据。
把光伏加进场景C后可以看出,高渗透率分布式电源确实改善电压分布,末端节点电压上升到0.958,但最高节点电压到了1.041,已经接近上限。这意味着如果光伏再增加,电压越上限的风险就会明显加大。这个结果也解释了为什么主动配电网不能无限制接纳分布式电源,电压约束是主要瓶颈。
5.3 从结果看综合负荷模型的计算价值
对比场景A和B,恒功率模型不仅高估网损约16.6%,对电压评估也偏保守,这会直接导致两个工程决策错误:第一,基于电压越限评估可能会误判系统需要加装无功补偿装置,实际上没那么严重;第二,对DG接入容量的评估会过于乐观或悲观,完全取决于分布式电源的位置和时刻。
要做更严谨的分析,应该把负荷模型参数的不确定性也纳入考虑,做敏感性分析。比如把 (a_p) 从0.1变到0.5,观察最优网损的变化范围。我在某次研究里做过这个分析,发现对于强电压依赖性的空调负荷为主的小区,网损评估波动能达到25%左右,这个数值足以改变调度策略。
5.4 储能调度策略在不同模型下的变化
还有一个值得关注的现象:在恒功率模型下,储能倾向于在系统重负荷时放电、轻负荷时充电,这个规律是符合直觉的。但换到ZIP模型后,由于末端电压偏低时负荷吸收功率减少,储能的放电时段和放电深度都发生了变化。具体来看,场景B中储能在晚高峰的放电功率比场景A减少了约15%,因为电压跌落导致实际负荷需求下降,储能的削峰价值被稀释了。
这个发现对实际工程很有意义:如果你做储能的容量配置和经济性评估时用的是恒功率负荷模型,很可能会高估储能的收益,最终导致实际运行中储能利用率偏低、回收期拉长。
6. 调试过程中的"拦路虎":遇到的坑和解决办法
6.1 雅可比矩阵少算一列,迭代直接发散
第一次把ZIP负荷嵌入牛顿-拉夫逊法时,我更新了注入功率计算公式,但忘了同步修改雅可比矩阵中负荷功率对电压的偏导数项。结果就是每次迭代的修正方向都是错的,电压解震荡越来越剧烈,算到第大概30轮就变成NaN了。
排查方法很朴素:我在每轮迭代把解析雅可比矩阵和数值近似雅可比矩阵做了一次差分比较,很快就定位到负荷相关位置的元素差异远大于容许值。修正方式是补上 ( \partial P_{Li}/\partial V_i ) 和 ( \partial Q_{Li}/\partial V_i ) 的非零项,修正后迭代收敛至 (10^{-10}) 精度只用了6轮。
6.2 储能模型允许同时充放电,"白嫖"效率漏洞
在测试储能SOC动态的时候,发现最优解出现了充电和放电功率同时为正的情况。物理上储能只能单向运行,但如果不加约束,优化器会"钻空子":充电吸收低价电、放电以相同功率输出,同时SOC不变,但损耗了充放电效率。这个操作凭空增大了储能"运行量"却没有实际电量变化,导致目标函数里某些与功率相关的成本项被错误地计算。
解决办法是在模型中加入互补约束,或者用线性不等式约束使其不能同时超过下限。我最简单有效的处理是用一个大M法:为充电状态和放电状态分别设置二进制变量,然后约束充放电功率不能同时非零。虽然这会引入整数变量,但因为储能数量少,求解时间增加不多。
6.3 OLTC取整后电压越限:需要二次校核
前面提到我把OLTC松弛成连续变量求解,再就近取整到实际档位。有一组算例取整之后节点电压刚好从1.048跳到了1.052,越限了,但约束检查是在松弛解上做的,取整后并没有重新校验。
解决方式是加一层后处理流程:取整后固定OLTC变比,重新做一次潮流计算,检查电压约束是否满足。如果不满足,再调用局部搜索调整其他无功设备。流程虽然多了一步,但保证了最终方案是可落地的。这个经验在我的其他最优潮流项目中也反复用到。
6.4 收敛判据的选择:阀值太松会掩盖真实问题
早期我设置的收敛判据是功率不平衡量小于 (10^{-3}),这个值不够严格。有一次对比不同算法时,结果差异不大,当时还以为是算法本身接近最优。后来收紧到 (10^{-6}),才发现原来那个"收敛解"的网损数值偏差其实有2%左右,直接影响了结论的可靠性。
建议收敛判据统一设置在 (10^{-6}) 这个量级,不要因为求解慢就放松判据。尤其是有储能和OLTC这类耦合变量时,松弛的判据容易提前终止迭代,给出的"最优"结果并不满足一阶最优性条件。
6.5 一个实用的小技巧:用多初值交叉验证
即使内点法已经比较稳定,我还是会跑3组不同初值做交叉验证。如果三组结果偏差在0.5%以内,我就认为当前解是可信的全局解。这个方法成本不高,但对结果的可信度提升很大,特别是在包含非凸约束的模型中。
初值的构造方式可以这样设计:第一组是冷启动,所有决策变量取中间值;第二组是热启动,用恒功率模型先算一次OPF的结果作为初值;第三组是随机扰动,在热启动解上叠加2%到5%的随机扰动。三组解一致,心里的底气就足很多。
7. 后续扩展方向与工程落地思考
研究阶段用IEEE 33节点系统验证思路足够了,但工程落地时还有不少距离。首先是算例规模问题,实际配电网可能几百上千个节点,导纳矩阵是稀疏的,但fmincon默认处理方式是稠密矩阵,内存和求解时间会指数级增加。想提升性能,得考虑用专门处理稀疏矩阵的内点法实现,或者借助电力系统专用优化工具,效率差一个数量级。
其次是数据来源问题,ZIP负荷模型系数不是凭空设定的,最好是基于负荷特性实测数据拟合。现在很多智能电表和高级量测体系能提供负荷电压和功率的同步采样数据,用最小二乘就能把各系数拟合出来。建议在做项目前,先花时间清洗这段数据,比后期反复调参数省力得多。
最后是时间尺度问题,本文聚焦的是单个时段的OPF,但实际运行需求是日前的多时段最优调度。这时储能SOC的时间耦合、光伏出力曲线的预测误差、负荷的时序特性都需要额外建模,计算复杂度又上一个台阶。如果你感兴趣,下篇可以展开讲讲多时段OPF的实现以及随机场景优化思路。
我在实际做这些项目的过程中最深的体会是:模型每增加一个贴近物理现实的细节,计算复杂度都会上升一个台阶,但结果的工程可信度也会上升一个台阶。综合负荷模型只是这个方向的第一步,后面还有分布式电源的不确定性建模、三相不平衡、网络重构等一堆问题等着解决。希望这篇内容能帮你把第一步走扎实,后面的路就能顺很多。