ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于改进灵敏度分析的配电网智能软开关优化配置

基于改进灵敏度分析的配电网智能软开关优化配置 1. 项目概述改进灵敏度与智能软开关配置的思路解构有源配电网的网损和电压问题很多做配电网规划的同学一开始都会想到用调压器、无功补偿或者网络重构来解决。但在分布式光伏、风电大规模接入的IEEE33节点这类有源配电网里传统联络开关只有合和分两种状态根本没法连续调节潮流。于是智能软开关SOP成了一个热门选项。SOP能像“柔性开关”一样在不改变拓扑的前提下连续控制流过它的有功和无功功率可以显著降低网损、缓解电压越限。但这个装置贵不能每一条支路都装必须把有限的投资放在最该放的地方。怎么找最该放的地方本项目采用改进灵敏度分析在传统网损灵敏度的基础上融合DG出力变化和电压风险快速筛选安装位置再用优化算法确定容量整套流程在Matlab中基于IEEE33节点系统实现。这不是一个“按部就班跑一遍就结束”的小作业。灵敏度分析的价值在于降维IEEE33节点有33个母线、32条常规支路和5条联络开关如果直接用智能算法同时优化位置和容量组合空间巨大。先通过改进灵敏度把候选位置缩小到几个再对候选位置做精细优化速度和稳定性都会好很多。本项目最核心的不是Matlab代码本身而是“为什么改进灵敏度能比传统灵敏度更符合有源配电网的实际”。想清楚这一点换到IEEE69节点、PGE系统甚至实际馈线思路依然成立。1.1 智能软开关解决什么问题先理清SOP到底有什么用。传统配电网里馈线之间一般通过联络开关连接平时断开故障时合上恢复供电。这种开关只能处于0或1状态无法对正常运行时的潮流做柔性调节。在DG接入后馈线之间的功率流向和电压分布随出力波动传统开关很难应对。SOP是由两个背靠背电压源换流器构成两端分别接在两条馈线上可以控制流经有功功率的大小和方向同时向两端馈线输出无功功率。也就是说它可以连续调节相位差把重载馈线的功率转移到轻载馈线上也能在电压偏低时给系统补无功。SOP与传统联络开关的差异非常明显我经常用这张表给入门的人讲项目传统联络开关智能软开关SOP可控变量开关状态0/1有功转供、无功输出连续调节速度秒级动作次数受限毫秒级可频繁调节对潮流影响改变拓扑调整幅度大且离散平滑改变功率分配不影响拓扑无功支撑基本无法提供两端均可输出无功造价与维护低高需电力电子装置适合场景故障转供、简单重构高DG渗透率、电压越限、降损正是因为SOP造价高才需要“优化配置”。如果只装一两个SOP装在哪、容量多大直接决定了投资能不能收回。这属于典型的选址定容问题位置离散、容量连续、潮流非凸直接搜全空间会非常慢。用灵敏度分析先筛位置是工程上行之有效的做法。1.2 为什么需要“改进”灵敏度传统灵敏度分析常用于配电网无功补偿选址计算网损对某个节点注入功率的导数导数大的节点说明对降损影响大优先在这里装设备。这个做法在纯负荷配电网里很好用因为潮流方向相对固定DG很少甚至没有。但到了有源配电网情况变了。DG随机出力会让不同时段的最大网损节点、电压最薄弱节点完全不同。如果你只用一个固定基准潮流算一次灵敏度很可能选出的位置在光伏中午满发时并不好用甚至会让网损增加。“改进”主要体现在两个层面。第一场景意识把DG出力和负荷水平按典型场景划分每个场景算一遍灵敏度再按概率加权得到“期望灵敏度”。这比单点灵敏度更鲁棒。第二电压感知有源配电网的瓶颈往往不只是网损还有电压越限。如果一个节点网损灵敏度不高但却是电压最低点装SOP能提供无功支撑、提升电压这同样是高价值位置。所以改进灵敏度会在原网损灵敏度之外叠加上电压越限风险惩罚项把“降损”和“稳压”两个目标同时纳入筛选指标。2. 数学模型与灵敏度计算从网损灵敏度到改进灵敏度2.1 目标函数与约束条件怎么写SOP配置的核心目标不是单纯让网损最小而是让综合成本最低、运行效果最好。我把目标函数写成下面的形式$$ \min F C_{inv}(S_{SOP}) C_{loss}(P_{loss}) \lambda_V \cdot V_{penalty} $$其中 $C_{inv}$ 是SOP投资折算到每年的费用$C_{loss}$ 是年网损费用$V_{penalty}$ 是电压越限惩罚量$\lambda_V$ 是权重系数。如果只做学术研究很多人会直接把目标简化为最小化网损再单独看电压质量。但涉及工程投资必须给SOP容量定个价否则优化结果会拼命把容量往大了取看起来网损很低实际上根本买不起。约束条件分两类。一类是潮流等式约束即节点有功、无功平衡方程这个在Matlab里由潮流计算函数保证。另一类是运行不等式约束节点电压上下限$0.93 \le V_i \le 1.07$标幺值支路电流上限SOP容量约束$|P_{SOP}| \le S_{SOP}$且 $ \sqrt{P_{SOP}^2 Q_{SOP}^2} \le S_{SOP} $SOP两端有功功率平衡$P_{SOP,i} P_{SOP,j} P_{loss}^{SOP} 0$。工程上SOP内部损耗常按传输有功的2%进行近似即 $P_{loss}^{SOP} 2%(|P_{SOP,i}| |P_{SOP,j}|)$。在优化时我会把这个等式约束作为等式条件处理避免出现虚假的“凭空产生功率”。2.2 网损灵敏度的两种实现方法网损灵敏度是指当节点注入的有功或无功发生微小变化时系统总网损的边际变化率。严格推导可以通过潮流雅可比矩阵的逆来得到也就是伴随方程法。这种方法数学上很漂亮但需要处理复数求导、雅可比矩阵维度等问题代码容易写错而且当场景一多每次都要重新算雅可比容易把人劝退。我实际在Matlab里更推荐用扰动法。思路很直白在某个潮流运行点下对第 $i$ 个节点注入一个微小的有功增量 $\Delta P_i$重新做一次潮流计算得到网损变化量 $\Delta P_{loss}$然后计算$$ LS_i \frac{\Delta P_{loss}}{\Delta P_i} $$这个公式就一句话但实现时有个细节扰动步长不能太小。前推回代潮流的收敛精度通常在 $10^{-6}$ 量级如果 $\Delta P_i$ 取1kW甚至更小算出来的网损差会淹没在潮流迭代误差里。我一般取 $\Delta P_i 0.01$MW即10kW对IEEE33节点系统来说这个值大概是总有功负荷的0.27%扰动前后两次潮流计算能稳定看到网损差。如果基准容量是10MVA这个扰动对应0.001p.u.既不会破坏潮流收敛也不会让结果失真。同样道理如果要计算无功灵敏度就对节点注入 $\Delta Q_i$再算网损差。有源配电网里DG并网逆变器既能发有功又能发无功所以无功灵敏度和有功灵敏度要分开算后续筛选时再按需组合。2.3 改进灵敏度的具体构造改进灵敏度不能只用一个数而应该是一个综合指标。我在项目里是这样做的。首先定义DG出力场景集。比如对于光伏和风电按额定出力的比例划分三个典型场景低出力30%、中出力60%、高出力90%并给每个场景一个概率 $p_s$。如果有负荷曲线也可以把负荷水平一起纳入形成比如“高光伏高负荷”“低光伏轻负荷”等组合场景。场景不用太多三到五个就够太多会显著增加计算量。对每个场景 $s$在候选节点 $i$ 上做一次扰动得到两个指标网损灵敏度 $LS_{i,s} \Delta P_{loss,s} / \Delta P_{i,s}$电压灵敏度 $VS_{i,s} \Delta \sigma_s / \Delta P_{i,s}$其中 $\sigma_s$ 是该场景下全网最大电压偏差或者电压越限节点数。然后按场景概率加权得到改进灵敏度$$ ISF_i \sum_s p_s \left( LS_{i,s} \alpha \cdot VS_{i,s} \right) $$这里的 $\alpha$ 是电压风险权重。如果不关心电压问题$\alpha$ 取0就退化成多场景网损灵敏度。“改进”的关键就是把这个 $\alpha$ 项加进去。我在有源配电网里一般取0.3左右如果系统本身电压问题严重可以取到0.5。怎么调呢先算一版纯网损灵敏度和纯电压灵敏度观察两者量级再把 $\alpha$ 让电压项的贡献和网损项相当。合理设置后ISF大的节点通常同时具备“降损明显”和“电压支撑价值高”的特点。2.4 为什么用多场景加权而不是单一潮流很多人会问如果DG出力正好处于高场景那直接在高场景下算灵敏度不就行了吗现实中DG出力是连续随动的光伏可能上午满发、下午骤降风电可能一整夜都在波动。如果只用单一场景相当于默认未来只有一个运行方式。设想一种情况某节点在光伏不出力的夜间网损灵敏度很高但在白天光伏满发时由于附近DG把电压抬高了灵敏度变得很低。如果按夜间灵敏度选它白天SOP可能处于闲置或低效状态反之多场景加权会把不同时段的贡献都考虑进去选出的位置虽然不是在每个场景下最优但综合期望最好。这符合有源配电网“源随荷动、随机波动”的实际运行特性。3. Matlab实现全流程从IEEE33节点数据到优化结果3.1 IEEE33节点系统数据准备项目从IEEE33节点系统开始。这个测试系统的基准电压12.66kV基准容量常用10MVA全网包含33个节点、32条支路还有5条联络开关支路。原始数据里支路电阻、电抗都是欧姆值负荷单位是kW/kvar。我在Matlab里一般习惯把单位统一成MW/Mvar再用下面这段代码做标幺化Sb 10; % 基准容量 MVA Ub 12.66; % 基准电压 kV Zb Ub^2 / Sb; % 基准阻抗 Ohm bus [ 1 0 0 0 2 0 0.1000 0.0600 ... ]; branch [ 1 2 0.0922 0.0470 2 3 0.4930 0.2511 ... ]; % 标幺化 branch(:,3) branch(:,3) / Zb; % R branch(:,4) branch(:,4) / Zb; % X注意IEEE33节点数据在不同文献里略有差异一定要核对好自己用的那套数据。我常用的是总负荷有功3.715MW、无功2.3Mvar的版本。DG接入时我直接在对应节点的负荷功率上减去DG出力输出为正时视为负的注入如果DG需要设成PV节点还要额外处理无功迭代这容易造成收敛问题所以初版代码我全部按PQ恒功率DG处理。3.2 前推回代潮流与网损计算配电网潮流和输电网不一样线路电阻电抗比值较大用牛顿-拉夫逊法有时候初值给不好会收敛慢。前推回代法是配电网最经典的算法原理简单从根节点出发先假设所有节点电压为额定值从末端往根节点回推支路电流再根据支路电流和线路参数从根节点往末端推电压反复迭代直到收敛。下面是核心潮流函数的结构function [V, P_loss, iflag] pf33(bus, branch, S_dg) % bus: 节点数据包含负荷 % branch: 支路数据包含首末端节点和阻抗标幺值 % S_dg: DG注入复功率复数向量节点n处为 S_dg(n) n size(bus, 1); V ones(n, 1); % 电压初始标幺值 S_load bus(:,3) 1j * bus(:,4); % 复负荷 S_inj -S_load S_dg; % 节点注入功率 branch [branch; 联络开关支路数据]; % 如果有闭合联络开关需要加入 iter 0; while iter 100 I conj(S_inj ./ V); % 节点注入电流 % 从末端回推支路电流... % 从首端前推电压... % 计算偏差判断是否收敛 iter iter 1; end % 计算网损所有支路损耗之和 P_loss sum(real((V(branch(:,1)) - V(branch(:,2))) .* conj(I_branch))); iflag 1; % 收敛标志 end前推回代里最关键的一个坑是处理联络开关。IEEE33节点原本有5条联络开关在SOP配置问题中通常只研究正常运行方式下的常开点所以要么把联络开关全部断开只做辐射网潮流要么在模拟SOP时把SOP当作可控注入源架设在两条馈线之间而不是把联络开关简单闭合。如果直接闭合联络开关系统变成弱环网前推回代需要额外处理代码复杂度会直线上升。我的做法是SOP不改变网络拓扑只在与SOP相连的两个节点上增加可控注入功率其中一端正、另一端负这样潮流计算仍然保持辐射网非常干净。3.3 扰动法计算改进灵敏度有了潮流函数扰动法就很好实现了。下面是一段灵敏度计算的伪代码n size(bus,1); scenarios [0.3, 0.6, 0.9]; % DG出力比例 prob [0.2, 0.5, 0.3]; % 场景概率 alpha 0.3; % 电压风险权重 dP 0.01; % 扰动有功MW ISF zeros(n,1); for s 1:length(scenarios) S_dg S_dg_rated * scenarios(s); % 当前场景DG出力 [V_base, Ploss_base] pf33(bus, branch, S_dg); sigma_base max(abs(1 - V_base)); % 电压偏差量 for i 2:n % 平衡节点1不做扰动 S_dg_pert S_dg; S_dg_pert(i) S_dg_pert(i) dP; % 注入有功扰动 [V_pert, Ploss_pert] pf33(bus, branch, S_dg_pert); LS (Ploss_pert - Ploss_base) / dP; VS (max(abs(1 - V_pert)) - sigma_base) / dP; ISF(i) ISF(i) prob(s) * (LS alpha * VS); end end [~, idx] sort(ISF, descend); % 灵敏度从高到低 candidate idx(1:K); % 取前K个节点作为SOP候选位置这里有个容易出问题的细节如果注入扰动后潮流不收敛程序会直接报错。所以我在实际代码里会判断iflag如果不收敛就把该节点的灵敏度置为一个极大惩罚值并在日志里打印警告而不是让整个循环中断。另外扰动只针对非平衡节点因为平衡节点的注入功率由潮流自动确定不能随意增加。3.4 粒子群优化SOP容量与无功设定位置筛出来后接下来要确定每个SOP的容量以及两端无功出力。这个阶段我用粒子群算法PSO因为候选位置只有两三个变量维度很低粒子群速度快、写起来也容易。变量编码如下% 假设选定两个位置决策变量为 % x [ S1, q1, S2, q2 ] % 其中S_i为SOP容量(MVA)q_i为第一端注入无功(Mvar) % SOP的有功功率保证两端有功平衡时自动确定适应度函数里要调用潮流并加入约束罚项function f fitness(x, ...) S1 x(1); q1 x(2); S2 x(3); q2 x(4); % 根据SOP位置构造SOP注入功率 % SOP有功转供量由两端电压差和优化目标共同决定在潮流迭代中固定为给定值 % 如果不满足容量约束返回一个大数 if sqrt(p1^2 q1^2) S1 || sqrt(p2^2 q2^2) S2 f 1e6; return; end [V, Ploss, iflag] pf33(bus, branch, S_dg, sop_power); if iflag 0 f 1e6; return; end penalty sum(max(0, 0.93 - V).^2) sum(max(0, V - 1.07).^2); f Ploss lambda_SOP * S1 lambda_SOP * S2 1e4 * penalty; endPSO参数我一般设粒子数20、迭代50次惯性权重从0.9线性降到0.4学习因子取1.5。由于位置已经固定搜索空间很小一般二三十次迭代就能收敛。用PSO的结果重新跑一次多场景潮流验证如果每个场景下电压都在限值内就可以输出最终配置方案。3.5 结果可视化与导出配置完成后至少要画两幅图。第一幅是节点电压分布图把无SOP、传统灵敏度配置、改进灵敏度配置三条曲线画在一起肉眼可见改进后的电压曲线被整体抬起来。第二幅是改进灵敏度条形图横坐标是节点编号纵坐标是ISF值高亮选中的SOP位置。画图时统一用标幺值节点编号从1到33。我还会把DG接入前后的网损、电压最低点、SOP出力做成一张表保存到Excel方便写报告时直接引用。figure; plot(1:33, V_base, k-o, 1:33, V_sop_trad, b-s, 1:33, V_sop_impr, r-d); xlabel(节点编号); ylabel(电压/p.u.); legend(无SOP,传统灵敏度SOP,改进灵敏度SOP,Location,SouthWest); saveas(gcf, voltage_compare.png);4. 算例结果对比改进灵敏度配置效果分析4.1 算例设置与主要参数我以一个典型算例来说明改进灵敏度的优势。IEEE33节点系统在全网负荷基础上在节点18接入光伏额定出力0.6MW在节点25接入风电额定出力0.8MW。DG出力场景取30%、60%、90%三种概率分别为0.2、0.5、0.3。SOP最多配置2个每个容量范围01.6MVA电压约束取0.931.07p.u.。优化目标中投资费用按每年0.2万/kVA折算网损电价取0.5元/kWh。这里要说明一下以下结果是某组具体参数下的工程示例不是IEEE33节点的官方标准答案。不同文献对DG接入位置和容量定义不同数值会自然浮动但“改进灵敏度比传统灵敏度综合效果更好”这一趋势在大多数有源场景下都是稳定的。4.2 灵敏度排序与配置结果对比表用传统灵敏度单一场量在DG出力60%场景下计算排序选择的前两个节点是18和25正好是DG接入节点附近。用改进灵敏度排序选中的是12和30节点12位于馈线中段的重载分支节点30靠近末端电压薄弱区。优化后的容量和运行效果对比如下方案SOP安装位置SOP容量/MVA有功网损/kW最低电压/p.u.电压越限节点数无SOP-0218.50.9341传统灵敏度SOP18、252×0.8192.60.9480改进灵敏度SOP12、301.2、0.9171.30.9720从这个表格能看到改进灵敏度方案的有功网损比传统方案低约21kW最低电压提升了0.024p.u.。虽然容量总投入2.1MVA比传统方案1.6MVA略大但综合网损费用和电压质量的提升完全值得。更重要的是在多场景验证中改进灵敏度方案在DG出力从30%到90%变化时电压最低点都保持在0.95p.u.以上而传统灵敏度方案在DG仅30%出力、负荷较重时末端电压会回落到0.94左右。这说明改进灵敏度方案对DG波动更耐受。4.3 为什么改进灵敏度配置效果更好原因其实不复杂。传统灵敏度只看单一运行点下的网损边际收益它选中的节点位于DG接入点附近因为在这些节点增加功率可以显著抵消远端DG的倒送潮流从而降低视在功率。但它忽略了一个关键点SOP的价值之一是转移有功和补无功电压最弱的末端节点虽然网损灵敏度不是最高但SOP安装在那里可以同时提升两条馈线的末端电压。改进灵敏度把电压偏差量纳入了灵敏度指标相当于在“哪个节点对降损有用”和“哪个节点对电压有用”之间做加权平衡。多场景加权又把这种平衡延伸到不同DG出力水平下所以选出来的节点就像“全科生”而不是“偏科生”。打个比方传统灵敏度就像一个只看工资选工作的人哪里给钱多去哪里改进灵敏度则还会看岗位稳定性、发展空间和通勤成本最后选一个综合最优的offer。配电网规划本来就要考虑多维约束所以后者更贴近实际。5. 常见问题与排查技巧实录5.1 潮流不收敛时先查这三个地方做这个项目的过程中绝大多数代码崩溃都出在潮流计算上。第一个要查的是单位。IEEE33节点原始数据里线路电阻是欧姆负荷是千瓦如果直接把欧姆数值塞进标幺制公式潮流必然发散。我会在数据导入后加一条检查命令disp(sum(branch(:,3)))如果数值异常立刻知道是单位问题。第二个是DG的处理方式。把DG设成PV节点时如果无功越限前推回代会振荡。不如初版全部用PQ节点等潮流稳定后再考虑PV模型。第三个是迭代初值。对于重载网络用全1电压初始化可能不收敛可以先用更宽松的收敛精度如1e-3跑一遍再把结果作为初值继续精算这个技巧叫“初值接力”实测很有效。5.2 灵敏度排序出现异常怎么办有几次我算出来的灵敏度全是负值一开始以为程序错了后来才意识到这是正常的。当某个节点注入有功时如果它处于DG倒送功率的路径上增加注入反而会减小流过下游线路的功率网损下降灵敏度自然为负。选位置时负的灵敏度往往比正的更有价值因为负得越多说明该节点对降低网损越有利。排序时可以按灵敏度数值升序最负优先也可以用sort的descend配合绝对值判断但前提是符号含义要统一。另一个问题是电压灵敏度与网损灵敏度量级差异大如果不做归一化ISF会被电压项主导。我一般先对每个场景的LS和VS分别做min-max标准化再加权综合。5.3 粒子群优化容易陷入局部最优PSO本身不是全局优化神器变量多的时候很容易早熟。在SOP容量优化里我碰到过两次结果都聚在同一个局部解而换一组初值就能找到更优解。后来我在初始化种群时专门加入了一些“极端个体”比如容量取上下限、无功取0的个体保证种群覆盖搜索空间。另外适应度函数里对约束的惩罚系数要设置合理。惩罚系数太小个体可能不满足容量约束但适应度仍很低惩罚系数太大会导致搜索偏向可行域边界错过一些微违约束但目标极优的潜力解。我的经验是先让惩罚系数从100逐渐增大到10000让粒子先探索边界再慢慢收敛到可行域内。5.4 Matlab工程实现细节Matlab版本差异带来的问题很常见。老版本用中文注释在新版本打开时经常乱码最省事的方案是全程英文注释或者统一把脚本保存为UTF-8编码文件。另一个细节是数组索引Matlab从1开始而IEEE33节点数据里的节点编号也是1到33但有些文献会把节点0当作根节点搬运代码时经常差一位。建议在数据文件开头加上assert(length(unique(bus(:,1))) 33)防患于未然。多场景灵敏度计算是典型的可并行任务用parfor替代for能大幅提速但注意扰动循环里每次都要调用潮流函数如果并行池开得太大反而会因为通信开销变慢。5.5 常见问题速查表问题可能原因解决办法潮流迭代不收敛支路阻抗单位错、联络开关闭合导致弱环统一标幺值断开联络开关改用牛拉法DG接入后电压反而升高DG出力过大潮流倒送增加SOP吸收有功或无功或调整DG出力场景灵敏度排序结果与预想差距大扰动步长不合适、电压权重α未调将dP设为0.01MWα从0.3起调PSO结果多次跑不一样初始化随机、没有固定随机种子rng(0)对比多个初值的结果配置SOP后网损未下降SOP有功/无功出力方向设反检查SOP两端注入功率的正负符号电压曲线整体偏低系统负载率高、SOP容量不足增大SOP容量上限或增加候选位置数最后再说一个我个人的体会灵敏度分析最大的价值不是给你一个“最终答案”而是快速告诉你“哪里值得重点算账”。一开始我也迷信过纯智能算法直接寻优觉得灵敏度分析是多余步骤直到有一次把PSO放在全部33个节点上优化容量跑了一下午结果还因为离散变量处理不好陷入局部解。后来改回“改进灵敏度筛位置 PSO定容量”几分钟就能出结果且方案可解释性强。所以这个项目的真正收获是先理解系统运行特性再让算法在合理的目标方向上去搜索而不是一上来就暴力计算。以后你拿到其他配电网系统也可以用同样的思路先做灵敏度导航再让优化器去精调。
返回列表