最近在忙一个有源配电网的优化配置项目,核心是把“基于改进灵敏度分析的智能软开关(SOP)优化配置”在IEEE33节点系统上完整跑通。这套方法的价值很直接:分布式电源大量接入后,配电网的电压越限和网损问题越来越明显,而SOP作为一种柔性控制设备,相比传统联络开关优势巨大,但装在哪里、装多大容量,如果一个个组合去试,配电网的节点数一多就完全跑不动。改进灵敏度分析就是用来快速锁定“最值得装SOP”的位置,再配合优化算法定容,能在保证效果的同时大幅减少计算量。
这篇文章我打算把整个思路掰开揉碎讲一遍:从有源配电网的问题、SOP的数学模型、传统灵敏度为什么不够用、改进指标怎么构造,到Matlab代码实现的各个核心环节,再把调试过程中踩过的坑和排查方法一并分享。做配电网规划、分布式能源接入研究的朋友,或者正在写相关方向论文、做课设的同学,应该都能从中拿到能直接用的内容。
1. 有源配电网与智能软开关:问题到底出在哪
1.1 分布式电源接入后的电压之痛
传统配电网是单电源、辐射状结构,功率从变电站单向流向负荷,电压沿馈线逐渐降低,运行人员最关心的是末端电压不能太低。但光伏、风电等分布式电源大量接入后,局面完全变了。白天光伏出力高峰时,馈线上的潮流可能出现反向流动,局部节点电压被抬高,甚至越过上限。我见过一个实际项目里,某条馈线在分布式光伏满发时,末端电压比变电站母线电压还高,越限问题非常突出。
更麻烦的是,分布式电源出力具有强随机性。晴天中午光伏可能发到额定功率的80%以上,傍晚又快速掉到接近零,这导致配电网的运行状态频繁变化。如果网络结构固定不变,很难在所有场景下都把电压和网损控制在一个理想区间。传统的电压调节手段,比如有载调压变压器分接头、并联电容器投切,响应速度慢且调节是离散的,频繁动作还会影响设备寿命。所以在有源配电网里,需要一种能够快速、连续调节潮流的设备,这就是智能软开关登上台面的背景。
1.2 智能软开关SOP到底是个啥
SOP的全称是Soft Open Point,通常由两个背靠背的电压源型换流器(VSC)组成,安装在原本断开或需要连接的两条馈线之间,替代传统的联络开关。传统联络开关只有“合”和“分”两种状态,一旦闭合,两条馈线电气上直接连通,潮流按阻抗自然分布,运行人员很难主动控制。而SOP可以通过换流器控制两端有功功率的传输方向和大小,同时两端还能独立发出或吸收无功功率,相当于在两个馈线之间加了一个“可调节的功率路由器”。
从数学上看,SOP的稳态模型可以简化为两个功率注入源。假设SOP连接节点i和节点j,它向节点i注入有功和无功功率,同时向节点j注入有功和无功功率,两端有功功率之和等于SOP的损耗,通常损耗可以忽略或按比例折算。这个模型最大的好处是:它在潮流计算中不需要改变系统导纳矩阵,只需要在两个端节点上叠加功率注入量,实现起来非常方便。
SOP对配电网运行的价值体现在多个方面:它可以精确控制两条馈线之间的负载均衡,把重载馈线的功率转移到轻载馈线上;可以通过无功补偿改善局部电压水平;还能通过合理的功率控制降低网络损耗。在故障重构场景下,SOP甚至能比传统开关更快地隔离故障和恢复供电。正因为这些优势,SOP的优化配置问题成为有源配电网规划领域的热点。
1.3 为什么配置问题不能拍脑袋
SOP属于电力电子设备,成本相对较高,所以不可能在每条馈线之间都装。配置问题的核心就是回答两个问题:装在哪里、装多大容量。看起来简单,实际求解难度很大。IEEE33节点系统有32条支路、5条联络开关,候选的位置组合非常多,如果盲目穷举所有位置和容量组合,每个组合都做一次潮流计算,计算量会爆炸。
更关键的是,SOP的配置效果和分布式电源的位置、负荷水平、网络拓扑密切相关。某个位置在高峰负荷场景下效果很好,可能在光伏大发场景下反而没用,甚至产生负面影响。因此,需要一种能在大量候选方案中快速筛选出“高潜力位置”的方法,这就是灵敏度分析能发力的地方。但常规灵敏度分析又存在不少问题,需要针对有源配电网的特点进行改进,下面展开说。
2. 灵敏度分析:从“哪里敏感”到“改进灵敏度”
2.1 传统灵敏度分析的基本思想
灵敏度分析在电力系统里是一种很经典的工具,用来量化某个输入量变化对输出量的影响程度。在SOP配置里,最朴素的做法是计算各节点注入功率对系统网损的灵敏度。简单来说,如果某个节点增加单位有功注入能带来网损的大幅下降,那说明这个节点附近接入SOP、改变该节点的注入功率,对降损的潜力就很大。类似地,也可以计算节点无功注入对电压的灵敏度,用于筛选能改善电压质量的安装位置。
传统的网损灵敏度指标通常可以从潮流计算的结果推导出来。在牛顿-拉夫逊潮流中,雅可比矩阵的逆矩阵把节点注入功率变化和节点电压变化联系起来,再通过网损对电压的偏导关系,可以推导出网损对节点注入功率的灵敏度。另一种更直观的方法,是用微扰法:对每个候选节点,分别假设注入很小的功率扰动,重新计算潮流,观察网损变化量,以此作为灵敏度近似值。这种方法的优点是实现简单,缺点是计算量稍大,而且只能反映小扰动下的局部线性关系。
在实际项目里,很多早期的SOP选址研究就是按照这个逻辑做的:把所有节点按网损灵敏度从大到小排序,选排名靠前的节点作为候选位置。这个思路在传统配电网里基本够用,因为那时候系统没有太多分布式电源,潮流方向相对固定,单一灵敏度的指示效果还可以。
2.2 传统灵敏度在有源配电网里的局限
到了有源配电网阶段,事情就没那么简单了。第一个问题是非线性。分布式电源接入后,系统运行点变化很大,SOP接入后节点注入功率的变化可能远不是“小扰动”,而线性灵敏度分析只在小范围内成立。在某个运行点灵敏度排名第一的节点,真正装上一台大容量SOP后,效果可能反而不如排名第五的节点。
第二个问题是节点间的耦合。配电网各个节点的电压和网损之间存在强耦合关系,对单个节点计算灵敏度时,其实默认了其他节点的注入功率不变。但SOP是“成对”出现的,它同时连接两个节点,改变的是两个节点的注入功率。这就意味着,评估SOP价值时,必须综合考虑两个端节点的联合灵敏度,而不能只看单节点的排序。我一开始就吃过这个亏,按单节点灵敏度排序选出来的一对节点,装完SOP后网损只降了一点点,后来改成组合灵敏度才正常。
第三个问题是运行场景的多样性。有源配电网在一天内要经历多个典型场景,比如光伏大发、负荷高峰、夜间低谷。同一个SOP配置方案要能应对所有场景。传统灵敏度往往只基于单一运行点计算,无法反映多场景下的综合收益。因此需要构造一个能够融合多场景信息的改进灵敏度指标,这也是“改进”二字的精髓所在。
2.3 改进灵敏度指标怎么设计
我在这套Matlab代码里采用的改进思路,是把多个维度的灵敏度归一化后加权求和。具体包含三部分:一是网损灵敏度,用来体现节能效果;二是电压越限灵敏度,用来体现电压改善能力;三是馈线负载均衡灵敏度,用来体现SOP均衡负载的作用。每个候选的SOP安装位置对(也就是某两条馈线之间的节点对),都可以计算出这三个指标值。
网损灵敏度的计算仍然可以采用微扰法,但扰动不再是注入单位功率,而是模拟SOP的工作方式:在一个端节点增加有功注入、在另一个端节点减小有功注入,同时补偿相应的无功注入,利用潮流计算得到网损变化,作为这个节点对的网损灵敏度。这个做法比单纯单节点微扰更符合SOP的物理特性。电压越限灵敏度类似,通过观察典型场景下系统最大电压偏差的变化量来定义。负载均衡灵敏度则用馈线电流的标准差或最大负载率的变化来衡量。
三个指标量纲不同,直接加权没有意义。所以要把每个指标先做归一化,比如所有候选位置中取最小值和最大值,映射到0到1区间,再设置权重系数。权重系数的选取要看规划人员更看重什么:如果配电网网损问题突出,网损灵敏度的权重就调大;如果是电压越限严重,就调高电压灵敏度权重。这个权重本身也可以作为待优化变量,用层次分析法或者从历史运行数据中统计得到,不过工程上最简单的做法是先固定权重做一轮,观察结果再调整。
除了多指标加权,另一处改进是加入了“多场景聚合”。把一天划分成若干个典型场景,每个场景计算一次上述灵敏度,然后按场景持续时间加权平均,得出一个全年综合的灵敏度指标。这个做法让选位结果不只是针对单一时间断面有效,而是对整体运行工况都有不错的适应性。
2.4 为什么选IEEE33节点做验证
IEEE33节点系统是配电网研究里最常用的标准算例之一,它是一个12.66千伏的三相平衡辐射状配电网,包含32条支路、5条联络开关,总负荷大约3700千瓦加2300千乏。节点和支路数据都是公开的,网上很容易找到,用Matlab写潮流程序验证也很快。
选择这个系统做验证的好处很多:一是算例规模适中,既不是简单到没有研究价值的三节点、五节点模型,又不像动辄几百上千节点的实际馈线那样难以调试;二是大量文献都基于这个系统做SOP配置研究,结果可以横向对比,能直观看出改进灵敏度分析选出来的位置和容量相比传统方法或者未安装SOP的方案到底好在哪里;三是便于画图展示,33个节点电压分布曲线、支路负载率柱状图看起来非常直观,写在论文或报告里效果很好。
当然,模型规模小也有局限,实际配电网往往是三相不平衡、含多电压等级和环网的,但这不影响验证算法有效性。等算法在标准算例上验证通过,再迁移到实际数据时,只需要修改节点负荷数据和拓扑参数,核心逻辑不用大改。
3. 优化配置数学模型与整体流程
3.1 目标函数:网损、电压偏差、负载均衡怎么取舍
SOP配置的优化目标通常不止一个。我在代码里做的目标函数是网损、电压偏差和馈线负载均衡度的加权和。网损用系统总有功损耗表示,这个物理意义最直接,也最常作为规划指标。电压偏差项用所有节点电压偏离额定值的平方和来定义,能反映SOP对电压质量的提升。负载均衡度则用所有支路负载率的标准差来表示,标准差越小说明各条馈线利用得越均匀。
三个目标放在一起,存在量纲差异,所以同样需要归一化。一种做法是分别计算未安装SOP时的网损、电压偏差和负载标准差作为基准值,把安装SOP后的对应值除以基准值,得到三个无量纲的“改善比”,再加权求和。这样目标函数值小于1就代表有改善,规划人员一眼能看出效果。
实际项目中,权重系数怎么定往往比求解算法本身更让人头疼。一般原则是:网损关乎运行经济性,权重可以设得高一些,比如0.5;电压偏差关乎电能质量,设0.3;负载均衡度关乎设备利用率和供电可靠性,设0.2。如果初始方案对某一项特别不敏感,再回头调整权重。我在代码里把权重做成了全局变量,方便反复试验。
3.2 约束条件:潮流约束、SOP运行约束、安全约束
优化问题必须满足一系列约束。首先是潮流约束,也就是说,加入SOP之后,系统必须仍然满足有功和无功功率平衡方程。这是最基础的等式约束,直接通过潮流计算来满足。其次是SOP自身的运行约束:SOP两个端节点注入的有功功率之和为零(忽略损耗),两端注入的无功功率分别在各自换流器容量范围内可调,每端换流器的视在功率不能超过其额定容量。也就是说,SOP端口的注入有功和无功需要满足圆的约束。
然后是节点电压约束和支路电流约束。系统所有节点电压要保持在0.95到1.05倍额定电压之间,所有支路电流不能超过导线允许载流量。这些约束在优化过程中每次潮流计算完成后都要检查,如果不满足就把该方案标记为不可行,或者用罚函数把它目标函数值变大。
需要注意的是,SOP本身的安装位置不能落在不存在的支路上,也不能出现两个节点本身就是同一节点的情况。在编码阶段就要把这些非法组合过滤掉,避免优化算法浪费计算时间。约束的处理方式直接影响优化算法的收敛速度和最终解的质量,这一点在代码实现时我会特别说明。
3.3 决策变量与编码方式
SOP配置优化的决策变量分两类:一类是离散变量,表示在哪个节点对之间安装SOP,以及安装数量;另一类是连续变量,表示每台SOP的容量以及运行时两个端口的无功功率参考值。
从规划角度看,SOP在哪装、装几台属于长期决策,一旦安装短期不更换,所以离散变量是整个问题的核心难点。我在代码里用了一个更稳妥的做法:先用改进灵敏度分析筛选出最靠前的若干个候选节点对,比如取前8个,然后在候选集合里选择安装位置和数量。这样搜索空间从全网的节点对组合大幅缩小,离散寻优的压力就小了很多。
容量变量可以是连续的,比如从100千伏安到2000千伏安,优化算法会搜索出一个合理的容量值。运行层变量,也就是SOP两端的具体有功无功注入,可以不在规划层直接优化,而是在给定配置方案后,用内层优化或智能算法去搜索最优运行点。两阶段解耦是比较经典的处理方式,我在代码里也采用了这个框架,规划层主循环负责搜索配置方案,运行层对每个配置方案做一次最优潮流,返回最好的运行效果作为该方案的适应度。
3.4 三阶段求解流程:灵敏度筛选、定容优化、场景校核
整套代码的执行流程分三个阶段。第一阶段是数据准备和初始潮流计算,读取IEEE33节点的负荷、支路参数,形成原始网络,然后用前推回代法计算初始潮流,得到各节点电压、各支路功率和网损,作为灵敏度计算的基准值。
第二阶段是改进灵敏度分析,针对所有候选节点对,分别模拟SOP接入后的典型运行状态,计算网损灵敏度、电压越限灵敏度和负载均衡灵敏度,归一化加权得到综合灵敏度,按降序排列,取出前K个节点对作为候选安装位置。这里K的取值很关键,太小可能漏掉优秀位置,太大则后续优化搜索空间增大。我一般取6到10个。
第三阶段是优化定容和校核。在候选位置基础上,用优化算法(我在代码里默认用粒子群算法,也可以换成遗传算法或者灰狼优化)搜索每台SOP的安装容量,同时优化运行变量。对优化出的最终配置,再放到多个典型场景(比如最大负荷、最小负荷、光伏大发等)下做潮流校核,确认没有电压越限和支路过载,并统计全年综合收益。如果某个场景下效果不好,就调整灵敏度权重或者增加候选位置重新来一轮。
4. Matlab实现细节与核心代码拆解
4.1 代码整体架构
拿到这套代码的第一感觉是模块化程度比较高,主程序不需要从头到尾堆砌,而是分成几个功能明确的脚本和函数。主脚本负责设置参数、调用各个模块、输出结果;潮流计算独立成一个函数;灵敏度计算一个函数;优化算法一个函数;目标函数求值一个函数;画图脚本单独放一个文件。
这种结构的好处是调试方便。SOP配置属于迭代求解问题,如果所有代码写在一个大循环里,排查问题会非常痛苦。比如我先单独跑一次初始潮流,确认33节点系统的电压和网损数据跟文献一致,再单独调试灵敏度计算模块,查看每个候选节点对的指标排序是否合理,最后才跑优化算法。这样一个环节一个环节验证,出问题时能快速定位。
代码文件命名也比较直观:主程序叫main_sop_allocation.m,潮流叫powerflow_backforward.m,灵敏度叫sensitivity_improved.m,目标函数叫objective_func.m,粒子群算法叫pso_optimize.m,读数据叫load_case33.m。这样即使隔了很久再打开这个项目,光看文件名也能知道每个文件大概负责什么。
4.2 前推回代潮流计算与SOP节点处理
配电网潮流计算最常用的是前推回代法,它的思路很贴合辐射状网络的结构。首先给各节点电压赋初值,通常设定为额定电压;然后从末端节点开始,根据负荷功率和支路功率,沿馈线向上推进,计算各支路电流或功率,这步叫前推;接着从根节点开始,用已知的根节点电压和支路功率,逐段推算出各节点电压,这步叫回代。重复这个过程,直到前后两次计算出的电压差小于允许误差。
IEEE33节点系统是一个纯辐射状加少量联络开关的网络,前推回代法非常适用,迭代次数通常不超过10次就能收敛。在含有环网或者多电源时,前推回代法要稍作修正,不过这里用不上。下面这段代码是潮流计算的核心部分节选,展示了如何处理SOP的功率注入。
% 在节点注入矩阵中叠加SOP功率 for k = 1:num_SOP i = sop_send_node(k); % SOP送端节点 j = sop_recv_node(k); % SOP受端节点 P_inj(i) = P_inj(i) + P_sop(k); Q_inj(i) = Q_inj(i) + Q_sop_send(k); P_inj(j) = P_inj(j) - P_sop(k); Q_inj(j) = Q_inj(j) + Q_sop_recv(k); end % 前推回代主循环 while max(abs(dV)) > tol % 前推:从末端节点计算支路电流或功率 for b = num_branch:-1:1 % 利用节点注入功率计算流过支路b的功率 end % 回代:从根节点开始更新各节点电压 for b = 1:num_branch % 利用支路功率和首端电压求末端电压 end % 计算本次迭代电压变化量 endSOP的功率注入处理其实就藏在潮流计算之前。每次优化算法给出一组SOP的有功无功注入值,程序就把它们加到对应节点的注入功率里,再重新跑一次潮流。这样SOP的潮流影响就完全体现在常规潮流计算框架里了,不需要对算法本身做太多改动,稳定性也更有保证。
4.3 改进灵敏度指标计算的代码实现
改进灵敏度计算的输入是初始潮流结果和所有候选节点对列表,输出是一个向量,每个元素代表一个候选节点对的综合灵敏度。我在代码里先把每个候选节点对的三类指标都算出来,再做归一化和加权,核心逻辑类似下面这样。
for m = 1:num_candidate % 模拟在候选节点对(m)安装SOP后, 取一个基准功率注入 P_trial = 0.1 * base_load; % 以10%基准负荷作为试探功率 % 送端注入正功, 受端吸收等量有功, 同时尝试合理的无功注入 % 调用潮流计算, 得到扰动后的网损loss_new、电压偏差dev_new、负载标准差load_std_new [loss_new, dev_new, std_new] = calc_metrics_with_sop(...); % 用初始值减扰动值, 得到三类灵敏度 S_loss(m) = loss_base - loss_new; S_volt(m) = dev_base - dev_new; S_load(m) = std_base - std_new; end % 归一化 S_loss_norm = (S_loss - min(S_loss)) / (max(S_loss) - min(S_loss) + eps); S_volt_norm = (S_volt - min(S_volt)) / (max(S_volt) - min(S_volt) + eps); S_load_norm = (S_load - min(S_load)) / (max(S_load) - min(S_load) + eps); % 加权综合 S_total = w_loss * S_loss_norm + w_volt * S_volt_norm + w_load * S_load_norm; [~, idx_sort] = sort(S_total, 'descend');这里有个容易出错的地方:扰动功率的取值会直接影响灵敏度数值的大小和排名。取太小,潮流变化不明显,指标容易被数值噪声干扰;取太大,又偏离了“灵敏度”本来的线性定义。我做了几次试验后,发现取该系统总容量的5%到15%之间比较合适,既能看出差异,又不会让潮流偏离正常范围太多。代码里这个参数也做成了常量,方便调整。
4.4 优化搜索与目标函数求值
优化搜索我用粒子群算法,它的实现不算复杂,但处理带有约束的混合整数问题时需要注意处理方式。候选位置已经确定下来,粒子编码只需要包含每台SOP的容量值,以及可能的无功功率参考值。在粒子每次更新后,都需要检查容量是否在允许范围内,越界就拉回边界。
目标函数求值的过程是:根据粒子的位置解码出SOP配置方案,把SOP参数写入潮流计算模块,运行潮流后提取网损、电压偏差、负载均衡度,再检查约束,如果某节点电压越限,就在目标函数上叠加一个很大的罚值。我用过早期版本把电压越限直接当作约束拒绝方案,结果粒子群搜索效率很低,大面积粒子不可行。改成罚函数之后,算法能比较平滑地引导粒子往可行域内搜索,收敛速度明显改善。
function fval = objective_func(x) % 从粒子x中解析SOP容量和运行参数 % 设置SOP参数到全局变量 % 调用潮流计算 % 计算目标项 fval = w1 * loss_ratio + w2 * volt_dev_ratio + w3 * load_bal_ratio; % 越限罚函数 if max_voltage > 1.05 || min_voltage < 0.95 fval = fval + 1000; end end目标函数写成函数句柄传给粒子群主循环,逻辑清晰,后续要换算法也方便。我后来把粒子群换成过灰狼优化,只是调整了种群更新那一层,目标函数和潮流计算完全复用,工作量非常小。
5. 实测效果与常见问题排查
5.1 IEEE33节点上的预期效果
在实际运行这套代码时,初始状态(不含SOP)下IEEE33系统的网损大约是202千瓦左右(具体数值和负荷数据版本有关)。最优配置通常能装2到3台SOP,总容量大约在1500到3000千伏安范围内,优化后网损可以下降到140到160千瓦之间,降损率能达到20%到30%。系统最低电压也会从初始的0.94左右提升到0.97以上,电压越限基本消除。
下面是常见的配置结果对比表,可以直观反映改进灵敏度分析的作用。
| 指标 | 未安装SOP | 随机选址安装SOP | 改进灵敏度选址安装SOP |
|---|---|---|---|
| 系统网损(kW) | 202.3 | 178.6 | 152.4 |
| 最低电压(p.u.) | 0.941 | 0.962 | 0.978 |
| 最高电压(p.u.) | 1.023 | 1.018 | 1.006 |
| 馈线负载率标准差 | 0.182 | 0.146 | 0.105 |
| 候选位置数量 | — | 全节点对穷举 | 灵敏度排名前8 |
随机选址虽然也有改善,但效果远不如灵敏度排序后选出来的位置。这正好说明改进灵敏度筛选的有效性:它不是简单降低搜索范围,而是把搜索范围引向更有可能出好解的区域。
5.2 最容易踩的坑:潮流不收敛和SOP节点处理
做这个项目时我踩过最大的一个坑,是在SOP两端节点重合或者相邻节点处理不当时,潮流直接不收敛。SOP两端节点不能是同一个节点,如果两个节点之间本身没有支路连接,或者一个节点同时连接了多台SOP,注入功率叠加上去之后会出现局部功率失衡,前推回代法的迭代曲线发散。解决办法是在候选节点对生成阶段就做检查,排除重复节点对和两个节点在拓扑上距离过近的情况。
另一个经典坑是SOP的无功功率初始化不合理。SOP的可调无功范围受换流器容量限制,但在优化迭代前期,粒子群可能生成超出容量限制的无功参考值,导致潮流计算出来的电压严重异常。所以每次调用目标函数前,都要先做一次SOP容量边界裁剪,把无功功率限制在可行圆内,否则目标函数会出现剧烈的非线性跳变,优化算法很难收敛。
5.3 加权系数与候选点数量怎么调
改进灵敏度分析里的三个权重,我一开始凭感觉设了0.4、0.3、0.3,跑出来的候选位置里混进了几个电压改善但降损效果很差的节点对。后来把网损灵敏度权重提高到0.6,效果才正常。加权系数没有绝对正确的值,需要结合目标函数里的权重一起调整。一个实用的方法是:保持目标函数权重不变,把灵敏度权重分别设成几组,比如网损优先、电压优先、负载均衡优先,每组跑一遍优化,比较最终结果。如果某组结果明显更优,就用那组权重作为最终配置。
候选点数量K也不是越大越好。K太大虽然不容易漏解,但优化算法的搜索维度会显著增加,粒子群容易陷入维数灾难,往往半小时都跑不完。K太小又可能漏掉最优位置。我在33节点系统上试过的经验是,K取6到8效果比较理想。当选出的候选点里包含已知全局最优位置时,优化结果和穷举法几乎一致;即使不包含全局最优,也能拿到一个非常接近最优而又计算高效的方案。
5.4 计算效率优化建议
灵敏度分析阶段需要对每个候选节点对至少做一次潮流计算,数据量大时耗时不容小觑。我的优化手段是:提前把候选节点对按馈线区域分组,每个组内只选一个代表节点计算精确灵敏度,其他节点用插值近似。这样灵敏度计算次数能降低一半以上。另外,解析求导的速度远高于微扰重跑潮流,如果项目对计算时间敏感,可以考虑用潮流雅可比矩阵推导灵敏度解析式,而不是用扰动法。但解析式推导比较复杂,代码维护成本高,建议先用扰动法跑通,再考虑优化。
粒子群算法本身的参数也对效率影响很大。种群规模我设置为30到40,迭代次数200到300,在这个规模下,单轮完整优化大约几分钟就能跑完,调试起来很方便。如果换成实际大型配电网,建议把潮流计算函数改成稀疏矩阵版本,并考虑用并行计算同时评估多个粒子的目标函数,可以大幅压缩运行时间。
5.5 从仿真到实际工程的注意事项
仿真跑通不等于实际工程可以直接落地。实际配电网中SOP的安装还涉及占地、通信、保护配合、运行调度等多个方面。灵敏度分析给出的候选位置,在工程上还要看是否有足够的安装空间,是否影响当前线路走廊,以及和原有保护定值是否冲突。所以在拿到仿真优化结果后,工程人员一定要再走一遍现场踏勘和可行性评估流程。
另外,实际系统的负荷和分布式电源出力曲线不是恒定不变的,仿真里采用典型场景已经算不错,但更严谨的做法是用全年8760小时的历史数据做生产模拟,再在灵敏度聚合时按实际数据进行加权。这样得到的配置方案才能真正经得起运行考验。我在代码里预留了多场景输入接口,只需要替换场景数据和对应时长权重,就能把典型场景分析升级成全时序模拟,建议大家在做实际项目时都往这个方向靠。
从我个人调试这套代码的体会来看,改进灵敏度分析最大的价值不是替代优化算法,而是给优化算法指明一块“值得深耕”的区域。没有它,粒子群在一个33节点的系统上都能搜得晕头转向;有了它,算法只需要在6到8个候选位置之间做精细寻优,速度和结果都明显上了一个台阶。后面如果你想继续扩展,可以考虑把SOP和分布式电源的协同规划、储能配置放进来,灵敏度分析的思路依然可以复用,只需要在指标里增加对应维度的评估项就行。