ARTICLE DETAIL

资讯详情

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

串行并行ADMM在主从配电网分布式优化控制中的应用与工程实践

串行并行ADMM在主从配电网分布式优化控制中的应用与工程实践 我最近两年主要精力基本都压在基于串行并行ADMM算法的主从配电网分布式优化控制上。之所以盯上这个方向纯属被现场逼的。分布式光伏渗透率一上来配电网的电压越限、线路重载问题就开始冒头而真要做一个全网优化控制数据分散在不同系统、不同台区连基本模型都对不齐集中式优化根本算不动。后来我把目光转到了分布式优化控制用ADMM把整体问题拆到主从各区域让每个区域自己算只在边界交换少量信息。中间把串行和并行两种模式都实现了也踩了不少坑。这篇文章我会从算法原理、主从建模、串行与并行实现、参数调优到工程落地的坑完整拆开讲一遍。适合正在做配电网分布式优化、研究ADMM应用或者准备把自己手头的大规模优化问题改成分布式求解的工程师和研究生参考代码思路可以直接拿去做仿真复现。1. 项目到底在解决什么问题1.1 集中式优化在大规模配电网里为何先卡住配电网优化控制传统上走的是集中式路线把整个馈线的拓扑、负荷、光伏、储能数据汇总到一台主站建一个全网模型用商业求解器跑全局优化。小网络时代这没什么问题可规模一大三个麻烦会同时冒出来。首先是数据壁垒。营销系统管用户和分布式光伏配电自动化系统管开关和潮流调度系统管主网侧指令这几个系统的数据往往不在一个物理网络里甚至不是一个部门在维护。要做全网集中优化得先把数据全部汇聚到一个模型里这个前提在现场经常就不成立。其次是模型规模。一个地级市的配电网动辄几千上万个节点如果再把三相不平衡、低压台区模型加进去全局优化模型的变量和约束规模会非常恐怖商业求解器也未必能在调度周期内给出结果。就算算出来了网络拓扑一变全网模型又得重新维护。还有更硬的限制实时性。配电网运行状态是时变的光伏出力和负荷都在波动优化控制需要分钟级甚至秒级响应。集中式计算把所有任务压在一台主站上一旦通信或计算出现瓶颈整个控制周期就废了。分布式优化控制正是在这个背景下被推上前台——每个区域用自己的数据算自己的局部问题只在边界上交换少量协调变量。1.2 分布式优化控制为什么绕不开ADMM分布式优化的语言很简单把一个大问题切成多个小问题各自求解再通过协调机制达成全局一致。但在配电网这种强耦合的物理系统里切出来的子问题并不是完全独立的区域之间的联络线功率、边界节点电压天生互相牵扯。要把这种耦合关系处理好可选的算法框架其实不多。ADMM交替方向乘子法是目前最实用的一种原因很直接。第一ADMM对问题结构的要求相对宽松。子问题只要能写成“局部目标加二次惩罚项”的形式内部函数可以是非线性的甚至可以用商业求解器去解。这对电力系统来说特别重要因为配电子问题里充满了潮流方程、设备上下限、储能SOC这些复杂约束。第二ADMM的协调机制非常轻量。每个迭代周期各区域只需要把边界变量的影子值传出去拿回一个更新后的全局变量再更新一轮对偶变量。通信量是KB级别对现有配电自动化系统的带宽完全友好。第三ADMM有比较成熟的收敛性和残差判断体系。原始残差和对偶残差可以分别刻画“区域间一致性”和“最优性”的逼近程度调参和判断收敛都有明确抓手。对于工程落地来说这一点比很多黑箱式启发算法靠谱得多。当然ADMM不是银弹后面我会专门讲它在配电网应用里的各种翻车现场和对应解法。1.3 主从结构从电网拓扑到算法架构的天然呼应配电网的物理结构天然就是主从式的。一个变电站带多条馈线一条馈线带若干台区台区下面再接分布式电源和负荷层层辐射。通信系统也基本沿这个结构组网主站和子站之间是上下级关系子站之间通常不走直接链路。这种结构落到优化模型里正好可以对齐ADMM的经典形式一个主区域当协调者负责全局变量的汇聚多个从区域各管各的子问题负责局部优化。主区不需要知道每个从区的完整数据从区也不需要把自己的隐私信息上报两边只在边界上交换“联络线有功、无功、边界电压”这几个有限的量。从数学上看这种主从架构也非常自然。全局优化问题可以拆成主区子问题和从区子问题的叠加它们之间的耦合只在主从联络线边界上。ADMM的全局变量更新由主区完成从区只负责自身的局部变量迭代天然就形成了分布式控制闭环。而且在工程实施上主从架构意味着改造量最小。主站计算中心可以直接承担协调者角色各台区边缘计算终端运行从区子问题通信链路沿用现有主从通信网络不需要为算法额外搭一套复杂的分布式通信拓扑。2. 串行并行ADMM的核心原理与设计选择2.1 ADMM三步迭代拉格朗日与全局一致思想不把ADMM的数学骨架讲清楚后面所有调参经验都会变成玄学。我用最精简的方式描述一下。我们最终要解的全局问题可以写成所有区域目标函数的求和同时每个区域有一组局部变量并且这些局部变量在边界上要和全局变量保持一致。min Σ f_i(x_i)s.t. x_i z, i 1..N这里的 z 是全局一致变量x_i 是各区域在边界上的局部影子变量。注意这个“影子变量”很关键它不代表区域内部的全部状态量只是那些需要与相邻区域对齐的边界量。ADMM的迭代分为三步。第一步所有区域各自求解自己的子问题x_i[k1] argmin f_i(x_i) (ρ/2) * ||x_i - z[k] u_i[k]||^2这一步里每个区域的局部目标函数 f_i(x_i) 是整个分布式优化里最灵活的部分可以包含网损、成本、惩罚项等。二次项的作用则是把局部变量拉向当前全局变量同时通过对偶变量 u_i 修正偏差方向。第二步主区收集所有 x_i[k1] 和对偶变量信息更新全局变量。z[k1] (1/N) * Σ (x_i[k1] u_i[k])对于边界变量来说这一步就是求平均值把各区域不一致的地方抹平。第三步各区域更新对偶变量u_i[k1] u_i[k] (x_i[k1] - z[k1])对偶变量像是一个“记账本”它记录了这个区域上一次迭代中与全局变量之间的偏差下一次迭代时用这个偏差去修正子问题的优化方向。三个步骤循环迭代直到原始残差和对偶残差都低于阈值。整个过程可以用一个类比来记每个区域像是一个独立核算的小组先各自算自己的方案然后把对外口径统一算不准的地方通过罚款项一点点修正最终达成全网一致的运行方案。2.2 串行ADMM实现像流水线一样顺序推进串行ADMM严格按区域顺序更新子问题。假设区域编号1到N一次完整迭代内先解区域1再解区域2依此类推直到区域N解完最后才统一更新全局变量和对偶变量。这种模式很像流水线A工位干完把半成品传给B工位B工位拿到的是最新结果干完再传给C工位。后一个区域在求解时前面区域的结果已经更新过了这种信息即时性正是串行模式的主要优势。在配电网场景里串行模式有个特别吸引人的特点迭代次数通常会比并行少。原因是区域之间的耦合信息传递更及时区域A刚算完的边界功率结果马上就能影响区域B的下一轮子问题不需要像并行模式那样等一个完整周期。但代价也很明显单次迭代的墙钟时间等于所有子问题求解时间之和。如果区域数量多或者某个区域的子问题时别复杂整体计算时间会被明显拉长。而且这种模式天然是顺序计算很难充分利用边缘计算终端的多线程或多机并行能力。需要强调一点串行ADMM里对偶变量的更新时机有两种做法。一种是每个子问题解完立即更新该区域对偶变量另一种是等所有子问题解完再统一更新。前者信息利用更充分收敛更快后者实现更简单和并行代码框架切换更顺。我在实际代码里用的是前者也就是最常用的Gauss-Seidel式更新。2.3 并行ADMM实现像多工位一样同步作业并行ADMM是标准教科书里ADMM的标准形式。每个迭代周期所有区域同时求解自己的子问题全部完成后汇总到主区更新全局变量再统一更新对偶变量进入下一轮。类比一下就是多个工位上的工人各自独立干活干完一起把成果交到组长那里组长统一对账后再通知大家下一轮怎么干。工位之间不互相直接通信消息都通过组长中转。并行模式的优势是单次迭代的耗时基本取决于最慢那个区域。如果各区域计算能力均衡而且能够真正并行部署整体计算效率会远高于串行模式。这也是它更适合“每台区一个边缘计算终端”这种架构的原因。但并行模式有一个隐藏问题所有区域每轮都要等最慢的那个。如果某台区模型特别大或者边缘终端性能差它就成了整个算法的木桶短板。更尴尬的是通信也是一个同步点任何一条链路抖动这一轮迭代就只能等待。ADMM的全局一致性更新在并行模式下数学性质很漂亮理论收敛性结果更完备调试起来也更有底气。不过实际工程中“理论标准”不是唯一选择。并行模式要求各区域能同时计算如果算力资源有限所谓的并行其实也串行化了那反而会白白增加通信开销不如直接上串行。2.4 串行还是并行按计算资源与通信条件选择不搞一刀切我把两种模式的关键差异整理成一个表方便大家对照自己的实际场景做选择。对比维度串行ADMM并行ADMM单次迭代耗时各子问题耗时之和最慢子问题耗时区域间信息更新后序区域可用前序区域最新结果所有区域只能等上一轮结果迭代次数趋势区域耦合强时通常更少标准理论框架下稳定计算资源要求单台串行也够用要求各区域能真正并行计算通信同步压力每一步依赖上一步结果链路断则卡必须等所有区域回报同步等待更明显典型适用场景区域少、子问题规模差异大区域多、边缘算力均衡在主从配电网里如果从区数量在3到5个左右而且各台区的模型规模和求解难度差异较大我建议优先试串行模式。原因很简单并行模式下每轮都要等最重的那个区域如果它本身计算量远大于其他区域并行带来的收益会被木桶效应吃掉。如果从区数量超过8个各台区硬件配置接近通信链路也稳定那并行模式大概率是更优解。它能把计算压力摊到多个边缘节点上整体吞吐能力更强。还有一个很容易被忽略的点串行和并行在代码实现上切换起来并不复杂核心框架一样只是子问题调度方式不同。我建议项目初期把两种模式都实现然后在一个固定算例上对比用数据说话不要拍脑袋选择。3. 主从配电网分布式优化控制的建模与实现要点3.1 配电网分区建模哪些变量进子问题哪些变量进协调层主从配电网的分布式建模第一个问题就是区域边界画在哪哪些变量进子问题哪些变量进协调层。区域的划分通常遵循两个原则。第一是电气耦合强度联络线两侧的功率交互就是耦合所在把强耦合的环节留在同一个区域内可以降低协调层的压力。第二是管理边界一个台区、一个园区或者一条馈线的管理主体相对独立按管理主体划分不仅符合实际也便于处理数据壁垒问题。划分完之后每个区域内都有自己的局部优化问题。局部变量包括区域内的光伏出力、储能充放电功率、可调负荷调节量、节点电压、支路功率等。进入协调层的则是边界联络线上的关键量比如主从联络线有功功率主从联络线无功功率边界节点电压幅值举个例子一个从区受上级主区供电的功率从区的本地模型里会把它作为变量主区的全局优化模型里也有对应变量。ADMM的协调层通过让这两个值相等来保证两个区域对联络线功率的理解完全一致。在代码层我习惯把边界变量单独抽出来作为每个子问题里的“影子变量”和区域内部状态量分开处理。这样做的理由是ADMM迭代时只需要对边界变量做一致性处理内部变量可以完全留在线实时求解器里减少通信和协调的复杂度。3.2 潮流模型的取舍优先用SOCP封装子问题配电网分布式优化的难点很大程度集中在潮流模型选择上。如果直接用完整非线性潮流方程子问题就是非凸问题ADMM的收敛性理论会失去根基实际迭代时也容易在局部最优附近来回震荡。我在项目里最终用的是SOCP二阶锥规划松弛。DisfFlow方程描述辐射状配电网的潮流关系非常合适形式如下P_j P_i - r_ij * l_ij - p_jQ_j Q_i - x_ij * l_ij - q_jv_j v_i - 2*(r_ij*P_i x_ij*Q_i) (r_ij^2 x_ij^2)*l_ij配合松弛条件v_i * l_ij P_i^2 Q_i^2整个潮流约束是凸的而且对配电网是精确松弛。这样每个子问题都能保持凸优化结构ADMM外层收敛有了理论保障内部的潮流精度也够用。为什么不进一步简化成线性DistFlow线性化在纯负荷模型里精度尚可但一旦加入分布式光伏大范围反送功率还有储能充放电切换线性模型会低估电压越限风险优化出来的控制策略执行后往往对实际电压改善有限。SOCP的求解成本比线性模型高一截但换来的是可靠性这笔交易在配电网控制里值得。每个区域内部采用SOCP子问题后子问题本身用现成的凸优化求解器处理即可。把分布式ADMM外面的迭代框架和区域内部商业求解器的强大求解能力结合起来这种“外层分布式、内层集中式”的混合结构是目前工程落地的主流做法。3.3 ADMM参数标定rho、松弛因子与停止阈值ADMM调参是门手艺活经验值非常重要。下面几个参数是我在几个不同规模算例里反复验证过的。ρ是步长参数作用是平衡原始残差和对偶残差的收敛速度。ρ太小对偶变量每次只走一小步全局变量更新缓慢整体迭代次数大幅增加。ρ太大局部变量被二次惩罚项束缚得太紧对偶残差会剧烈震荡甚至出现迟迟不收敛的情况。从工程经验看配电网分布式优化的ρ可以从5到20之间起步然后根据残差曲线微调。更有效的做法是引入自适应ρ。每迭代若干轮计算原始残差和对偶残差的比例如果原始残差远大于对偶残差就把ρ乘一个大于1的系数反过来就除以系数。这本质上是给ADMM装了一个巡航控制。我实测下来自适应ρ能让迭代次数在多数算例里减少20%到40%。松弛因子 α 也很值得利用。全局变量更新时可以加入松弛处理本质上就是在“完全对齐”和“略微超调”之间找一个更好的平衡点。α在1.5到1.8之间效果都不错收敛速度通常能提升10%以上。我还是推荐用一个固定值省心。停止阈值方面我一般把绝对容差设在1e-4到1e-3相对容差1e-4。需要提醒的是阈值设太严会让最后几十轮迭代都在消除无关紧要的数值抖动浪费大量计算资源。配电网控制本身就是跟实时性赛跑该宽松时就宽松。3.4 边界通信设计轻量、可靠、有超时兜底分布式ADMM的上层设计再好通信环节不处理干净也一样会翻车。边界通信的核心诉求就三条轻量、可靠、耐受故障。轻量意味着一次迭代交换的数据量必须很小。主从区域只需要传递边界有功、无功、电压幅值这类标量信息一个从区通常就是十来个浮点数按字节算也就几百字节。千万不要在这里传整个区域内所有节点的状态量那样会把分布式优化的通信优势完全浪费掉。可靠意味着数据格式和通信协议要稳定。通信协议的选型如果主站和从区之间走的是配电自动化网络用MODBUS或者IEC 61850类通信协议更顺如果是新建的分布式边缘计算网推荐用轻量级消息总线或者gRPC。我在仿真到半实物联调过程中发现gRPC在传输稳定性上明显更省心断线重连和超时控制也更容易实现。超时兜底非常关键。实际网络中不可能保证每次都同步。我的工程策略是主区广播全局变量后启动超时计时如果某个从区未能在规定时间内返回子问题结果就把该从区上一轮的x值作为本轮x参与全局变量更新同时给该区域打上标记。这样算法不会因为单点故障卡死只是该区域的协调精度暂时下降故障恢复后自动回到正常状态。4. 实操过程从仿真到代码实现4.1 小型主从算例与参数设定为了把代码逻辑讲清楚我设计了一个极简的主从配电网算例。主区M代表一个变电站节点两个从区A和B分别表示两个台区。从区A含一组光伏额定出力0.5 MW一个0.2 MW的普通负荷。从区B含一个储能系统额定容量0.3 MW/0.6 MWh一个0.3 MW的普通负荷。主区M连接上级电网可通过联络线向A、B两个从区供电购电成本系数高于本地新能源发电成本。边界变量为主区M到从区A、B的两条联络线有功功率记为 p_A 和 p_B。优化目标是最小化总购电成本加弃光惩罚加储能损耗惩罚。为了让ADMM的收敛过程更直观我把各区域的目标函数设成了二次函数形式f_i(p) a_i * p^2 b_i * p这样就构成一个有N3个区域、2个边界变量的标准分布式优化问题。别看它简单ADMM在串行和并行模式下收敛节奏的差异在这个例子上就能看得清清楚楚。4.2 并行ADMM的实现同步收敛主干代码下面给出并行ADMM的主干伪代码。实际工程中solve_subproblem对应的是每个区域内部调用SOCP求解器求解局部优化问题我这里省略了内部模型的完整展开重点展示协调层逻辑。def parallel_admm(nodes, edges, max_iter, rho, alpha, eps_abs, eps_rel): # 初始化全局变量z和对偶变量u z {e: 0.0 for e in edges} u {i: 0.0 for i in nodes} x {} for k in range(max_iter): # 第一步所有区域并行求解子问题 for i in nodes: x[i] solve_subproblem(i, z, u[i], rho) # 第二步主区汇聚更新每个边界对应的全局变量 z_new {} for e in edges: region_list [i for i in nodes if e in boundary_edges[i]] z_new[e] sum(x[i][e] u[i][e] for i in region_list) / len(region_list) # 第三步各区域更新对偶变量alpha是松弛因子 for i in nodes: u[i] { e: u[i][e] alpha * (x[i][e] - z_new[e]) for e in boundary_edges[i] } # 收敛判断 r_orig max( abs(x[i][e] - z_new[e]) for i in nodes for e in boundary_edges[i] ) s_dual max( abs(rho * (z_new[e] - z[e])) for e in edges ) if r_orig eps_abs and s_dual eps_abs: break z z_new return x, z这个实现里最关键的点是第二步的 z_new 更新。它不是简单把所有x[i]取平均而是针对每个边界变量e把与该边界相关的所有区域的对偶变量和影子变量一起求和再平均。这是保证边界一致性的核心公式。4.3 串行ADMM的实现逐区域更新代码串行ADMM的代码和并行版本高度相似区别只在于更新顺序。串行版本会在每个子问题求解完成后立刻更新该区域相关的全局变量再继续下一个区域。def sequential_admm(nodes, edges, max_iter, rho, alpha, eps_abs, eps_rel): z {e: 0.0 for e in edges} u {i: 0.0 for i in nodes} x {} for k in range(max_iter): # 严格按顺序逐个求解子问题 for i in nodes: x[i] solve_subproblem(i, z, u[i], rho) # 每个子问题解完后立即更新该区域相关的全局变量 for e in boundary_edges[i]: region_list [j for j in nodes if e in boundary_edges[j]] z[e] sum(x[j][e] u[j][e] for j in region_list) / len(region_list) # 立即更新该区域对偶变量 u[i] { e: u[i][e] alpha * (x[i][e] - z[e]) for e in boundary_edges[i] } # 收敛判断同并行版本 r_orig max( abs(x[i][e] - z[e]) for i in nodes for e in boundary_edges[i] ) s_dual max( abs(rho * (z[e] - z_prev[e])) for e in edges ) if r_orig eps_abs and s_dual eps_abs: break z_prev z.copy() return x, z注意串行版本每解完一个区域就更新 z 和 u后续区域进入求解时会直接拿到前面区域的最新结果这种信息即时性让迭代次数明显减少。但也看到代码里多了一步z_prev的保存用于对偶残差计算这是因为z不是整轮统一更新的需要单独记住上一轮值。4.4 实测收敛对比迭代次数和墙钟时间谁更重要在4.1那个小型算例上我分别跑了串行和并行版本记录到一组非常有代表性的数据。串行模式迭代56轮收敛并行模式迭代71轮收敛串行在迭代次数上优势明显大约少了20%。但如果看墙钟时间情况会反转。并行模式的单轮耗时是所有区域同时求解后取最大值即使迭代次数多总墙钟时间反而更短。串行模式虽然迭代少每个区域都要依次等待总时间更长。指标串行ADMM并行ADMM迭代次数约56轮约71轮单轮平均耗时约0.9秒约0.4秒总墙钟时间约50秒约28秒我在这个算例上得到的结论是考核指标选“迭代次数”会误导工程决策真正要优化的是墙钟时间。串行模式适合在“区域个数少但是子问题计算时间差距很大”的场景使用因为此时并行模式的木桶效应会把这个优势彻底吃掉并行模式则适合算力均衡、可以真正并行部署的场合。5. 常见问题与工程排坑记录5.1 收敛性折腾记录参数与初始化的复盘我踩得最深的一个坑是ρ参数选择。最开始在一个12节点的测试系统里跑ρ取10结果原始残差下降得挺快但对偶残差怎么压都压不下去全局变量在目标值附近来回震荡。当时一度怀疑是ADMM在非凸问题上失效了后来才发现就是ρ太大惹的祸。把ρ降到1之后振荡明显缓解但迭代次数又暴涨了跑了200多轮还没收住。最后靠的是自适应ρ方案每20轮检查一次原始残差和对偶残差比例偏差超过3倍就调整ρ。这个方案在大多数算例上都能稳定收敛。初值问题也值得单列一条。ADMM最怕从一个离真解太远的点出发前期那种来回“拉扯”会消耗大量迭代次数。我建议在每次优化开始前先用上一次滚动优化的解做热启动。如果系统刚启动没有历史解就先跑一次相对粗糙的集中式潮流计算把边界变量初值算出来再进入迭代效果立竿见影。5.2 标幺值与边界变量符号最隐蔽的两个坑很多人做分布式优化时会忽略标幺值问题。主区用10kV基值从区用0.4kV基值两边传给协调层的电压和功率数据如果不统一到同一个基准值系统ADMM会一直处在“永远收敛不了”的状态。这个问题症状不明显看起来像参数没调好实际却存在于建模环节。我的做法是在分区建模阶段就强制约定所有区域统一用相同的标幺值基准尤其是边界变量的基准值必须全网一致。边界变量符号是另一个隐蔽的坑。主区看向从区功率方向是从主区流向从区为正从区看向主区功率方向可能就反过来。两个区域对同一根联络线功率的理解可能出现符号相反。解决方式是提前定义好“功率正方向”每个区域的边界变量都按这个方向建模否则对偶变量更新会在符号上互相打架。这种问题在仿真里可能因为数值对称而侥幸收敛但在硬实时场景里一定会暴露。建议写一个脚本在第一次迭代前自动检查所有边界变量的维度、符号、单位建立一致性校验。这个检查脚本我后来长期保留每次新增区域时都会跑一遍。5.3 通信与并发实现里的实际妥协我在半实物仿真阶段遇到的主要问题是通信不同步。并行模式要求各从区在同一轮内上报结果但只要有一个台区的网络延迟稍大整个迭代就卡在等待状态。最初我用的是严格的同步等待策略结果某台区一次网络闪断优化进程直接卡了5分钟实时控制根本没法接受。后面改成了超时淘汰结果预测策略主区等待超时后如果某个从区本轮没有返回结果就用上一轮该区域的结果顶替同时把该区域的“参与权重”临时置为零。这样虽然会暂时牺牲一点全局一致性但至少算法不会死锁。还有一个工程细节每个区域的子问题求解器要设置内部最大迭代时长不能任由某个区域在子问题里无限迭代。我通常把子问题求解时间上限设为整体迭代周期的三分之一超时就返回当前可行解。原因是ADMM外层迭代本身就能容忍子问题的一定偏差子问题解得太精确对整体收敛速度的贡献边际效应并不高。5.4 往MPC、数据驱动方向扩展的可行性这个项目跑顺之后我一直在想它还能往哪走。目前比较看好的一个方向是和模型预测控制结合。ADMM作为滚动优化内部的求解引擎每个控制周期内迭代若干轮把MPC的多步优化问题分布式求解这样每个从区都可以在自己的控制终端里完成预测和优化主区只需协调边界。对储能调度和光伏出力调控这类时变场景很有意义。另一个可探索的方向是用数据驱动的方法辅助ADMM的初值预测。既然热启动能大幅减少迭代次数那就可以用历史数据训练一个轻量模型根据当前负荷、光伏出力和历史边界变量预测下一轮全局变量的近似值。这样能进一步压缩迭代次数让分布式控制的实时性更好。还有就是把主从结构扩展到微电网群。一个主微网带若干子微网拓扑结构和主从配电网高度相似ADMM的协调框架几乎可以平移过去。唯一需要额外处理的是微网孤岛切换时的拓扑变化这会引入离散决策目前的ADMM框架还不直接支持需要在上层做模式切换逻辑。如果让我再从头做一遍这个方向我会把串行和并行模式在项目第一天就同时建立起来准备好标准算例和对比脚本。这样当现场实际条件明确时可以直接通过数据选择模式而不是靠经验猜测。ADMM的参数ρ也没有一劳永逸的答案每次换网络结构或者新增一台储能都可能需要重新标定一次。这些经验真心希望能帮你少折几次腰。
返回列表