
最近做含分布式光伏的配电网仿真被一个很现实的问题卡了很久下午光伏出力高峰期10 kV馈线末端电压直接顶到1.07 p.u.变压器抽头怎么调都压不住无功补偿装置投上去又容易过补。传统做法是直接上一套集中式无功优化可当分布式光伏节点数量从个位数涨到几十上百个集中式优化的通信开销、计算时延和单点故障风险会迅速放大根本扛不住。后来我认真梳理了“集群划分集群电压协调控制”这条路在Matlab里把算法跑通效果比预期好很多也踩了不少坑。这篇文章就把整个思路、原理和代码实现的关键细节完整写出来适合正在做分布式光伏接入研究、配电网电压控制相关课题的研究生和工程师参考。1. 集群划分要解决什么问题从电压越限说起1.1 分布式光伏接入后的电压问题不只是“电压偏高”这么简单光伏接入配电网后电压问题最直接的表现是局部电压抬升。原因并不复杂配电网原本是放射式单向供电结构潮流从变电站流向负荷侧电压沿馈线逐渐降低。分布式光伏接入后负荷节点附近出现了注入功率相当于在馈线中间多了一个“电源”局部有功潮流被反向推送节点电压被抬升。尤其在光照充足、负荷较轻的时段光伏出力远大于负荷需求多余功率沿馈线上送末端电压抬升幅度可能超过安全限值。但真正麻烦的是电压越限的时空分布很不均匀。同一回馈线上靠近变电站的节点因为短路容量大电压波动小而馈线末端电气距离远、线路阻抗大轻微的有功波动就会引起明显电压变化。再加上三相不平衡、负荷波动、光伏出力的分钟级爬坡电压问题呈现很强的“局部性”和“时变性”。用调度中心的语言来说这个系统变成了一个“弱电网高渗透分布式电源”的组合体传统电压调节手段的响应速度和灵活性都跟不上。我最初的做法是在每个光伏接入点配置本地无功-电压控制也就是逆变器根据并网点电压自动调无功。简单有效但随着接入点增多矛盾出现了相邻节点之间耦合严重A点的无功调整会把B点电压拉下来B点的控制器为了抬电压又加大无功输出结果系统出现振荡或反复调节效率很低。这说明单纯靠本地分散控制并不够需要一个能把全网协调起来的框架。1.2 集中式控制为什么在分布式场景下越来越吃力集中式电压控制理论上最“完美”把全网节点电压、支路潮流、光伏出力全部采集到调度中心统一求解无功优化问题下发控制指令。问题是分布式光伏场景下这个模式越来越不现实。第一是通信压力。假设一个中型配电网有100个分布式光伏接口要求分钟级刷新控制指令那么通信网络需要支撑上百个节点的双向数据同步。光纤专网能承载但投资和维护成本非常高很多实际项目只有4G或者无线专网时延和丢包都无法保证分钟级控制。第二是计算压力。配电网三相不平衡、拓扑变化频繁最优潮流问题往往是大规模混合整数非线性规划求解一次可能几十秒等结果下来光伏出力已经变了。更麻烦的是配电网量测覆盖率低很多节点根本没有实时量测集中式优化依赖的状态估计结果本身误差很大。第三是隐私和权责。分布式光伏大量属于用户侧资产用户不一定愿意把运行数据全部上传给某个集中控制中心。而集群化控制把协调范围从“全网”缩小到“簇内”每个集群可以作为一个自治单元对外只交互边界信息和聚合功率很大程度上回避了数据隐私问题也让控制系统具备了“局部自治全局协调”的韧性。1.3 化整为零集群划分的思路与工程类比集群划分的思路其实可以类比一个大型组织架构调整小团队直接听命于总部的模式在规模小的时候高效但组织变大以后就需要按业务线或区域重新分组组内先自治协调再通过组长之间的协商实现全局目标。电力系统里的“集群”就是这样的子区域——把配电网节点按电气距离近、耦合强的原则划分成若干个集群每个集群内部自行完成电压调控和无功平衡集群之间只在边界处进行有限的协调整体控制目标仍然是最小化全网电压偏差和网络损耗。这样做的好处有三层单点故障影响范围被限制在集群内部系统鲁棒性提高控制问题被分解成“几个小问题”并行求解计算复杂度和通信量大幅下降每个集群相当于一个有明确接口的自治单元方便后续接入更高层级的调度系统。但这套思路成立的前提是集群划分要足够合理。如果划分不准集群内部耦合依然很强协调控制的效果就会大打折扣。因此集群划分是整个算法框架的第一步也是最影响后续控制效果的一步。2. 集群划分的核心原理用电气距离和模块度给配电网分层2.1 为什么不能直接按地理距离或馈线分段来划分我第一次做集群划分时第一反应是“按馈线所在供电区域画圈”或者直接按GIS地图上的地理位置把节点归堆。跑完仿真后发现问题很大地理上靠近的两个节点在电气上不一定强耦合。举个例子两个用户变压器在地图上看只隔了一条街但如果它们分别挂在10 kV馈线的首端和末端中间隔着很长的线路阻抗那么这两个节点的电压对同一个无功注入的响应差别会非常明显。反过来一条馈线上隔了几公里的两个节点只要中间线路阻抗很小比如电缆线路它们之间的电压耦合可能比地理相邻的节点更强。所以集群划分必须基于“电气距离”而不是“物理距离”。电气距离的本质是衡量节点之间电压/无功耦合强弱的指标它反映的是“在某节点注入单位无功另一个节点的电压会变化多少”这个物理事实。2.2 电气距离如何度量节点间的“电气亲疏”一种被广泛使用的电气距离定义是基于电压-无功灵敏度矩阵。配电网中潮流方程经过线性化处理后可以得到电压幅值变化量ΔU和无功功率变化量ΔQ之间的近似关系ΔU ≈ J_inv × ΔQ其中J_inv是灵敏度矩阵它的第i行第j列元素表示在节点j注入单位无功时节点i的电压变化量。基于这个矩阵可以定义节点i和节点j之间的电气距离d(i,j) -log( (J_inv(i,j)^2) / (J_inv(i,i) × J_inv(j,j)) )这个式子看起来抽象其实干的事情很简单它把两个节点之间的“相互影响强度”映射成一个距离值。如果节点i和节点j的电压变化几乎同步即J_inv(i,j)接近J_inv(i,i)那么d(i,j)很小说明它们电气上“挨得很近”如果互相影响很弱距离就大。用灵敏度矩阵而不用阻抗矩阵是因为灵敏度矩阵能直接反映控制变量无功注入和状态量节点电压之间的关系这对后续电压控制非常关键。划分出来的集群天然就是无功调节效率最高的控制区域。2.3 模块度与谱聚类怎么判断集群结构好不好有了节点间的电气距离矩阵下一步就是把整个网络划分成若干集群。这个问题的本质是一个图分割问题目标函数扮演着决定性角色。配电网集群划分最常用的目标函数叫模块度Modularity最初来自复杂网络社区发现。模块度的表达式为Q (1/2m) × Σ_ij [ A_ij - (k_i × k_j) / (2m) ] × δ(c_i, c_j)其中A是网络的邻接矩阵在这里可以用电气距离加权k_i表示节点i的加权度m是网络总边权δ(c_i,c_j)指示节点i和节点j是否属于同一个集群。模块度的物理含义很直观它衡量的是“集群内部边的比例”比“随机连接情况下的期望值”多出多少。Q越大说明集群内部连接越紧密、集群之间连接越稀疏划分质量越好。工程上Q值通常在0.3到0.7之间就能获得不错的集群结构。求解模块度最大的划分是NP难问题实践中通常用谱聚类或Louvain算法近似求解。谱聚类的思路是把节点映射到低维特征空间再在特征空间里做K-means聚类流程如下由电气距离矩阵构造相似度矩阵W常用高斯核变换W(i,j) exp(-d(i,j)^2 / 2σ^2)计算归一化拉普拉斯矩阵L_sym求其特征值最小的前K个特征向量组合成N×K矩阵将该矩阵逐行归一化后把每一行当作一个点的坐标用K-means聚成K类根据聚类结果把节点分成K个集群并验证模块度Q值。谱聚类的优势是能处理复杂图结构而且Matlab实现很直接——核心就是一次eigs和一次kmeans后面我会给出代码逻辑。3. Matlab实现从IEEE 33节点算例到集群划分代码落地3.1 算例选择与数据准备研究配电网集群划分绕不开IEEE标准的测试馈线系统。我用的比较多的是IEEE 33节点系统和IEEE 69节点系统原因是数据公开、拓扑复杂度适中既能体现集群划分的必要性又不会让潮流计算和控制仿真跑太久。IEEE 33节点系统的基本参数基准电压12.66 kV基准功率10 MVA33个节点、37条支路总负荷约3.7 MW 2.3 Mvar。这个系统在Matlab里搭建数据的方式很灵活可以直接手工录入支路参数矩阵和负荷参数矩阵也可以用Matpower的case格式组织。我建议按Matpower的case格式写数据哪怕不用Matpower自带求解器这个格式也方便后期扩展。关键数据块包括%% 支路参数矩阵 % 首端节点 末端节点 电阻(Ω) 电抗(Ω) 长度标幺值 branch [ 1 2 0.0922 0.0470 1; 2 3 0.4930 0.2511 1; 3 4 0.3660 0.1864 1; ... ]; %% 节点负荷矩阵 % 节点编号 有功(kW) 无功(kvar) bus_load [ 2 100 60; 3 90 40; ... ];接入分布式光伏时选择渗透率较高的几个节点比如8、18、22、25、33按额定容量给每台逆变器配置PQ或PV模型。如果做短期仿真光伏出力曲线可以用辐照度数据转换或者直接给一组时间序列信号。注意不要把光伏都放在同一个区域那样集群划分结果会非常“偏”不利于展示算法效果。3.2 潮流计算与灵敏度矩阵提取集群划分的第一步是获得全网的电压-无功灵敏度关系。这里我选择用牛顿-拉夫逊潮流结果来构造灵敏度矩阵而不是直接用导纳矩阵求逆。用导纳矩阵求逆的简化做法在高压输电网尚可但配电网线路电阻大、R/X比值高不去耦的精确灵敏度矩阵才符合实际情况尤其在下垂控制和无功电压控制阶段电阻分量导致的电压-有功耦合不能忽略。Matlab潮流计算的代码结构不复杂核心是迭代求解%% 牛顿-拉夫逊潮流 function [V, converged] nr_powerflow(Ybus, Sbus, V0, tol, max_iter) V V0; for k 1:max_iter S_calc V .* conj(Ybus * V); dS Sbus - S_calc; % 功率不平衡量 [dU, ~] solve_jacobian(Ybus, V, dS); % 求解修正方程 V V dU; if max(abs(dU)) tol converged true; return; end end converged false; end在实际代码里我不会手写完整的雅可比矩阵求解更常用的是直接调用Matpower的runpf得到潮流收敛结果然后对潮流方程在运行点做一次偏导数求解得到灵敏度矩阵%% 基于Matpower运行点求电压-无功灵敏度 mpc loadcase(case33); res runpf(mpc); [Ybus, ~, ~] makeYbus(mpc.baseMVA, mpc.bus, mpc.branch); V res.bus(:, 8) .* exp(1j * deg2rad(res.bus(:, 9))); % 构造潮流方程并求雅可比矩阵 [Jac] opf_jacobian(Ybus, V, mpc); Sensitivity_QV inv(Jac.QV); % 电压对无功的灵敏度矩阵注意如果不用Matpower雅可比矩阵需要自己组装工作量会大很多。所以我通常把“手写潮流”作为教学演示而在实际集群划分和控制仿真中直接用Matpower省下来的时间可以用来做策略设计。3.3 谱聚类划分的核心代码逻辑拿到灵敏度矩阵Sensitivity_QV后就可以构造电气距离并做谱聚类。核心代码分三步走第一步计算电气距离矩阵%% 电气距离矩阵 n size(Sensitivity_QV, 1); ElecDist zeros(n, n); for i 1:n for j 1:n % 灵敏度矩阵中元素取绝对值后再计算 Sii abs(Sensitivity_QV(i,i)); Sjj abs(Sensitivity_QV(j,j)); Sij abs(Sensitivity_QV(i,j)); ElecDist(i,j) -log((Sij^2) / max(Sii*Sjj, 1e-10)); end end ElecDist(1:n1:end) 0; % 对角线置零这里有个工程细节Sii或Sjj可能接近0导致对数里出现除零所以要加一个很小的保护项max(..., 1e-10)。我第一次跑的时候没注意结果矩阵里出现一堆Inf聚类直接崩掉。第二步构造相似度矩阵并做谱嵌入%% 相似度矩阵高斯核变换 sigma 0.5 * median(ElecDist(ElecDist 0)); % 根据距离中位数自适应选σ W exp(-(ElecDist.^2) / (2 * sigma^2)); W(1:n1:end) 0; %% 归一化拉普拉斯矩阵 D diag(sum(W, 2)); L D - W; L_sym D^(-0.5) * L * D^(-0.5); %% 求解前K小特征值对应的特征向量 K 4; % 预设集群数量 [Vectors, ~] eigs(L_sym, K, smallestabs);第三步K-means聚类并还原集群标签%% 对特征向量组成的矩阵做K-means X Vectors ./ vecnorm(Vectors, 2, 2); % 行归一化 [idx, ~] kmeans(X, K, Replicates, 20); %% 集群划分结果可视化 figure; plot(1:n, idx, o); xlabel(节点编号); ylabel(集群编号);这里的K是预设集群数。实际工程中K的取值不能拍脑袋我一般用两种方法交叉验证一是画模块度Q随K变化的曲线取峰值对应的K二是对接入光伏的分布做敏感性分析看看K取不同值时控制效果的差异。模块度的计算逻辑我放在下面%% 计算模块度 function Q compute_modularity(ElecDist, idx) n length(idx); m sum(sum(triu(ElecDist,1))); Q 0; for i 1:n for j 1:n if idx(i) idx(j) Q Q (ElecDist(i,j) - sum(ElecDist(i,:))*sum(ElecDist(j,:)) / (2*m)); end end end Q Q / (2*m); end关于eigs函数我额外提醒一句对IEEE 33节点这样的小系统用smallestabs指定求解最小幅值特征值没什么问题但如果算例换成几百上千节点的系统eigs的收敛性可能会变得很敏感这时可以考虑先用Lanczos算法预处理或者改用Matlab的svds做近似。这个属于进阶优化后面我再展开。3.4 集群可视化的处理技巧集群划分做完之后最怕的是“结果藏在数据里看不出好坏”。我建议用两种方式呈现第一种是配电网单线图着色。把节点按照集群标签用不同颜色标记在图上可以直接看出集群是否连片、有没有跨越主馈线分组的情况。如果划分结果出现“一个集群包含了两条不相连的馈线末端”通常意味着电气距离阈值选得不好需要调整σ或K。第二种是绘制电气距离矩阵热力图同时把集群边界用横纵坐标分隔线标出来。理想状态下热力图上应该能看到明显的“块状结构”即对角线附近的颜色明显比远离对角线的区域更深。如果热力图模糊一片、没有明显分块说明节点间的耦合性太均匀强行划分没有物理意义此时要检查是不是灵敏度矩阵构造错误或者负荷模型设置过于简化。4. 集群电压协调控制两层控制结构的整定逻辑4.1 控制架构集群自治与边界协调的分工集群划分只是手段最终目的是实现有效的电压协调控制。我采用的是目前研究中最主流的两层递阶控制结构底层集群内控制层每个集群内部的光伏逆变器和无功补偿装置根据地采样电压做本地无功调节实现集群内部的电压快速恢复。这一层响应速度快毫秒到秒级不需要通信或者只需要集群内部短距离通信。上层集群间协调层以分钟级周期运行采集各集群边界节点的电压和功率信息根据全局电压偏差计算集群间的协调修正量更新底层控制器的参考值或下垂系数。这种分工的核心逻辑是快速扰动光伏短时波动、负荷突变由底层消化慢速趋势性变化负荷爬坡、光照缓慢变化由上层协调。两层时间尺度错开避免控制动作频繁冲突。在Matlab仿真里我用了一个简单的定时触发结构底层的下垂控制以0.1秒为步长实时计算无功输出上层协调器每5分钟仿真时间触发一次求解一个线性二次型优化问题更新各集群的控制参考值。4.2 集群内逆变器无功-电压控制策略集群内部的控制我用的是经典Q-V下垂控制加上电压死区。基本方程是Q_ref Q_0 - k_q × (V_meas - V_ref)其中k_q是下垂系数V_ref是控制参考电压V_meas是逆变器并网点电压测量值。当并网点电压升高时逆变器吸收无功Q_ref减小把电压拉回来电压降低时逆变器增发无功支撑电压。但直接套用这个下垂方程在配电网里有问题逆变器无功容量有限且线路R/X比较高时无功-电压耦合弱单纯靠Q-V下垂响应慢、效果差。所以我在实现时做了两个改进一是引入“电压-有功”的联合调整逻辑。对于高R/X比的馈线有功调压效果明显因此允许逆变器在极端电压越限时做小幅有功削减通常不超过额定出力的10%模拟“电压越限时的最大功率跟踪降额”机制。这个逻辑在实际工程中也有对应功能——光伏逆变器具备的电压/频率保护降额功能。二是对下垂系数做自适应修正。集群内各节点电压偏差方向可能不一致固定下垂系数容易导致过度调节。我根据集群内节点电压偏差的加权和实时调整k_q%% 自适应下垂系数计算 function k_q adaptive_droop(V_dev, k_base, alpha) % V_dev: 集群内节点电压偏差向量 % k_base: 基础下垂系数 % alpha: 自适应调节增益 V_avg mean(abs(V_dev)); k_q k_base * (1 alpha * tanh(V_avg / 0.01)); end这个自适应项的思路是电压偏差越大越要“加力”调节偏差小时减小下垂系数防止频繁动作。tanh函数保证了系数变化平滑不会产生阶跃跳变。4.3 集群间协调层灵敏度修正与MPC滚动优化集群间协调层的任务是为每个集群的参考电压V_ref设定合理的全局修正量。我对比过两种实现方案最终在代码里保留了基于灵敏度的协调修正方法因为可解释性强、调试简单。具体做法是把每个集群等效成一个“可调无功源”集群间的耦合用集群聚合灵敏度矩阵表示。协调层的优化模型如下min Σ_i w_i × (V_i - V_target)^2 λ × Σ_j ΔQ_j^2s.t. -Q_j^max ≤ Q_j ΔQ_j ≤ Q_j^max这个二次规划问题用Matlab的quadprog可以直接求解。关键在于聚合灵敏度矩阵的获取我是在集群划分完成后对每个集群选择一个“等效潮流出口节点”通常是集群内电气中心节点然后重新计算出口节点之间的电压-无功灵敏度关系作为协调层的模型参数。MPC模型预测控制的滚动优化版本我也试过区别在于每一个控制周期会利用最新量测更新模型预测并重新求解优化问题。在Matlab里用MPC需要额外定义预测时域和控制时域我这里给一个简化的MPC逻辑骨架%% 集群间MPC协调控制简化版 function dQ_seq mpc_coordinator(Agg_Sens, V_meas, V_target, Np, Nc, Q_lim) % Np: 预测时域Nc: 控制时域 % 构造预测方程 H build_cost_matrix(Agg_Sens, Np, Nc); f build_gradient(Agg_Sens, V_meas, V_target, Np, Nc); % 约束条件 Aineq build_constraints(Q_lim, Nc); bineq zeros(size(Aineq,1), 1); % 求解二次规划 dQ_seq quadprog(H, f, Aineq, bineq); endMPC在扰动变化快的场景下效果优于单次优化但有一个参数需要特别小心预测时域Np取多长。Np太短控制过于“近视”容易让集群间反复调节Np太长计算负担增加且模型失配问题被放大。我实测下来对于IEEE 33节点系统Np取5~8步、控制时域Nc取2~3步效果和计算时间最均衡。4.4 控制参数整定的完整流程参数整定是这类仿真项目里最耗时的环节我分享一下自己的整定顺序第一步确定集群内下垂系数k_q。方法是在某一典型运行工况下对集群内电压偏差最大的节点注入一个阶跃无功扰动观察电压恢复时间和稳态偏差。整定目标超调量小于5%调节时间小于3秒。如果调节时间过长增大k_q但注意k_q过大会导致无功输出频繁到达限值出现振荡。第二步确定集群间协调层的权重w_i和λ。w_i反映对电压偏差的容忍度一般按节点电压灵敏度倒数的比例设定λ是调节代价权重控制无功调节的激进程度。我的经验是λ从0.1开始逐步增大观察仿真曲线直到电压波动范围满足±5%的要求。第三步加入光伏波动序列做全工况测试。用一天24小时的光照曲线和负荷曲线作为输入至少跑24小时仿真数据统计各级电压越限节点占比、无功调节次数、网损变化三个指标。如果无功调节次数过多一天内超过几十次说明下垂系数太灵敏需要增大死区或减小自适应增益alpha。5. 仿真结果、调试经验与常见坑5.1 典型仿真结果集群划分与电压改善效果在IEEE 33节点系统上我把分布式光伏分别接入节点8、18、22、25、33总渗透率约35%。通过电气距离谱聚类系统被划分为4个集群模块度Q约为0.42。划分结果比较合理集群1包含馈线前段节点集群2覆盖中段主要负荷区集群3和4分别对应末端强耦合区域。控制效果上对比三种方案控制方案最大电压偏差(p.u.)电压越限节点数全网网损(MWh/日)无功调节次数无控制0.07351.520集中式MPC0.02801.2168集群协调控制0.03101.2423从表里可以直观看到集群协调控制在电压控制效果上和集中式MPC很接近最大偏差0.031对0.028但无功调节次数大幅下降23次对68次。这说明集群化控制显著减少了控制动作的频繁程度对设备寿命和通信带宽都是利好。代价是网损略高一点但完全可以接受。5.2 调试中最常见的几个问题我在代码调试过程中遇到过几个很有代表性的坑每个都花了不少时间第一个坑是谱聚类特征值分解出错。eigs在求解归一化拉普拉斯矩阵的最小特征值时如果K设置过大比如接近节点数的一半算法会不收敛或者返回复数特征值。排查方法是打印特征值序列检查是否有接近0的特征值以及是否有虚部。解决方式要么减小K要么改用svds做截断奇异值分解。第二个坑是电气距离矩阵的对角线元素处理。灵敏度矩阵中Sii本身反映节点i自调节能力电气距离公式中分母包含Sii×Sjj这是合理的但我在最初实现时忘了把对角线距离置零结果相似度矩阵对角线值变成1K-means聚类时所有样本点都带一个相同特征严重干扰聚类结果。这个问题在IEEE 33节点上不明显换成69节点系统就暴露出来了因为节点数量增加后对角线特征的权重占比被稀释聚类结果会随机变化。第三个坑是控制仿真中的潮流收敛问题。集群协调控制每次更新参考电压后都要重新计算潮流来验证电压是否改善。如果下垂控制产生的无功指令使得某些节点无功倒送严重潮流可能不收敛。排查时我用了一个小技巧把逆变器无功出力曲线拉出来看是否有节点长时间顶在无功上限。如果有多半是下垂控制增益太大或者无功容量配置不足需要回去调整集群内部分布或控制参数。5.3 让代码更贴近工程实际的小改进论文仿真做到一定程度就会想把它往工程实际靠一靠。这里分享几个我做的小改进虽然都不复杂但对结果的可靠性提升非常明显。第一是光伏出力时间序列的建模。很多初学者直接给光伏一个恒定出力这样控制策略的性能很容易“看起来很好”但一旦换成真实辐照度数据包含云层遮挡导致的快速波动控制效果可能大幅恶化。我在仿真里加入了一组实测辐照度数据并预留了随机波动的接口这样测试出来的控制策略抗扰性更可信。第二是通信延时的模拟。集群间协调控制依赖通信网络而通信不可能零延时。我在Matlab代码里对上层控制指令加了两个采样周期的延时环节观察电压曲线是否仍然稳定。如果加延时后系统出现振荡说明协调层控制周期设计偏紧需要拉长控制间隔或改用事件触发机制。第三是通信故障的容错测试。我人为断开一个集群的通信通道观察系统表现此时该集群退化为纯本地下垂控制电压可能轻微越限但不应导致全网崩溃。如果出现大面积电压越限说明集群划分时边界节点的耦合没有处理好需要回头调整划分结果——这个问题在集群划分阶段就要预先考虑而不仅仅是控制阶段的事。写在最后的一点经验整套代码从集群划分跑通到电压协调控制稳定运行我大概用了三周时间其中一半时间花在调试和参数整定上。回头看最值得反复琢磨的环节其实是集群划分这一步——它决定了后续控制的“天花板”。电气距离算得准、集群分得合理后面的两层控制自然顺理成章如果划分粗糙再精妙的控制算法也弥补不了结构性的缺陷。最后再分享一个辅助调试的小技巧在Matlab里把集群划分结果、每个集群的电压曲线、无功出力曲线分别画在同一个图窗的不同子图里这样能一眼看出“哪个集群控制效果最差”然后集中精力优化那个集群的参数比每次看全网的汇总指标高效得多。