资讯详情

资讯详情

配电网智能软开关优化配置:改进灵敏度分析与IEEE33节点Matlab实现

这两年做分布式电源接入的规划项目十有八九绕不开一个问题大量分布式光伏和风电并进来之后配电网的电压和网损先扛不住。传统的手动分段开关和联络开关根本调不过来智能软开关Soft Open PointSOP就因为这个被推到了台前——它可以装在馈线联络的位置实时控制两条馈线之间的有功交换和无功支撑一台装置干了过去断路器加调压器加无功补偿的活。但SOP有个现实门槛单台造价不低、容量不能瞎定装哪儿、装多大直接决定项目是锦上添花还是土财主撒钱。这两年做IEEE33节点系统仿真的人特别多国内课题组普遍的做法是先用改进灵敏度分析筛选可安装位置再做容量优化最后用Matlab实现整个流程。这篇文章就把这条技术路线从头到尾拆一遍重点是改进灵敏度指标怎么构造、IEEE33系统的数据怎么接、Matlab程序架构怎么搭以及我在实际复现中踩过的坑。1. 项目定位配电网里为什么偏偏要软开关1.1 分布式电源高渗透带来的两大痛点传统配电网是按“单向潮流”设计的电源在上级变电站负荷在下面功率从变电站往末端流。分布式光伏和风电大量接入以后这个格局直接被打乱。比如一条馈线中午光伏出力大、负荷又小功率会反过来从馈线末端往上送电压被抬高一旦超过1.07倍额定电压逆变器直接停机保护。到了傍晚光伏出力骤降负荷却不小电压又开始跌落末端可能掉到0.93以下。一天之内电压像坐过山车这在没有分布式电源的年代根本不会遇到。另一个痛点是线路阻塞。DG出力大的时候部分支路潮流超过热稳定极限但你又不能简单地把DG切掉因为弃光弃风意味着收益损失。传统手段里线路联络开关一般是常开或常闭只能通过调度改变网络拓扑动作次数有限没法做到秒级连续调节。这就好比一座双向两车道的桥早晚高峰车流一多就堵死可你又不能把桥炸了重新修只能希望有个智能信号灯能实时分流。这两大痛点叠加起来单靠无功补偿或者变压器调压已经不够用了。配电网上需要一种能快速、连续、双向控制潮流的设备——SOP就是在这样一个背景下被反复拿出来讨论的。SOP本质上是由电力电子换流器组成的设备一般放在两条馈线之间原来装联络开关的位置用背靠背的电压源换流器把两条馈线柔性连接起来。它能在两条馈线之间转移有功功率也能独立向两侧提供无功功率相当于把一个机械开关升级成了“可控的功率路由器”。1.2 智能软开关与“优化配置”这个词到底解决什么SOP的价值听着很美好但落地没那么简单。一台SOP的容量可能做到几百千伏安到几兆伏安换流器、变压器、冷却系统、控制保护装置加起来单位容量的投资比传统开关设备高出不少。你不可能在每条支路都装必须在“需要的地方”装、“需要多少”装多少。这个问题在工程上叫“优化配置”拆开看包含两个子问题第一个子问题是选址。配电网有那么多节点哪些节点之间适合装SOP装得不好设备闲着投资打水漂装得好一个点能改善整条馈线的电压和损耗。第二个子问题是定容。给定一个安装点容量选多大选小了高峰时段控制能力不足选大了利用率低回收期拉长。所以做这类研究的标准技术路线一般是先对配电网做潮流计算计算各种灵敏度指标用改进的灵敏度排序筛出候选安装位置然后把候选位置代入优化模型以投资成本、运行成本、网损成本的综合最小为目标求解每个位置的容量和控制策略最后在IEEE33节点系统上做数字验证对比配置前后的电压分布、网损和经济效益。这里面改进灵敏度分析是整条路线的第一步也是很多人写得不清不楚的地方。常见写法是“用灵敏度分析筛选候选位置”但到底用什么灵敏度、怎么改进、改进以后筛选效果凭什么变好这些恰恰是最值得掰扯的细节。2. 改进灵敏度分析从“拍脑袋候选”到“科学圈候选”2.1 先讲基础版电压-有功灵敏度怎么算灵敏度分析的直觉其实很生活化。你做菜放盐放一小勺下去尝一口看咸淡变化——盐量对咸度的“影响程度”就是灵敏度。在配电网里我们想知道某个节点注入有功功率之后其他节点电压会被拉高多少这就是电压对有功的灵敏度。从数学上说潮流方程可以写成一组非线性方程F(U,θ, P, Q)0在工作点附近做线性化忽略二阶以上项就得到ΔU和ΔP、ΔQ之间的近似线性关系。用牛顿-拉夫逊法做潮流时最后一步求出的雅可比矩阵的逆其实就是这组灵敏度的来源。具体到Matlab里你会看到类似这样的操作% 对基准运行点做一次潮流计算 [U, theta, J] NR_powerflow(bus, branch); % 取雅可比矩阵中电压幅值对有功注入的分块再求逆 S_P inv(J_UP); % 这里J_UP是dU/dP分块注意单位是标幺值这里的S_P就是n×n矩阵第i行第j列表示节点j注入1个单位有功后节点i电压幅值的变化量。传统做法里人们会把所有节点对某个候选位置的灵敏度累加或者取某个关键节点的灵敏度作为这个候选位置“对电压影响有多大”的度量。只按这个指标选位置有一个明显问题它只考虑了一个静态运行点。配电网的负荷和DG出力是24小时动态变化的白天、晚上、峰时、谷时灵敏度数值可能差好几倍。你在中午某个工况下算出节点A灵敏度最高可到了晚间负荷高峰节点A可能根本没多少作用。所以单纯用基础灵敏度往往选出“看起来合理但实际收益不高”的位置。2.2 “改进”改在哪多场景、权系数、网损项、电压越限项我看到很多论文和代码里所谓“改进灵敏度分析”本质上是做了三件事。第一件事是多场景化。把一天分成若干典型时段比如高峰、平段、低谷再根据DG出力的不确定性设置几个典型场景比如光伏大发、光伏小发、无DG三种。对每个场景都做一次潮流计算求一次电压-有功灵敏度矩阵得到一个灵敏度矩阵族。这一步计算的代价成倍增加但换来的是对系统运行规律的更全面刻画。第二件事是指标融合。电压灵敏度只能反映电压问题但SOP还能降低网损。于是改进指标里通常会再加入“网损灵敏度”和“电压偏移灵敏度”。网损灵敏度衡量的是如果在某个节点接入SOP并注入一定功率系统总网损会降低多少电压偏移灵敏度衡量的是接入后对电压偏离目标值幅度的改善。把三个灵敏度项按权重合成为一个综合指标比如综合灵敏度C_i α_1 × 电压灵敏度归一化值 α_2 × 网损灵敏度归一化值 α_3 × 电压偏移改善灵敏度归一化值权重α怎么定常见做法是专家打分或者用熵权法、层次分析法从多个场景的计算结果里倒推权重。我自己复现时倾向于先用熵权法因为它能根据数据本身的信息量自动定权重不用拍脑袋。当然如果你不想引入太复杂的数学直接把三个灵敏度等权相加也算一种可用方案只是对结果要敏感地做个扰动测试。第三件事是排序策略改进。传统方法把所有候选位置按综合灵敏度从高到低排取前几个。改进思路则是考虑候选位置之间的“重叠性”——两个灵敏度都很高的位置如果它们影响的是同一组节点同时安装的边际收益并不高。这时可以引入去重叠步骤比如第一次选出最高灵敏度位置后把这个位置对系统的影响从场景中扣除再重新计算剩余位置的综合灵敏度迭代选择。这有点像选“替补队员”时不能只看个人得分还要考虑他能不能和新阵容产生化学反应。2.3 灵敏度分析的工程落地逻辑你做灵敏度分析千万不要指望它能一锤定音算出“最优位置”。它的真实作用是降维把全系统几十个可安装位置快速缩到3到5个候选位置让后面复杂的优化模型不用面对组合爆炸。比如IEEE33系统去掉根节点理想可装位置可能二十多个如果用穷举法把所有位置组合都遍历一遍再在每种组合里求解非线性优化计算量是天文数字。先用灵敏度把候选池缩小优化模型只需要在这几个位置上做0/1组合计算时间能降低一个数量级。而且灵敏度分析本身不依赖优化算法结果相对稳定给后续调试留了很多方便。我建议在工程报告中把灵敏度排序结果单独列一张表标注每个位置的综合得分、主要贡献分量电压项还是损耗项这样评审专家一眼就能看出候选位置是不是经得起推敲。3. IEEE33节点系统与Matlab代码实现3.1 IEEE33的底子数据怎么对表IEEE33节点系统是一个很经典的配电网测试系统原版数据的基本情况是33个节点32条支路5条联络开关系统基准电压12.66kV基准容量通常取10MVA也有取100MVA的务必在代码里统一。总负荷大约是有功3715kW、无功2300kvar。这里面有几个细节特别容易翻车数据文件里常见的格式是三列或者两列支路起点、支路终点、电阻欧姆、电抗欧姆。比如节点2到节点19之间的联络线原版数据里电阻电抗数值和普通支路完全不在一个量级它们是“备用联络线”。做辐射状网络潮流计算时这些联络线默认是断开的千万不要一股脑全加进导纳矩阵里。我见过不止一次有人把IEEE33数据里的功率单位搞混。原版负荷数据给出的是kW和kvar但潮流计算里如果用标幺值所有功率都要除以基准功率。如果你用100MVA作基准那3715kW就变成0.03715p.u.如果你用10MVA作基准就变成0.3715p.u.。基准选不同潮流计算结果是一样的但灵敏度矩阵数值会差一个数量级后续排序阈值、优化惩罚系数都要跟着调。所以建议一上来就在代码里写一个清晰的unit conversion区把基准值放在同一个结构体里全程引用不要在每个函数里硬编码数字。再有就是DG的接入方式。做“有源配电网”仿真通常会在原版IEEE33基础上选几个节点接分布式电源比如在节点18、22、25、33分别接入小容量光伏。DG接入以后原来的负荷数据不能直接用要改成功率注入为负的负荷或者单独建立DG出力模型。我的建议是不要把DG直接改成负负荷就完事——因为DG可能有功率因数控制不是简单的恒功率。3.2 程序架构潮流模块、灵敏度模块、优化模块一份能跑通整个配置流程的Matlab代码不应该是一个几百行的脚本堆到一起至少拆成四个模块。第一个是数据模块。负责读入配电网参数、负荷参数、DG参数生成bus和branch结构体统一单位成标幺值。数据模块里还应该有个“场景生成函数”输入一天的时刻或DG出力比例输出相应的负荷倍率和DG出力倍率。这样后面多场景灵敏度分析的时候只需要循环调用这个函数不用每次都改全局变量。第二个是潮流模块。对配电网这种辐射状网络用前推回推法最简单也最稳不需要求雅可比矩阵直接迭代支路功率和节点电压就能收敛。但如果要做灵敏度分析就得额外输出雅可比矩阵或者用数值扰动法求灵敏度这时候牛顿-拉夫逊法反而更方便。我这里两种方法都保留前推回推法用来做优化迭代中的快速潮流校验牛顿法用来做基准运行点和灵敏度计算。第三个是灵敏度模块。输入几个典型场景下的潮流结果输出每个候选位置的综合灵敏度排序表。这个模块的核心是矩阵运算要把每个场景的灵敏度矩阵存成一个三维数组或cell数组然后做归一化和加权求和。归一化方式建议用“最大值归一化”也就是每个分量除以该分量在所有候选位置里的最大值这样三个分量都在0到1之间加权以后不会出现某一项因为数值大而主导一切。第四个是优化配置模块。这个模块可以是粒子群也可以是别的启发式算法核心逻辑是根据灵敏度排序表生成少量候选位置组合然后在每种组合下用潮流计算评估适应度搜容量配置。优化模块和灵敏度模块解耦意味着你可以单独替换优化算法比如换成遗传算法或者二阶锥规划不用改前面的计算框架。3.3 改进灵敏度分析的Matlab细节这里给一个简化的灵敏度计算思路具体代码视项目情况调整。要在Matlab里求电压-有功灵敏度最直接的办法是解析法用牛顿法潮流计算得到的雅可比矩阵反推。由于潮流方程里U、θ、P、Q是耦合的完整灵敏度矩阵会更复杂简化处理时可以分块求解% 假设J是牛顿法潮流方程的雅可比矩阵维度是(2n-2)x(2n-2) % 对应变量是[Δθ; ΔU] % 已知节点注入变化[ΔP; ΔQ]求ΔU的思路如下 dU J_full \ [dP; dQ]; % 或者利用Schur补提取dU/dP子块但解析求雅可比再求逆对初学者容易出错而且雅可比矩阵条件数大了以后数值也不稳定。我建议一个工程上稳妥的替代方案数值扰动法。对每个候选位置在某个场景的基准潮流基础上把该节点注入的有功功率增加一个小量比如0.01p.u.重新做一次潮流计算记录各节点电压变化量两者相除就是该位置的灵敏度。这样做虽然慢一点但代码逻辑直观出错概率低。对IEEE33这种小规模系统候选位置总共就二三十个三个场景下做几十次潮流计算耗时完全可以接受。改进指标里要特别注意“归一化必须跨场景”。很多人会把每个场景单独归一化结果就是两个场景的灵敏度数值没法直接相加。正确做法是把所有场景、所有候选位置的灵敏度数值放在同一张表里再统一做归一化这样权重才有意义。4. 优化建模装哪、装多大、怎么控制4.1 决策变量与目标函数SOP优化配置问题的决策变量分三类一是安装位置用0/1变量表示某个候选位置是否安装SOP二是安装容量用连续变量表示每台SOP的额定容量三是运行控制变量用连续变量表示SOP两端换流器传输的有功和无功功率。目标函数一般写成年综合成本最小包括三块SOP投资等年值成本、年运行维护成本、配电网年网损成本。SOP投资成本可以简化成固定投资加上按容量比例的投资固定部分覆盖换流器本体、控制保护等比例部分按单位容量造价算。这里有个容易忽略的点类年值折算。SOP寿命一般在20年左右计算年成本时要把一次性投资按折现因子摊到每年。折现率取8%还是6%对结果影响很大。我建议代码里把折现率和寿命做成参数不要写死方便做敏感性分析。网损成本要用电价乘以年网损电量。用典型场景代替全年时需要给每个场景一个持续时间权重比如“高峰时段”一年折算成1000小时“平段”折算成3000小时之类。这个权重如果漏了结果失真很大。我见过有人直接把几个典型场景的网损加起来当作年网损结果容量优化得偏大因为傍晚高峰的权重被高估了好几倍。4.2 约束条件约束条件里最核心的是潮流方程约束也就是SOP接入以后每个节点的功率平衡关系要重写。IEEE33这样的系统节点类型包括平衡节点、PQ节点接入DG后一般当作负的PQ注入接入SOP后要加上SOP注入功率项。SOP自身的运行约束也有两套。一套是功率平衡约束两端换流器的有功之和要等于SOP内部损耗也就是一端送出的有功等于另一端接收的有功加上损耗。简化处理时常把SOP内部损耗忽略或者用一个固定效率系数折算。另一套是容量约束每个换流器的视在功率要小于等于SOP额定容量也就是根号下有功平方加无功平方要小于等于S容量上限。系统级约束还包括节点电压上下限、支路电流上限、DG出力消纳能力等。在代码实现里这些约束一般都不做成硬性等式封装而是放到潮流计算里自然满足或者转成惩罚项加到目标函数里。比如电压越限了就在适应度函数里加一个很大的惩罚量让粒子群自动避开那些不可行解。4.3 求解思路粒子群为主、收敛判据怎么设为什么很多Matlab代码实现用粒子群而不是直接用商业求解器原因很现实IEEE33规模下这个模型是非线性混合整数规划如果直接丢给原样求解器建模复杂且容易遇到数值困难。粒子群实现简单对整数变量可以取整处理对连续性变量可以自然编码特别适合快速验证算法思路。粒子群编码方式我习惯这样设计每个粒子的位置分成两段前一段是候选位置对应的“安装倾向值”用连续变量表示大于0.5才认为安装后一段是各安装位置的容量标幺值。举个例子假设候选位置有5个粒子就是一个10维向量前5维表示5个位置的安装倾向后5维表示对应位置的容量。每次迭代时先用倾向值处理成0或1然后调潮流计算求目标函数。粒子群参数我常用的是一组保守设置种群规模50到60迭代次数80到100惯性权重从0.9线性递减到0.4学习因子c1c22。如果迭代后适应度曲线还一直在降说明迭代次数不够别急着收结果。另外粒子群初值的随机性很大同一套配置跑十次可能有十种结果所以要做多次独立运行取最优值而不是只跑一次就写进报告。5. 完整复现流程从基础潮流到结果对比5.1 基础运行状态校验拿到IEEE33数据和代码后第一步永远是跑基础潮流验证程序正确性。方法很简单不带DG、不带SOP所有联络开关断开跑一次前推回推潮流对比每个节点的电压和系统总网损。IEEE33系统在原始负荷下有一个标志性结果末端节点电压偏低系统总网损大约在200kW这个量级。不同教科书给的数值略有差异主要原因是基准容量和电压基准的取法不同但趋势应该一致。如果你的代码跑出来末端电压在0.9以下基本没问题如果跑出来是1.0平稳那大概率是负荷或支路数据接错了。我习惯在这一步同时打印两张表一张是每个节点的电压幅值一张是每条支路的功率。把支路功率表从首端往末端过一遍如果电流方向符合送端到受端的逻辑说明网络拓扑接对了。这一步做好了后面灵敏度结果才有可信度。很多复现项目最后结果对不上追根溯源都是基础潮流就没跑对。5.2 候选位置筛选与优化求解基础潮流跑通后接入DG场景设置负荷曲线和DG出力曲线然后做多场景潮流和灵敏度计算。假设你设了“光伏大发负荷高峰”“光伏小发负荷高峰”“光伏大发负荷低谷”“无DG负荷高峰”四个场景每个场景都算一遍灵敏度矩阵归一化加权以后得到每个候选位置的综合灵敏度。排序后取前3到5个位置。选定候选位置后把潮流模块、灵敏度模块的结果打包到优化模块里。粒子群每评估一个粒子要做的事是根据粒子的安装决策更新网络结构在对应节点加入SOP注入功率模型然后重新跑潮流算出新的系统网损和电压分布再套用目标函数公式得到适应度。这里有个运行效率技巧粒子群迭代过程中要做很多次潮流计算如果每次都从头开始“牛顿法雅可比求逆”会非常慢。我的做法是优化主循环用前推回推法只有在粒子群收敛后才对最优解做一次牛顿法潮流验证并把雅可比矩阵留着算灵敏度做后验分析。这样既能保证结果精度又能让整个脚本在几分钟内跑完。5.3 结果呈现与对比分析优化结束后至少要出三组结果才完整。第一组是配置方案表安装位置、容量、SOP各端口的有功无功参考值。第二组是运行效果对比配置前与配置后的系统总网损、电压最低节点标幺值和电压越限节点数。第三组是经济性分析年成本、投资回收期、单位容量带来的降损收益。用一个简单的对比表格示意指标配置前配置后系统总网损/kW基准值下降约20%~30%最低节点电压/p.u.偏低越限提升到0.95以上电压越限节点数/个若干降至0年综合成本/万元不含SOP含SOP投资与维护这个表里的具体数值取决于DG接入位置、负荷倍率、SOP造价假设不同参数设置下波动很大。我特别不建议把某个固定数字当成“标准答案”写在博客或论文里因为做这类研究时重点是方法论的可复现性而不是复现出一个雷打不动的结果数字。6. 我在复现中踩过的坑与排查手册6.1 五个高频问题第一个坑单位不统一。Matlab代码里既有国际单位又混着标幺值或者基准值前后不一致导致灵敏度数值量级悬浮。排查方法在数据模块末尾写一个assert检查例如“总负荷标幺值应等于0.3715”如果不对就立刻报错。第二个坑灵敏度符号反了。SOP注入有功功率抬高电压还是拉低电压方向取决于潮流方向和DG接入点位置。如果灵敏度矩阵求出来符号是反的排序结果完全逆过来。排查方法手动算一个简单的两节点算例对比灵敏度解析值和手算值确定符号正负后再用到33节点系统。第三个坑粒子群早熟位置拥挤在一起。典型的现象是多运行几次粒子群结果都聚集在一个组合上且适应度变化很小。原因往往是惩罚系数设置太重不可行解被一票否决粒子根本没有机会探索。解决办法是采用“欠惩罚策略”先给轻惩罚后期再逐步加大。第四个坑SOP接入后的潮流收敛变差。SOP本质上在两条馈线之间引入了可控的功率转移如果控制变量给得不合理潮流就会出现不收敛。这时候不要在优化算法里硬调而是先给定一组固定控制变量用潮流模块单独测试确认SOP模型本身没问题再交给粒子群搜索。第五个坑漏算年运行小时权重导致容量虚高。这个前面提过非常隐蔽因为代码不会报错但结果明显偏离工程合理值。排查方法就是把年成本拆开打印成表看看网损成本占比是不是合理如果占比超过90%基本是权重设置出了问题。6.2 参数配置建议我把常用参数给一组参考值方便直接起步。基准容量取10MVA基准电压取12.66kV。SOP寿命取20年折现率取8%单位容量造价取1500~2000元/kVA固定安装费按30万元/台。电价取0.6元/kWh。粒子群种群取60迭代100次。灵敏度权重α1、α2、α3先取0.4、0.4、0.2跑一遍观察排序变化再反过来复核稳定性。场景设置上如果只取三个场景建议是“典型日高峰”“典型日低谷”“DG大发时段”。三个场景的时间权重需要和负荷曲线统计口径挂钩比如高峰权重取每年1000小时低谷取3000小时DG大发取2000小时加起来不用非等于8760但要记录清楚后续报告里交代得清。7. 一些私人的复现体会这套流程我从头到尾至少跑了三遍才算是真正理清。第一遍是拿着网上的开源代码能跑顺但不知道每个变量在干什么。第二遍是自己把代码拆开从数据模块开始重写才明白灵敏度矩阵的每一行每一列代表什么。第三遍是把优化算法换掉做结果对比才理解为什么灵敏度选位置这件事不能只靠一个静态指标。如果只让我留一条建议我会说先把灵敏度模块和优化模块彻底解耦。很多做优化研究的人习惯把算法写成一团位置筛选、容量优化、潮流计算全在同一个循环里不到最后一步都不知道问题出在哪。拆开以后你可以在每个环节单独校验、单独出图调试体验完全不一样。最后再提一个扩展方向IEEE33节点系统验证通过的方法完全可以平移到大一点的配电网测试系统比如IEEE123节点系统只改数据模块和候选位置枚举方式灵敏度分析和优化配置的主框架不用动。如果你的项目时间充裕建议把接口定义好比如用统一的“bus、branch、scenario”三个结构体作为各模块之间的约定以后换算例基本是半小时的事。做这类研究最大的收获不是那个最优配置方案而是你真正理解了一个系统在十几个候选位置、几十个运行场景下到底哪些位置值得装设备、装多大容量、每年能省多少网损。把这些逻辑讲清楚比堆一堆复杂的智能算法名词有价值得多。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →