资讯详情

资讯详情

IEEE 33节点系统分布式电源优化配置:建模、算法与实战解析

1. 为什么大家都在33节点系统上做分布式电源优化配置做配电网规划或者研究分布式电源接入的同行应该对IEEE 33节点配电网系统不陌生。这个系统几乎是国内高校电力专业和设计院做配电网研究的标配试验田就像机器学习领域里大家都先跑一遍MNIST手写数字识别一样。我第一次接触它还是在某高校实验室做项目时当时导师扔给我一篇参考文献让我复现其中的分布式电源选址定容结果从此就和这个系统打了多年交道。回到正题分布式电源Distributed GenerationDG接入配电网最核心的问题不是能不能接而是接在哪里、接多大。同样是接一台光伏或风机放在馈线末端和放在靠近变电站的位置对电压分布、网损和短路电流的影响完全不一样。而33节点系统正好是一个中等规模的放射状配电网模型包含32条支路、1个根节点、若干联络开关结构简单但足够反映真实配电网的大多数特征所以成了检验各种优化配置算法的标准平台。这个项目标题里的探索二字我个人理解有两层含义一是对配置方法本身的探索比如目标函数怎么定、约束怎么加、算法参数怎么调二是对不同DG类型、不同渗透率、不同场景下配置结果的规律性探索。换句话说不是简单跑一个优化程序出个结果就完了而是要研究为什么结果是这样换一组参数又会怎样。下面我把整个探索过程拆开来讲从系统建模、DG模型、优化算法到结果分析尽量还原一遍完整的实操链路。2. 33节点系统的建模细节与潮流计算基础2.1 节点参数与网络拓扑的还原要做优化配置第一步是把这个系统在代码里搭出来。IEEE 33节点系统的原始参数包括各节点有功负荷、无功负荷以及各支路电阻、电抗在很多教材和文献里都能查到。但我建议不要直接复制网上流传的数据表最好找原版文献或官方测试数据核对一遍。原因很简单网上很多版本在转抄过程中出现过小数点错误我曾经就遇到过一个版本把某条支路的电抗值0.35写成了0.53导致潮流计算结果偏得离谱排查了大半天才发现是数据问题。建模时需要注意几个关键点根节点节点0通常设为平衡节点电压幅值取1.0 p.u.相角为0。IEEE 33节点系统的基准电压常见取12.66 kV基准功率取10 MVA也可以取100 MVA但建议固定一套基准值不要混用否则归算时容易出错。各支路默认是闭合状态联络开关支路在正常运行方式下一般是断开的但做重构联合优化时才会用到单纯做DG配置可以不考虑联络开关。负荷模型用恒功率模型PQ负荷即可这是大多数配电网稳态计算的假设。如果要考虑电压依赖性负荷需要另加模型会让问题复杂不少。在Python中搭建这个系统可以选择直接用库也可以手写潮流代码。用现成库的优点是快不用自己调迭代格式手写代码的优点是你能彻底掌握计算过程调试起来心里有数。我个人的做法是先用库跑通结果再自己写一遍前推回代法做对照验证。两套结果能对得上就说明模型建对了。2.2 前推回代法为什么最适合配电网潮流计算配电网潮流计算方法主要有牛顿-拉夫逊法、前推回代法、改进的快速解耦法等。对于33节点这种纯放射状网络前推回代法是最省事的选择。它的原理很直观从末端节点开始已知各节点负荷功率逆着潮流方向逐段累加支路功率损耗得到各支路的首端功率再从根节点开始已知首端电压顺着潮流方向逐段计算电压降落得到各节点电压。如此反复迭代直到两次迭代的节点电压差满足收敛精度。用生活化的类比前推回代法就像在一个水管网络里先由最远处的出水口往回推算每个管段需要多少水量再由水源端向远处逐段推算每个出水口的实际水压。两个方向交替进行结果就收敛了。实现前推回代法的步骤大致是初始化各节点电压为额定值1.0 p.u.。前推从末端节点开始计算各支路功率公式为从节点j流向节点i的功率等于节点j的负荷功率加上从节点j出发的所有下游支路功率之和。回代从根节点开始计算各支路电压降落更新各节点电压。检查相邻两次迭代的电压幅值差最大值是否小于容差比如1e-6不满足则重复步骤2和3。在实际代码实现中支路功率和电压更新公式里的复数运算要特别小心。我见过不少人把有功和无功混在一起算结果支路损耗虚部符号搞反。建议用复数类型存储功率和电压代码既简洁又不容易出符号错误。潮流计算是后续所有优化的基础件它本身不复杂但必须算得准、算得快。因为优化算法在寻优过程中要反复调用潮流计算33节点系统还好一次潮流计算在毫秒级但在更大的系统比如几百个节点里潮流计算速度就直接决定了优化算法的可行性。2.3 基准值的选取对结果的影响很多人容易忽略基准值的选取觉得反正归算后都一样。话虽如此但基准值选得不合适会带来数值稳定性问题。在33节点系统里如果基准功率取10 MVA那么总负荷功率大约3.7 MVA折算到标幺值就是0.37 p.u.这个量级比较舒服。如果基准功率取100 MVA总负荷标幺值变成0.037 p.u.潮流计算中的一些中间量会很小在迭代过程中可能出现数值精度问题。另外电压基准值一般取系统的额定电压12.66 kV但如果某些DG模型里有逆变器控制逻辑需要把直流侧电压和交流侧电压放在一起折算就要特别注意基准值的统一。我建议在代码里用一个配置类比如dataclass统一管理所有基准值避免在多处硬编码。3. 分布式电源的建模与适配场景分析3.1 光伏、风机、微型燃机、储能同是DG脾气完全不同分布式电源不是一种东西不同类型和运行特性决定了它们在优化模型里的数学表达方式完全不一样。先把常见类型过一遍光伏PV出力具有明显的时序性和随机性白天出力大、夜晚为零阴雨天波动剧烈。在稳态优化里通常按典型日出力曲线取其某个时段的出力值。如果做全年优化需要按季节或典型日聚类来简化。风机WT出力随风速变化一般用Weibull分布描述风速再用功率曲线把风速映射为出力。夜间风速通常较大所以风电与光伏有天然的互补性。微型燃气轮机MT出力可控性最好只要燃料供应充足基本可以按指令出力。但运行成本较高存在最小出力限制和爬坡约束。储能ESS严格说它不是电源而是灵活负荷充电时是负荷、放电时是电源。它本身不产生能量但能平移能量在优化模型中通常引入时序耦合约束当前时段的SOC与上一时段有关。在33节点系统上做优化最常见的配置是光伏风机组合或光伏储能组合。纯光伏场景最简单但结果往往过于乐观因为最关键的无功支撑和夜间电压问题根本体现不出来。我的建议是如果目标是研究分布式电源对配电网的支撑作用至少要考虑两种不同类型DG的联合配置。3.2 稳态模型与动态模型的取舍做选址定容优化时绝大多数文献用的是稳态模型即在典型工况比如最大负荷日、最小负荷日下做潮流计算把电压越限和网损作为目标或约束。这种做法的优点是计算量小、模型简单、适合嵌入优化算法。缺点是无法捕捉DG出力的快速波动对电压的瞬时影响。我在实际项目中遇到过这样的情况某园区想接入一批分布式光伏基于稳态潮流计算的结果显示各节点电压都合格但实际运行中光伏出力在云层快速移动时几分钟内波动20%以上导致馈线末端电压频繁越限。这提醒我们如果项目要求较高的供电可靠性光做稳态优化不够至少要做典型场景下的时序潮流仿真。在33节点系统中做时序仿真的常用方法是选取典型日24小时或96个时段每15分钟一个点给每个时段的光伏出力和负荷设定曲线然后逐时段做潮流计算。这样模型规模会扩大很多倍优化变量如果包含储能的SOC时序变量求解难度会显著上升。3.3 DG数学模型中的功率因数和可调能力DG在配电网中的数学模型核心是P-Q能力。对于逆变器接口的光伏和储能功率因数通常可以在0.95滞后到0.95超前之间调节这意味着它们不仅可以发有功还可以发无功或吸收无功。在优化模型里如果直接给定功率因数常数比如0.95模型简单但会损失灵活性。更精细的做法是把DG的无功出力也设为优化变量同时约束其视在功率不超过逆变器容量也就是根号下有功平方加无功平方小于等于容量上限。这样优化出来的结果往往比固定功率因数的结果网损更低、电压分布更均匀因为DG可以在电压偏高时吸收无功、偏低时发出无功起到了动态调压的作用。当然模型复杂度也会上升。如果是用智能算法求解额外增加无功优化变量会让搜索空间维度变大收敛速度下降明显。我见过有人把DG的无功出力设成连续变量用粒子群算法跑了几个小时都不收敛后来改成几个离散档位超前0.9、1.0、滞后0.9三档收敛性立刻好转。离散化确实损失了一些最优性但工程上完全够用。4. 优化配置的数学模型与约束条件搭建4.1 目标函数网损最小、电压偏差最小还是综合最优分布式电源优化配置通常有多个候选目标最小化系统有功网损。这个目标最直观DG靠近负荷中心可以减少输电损耗。最小化节点电压偏差。说白了就是让各节点电压尽量接近1.0 p.u.提升电能质量。最小化DG投资运行成本。这涉及经济学需要知道DG的单位容量投资成本、运行维护成本、电价政策等。最大化DG接入容量。在某些政策背景下希望尽量多装DG但要满足安全约束。不同的目标函数会导出完全不同的配置方案。只优化网损可能把DG安置在远离变电站的负荷密集区只优化电压偏差可能把DG分散到末端节点只优化经济性则可能倾向于在光照好、地价低的地方集中建光伏电站。在实际项目中我通常采用加权多目标的方式把网损和电压偏差放在同一个目标函数里加上权系数。比如目标函数F w1 * (Ploss / Ploss0) w2 * (VD / VD0)其中Ploss0和VD0是未接入DG时的基准值这样纲量一致w1和w2的取值代表决策者对网损和电压质量的重视程度。也可以用帕累托前沿的思想搜索一组权系数下的多个解让决策者手动挑。还有一种思路是采用罚函数处理约束比如把电压越限量以很高的权重加到目标函数里。这种做法的好处是可以直接使用无约束优化算法坏处是罚系数不好调。罚得太小约束不满足的个体也能存活罚得太大会掩盖真实目标函数的差异导致搜索方向失真。4.2 选址定容问题的变量编码方式在33节点系统中做DG配置优化变量通常包括两部分选址变量DG接入哪个节点。如果用二进制编码每个节点表示一位1表示接0表示不接那么33个节点对应33位二进制串。但实际操作中一般不会在所有节点都装DG变电站母线节点0通常不建议装有些节点可能是联络开关节点也要特殊处理。定容变量每个接入节点的DG容量。可以是离散的比如按50 kW步进也可以是连续的比如0到2 MW之间任意值。用遗传算法求解时常见编码方式有两种实数编码每个个体是一个向量长度为2N前半段是各节点接入容量后半段是节点选择标志或者更紧凑一点长度等于允许接入节点数每个元素取值0表示不接正数表示接入容量。这种编码直观交叉变异操作也容易实现。二进制编码所有节点接入状态作为二进制串再接一个实数串表示容量。混合编码在遗传算子设计上稍麻烦但不难处理。我个人的习惯是用实数编码直接让优化变量等于各候选节点的DG容量0就是不在该节点安装。这样个体长度为候选节点数非常简洁。粒子群算法和差分进化算法都能直接处理这种编码。需要注意编码方式会影响搜索空间的大小和连通性。如果候选节点有30个每个节点容量取离散档位比如10档那总的组合数是10的30次方这个数字大到穷举完全不现实所以必须用启发式算法。这也是为什么配电网DG优化配置这个课题和智能优化算法天然绑定在一起。4.3 约束条件等式约束与不等式约束一个都别漏优化模型里的约束条件一旦漏了结果很可能在实际中根本不可用。我列一个清单等式约束即潮流方程这是必须满足的通常通过潮流计算隐式满足不需要单独作为显式约束。不等式约束主要包括节点电压上下限通常取0.95~1.05 p.u.有些文献取0.93~1.07 p.u.。要注意标准GB/T 12325对电压偏差有规定但学术研究中常用0.95~1.05。支路电流或容量上限防止线路过载。33节点系统各支路的载流量在原始数据中不一定全部给出需要自行设定一般按支路允许容量限制视在功率或电流。DG接入容量上限每个节点的DG总容量不能超过该节点负荷或变压器容量的某个倍数。这个约束在工程上很重要否则优化算法可能会把某个轻载节点装上极大的DG容量导致严重的潮流返送。DG总渗透率约束所有DG总容量与系统总负荷的比值约束在某个上限以内。渗透率约束在一些项目里是政策性的比如要求不超过25%或40%因为高渗透率对系统稳定性和保护配置有显著影响。反向潮流约束在优化结果中应检查DG出力大于该节点下游负荷时是否出现明显的功率返送尤其是向变电站母线返送大功率的情况。传统配电网保护系统是按单向潮流设计的返送功率过大会带来保护误动风险。在处理约束时我的经验是对于电压越限和支路过载用罚函数比较方便。但对于渗透率上限这种硬性约束建议直接在优化过程中拒绝不满足条件的个体即重置为边界值或给极大惩罚因为这种约束一旦违反即使后续算法能局部修正也容易陷入局部最优。5. 求解算法对比与参数调优实战5.1 粒子群、遗传算法与差分进化谁更合适33节点系统中的DG优化配置问题是非线性、非凸、混合整数规划问题传统数学优化方法很难直接求解所以主流做法是智能优化算法。几种常见算法在该问题上的表现我做过对比粒子群算法PSO结构简单、参数少、收敛速度快但容易早熟容易陷入局部最优。在33节点系统中的典型表现是只要参数调得好100次迭代内就能找到不错的解但想进一步降低网损就很困难了。遗传算法GA的全局搜索能力强交叉和变异操作可以维持种群多样性不容易早熟但收敛速度慢参数交叉率、变异率、种群规模对结果影响很大。在33节点系统中通常需要200代以上才能收敛到稳定解。差分进化算法DE在连续优化问题上表现非常出色鲁棒性强对参数不太敏感。对于容量连续可调的DG配置问题DE往往比PSO和GA都表现好。但如果要做选址的0/1决策传统DE处理离散变量稍显笨拙需要用一些技巧。实际项目中我比较推荐一种组合策略先用遗传算法做粗粒度搜索确定哪些节点适合安装DG再固定候选节点集合用差分进化算法精细优化每个节点的容量。这种两阶段法的思路和人找房子类似先确定区域再在区域内挑具体房源搜索效率远高于在所有房源里漫无目的地翻找。5.2 我从网损目标到综合目标调参的经历有一段时间我把某一版代码从单目标网损优化改成网损电压偏差综合目标结果发现粒子群算法的收敛行为变得很奇怪目标函数值在前半段下降正常后面却不降反升。后来排查发现是电压偏差部分的归一化系数设得太小导致这一项在总目标里的贡献接近零相当于仍然把所有权重放在网损上但目标函数值的尺度变了粒子群的惯性权重和速度限幅却没有重新调整于是搜索行为变得混乱。这就是一个典型的参数适配问题目标函数一旦调整原有的算法参数很可能不再合适。我的建议是每次修改目标函数或约束条件后先用小种群、少迭代快速跑几轮观察目标函数值的变化曲线确认收敛行为正常后再做正式的大规模优化。在实际调参时我习惯使用如下经验区间粒子群种群规模20~40惯性权重0.4~0.9线性递减学习因子取1.5~2.0。遗传算法种群规模50~100交叉率0.7~0.9变异率0.01~0.1。差分进化种群规模30~50缩放因子F取0.5~0.9交叉率CR取0.7~0.9。注意这些区间只作为起点具体值需要根据问题规模调整。33节点系统不算大可以适当缩小种群规模以提升计算速度但至少保留一定的多样性否则容易陷入局部最优。5.3 一个完整的求解流程实例为了便于复现我给出一个简化但完整的求解流程示例使用粒子群算法配合罚函数法处理约束初始化随机生成N个粒子每个粒子的位置向量代表一组DG配置方案各候选节点容量。潮流计算对每个粒子所代表的DG接入场景调用前推回代法潮流计算得到各节点电压和支路功率。目标评价计算网损和节点电压偏差检查是否有越限节点。如有在目标函数上加罚项。更新个体最优和全局最优。更新粒子速度和位置注意速度限幅避免粒子飞出边界。检查迭代次数或收敛条件未达标则回到第2步。这里给出粒子群更新速度时的核心公式v(i,d) w * v(i,d) c1 * r1 * (pbest(i,d) - x(i,d)) c2 * r2 * (gbest(d) - x(i,d)) x(i,d) x(i,d) v(i,d)其中w是惯性权重c1和c2是学习因子r1和r2是[0,1]之间的随机数pbest是粒子个体历史最优gbest是整个种群的历史最优。这个公式是粒子群算法的灵魂理解它之后你会发现所谓的智能其实非常质朴三种力量拉扯着粒子一个让自己回到曾经的好位置一个让大家靠拢当前的最优位置还有一个保持原有的运动惯性。6. 算例结果分析从数据中看规律6.1 未接入DG时的基础潮流先看基准场景。把33节点系统在最大负荷工况下的潮流算一遍得到的结果是很有参考价值的。这个系统的总负荷大约3.7 MW 2.3 Mvar未接入任何DG时全网有功网损通常在200 kW左右具体数值取决于负荷数据版本一般文献给出的结果在202 kW上下。末端节点节点17、18、32等的电压会偏低比如节点18的电压可能降到0.95 p.u.以下这就是典型的末端电压问题。这些数据是后续优化结果的对照组。没有对照你只能说优化后网损降低了但说不出降低了多少、幅度大不大、效果好不好。我建议在做任何优化之前先把基础潮流结果记录在案包括各节点电压、各支路潮流、总网损最好画一张电压分布曲线图作为后面分析的基准线。6.2 不同DG容量配置下的网损与电压变化当我们开始在若干节点接入DG后规律性现象就出现了。以节点18接入光伏为例接入容量从0逐步增大到0.5 MW时网损下降明显继续增加容量网损下降速度放缓当接入容量大到一定程度比如超过1.2 MW网损反而开始上升。这就是经典的DG过度接入导致潮流返送、网损恶化现象。造成这个现象的原因可以这样理解DG容量小于当地负荷时DG发出的电基本被本地消耗减少了从变电站远距离输送的功率网损因此下降。当DG容量大于当地负荷时多余功率开始反向流向变电站这部分反向功率同样在线路上产生损耗等于把线路当成了双向通道损耗自然回升。所以DG容量不是越大越好最优容量大约是当地负荷的0.8~1.2倍具体要看系统阻抗分布和该节点位置。电压分布的变化同样有规律。在馈线末端接入DG末端电压抬升非常明显。在馈线首端接入DG对末端电压的抬升作用有限。这就像在一根很长的水管上装增压泵泵装在末端末端水压提升明显泵装在源头附近对远端水压的改善就很小。所以如果目标是解决末端低电压问题优先考虑在末端节点装DG。6.3 从单点接入到多点接入的配置方案演变单点接入的优化结果往往是在某一两个节点集中接入大容量DG虽然网损最优但可能带来局部过电压或支路过载问题。多点接入则可以把DG分散到多个节点好处是网损更均匀地下降避免单点返送。电压分布更平坦没有明显的局部电压凸起。供电可靠性更高单一DG故障不会导致大范围功率缺额。可以兼顾不同节点的负荷特性比如在负荷大的节点多装在负荷小的节点少装。我做过一组对比测试单点最优配置下网损为110 kW但节点17电压达到1.06 p.u.越限改用多点配置后网损为128 kW电压全部在0.97~1.03 p.u.以内。网损多18 kW换来的是全部电压越限消除。在工程决策中这种代价是值得的。所以在写结论或汇报材料时不要只看网损下降率还要把电压分布、DG利用小时数、投资回收期等维度综合起来看。33节点系统的结果没那么复杂但足以支撑这种多维度分析。7. 那些容易踩的坑与经验教训7.1 数据版本不一致导致的结果复现困难33节点系统的参数在文献间存在微小差异我第一次复现某篇论文的结果时跑出来的网损和原文差了15%一度怀疑是自己代码有问题。后来仔细比对才发现原文用的支路阻抗参数和我在用的标准版本有几处不一致而且原文的基准电压取的是12.66 kV负荷参数却是在另一种基准下给出的。这事之后我养成一个习惯每次拿到新数据先用简单的潮流计算验证总负荷、总网损和文献公布值是否吻合验证通过后再开始优化。7.2 惩罚系数怎么定才能不扭曲目标罚函数法是处理约束的常用手段但罚系数的大小直接影响优化结果。罚太大了目标函数值主要由罚项决定算法会优先满足约束而忽略真实目标结果可能是电压全部合格但网损极高的平庸解罚太小约束形同虚设算法可以送给你一个电压越限到1.3 p.u.但网损为零的荒谬解。我的经验做法是分两步先算一下不接入DG时电压越限最大的节点有多严重比如0.92 p.u.把罚系数设成越限电压0.01 p.u.对应的罚金约等于网损目标值的1%~5%。这样越限惩罚在初期能有效引导搜索方向后期也不会完全覆盖真实目标。更稳妥的做法是在优化过程中自适应调整罚系数但这对算法实现要求较高初学阶段用固定罚系数就够。7.3 优化结果与工程实际的落差学术优化结果在工程落地上往往有落差这是很多人忽略的点。比如优化算法建议节点17装0.8 MW的光伏但现实中该节点附近可能根本没有足够的屋顶或土地来安装。又比如算法建议在末端节点装上大容量储能但末端往往交通不便、征地困难、并网成本高。另一个容易被忽视的是DG接入后原有变电站的调度策略和备用容量配置也会受影响优化模型通常把变电站当无穷大电源处理但这在孤岛运行或极端工况下并不成立。所以当我做工程咨询类项目时通常在三类约束下做优化一是地理条件约束哪些节点实际可安装二是并网技术约束线路容量、变压器容量三是运行策略约束是否允许DG参与调压调频。这三类约束在纯学术建模里往往被简化掉但不考虑它们结果就只能停留在论文层面。8. 从33节点到实际配电网的拓展思考33节点系统毕竟是一个标准测试网络和真实配电网相比还是有不少差别。真实配电网通常规模更大、结构更复杂多馈线、多联络、多级变压器负荷曲线也更难预测。在33节点系统上验证过的优化算法迁移到实际系统时需要注意以下几点。首先系统规模增大后优化算法的计算复杂度会显著上升。33节点单次潮流计算只需要毫秒级但如果换成一个300节点的真实馈线模型智能算法的每次迭代都要做几百次潮流计算总耗时可以从几分钟涨到几小时。此时需要考虑并行计算、代理模型surrogate model或降阶方法。其次真实系统的数据质量参差不齐。在实际工程中很多支路参数是估算的负荷数据来自计量系统但可能存在时延和缺失。优化结果的可靠性在数据不准确时会大打折扣所以在项目里我一般会先做数据清洗和补全用历史负荷数据拟合典型日负荷曲线再决定优化模型的输入。另外真实系统的运行方式更复杂分布式电源不是固定出力或简单恒功率因数运行而是可能参与电压无功控制比如通过逆变器的Q-V曲线。想建立更贴合实际的模型还需要引入不平衡潮流计算、三相建模等技术细节。在拓展到实际系统前一个折中的做法是在I EEE 33节点系统基础上做一些实际化改造比如把某几段线路参数改为现实中常见的电缆参数给节点加上负荷同时率或者设定两条不同的典型日负荷曲线工作日和周末。这样系统依然可控、计算量不大但优化结果会更有工程参考价值。最后分享一点个人体会做分布式电源优化配置算法和模型固然重要但更重要的是理解电网本身的物理特性。很多时候调参调半天不如换个思路——比如把某节点电容补偿加上、把某个负荷高峰时段避让一下效果反而更明显。在33节点系统上多做几组敏感性分析你会发现哪些参数对结果影响最大这种物理直觉在真实项目中比花哨的算法更值钱。
觉得有用,分享给同行:

为您的企业打造数字门面

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

立即咨询 →