做电力系统方向的研究生十有八九会碰IEEE33这个系统。我接触它至少四五年了从最初的潮流计算到配网重构再到今天要说的韧性提升几乎所有的配电网研究都能在这个系统上做实验。前两年我开始做极端天气下的韧性课题第一步就选了IEEE33节点配电网加混合储能、OLTC、SVC这个组合用Matlab做协调优化仿真。实测下来这套方案在台风、冰灾这类多重故障场景下能把失负荷率压得很低代码稳定性和可复现性也都经得起考验。这篇文章我会把整套思路从头到尾捋一遍重点解决三个问题一是为什么韧性调度需要同时用这三种设备而不是只加储能二是在IEEE33系统里这些设备怎么建模、优化模型怎么列才不会跑飞三是Matlab里具体怎么实现、有哪些反复踩过的坑。无论你是刚接触配电网优化的研究生还是已经在做韧性方向但卡在复现环节的工程师按这个路线走应该能少走不少弯路。1. 项目背景与整体设计思路1.1 配电网韧性到底在解决什么问题先说个概念层面的东西。配电网韧性resilience和传统的可靠性reliability不是一回事。可靠性关心的是日常随机故障下系统能否持续供电讲究的是N-1准则、故障率、平均停电时间这些指标。但台风、冰灾、暴雨这种极端事件不一样它往往是多条线路同时故障甚至整个区域大面积停电超出了传统可靠性设计的覆盖范围。韧性研究的就是系统在遭受这种低概率、高影响事件时能不能扛得住并且在故障持续期间尽量多供电、故障结束后快速恢复。说白了就是给电网加一层免疫力。这个项目属于运行层面的韧性提升核心是在故障发生后通过调度混合储能、OLTC、SVC这些已有设备让系统在部分线路断开的情况下仍然维持尽可能多的负荷供应。为什么选极端天气这个场景因为最近几年的实际运行经验已经很清楚了极端天气造成的电网损失占停电总损失的比例越来越高而且这种事件具有明显的时间和空间耦合性。比如台风来临前负荷会激增台风过境时多条线路同时跳闸这时候单纯靠传统保护动作或者人工抢修恢复速度远远跟不上需求运行层面的主动支撑就变得很关键。1.2 为什么是混合储能、OLTC、SVC这个组合可能有人问直接加大容量储能不就行了我在做方案选型的时候也纠结过这个问题。后来实际跑下来发现单靠一类设备局限性太明显具体来说OLTC有载调压变压器是配电网里最基础的电压调节手段它通过改变变压器变比来整体抬升或降低馈线出口电压。但它有两个硬伤一是只能离散调节档位变化是非连续的二是分接头动作次数有限制频繁调节会严重缩短设备寿命。所以OLTC适合做慢速、大范围的电压水平调整不适合应对短时快速波动。储能就比较灵活有功无功都能调响应速度也能到秒级甚至更快。电池储能能量密度高能持续支撑较长时间但瞬时功率冲击反而受限超级电容功率密度大、响应极快但容量小撑不了太久。把两者组合成混合储能就是典型的长时能量支撑短时功率缓冲互补。SVC静止无功补偿器是电力电子设备本质是一个可连续调节的无功源响应速度极快能有效支撑节点电压。但它只能发无功或者吸收无功对有功缺额无能为力。不过它的优势在于成本相对低、寿命长、维护简单所以在电压薄弱点配置SVC性价比很高。这三种设备放在一起各自的调节维度是互补的储能管有功缺额和短时冲击SVC管动态电压支撑OLTC管全局电压水平。我在后面的仿真里做过对比只用储能时电压支撑能力明显不足末端节点电压很容易越下限只用OLTC和SVC时一旦有功缺额太多频率和负荷恢复也跟不上。三者协调起来效果是1113。1.3 整体技术路线与模块划分这套Matlab程序我按模块划分每个模块独立封装方便单独调试和替换。整体流程是先搭系统数据再生成故障场景然后建立优化模型并求解最后做结果评估和可视化。模块核心作用主要输出case33.m定义IEEE33拓扑、线路参数、负荷数据bus/branch结构体gen_scenario.m生成指定故障线路或随机故障场景线路可用状态、负荷系数build_model.m建立目标函数和全部约束调用求解器优化结果结构体solve_model.m求解MISOCP/MILP并处理异常决策变量取值plot_results.m绘制电压、储能SOC、OLTC档位等曲线图表resilience_metrics.m计算失负荷量、恢复率、最低电压等韧性指标指标表格这个模块划分的好处是换故障场景只需要改gen_scenario换设备配置只需要改case33和build_model里对应的约束块不会牵一发动全身。我后来做随机场景扩展的时候基本没动主程序。2. 系统建模与核心公式2.1 IEEE33节点系统参数与数据预处理IEEE33节点系统是个经典算例基准电压12.66 kV基准容量一般取10 MVA总共有33个节点、32条支路原始总有功负荷约3.715 MW无功负荷约2.3 Mvar。最理想的点在于它规模适中单时段潮流计算毫秒级完成做多时段优化也不至于算到天荒地老。拿到原始数据后第一件事是标幺化。很多初学者直接拿欧姆值去建模结果量纲错乱。正确做法是先算阻抗基值Z_base U_base^2 / S_base 12.66^2 / 10 16.0276 Ω然后所有线路电阻电抗都除以Z_base转换为标幺值。负荷功率则除以S_base转换为标幺值。我一般在case33.m里就一次性完成这个转换后面所有约束和计算都用标幺值避免单位混乱。下面给出部分支路数据完整参数网上都能搜到但网上的版本有时候负荷功率单位不一致有的是kW/kvar有的是MW/Mvar用之前一定要核对清楚。支路编号首端节点末端节点r(Ω)x(Ω)末端有功负荷(kW)末端无功负荷(kvar)1120.09220.0470100602230.49300.251190403340.36600.1864120804450.38110.194160305560.81900.707060206670.18720.6188200100这里有个细节容易被忽略IEEE33的末端节点31负荷是200 kW 600 kvar无功功率远大于有功这是原始算例故意设置的薄弱点用来暴露电压问题。后期配置SVC时这种节点就是我优先考虑的位置。2.2 极端天气故障场景的构造方法故障场景是韧性研究的心脏场景设计不合理后面优化做得再花哨也没用。我在这个项目里用了两种方式来生成场景。第一种是指定故障场景最直接也最适合调试。参考典型台风灾害的破坏模式我选了三组关键线路故障支路8对应线路8-21、支路12对应线路12-22、支路25对应线路25-29。这三条线路分别位于系统的主干道和两条分支末端同时断开会让系统出现明显的电压跌落和部分负荷失电。同时我在场景里加了10%~20%的负荷系数模拟极端天气下负荷激增的情况。这个场景设计在代码里就是几行数组的事% 支路状态: 1正常运行, 0故障断开 branchStatus ones(32, 1); branchStatus([8, 12, 25]) 0; % 模拟台风导致三条线路同时断开 loadFactor 1.15; % 极端天气负荷系数第二种是蒙特卡洛随机场景用来做更严谨的韧性评估。思路是先给每条线路建一个与风速相关的故障概率模型然后生成成百上千个随机故障场景再对这些场景做聚类削减挑出代表性的几个参与优化调度。风速-故障概率模型我推荐用Sigmoid型函数P_failure(w) 1 / (1 e^{-0.2(w - w_cr)})其中w_cr是临界风速大概取25 m/s左右等于说风速超过这个值时线路故障概率急剧上升。这个模型虽然简化但能很好反映极端天气下线路故障概率随灾害强度非线性上升的特征。实际调试时我的建议是先用指定场景跑通全流程后续做随机场景分析时再加蒙特卡洛。一上来就生成2000个场景去跑多时段优化大概率第一天全耗在求解器等待上了。2.3 混合储能、OLTC、SVC的设备建模设备建模直接影响优化结果的可靠性这部分我会把每个设备的数学约束写得尽量清楚。混合储能这部分我选择的是电池储能BESS加超级电容SC的组合两者通过DC/DC变换器并联到公共直流母线再经PCS接入交流系统。电池储能容量1 MWh最大充放电功率0.5 MWSOC运行范围0.1~0.9充放电效率取0.95超级电容容量0.1 MWh最大充放电功率1 MWSOC范围0.2~0.9效率取0.98。两者的核心约束就是SOC递推方程和功率上下限。SOC递推方程是SOC(t1) SOC(t) (η_ch * P_ch(t) - P_dis(t) / η_dis) * Δt / E其中P_ch和P_dis分别是充电和放电功率都是非负变量。这里有个坑充电时实际存入电池的能量需要乘以充电效率η_ch放电时从电池里放出的能量需要除以放电效率η_dis二者方向不同不能写反。充放电不能同时进行这个约束我在Optimization里用一个二进制变量对实现b_ch b_dis 1; % 互斥约束 P_ch P_ch_max * b_ch; P_dis P_dis_max * b_dis;这样写有一个好处即使求解器在数值精度上略微违反互斥二进制约束也能把越界限制在极小范围内。OLTC的建模我选择把它放在根节点出口处等效为改变馈线首端电压。变比k在0.95~1.05 pu之间按17档离散取值每档步长约0.00625 pu。在优化模型里用二进制变量做档位选择tap_select binvar(nTap, T, full); Constraints [Constraints, sum(tap_select, 1) 1]; % 每时段只能选一档 U_root tapRatioSq * tap_select; % 根节点电压平方 变比平方这里的tapRatioSq是每个档位对应变比平方的行向量。用平方而不是直接用变比是为了和DistFlow里的电压变量U_i V_i^2保持统一避免转换误差。SVC的建模就简单很多本质上是一个可调无功源约束只有一个容量范围。我配置了两台SVC分别接在节点18和节点33容量范围±0.5 Mvar也就是既可以向系统注入无功也能吸收无功Q_svc_min ≤ Q_svc ≤ Q_svc_max实际设备响应速度很快在静态优化模型