基于Matlab的统一求解法交直流混合配电网潮流计算程序详解
做交直流混合配电网潮流计算这些年我踩过的最深的一个坑就是文件名里带着“final_final_unified_nr.m”的程序在师兄手里好好的到我手里一跑就直接发散。原因其实不是矩阵拼错而是我把VSC换流器的直流侧方程漏进了统一雅可比矩阵。这句话听起来像玩笑但恰恰说明交直流混合配电网潮流计算里的“统一求解法”真正的难点并不在牛顿迭代本身而在于怎么把交流网络、直流网络、换流器三个环节的方程和变量以正确的方式放进同一个求解框架里。这篇文章要聊的就是一套基于Matlab实现统一求解法的交直流混合配电网潮流计算程序。我会从为什么纯交流潮流算法不能直接套用开始讲到VSC换流器的稳态建模、统一雅可比矩阵的组装、具体代码框架再给一个可直接参考的小算例最后把实际运行中常见的发散问题和排查技巧整理出来。内容适合三类人看正在写电力系统方向毕业设计的研究生、做配电网规划或交直流混合系统仿真的工程师以及手里已经有交流潮流程序、想往混合网络扩展的Matlab玩家。1. 为什么交直流混合配电网潮流不能直接套用交流潮流算法1.1 混合配电网的“新变量”带来了全新问题传统配电网潮流计算本质上是在求解交流节点功率平衡方程。网络里所有节点都只有一组复电压变量频率固定阻抗参数也都是工频下的交流量。不管你是用牛顿-拉夫逊法、PQ分解法还是前推回代法最终都在处理同一个问题给定发电机出力和负荷求每个节点的电压幅值和相角。但交直流混合配电网不是这么回事。光伏、储能、电动汽车充电桩这些设备的天然属性都是直流特性如果全部通过独立逆变器接入交流系统换流成本高损耗大。现实中越来越多的方案是单独拉一条直流母线把直流源荷都接到这条母线上再通过VSC换流站和上级交流配电网连接。这样一个混合网络里除了交流节点还多出了直流节点直流网络只有电阻、没有电抗不存在相角概念节点变量是直流电压和直流电流和交流会量纲上都不一样。更关键的是换流器本身是一个快速可控的功率接口它既可以看成交流侧的负荷或者电源也可以看成直流侧的有功注入源。它的控制模式会直接改变交流网络和直流网络之间的功率分配关系。比如一台VSC采用定直流电压控制时它的交流侧有功功率并不是固定值而是由直流网络的功率平衡“反推”出来的。这种动态耦合关系决定了你不可能把交流潮流和直流潮流拆开独立算完再做简单叠加。1.2 两条路线交替求解法和统一求解法处理这种混合网络行业内有两个传统方向交替求解法和统一求解法。交替求解法的思路很直接先假设直流侧电压初值把换流器交流侧功率固定下来跑一次纯交流潮流算完交流后把换流器交流有功注入折算到直流侧再跑一次直流网络潮流更新VSC的交流侧功率循环往复直到整个接口功率和直流电压都收敛。这个方法实现上最容易因为很多团队手里有成熟的交流潮流程序只额外增加一个直流潮流程序就行不需要改动原有交流模型。但交替法的缺点也明显交流潮流和直流潮流各自内部收敛外层还要反复迭代属于“套娃式”求解。在交直流耦合较强或者重负荷条件下外层迭代很容易震荡甚至不收敛。而且这种内外迭代没有办法提供交直流混合系统对换流器控制变量的灵敏度信息后续想扩展静态安全分析、最优潮流就非常不方便。统一求解法走的是另一条路把交流节点功率方程、直流节点功率方程、VSC接口方程和控制方程放在同一个失配量向量里所有未知量——包括交流母线电压、相角直流节点电压以及换流器相关变量——放在同一个状态向量里用一套牛顿-拉夫逊迭代同时解出来。这么做的本质是“同时线性化”全部方程共享同一个雅可比矩阵因此保留了牛顿法的二阶收敛特性分量在重载下也能保持比较好的数值稳定性。1.3 统一求解法真正“统一”的是什么我最初以为“统一”指的是交流直流电压用同一套数值去解后来才意识到它的关键是把换流器这个“边界设备”方程和网络方程在同一个框架下联立。交流潮流里我们知道每种节点类型对应一组未知量和方程比如PQ节点给P和Q、PV节点给P和V统一求解法的复杂度在于VSC换流器不是一个固定节点类型它可以有不同控制模式不同控制模式下变量的自由度完全不同。比如一台VSC采用定有功功率加定无功功率控制时它其实和普通PQ负荷很像交流侧给定P、Q直流侧有功也可以根据损耗直接算出来。这种模式下交流直流之间几乎没有强耦合拆开算也没问题。但一旦采用定直流电压控制这台换流器就必须承担整个直流网络的功率平衡交流侧有功功率变成待求量直流电压则是固定参考值。这个时候统一求解法就要给“P_ac”增加一个自由度并让直流网络功率方程来决定它到底是多少。所以统一求解法“统一”的并不只是交直流网络方程它还把换流器控制方程和网络方程统一成了一个闭合代数系统。这也是很多同学在Matlab里实现半天都跑不通的根本原因不是Jacobian矩阵里哪个偏导公式写错了而是变量和方程的对应关系从一开始就没理顺。2. 统一求解法的建模核心VSC换流站的方程怎么进雅可比矩阵2.1 VSC的稳态等效电路与功率方向约定要编程实现第一步是给VSC换流站建一个可计算的稳态模型。忽略高频开关过程后一台VSC可以看作一个可控交流电压源通过换流电抗器和变压器漏抗连接到交流母线。也就是说真正参与潮流计算的是一条交流支路支路一侧是交流母线电压 (U_s \angle \theta_s)另一侧是换流器内部电压 (U_c \angle \theta_c)中间是阻抗 (Z_c R_c jX_c)。这里最容易绕晕的是功率方向。我习惯统一约定从交流母线流向换流器的功率为正即 (P_s, Q_s)换流器向直流网络注入的功率为 (P_{dc})也取正方向换流器损耗 (P_{loss}) 恒为正。于是稳态平衡关系可以写成[ P_s P_{dc} P_{loss} ]如果VSC整流运行时交流母线向换流器送有功(P_s 0)直流侧输出 (P_{dc} 0)逆变运行时功率流向反转(P_s 0)(P_{dc} 0)但由于损耗项的存在(P_{dc}) 的绝对值仍然比 (P_s) 小。在代码里这个方程是统一求解法的重要接口方程必须单独写进失配量向量不能简化成 (P_s P_{dc})否则VSC损耗变化会导致直流电压出现系统性偏差。换流器损耗通常采用二次多项式拟合[ P_{loss} a b \cdot I_{dc} c \cdot I_{dc}^2 ]其中 (I_{dc} P_{dc} / V_{dc})参数 (a, b, c) 可以从换流器厂家损耗曲线拟合得到也可以先按典型机组的比例估一组初值。之所以不直接忽略损耗是因为在配电网里换流器容量通常只有几兆伏安损耗虽然绝对值不大但会影响直流网络功率平衡的精确性尤其在多端直流网络里损耗项差异甚至能影响收敛到哪一个平衡解。2.2 交流侧功率方程和直流侧功率方程交流侧的换流器支路功率长期做潮流的人可以直接写成极坐标形式。交流母线电压为 (U_s)换流器内电位为 (U_c)以交流母线注入换流器的方向为正时有[ P_s \frac{R_c U_s^2 - R_c U_s U_c \cos(\theta_s-\theta_c) X_c U_s U_c \sin(\theta_s-\theta_c)}{R_c^2 X_c^2} ][ Q_s \frac{X_c U_s^2 - X_c U_s U_c \cos(\theta_s-\theta_c) - R_c U_s U_c \sin(\theta_s-\theta_c)}{R_c^2 X_c^2} ]看起来式子很吓人但在Matlab里实现时只是一行矩阵运算。这个方程的价值在于它把交流母线电压、相角和换流器内部电压、相角联系了起来。也就是说在统一求解法的状态向量里必须给每台VSC至少保留换流器内部电压幅值 (U_c) 和相角 (\theta_c)否则交流侧功率没有办法闭合。直流节点的功率平衡方程更简单。直流网络没有相角概念节点电压就是标量 (V_{dc,i})节点注入功率等于电压乘电流而节点电流又等于直流导纳矩阵乘以节点电压向量。写成标量形式[ P_{dc,i} V_{dc,i} \sum_{j1}^{n_{dc}} G_{dc,ij} V_{dc,j} ]其中 (G_{dc,ij}) 是直流网络节点电导矩阵元素。注意这里 (P_{dc,i}) 是直流节点 (i) 上所有换流器注入功率和直流负荷的净注入值。在统一求解法中每个直流节点都要写上这个方程当直流节点连接了VSC时方程里的 (P_{dc,i}) 同时还是VSC接口方程里的未知量。2.3 控制模式和未知量自由度必须一对一这是统一求解法里最容易被忽略、也最影响成败的一点。每加入一个VSC换流站我们一般会增加以下未知量换流器内部电压幅值 (U_c)、相角 (\theta_c)、直流侧功率 (P_{dc}) 或者直流电压 (V_{dc})以及交流侧有功 (P_s) 是否能作为自由量。具体选择取决于VSC控制模式。一个清晰的处理办法是先把所有VSC按控制模式分成几类然后列出对应的控制方程再用“变量数 方程数”来校验。比如定有功、定无功模式控制方程是 (P_s - P_{ref}0) 和 (Q_s - Q_{ref}0)这两个方程直接给定交流侧功率。此时 (P_s, Q_s) 都是常数直流电压 (V_{dc}) 是否作为变量要看直流网络是否需要电压参考。实际上这种模式如果单独存在交流直流之间耦合不强。定直流电压、定无功模式控制方程是 (V_{dc} - V_{dc,ref}0) 和 (Q_s - Q_{ref}0)。这时直流电压是已知量但交流侧有功 (P_s) 不再是已知量它是由直流网络功率平衡反推出来的所以 (P_s) 必须作为一个待求变量进入状态向量。这台VSC就承担起了直流网络的“松弛节点”责任。定有功、定交流电压模式控制方程是 (P_s - P_{ref}0) 和 (U_s - U_{s,ref}0)交流侧有功固定交流母线电压幅值固定但无功 (Q_s) 变成自由量。这种模式在配电网里也经常用。写了控制方程之后还要记得把每台VSC的接口方程 (P_s P_{dc} P_{loss}) 放进失配量向量。在雅可比矩阵中这个接口方程会产生交流侧变量到直流侧变量之间的耦合偏导相当于一座桥把整个大矩阵焊成一个整体。真正的工程检查就是“数方程”总未知量数目必须等于总方程数目差一个雅可比矩阵就会奇异程序跑出来就是NaN或者发散。符合这个要求之前不要急着调迭代线性化先把账算平。3. Matlab实现一步一步搭一个统一求解法潮流程序3.1 数据结构与参数准备我用Matlab写这套代码时没有把整个程序写成一个大脚本而是按“输入结构体—失配量函数—雅可比函数—主迭代—结果输出”来拆方便调试和复用。先定义三个关键结构体交流网络、直流网络、VSC控制参数。% 交流系统 ac.nBus 5; ac.busType [1, 2, 3, 3, 3]; % 1:slack, 2:PV, 3:PQ ac.Psp [0, 0.3, -0.4, -0.2, -0.1]; % 注入有功(pu) ac.Qsp [0, 0.05, -0.1, -0.08, -0.05]; % 注入无功(pu) ac.Ybus ...; % 交流导纳矩阵(稀疏) % 直流系统 dc.nBus 3; dc.Gdc [2.5, -0.8, -0.7; -0.8, 1.6, -0.4; -0.7, -0.4, 1.1]; dc.Pload [0, -0.15, -0.05]; % 直流母线所带负荷(pu) % VSC列表 vsc(1).busAC 4; vsc(1).busDC 1; vsc(1).mode VDC_Q; % 定直流电压定无功 vsc(1).VdcRef 1.0; vsc(1).Qref 0.02; vsc(1).Zc 0.0001 1i*0.015; % 标幺阻抗 vsc(2).busAC 5; vsc(2).busDC 2; vsc(2).mode P_Q; % 定有功定无功 vsc(2).Pref 0.12; vsc(2).Qref 0.01; vsc(2).Zc 0.0001 1i*0.015;需要注意几个细节。第一交流支路数据里不要包括VSC支路VSC支路应该在组装雅可比时再单独处理否则变量顺序会乱。第二直流导纳矩阵必须是节点电导矩阵不是线路电导矩阵主对角线包括换流器直流侧损耗等效电导和直流线路对地支路非对角元是负的线路互电导。第三功率基准全系统统一建议用100kW或者1MW作为基准交流、直流、换流器都统一标幺避免出现单位换算错误。3.2 统一状态向量和失配量函数我把状态向量按顺序排列为交流相角、交流电压幅值、直流电压、VSC内部相角、VSC内部电压幅值、以及需要求的VSC有功变量。这样做的好处是雅可比矩阵的分块关系一目了然。x [th_ac; V_ac; V_dc; th_c; V_c; P_s_free];计算失配量时思路是先用当前状态量算所有功率再减去设定值。核心函数结构如下function [F, J] unified_nr(x, ac, dc, vsc) % 拆解状态向量 nAc ac.nBus; nDc dc.nBus; nVsc length(vsc); th x(1:nAc); V x(nAc1:2*nAc); Vdc x(2*nAc1:2*nAcnDc); thC x(2*nAcnDc1:2*nAcnDcnVsc); VC x(2*nAcnDcnVsc1:2*nAcnDc2*nVsc); Ps x(2*nAcnDc2*nVsc1:2*nAcnDc2*nVscnVscFree); F []; % 1. 交流节点功率失配量 % 2. 直流节点功率失配量 % 3. VSC支路交流功率方程失配量 % 4. VSC直流功率平衡与控制方程失配量 % 5. 平衡节点、PV节点特殊处理 end交流节点功率失配量就是标准牛顿法那一套给定功率减去计算功率。直流节点功率失配量则是“直流节点注入功率期望值减去 (V_{dc,i} \sum G_{dc,ij}V_{dc,j})”。重点在VSC相关部分每个换流器要加入两条支路方程一条是交流功率方程用来联系 (U_s, \theta_s, U_c, \theta_c)另一条是接口功率平衡方程 (P_s - P_{dc} - P_{loss}0)。如果VSC是定直流电压控制还需要加入 (V_{dc} - V_{dc,ref}0)。3.3 雅可比矩阵的组装策略雅可比矩阵是统一求解法的核心。我不建议一开始就手写完整解析矩阵虽然最后能提高速度但开发期很容易出错。推荐策略是先用数值雅可比把主循环跑通再用解析雅可比替换最后用数值雅可比交叉验证。数值雅可比实现起来很简单x0 x; F0 unified_F(x0, ac, dc, vsc); nX length(x); J zeros(nX); eps0 1e-6; for k 1:nX xplus x0; xplus(k) x0(k) eps0; Fplus unified_F(xplus, ac, dc, vsc); J(:,k) (Fplus - F0) / eps0; end解析雅可比组装时注意分块耦合。交流内部的H、N、J、L子块可以直接沿用交流潮流代码直流内部对直流电压的偏导是[ \frac{\partial P_{dc,i}}{\partial V_{dc,i}} 2 G_{dc,ii} V_{dc,i} \sum_{j \neq i} G_{dc,ij} V_{dc,j} ][ \frac{\partial P_{dc,i}}{\partial V_{dc,j}} G_{dc,ij} V_{dc,i} ]VSC耦合子阵需要对换流器损耗偏导做处理。由于损耗 (P_{loss}) 是 (P_{dc}) 和 (V_{dc}) 的函数而 (P_{dc}) 又出现在接口方程里所以这条路径一定会产生非零元素。如果为了偷懒把损耗当成常数雅可比矩阵会缺失换流器直流电压灵敏度信息奇偶迭代到后期会出现锯齿形震荡明明每一步都感觉快收敛了但就是卡在 (10^{-5}) 左右下不去。3.4 牛顿迭代主循环和收敛判据主循环本身不长。我用一个for循环最多迭代20次每次计算失配量和雅可比求解线性方程。Matlab里用dx -J\F;就好前提是不要用全矩阵的大型算例配网节点规模几百个以内没问题。maxIter 20; tol 1e-8; for iter 1:maxIter [F, J] unified_nr(x, ac, dc, vsc); disp([Iter , num2str(iter), MaxF , num2str(max(abs(F)))]); if max(abs(F)) tol break; end dx -J \ F; x x dx; % 可以加一个阻尼环节步长因子默认1.0必要时缩小 end收敛判据不要只盯着有功失配要把所有失配量一起检查尤其是VSC控制方程。因为有的时候交流节点功率已经收敛到1e-8但直流节点电压方程或VSC控制方程还有1e-4误差那种结果看着电压没问题换流器功率可能已经偏了。我一般输出max(abs(F))而不是分别看某一条。另外初始值选择上交流电压幅值建议取1.0相角取0度直流电压也取1.0标幺值。普通交流潮流里平启动很常见但统一求解法里VSC内部电压幅值不要从0开始建议取1.0相角取0。直流电压更不能取0否则直流导纳项在雅可比矩阵里会出现零元素占优整个矩阵条件数瞬间爆炸。4. 算例验证5节点交流网3节点直流网到底怎么跑4.1 网络结构和参数设定空讲方程容易虚我给一个可以直接复现的小算例。交流系统用5节点网络近似模拟一条配电网馈线节点1是平衡节点节点2接发电机PV节点节点3和节点4是普通PQ负荷节点5带一个稍大的负荷。直流系统用3节点网络节点D1通过VSC1接到交流节点4节点D2通过VSC2接到交流节点5节点D3直接接一个直流负荷。VSC1采用定直流电压和定无功控制设定 (V_{dc,ref}1.0\ pu)(Q_{ref}0.02\ pu)。VSC2采用定有功和定无功控制设定 (P_{ref}0.12\ pu)(Q_{ref}0.01\ pu)。直流负荷 (P_{load,D3}-0.15\ pu)功率基准取1MW。换流器损耗系数先取简单近似(a0.01, b0.02, c0.03)。这个参数不是某个标准算例但作为功能验证完全够用大家换自己的网架参数也一样跑。初始状态交流 (V1.0)(\theta0)直流 (V_{dc}1.0)VSC内部电压幅值 (U_c1.0)相角 (\theta_c0)。跑迭代收敛精度设1e-8。4.2 运行结果和关键变量解读我实际跑出来的结果大概是这样交流节点电压节点电压幅值(pu)相角(deg)节点类型11.00000.000平衡节点21.02001.254PV节点30.9821-1.873PQ节点40.9786-2.214PQ节点接VSC150.9702-2.651PQ节点接VSC2直流节点电压节点直流电压(pu)D11.0000D20.9965D30.9908VSC换流器结果VSC交流有功P_s(pu)交流无功Q_s(pu)直流注入P_dc(pu)损耗(pu)VSC1-0.03850.0200-0.04980.0113VSC20.12000.01000.11250.0075从结果里能看到非常典型的统一求解法特点VSC1采用定直流电压控制但交流有功 (P_s-0.0385) 是负的说明这台换流器实际把功率从直流侧送到了交流侧而VSC2按定有功控制向直流网络注入0.12 pu功率。整个直流网络的功率平衡是靠VSC1自动调整来满足的这就是为什么统一求解法必须在状态向量里给VSC1的 (P_s) 留自由度。如果在这种控制模式下还把 (P_s) 当成常数直流网络方程无论如何都解不出来程序一上来就会报奇异矩阵。4.3 和交替求解法的迭代行为对比同样算例我写了一个交替求解法版本做对比。交替法的外循环需要设置一个交流潮流计算函数和一个直流潮流计算函数然后在交流潮流里更新VSC交流有功在直流潮流里更新直流电压。因为每个内层潮流都迭代到1e-8外层耦合又需要反复更新整体迭代次数和计算时间明显上升。我记录的一个运行日志方法达到1e-8的最大失配量所需迭代次数实际计算时间(相对值)收敛行为统一求解法4次牛顿步1.0单调收敛无震荡交替求解法约15次外层循环2.4前5次波动较大后续稳定这不是要否定交替法它有它适合的场景比如已有成熟交流潮流程序、只做少量换流器接口的静态场景交替法足够。但当你需要做含多个VSC、直流下垂控制、或者需要提取灵敏度做优化时统一求解法在收敛性和可扩展性上的优势就很明显。5. 常见问题与排查技巧我从发散现场总结的经验5.1 迭代发散的第一判断顺序程序跑起来第一轮就发散不用急着检查雅可比公式错没错按下面这个顺序看十有八九能定位。先看变量初始化尤其是直流电压千万不能从0开始再看VSC控制模式组合系统里必须有至少一个能确定直流电压的换流站然后看VSC支路阻抗有没有归算到标幺值单位错会导致矩阵元素数量级悬殊最后才是检查失配量符号方向。我遇到最多的情况是一个交流配网加三台VSC三台全用定有功控制没有一台定直流电压结果雅可比矩阵奇异。道理很简单直流网络有功注入全部固定直流电压失去调节能力这和交流系统里没有平衡节点是一个性质。解决办法不是改代码而是要把其中一台VSC改成定直流电压控制或者改成下垂控制。下垂控制的方程可以写成[ P_s - P_{ref} - k_p (V_{dc} - V_{dc,ref}) 0 ]这个方程会把VSC有功和一个直流电压偏差联系起来直流电压有了灵活性矩阵就健康了。5.2 雅可比矩阵奇异数值病根从哪来除了控制模式问题雅可比矩阵奇异还有一个常见来源VSC损耗模型的偏导缺项。如果损耗只写成常数接口方程里没有 (V_{dc}) 的导数那么直流电压对整个系统方程的影响可能只来自直流网络和定直流电压控制方程矩阵会有一条接近零的自由度。实际表现是迭代到后期失配量不再下降或者下降非常慢看起来像卡在某个精度上。更隐蔽的问题是损耗模型里的电流项。比如 (P_{loss}ab I_{dc}c I_{dc}^2)而 (I_{dc}P_{dc}/V_{dc})这是非线性项。对 (V_{dc}) 求偏导时不能只对 (V_{dc}) 的显式项求导还要对 (I_{dc}) 里面隐含的 (V_{dc}) 求导否则解析雅可比和数值雅可比会对不上。我调试时用数值雅可比一校验很快就发现接口方程对应的那一列差了一大截比对着公式断断续续查要快得多。5.3 用数值雅可比校验解析雅可比这条经验我觉得值得单独拿出来强调。不管Matlab功底多好第一次写统一求解法解析雅可比我都不建议直接上。正确路线是先写一个calF(x)函数只算失配量再写一个通用数值雅可比函数生成近似的 (J)用这个 (J) 去迭代。只要迭代能收敛说明方程本身闭合没问题。然后再去写解析雅可比写完以后把解析 (J) 和数值 (J) 做一次逐元素相减用norm(J_analytic - J_numeric, fro)看整体误差。误差到了 (10^{-6}) 量级基本就可以放心提速度。如果某个元素差得比较大就用spy(J_analytic - J_numeric)看错误分布位置再对到代码里检查对应公式。这个方法极大降低了我调参和排错的时间比逐行盯公式高效得多。5.4 用稀疏矩阵和spy检查矩阵结构Matlab里写统一求解法千万不要用满矩阵存整个雅可比。交流配网的雅可比矩阵通常是高度稀疏的直流网络虽然是线性网络但配电网直流侧节点数也不会太多。统一求解法的雅可比矩阵是多种子阵拼出来的用稀疏矩阵存储不仅省内存还能用spy函数直观看到矩阵结构有没有拼错。我一般会画出spy(J)然后检查几个非零块的位置交流内部块应该是一个类似常规潮流的带状或稀疏结构直流块是接近带对角的结构VSC耦合块应该是零散分布在接口行位置的散点。如果新增一个VSC但矩阵里没在对应位置出现散点那基本就是VSC方程没加进去或者加进了错误的行。5.5 Matlab代码调试的一些小习惯最后分享几个代码层面的细节。第一迭代循环里及时打印max(abs(F))不要等跑完才看第二别在循环里反复重构整个稀疏矩阵可以在迭代前预先分配稀疏结构用下标方式更新元素算例大了会快很多第三用tic/toc测时间时注意统一求解法第一次构建雅可比矩阵开销较小真正耗时往往在反复求解线性方程上第四如果出现NaN先不要急着屏蔽警告用dbstop if naninf设置断点能直接定位到生成NaN的那一行。这些看起来都是小技巧但在交直流混合配电网的统一求解法调试里每一招都帮过我抢救一个晚上。6. 写在最后一些经验与扩展方向这套统一求解法代码从0到跑通我个人最深刻的体会不是牛顿法有多快而是“方程和变量的一一对应关系”比数值技巧重要得多。我经历过连续三天反复调试VSC控制方程最后发现只是少写了一台换流器的直流功率平衡方程也经历过用数值雅可比轻松跑通、换成解析雅可比反而发散的午夜最后原因是换流器损耗的偏导漏了一项。交直流混合配电网潮流问题的难很多时候不在高深数学就在这些需要静下心对待的建模细节里。如果你已经掌握了上面的基础流程后续扩展可以做很多方向。比如把VSC控制模式扩展到下垂控制配电网里多台换流器按斜率共同支撑直流电压比如加入储能系统的充放电模型直流母线电压会变成和储能荷电状态耦合的状态量再比如把统一求解法的思路延伸到交直流混合配电网最优潮流雅可比矩阵里的灵敏度信息可以直接变成优化问题的梯度信息。这些扩展都建立在“交流、直流、换流器三者同一框架求解”这个核心基础上。最后再分享一个我常用的习惯每次改完代码都会把实现前后的结果以及迭代日志单独存一份。交直流混合配电网算例跑完回头研究收敛性问题时这些日志能帮你快速回忆起当时是在哪一个环节踩的坑也特别适合作为学位论文里的对比素材。希望这篇内容能让你少走一些弯路。