
简介这是一份关于交直流混联电力系统潮流计算与机组组合的专业参考文献面向电力系统研究人员、调度运行及工程技术人员适用于交直流混联电网规划、运行方式安排与调度优化等场景。内容围绕统一迭代法与交替迭代法展开逐一说明其原理、收敛性短板与改进策略并结合快速解耦、直流系统系数矩阵处理等细节给出提升计算效率的途径机组组合部分介绍基于Benders分解的主层/子层交替求解思路同时纳入负荷不确定性情境修正兼顾安全性与经济性。资料包为单文件PDF大小2.13MB便于定向阅读与归档现有113人学习下载。对关注电力系统稳态分析、直流输电建模或安全约束机组组合的读者这份文献能提供较系统的理论梳理与算法参考。1. 交直流混联系统为什么让传统潮流程序失灵做调度计划这些年我观察到多数团队在交直流混联系统上的首次尝试都倒在同一个前置问题上交流潮流程序和直流换流器方程根本没有在一套模型里握手。交流侧熟悉的 PQ/PV/Balance 节点到了换流器这里会失效——换流器的交流有功、无功和直流侧电压、电流是强耦合的你把它简单当成一个固定功率节点潮流算出来要么不收敛要么得到的解与换流器实际控制方式完全对不上。机组组合Unit Commitment在混联系统里会出现类似问题如果日计划只把直流联络线当作一根“有功功率管道”不考虑直流网电压、损耗和检修方式下的传输能力变化那么做出来的发电计划在实时运行里很难执行。这篇笔记我按自己的工程整理思路从潮流建模走到机组组合建模最后落到避坑和调参希望对要做新能源并网的同行有帮助。2. 混联潮流的建模思路先把换流器方程与控制方式立住2.1 直流电网有几种拓扑潮流方程差别在哪做交直流混联潮流第一步不是写代码而是确认直流侧的拓扑结构。常见的有三类两端直流点对点、多端直流MTDC最常见的是三端或四端放射状网络以及直流电网网状结构。拓扑不同直流节点导纳矩阵 G 的维度和稀疏程度就不同但这只是计算量问题。真正影响建模的是“直流网络内是否允许潮流反转”。在两端直流场景里潮流方向基本固定送端换流器工作在整流状态、受端工作在逆变状态模型可以简化为送受端功率加网损。但多端直流网络一旦出现某个换流站功率反转比如风电场出力从满发变成零功率方向反转原来固定的整流/逆变角色就不再成立必须把每个直流节点都当作可双向传输的功率节点用统一的直流网络方程来求解。这是混联潮流比交流潮流多出来的第一层复杂性直流节点电压 U_d 和节点注入功率 P_d 之间的关系不是线性关系而是 P_i U_i × (G U)_i也就是说同一个节点上功率、电压、电流互相耦合。2.2 换流器的稳态方程VSC 和 LCC 的建模差异换流器是交流系统与直流系统之间的接口它的稳态模型可以抽象成一个有功传输方程加一个无功控制方程。电网换相换流器LCC在目前的存量系统中仍然很多它的直流电压方程是经典准稳态模型U_d U_d0 * cos(alpha) - R_c * I_d其中 U_d0 是空载直流电压由交流侧电压和换流变压器变比决定alpha 是触发角R_c 是等效换相电阻I_d 是直流电流。无功方面LCC 换流器在整流和逆变状态都吸收无功吸收量约等于传输有功的 40%~60%所以交流侧需要配套滤波器和无功补偿装置。我一般在潮流程序里把 LCC 的交流侧 Q 写成有功的函数def lcc_q_from_p(P_dc, gamma0.5): # gamma 为无功吸收系数工程上取 0.5 作为初值最终由滤波器投切修正 Q_ac P_dc * gamma return Q_ac电压源换流器VSC的建模则更接近我们熟悉的同步机接口。VSC 能独立控制有功和无功直流侧是电压源特性交流侧等效为一个可控电压源。稳态计算中我一般用功率接口模型def vsc_interface_pq(P_dc, Q_ref, P_loss_ratio0.01): # P_dc 0 表示从直流网吸收功率 P_ac P_dc P_loss_ratio * abs(P_dc) Q_ac Q_ref return P_ac, Q_ac这个函数看起来很浅但它是交替迭代法的核心接口。P_loss_ratio 用来表示换流器损耗我一般取 1%在需要精确校核时换成损耗曲线查表。VSC 的直流电压方程则采用定电压控制的理想电压源假设即被控节点的 U_d 直接给定如果换流器参与直流电压调节需要在直流网络方程中引入下垂控制特性这一点放在后面避坑章节展开。2.3 控制方式决定边界条件一张表避免“两侧角色”错位混联潮流最容易翻车的地方是交流侧节点类型和直流侧控制方式没有对应起来。我整理了一张表每次建模型前先填这张表再写代码换流器控制方式直流侧角色交流侧节点模型说明定有功 定无功定功率 PQ 节点PQ 节点最常见风电场侧换流站定有功 定交流电压定功率节点PV 节点需要给定逆变器交流输出电压定直流电压 定无功直流平衡节点P 给定、Q 给定通常选在强系统侧或主网换流站定直流电压 定交流电压直流平衡节点PV 节点可选但在交流系统弱时会不收敛下垂控制非平衡节点但参与调压PQ/PV 按有功给定多端直流推荐电压随功率线性偏移这张表的作用是防止“两侧角色”错位。典型错误是把定功率换流站放在直流网络里当定电压节点结果直流潮流算出所有节点电压都相等看起来收敛了但换流器实际控制逻辑根本不支持这种运行点。所以做混联潮流的第一步绝对是先把每个换流站的直流侧角色和交流侧节点类型在表格里一一对应填好再开始写程序。3. 用交替迭代法写 AC/DC 潮流程序最小可复现方案3.1 直流网络求解器三端 VSC 直流网怎么算统一迭代法需要把直流变量直接嵌入交流雅可比矩阵实现麻烦而且调试困难。我实际工程中更常用交替迭代法交流潮流算完得到换流器接口的功率和电压把它作为直流侧边界条件解直流网直流网解完把新的交流侧功率注入带回交流潮流反复迭代直到两侧变量都稳定。这个方案收敛性在 VSC 系统中足够好调试也直观。直流网络求解的核心代码我直接给出一个牛顿法函数import numpy as np def dc_net_pf(G, P_spec, slack_idx, U_slack, U0, max_iter30, tol1e-8): 多端直流网络潮流求解 G: 直流网络电导矩阵 P_spec: 定功率节点注入功率注入直流网络为正slack节点对应位置填0 slack_idx: 定电压节点索引 U_slack: 定电压节点给定电压 U0: 全部节点电压初值长度与G一致 n len(G) U U0.copy() U[slack_idx] U_slack free [i for i in range(n) if i ! slack_idx] for it in range(max_iter): I G U # 节点注入电流 # 残差定功率节点满足 P U * I F np.zeros(n) for i in free: F[i] U[i] * I[i] - P_spec[i] # 雅可比矩阵J[ii,jj] dF_i/dU_j m len(free) J np.zeros((m, m)) for ii, i in enumerate(free): for jj, j in enumerate(free): if i j: J[ii, jj] I[i] U[i] * G[i, i] else: J[ii, jj] U[i] * G[i, j] dU np.linalg.solve(J, -F[free]) U[free] dU if np.max(np.abs(dU)) tol: break return U逻辑说明每个定功率节点的方程是 P_i - U_i × (G U)_i 0因为 I G U所以残差 F 就是 U × I 减去给定功率。雅可比矩阵的对角元由两项组成一项是节点注入电流本身另一项是节点电压乘以自电导这来自乘积求导。非对角元则是节点电压乘以互电导。这里要特别注意的是功率方向我统一约定“注入直流网络为正”送端换流站 P_spec 为正受端为负slack 节点不参与方程其不平衡功率自动由定电压换流站吸收。初值方面U0 不要离额定电压太远。我习惯取额定值的 1.02~1.05 倍比如 640kV 系统取 650kV 附近。定功率节点初值给太低牛顿法很可能直接算出负电压。3.2 交流侧换流器接口把直流结果折算回 PQ 注入直流网解完后需要把每个换流器的直流功率结果转换成交流侧的有功注入再返回交流潮流迭代。接口函数如下def update_vsc_pq(U_dc, I_dc, Q_ref, rated_s1000.0, loss_ratio0.01): # 直流侧有功 P_dc U_dc * I_dc # 换流器损耗从交流侧吸收所以交流侧有功取直流功率加损耗 P_ac P_dc loss_ratio * abs(P_dc) # 无功按定无功控制给定同时校验容量约束 S_cur np.hypot(P_ac, Q_ref) if S_cur rated_s: # 容量越限处理保持有功不变无功等比例缩小输出告警信息 scale np.sqrt(rated_s**2 - P_ac**2) / abs(Q_ref) if Q_ref ! 0 else 0.0 Q_out Q_ref * scale else: Q_out Q_ref return P_ac, Q_out参数说明rated_s 是换流器额定容量我在这个函数里做了无功越限的等比例收缩处理。实际工程中更严谨的做法是直接让交流潮流程序输出无功越限告警然后把该节点从定无功修正为定电压限制重新计算。这里等比例收缩只是一个兜底用于判断“这台换流器在给定功率点能不能站得住”。这里的 I_dc 在交替迭代中来自上一次直流网潮流结果。第一次迭代时没有直流解就用额定功率除以额定电压估算。整个交替迭代的流程是交流潮流 → 得到换流器交流母线电压 → 估算直流电流 → 解直流网 → 更新交流侧 P/Q → 再解交流潮流直到换流器交流有功和直流电压的变化量都小于收敛阈值。收敛判据我习惯用换流器 P_ac 变化量小于 0.1MWU_dc 变化量小于 0.1kV。3.3 混合控制模式的切换下垂控制怎么收敛多端直流系统里如果采用下垂控制就没有严格意义上的“定直流电压节点”每个换流站的电压会随功率偏移。这种系统用上面的 newton 函数会出问题因为 slack 节点不存在G 矩阵奇异。我常用的做法是改进定电压节点把下垂控制换流站写成电压跟随功率的线性关系U_i U_ref_i - k_i × P_i然后把方程替换进直流网络求解。具体实现里我在每一次迭代前按上次迭代的 P 更新各下垂换流站的 U_ref再把它当作临时定电压节点求解。这样虽然多了一层迭代但程序结构不用改收敛效果在工程上也足够。有一个参数经验值得分享下垂系数 k_i 的取值范围一般在 0.01~0.05 kV/MW 之间取得太小起不到均摊功率的作用取得太大又会出现电压偏差过大导致关联换流器过流。我调试新系统时习惯先给 0.02 起步看系统内各换流站功率分担比例再调整。4. 交直流混联机组组合的数学建模从直流功率边界到 MILP4.1 目标函数、决策变量和基本约束潮流计算解决的是“给定运行点是否可行”机组组合UC解决的是“未来一天哪些机组开、发多少电、直流外送多少”。这两件事在混联系统里是串起来的UC 算出来的运行点必须通过潮流校验。UC 的标准目标函数已经沿用了几十年但在混联系统里必须增加直流换流器的运行费用和弃风惩罚项。决策变量包括机组启停变量、机组出力、直流联络线功率。我习惯把直流功率也设为连续决策变量而不是给定常数这样优化器可以自己寻找最优的送受电计划。目标函数可以抽象为# 伪代码展示 UC 目标函数骨架 # m.add_var 表示向求解器添加决策变量 for g in generators: for t in hours: x[g][t] m.add_var(var_typeBINARY) # 机组启停 p[g][t] m.add_var(lb0, ubP_max[g]) # 机组出力 for dc in dc_lines: for t in hours: p_dc[dc][t] m.add_var(lbP_dc_min[dc], # 直流联络线功率 ubP_dc_max[dc]) # 目标机组燃料成本 启停成本 直流输电费用 弃风惩罚 m.objective ( sum(fuel_cost[g] * p[g][t] for g in generators for t in hours) sum(start_cost[g] * x_start[g][t] for g in generators for t in hours) sum(dc_tariff[dc] * abs(p_dc[dc][t]) for dc in dc_lines for t in hours) sum(curtail_penalty * p_curtail[wind][t] for wind in wind_farms for t in hours) )逻辑说明机组出力上下限用 P_max 和 P_min 约束爬坡约束写为相邻时段出力差限制最小启停时间约束需要用连续的启停状态变量。直流联络线功率的上下限不能只用换流器额定容量还要考虑运行方式下的可用传输能力这一点在避坑章节第 5 节会详细说。4.2 直流网络在 UC 里的两种常见建模深度UC 是小时级的大规模混合整数规划不可能直接内嵌非线性直流潮流方程。我见过并且在用的做法分两种。第一种是“单线等效法”适用于点对点直流工程。送端功率、受端功率和损耗直接用固定比例关系比如送端 1000MW、受端 980MW、损耗 2%然后在送端节点加发电功率、受端节点加负荷功率。这个模型简单可靠求解快是目前调度系统里的主力做法。第二种是“多端网络等效法”适用于多端直流。做法是先离线跑一组典型方式下的直流潮流拟合出各换流站节点电压与注入功率的线性近似关系然后把这种近似关系作为线性约束加入 UC。形式上就是一组灵敏度系数约束写成对直流节点功率的线性不等式。如果系统运行方式多变我会在 UC 之外再跑一个“可行性校正”循环UC 出解、直流潮流校验、把越限约束反馈回去重算。前两到三轮就能收敛实际工程中完全可接受。4.3 机组组合结果怎么与潮流计算衔接UC 算完不等于调度计划可以直接下发还必须做一次全时段的交直流潮流校验。这里有个常见的工程流程把 UC 得到的机组出力、直流联络线功率作为潮流计算的边界条件逐时段跑潮流检查交流节点电压、线路载流量、换流器无功越限情况。如果出现越限我不会直接手动改计划而是把越限约束转化为 UC 的额外约束重新求解。比如某断面输送功率超过限额就加一条断面功率之和的线性约束。这个流程在技术上叫“安全约束机组组合”的闭环修正混联系统本身并不改变这套方法论只是把“断面”的概念扩展到了直流线路和换流站无功上。做研究时可以先不管效率把 UC 和潮流校验串成两个独立程序用一个小脚本循环调用落地效果已经很扎实。5. 混联系统潮流与机组组合的 5 个避坑点5.1 换流器控制方式混用算出来换流站功率与设定值对不上现象交流潮流收敛了但换流站交流母线有功与设定值差几十兆瓦检查所有约束又没发现问题。原因直流侧节点类型与换流器交流侧节点类型没有对应起来。比如直流网络里把某站当作定功率节点交流侧又把它当成 PV 节点导致功率不平衡被平分到多个节点。解决建模型前先填 2.3 节的控制方式表一个换流站在直流侧、交流侧的角色必须同时确定而不是各自独立设置。5.2 直流定功率节点初值给太远牛顿法直接蹦到负电压现象直流潮流迭代中间某一步出现电压负值或上万 kV程序直接报错。原因直流功率方程 P U × (G U) 是二次的初值远离工作点时牛顿法会进入发散区另一个常见原因是功率方向定义反了导致方程无物理可行解。解决初值取额定电压的 1.02~1.05 倍且规定 P_spec 注入直流网络为正调试时先关闭交流耦合单独跑直流网络确认直流侧自身能收敛再联调。5.3 UC 里直流功率按固定上限给定N-1 后计划执行不下去现象日内实时调度发现某条交流线路过载原因是直流线路闭锁后功率转移到交流通道。原因UC 只考虑了直流联络线功率约束没考虑直流 N-1 后交流系统的承载能力。解决在 UC 模型里增加直流 N-1 预想故障集约束或者先跑故障方式潮流把关键断面的功率上限反馈给 UC 重算。这里不是要穷举所有故障只需要选择对直流功率影响最大的单一故障。5.4 检修方式下直流可用传输能力不变计划期频繁调整现象某直流通道在检修月被多次下调功率但 UC 边界一直用额定容量导致实际执行时反复调整机组。原因直流可用传输能力受交流侧网架方式影响检修导致送端或受端交流断面减弱。解决把直流 ATC可用传输能力作为随时间变化的边界输入 UC而不是常数。我建议调度周期内每天更新一次 ATC 值用状态估计断面数据计算。5.5 网损处理不当送受端功率不平衡“凭空消失”现象送端换流站功率、受端换流站功率与直流线路损耗三者对不上计算结果中某个节点功率不平衡量偏大。原因把直流线路当成无损元件或者网损只放在线路一端而没有正确分摊。解决在直流网络方程中显式建模线路电阻换流站损耗放在交流侧接口直流线路损耗让潮流自然算出来。对于点对点模型按送端 1% 受端 1% 的工程近似处理也比忽略损耗强得多。6. 从离线模型到滚动修正我建议你把这个技巧做进去做完一套交直流混联 UC 和潮流程序之后下一步是做日前计划与日内修正的衔接。我常用的做法是“固定启停、滚动调整”日内每 15 分钟重新优化一次机组出力和直流功率但机组启停变量保持日前结果不变。这样既保留了机组组合的全局最优性又把计算时间压缩到秒级。修正量计算采用灵敏度系数法。在线性化假设下直流功率变化量会导致关键断面功率近似线性变化因此可以在日内快速计算再调度量。我一般会维护一张灵敏度表每一行是关键断面每一列是可调度的直流线路或机组。每 15 分钟根据最新超短期预测更新边界用灵敏度表算调整量再跑一次带非线性约束的潮流校验。校验不过就迭代一两次基本能覆盖大多数运行场景。我踩过的一个教训是早期做滚动修正时只盯着有功功率忽略了换流站无功裕度。结果有台风期间风电出力波动剧烈换流站无功已经逼近容量上限但日内计划还在按额定无功能力优化导致电压越限。现在我的习惯是每轮滚动修正后都强制检查一次所有换流站的 (P, Q) 运行点是否落在容量圆内并把无功裕度小于 5% 的换流站加入告警列表。这个习惯看起来很笨但真的救回过几次调度安全。希望这个思路能帮助你把交直流混联的调度模型真正用起来少走一点我当年走过的弯路。本文还有配套的精品资源点击获取