算與不對(duì)稱短路分析:牛頓-拉夫遜法和對(duì)稱分量法的Matlab實(shí)現(xiàn))
簡介這是一份圍繞電力系統(tǒng)潮流計(jì)算與不對(duì)稱短路分析的Matlab/Simulink實(shí)現(xiàn)資料以docx文檔形式呈現(xiàn)適合具備電力系統(tǒng)基礎(chǔ)與Matlab編程能力的研究生、科研人員及電力能源系統(tǒng)設(shè)計(jì)工程師使用。文檔覆蓋面較廣既涵蓋碳排放流計(jì)算、無功補(bǔ)償、配電網(wǎng)重構(gòu)、微電網(wǎng)調(diào)度、儲(chǔ)能配置與經(jīng)濟(jì)調(diào)度等電力系統(tǒng)經(jīng)典方向也涉及虛擬同步發(fā)電機(jī)并網(wǎng)、P2G-CCS虛擬電廠優(yōu)化調(diào)度、短期負(fù)荷預(yù)測、售電公司購售電策略等前沿議題同時(shí)穿插遺傳算法、粒子群、烏鴉算法、模型預(yù)測控制、支持向量機(jī)等智能優(yōu)化與機(jī)器學(xué)習(xí)方法的建模和仿真案例幫助讀者在具體場景中理解算法如何與電力系統(tǒng)模型結(jié)合。資源包共包含1個(gè)docx文件文件大小約79KB主體為代碼框架、仿真思路和核心方法說明并可據(jù)此篩選所需研究方向、定位可復(fù)用的Matlab/Simulink模塊目前已有106人學(xué)習(xí)使用。對(duì)正在開展電力能源課題或需要快速建立仿真基線的讀者這份資料具有較好的索引與參考價(jià)值可作為二次開發(fā)和創(chuàng)新應(yīng)用的起點(diǎn)。1. 潮流計(jì)算為什么一個(gè)「解方程組」問題決定了電力系統(tǒng)仿真的生死線很多第一次接觸電力系統(tǒng)仿真的開發(fā)者會(huì)誤以為潮流計(jì)算是個(gè)「算電壓」的工具。真正跑過代碼才會(huì)意識(shí)到它是一臺(tái)非線性方程組求解器既要讓每個(gè)節(jié)點(diǎn)滿足功率平衡方程又要讓所有支路滿足歐姆定律還要在線路容量、變壓器分接頭、發(fā)電機(jī)無功上下限這些約束夾縫里找到一組可行解。更反直覺的是規(guī)模越大、節(jié)點(diǎn)越多這個(gè)方程組越不像「直接代入」能解出來的東西牛頓-拉夫遜法迭代幾十次是常態(tài)而迭代不發(fā)散、能穩(wěn)定收斂到物理合理的結(jié)果才是整個(gè)仿真鏈路的命門。這份資源的核心價(jià)值正是把潮流計(jì)算與不對(duì)稱短路分析從「課本公式」落成了可運(yùn)行的 Matlab 代碼。理解它為什么能 work不能只看函數(shù)調(diào)用得從三個(gè)層面拆潮流方程的數(shù)學(xué)結(jié)構(gòu)、牛拉法的迭代骨架、以及短路分析里對(duì)稱分量法如何把三相耦合問題解耦。這三層弄清楚你改任何參數(shù)、換任何拓?fù)湫睦锒加械住?. 潮流計(jì)算的數(shù)學(xué)本質(zhì)為什么節(jié)點(diǎn)導(dǎo)納矩陣和功率平衡方程必須同時(shí)成立2.1 從基爾霍夫定律到節(jié)點(diǎn)功率方程你以為在算電壓其實(shí)在配平功率電力系統(tǒng)穩(wěn)態(tài)分析的起點(diǎn)不是「電壓是多少」而是「每一節(jié)點(diǎn)注入的功率等于流出的功率」。對(duì)任意節(jié)點(diǎn) i注入復(fù)功率 S_i 由發(fā)電機(jī)出力與負(fù)荷決定而它又必須等于該節(jié)點(diǎn)電壓與所有相連支路電流的乘積之和S_i U_i · I_i^* U_i · Σ(Y_ij · U_j)^*這里 Y_ij 是節(jié)點(diǎn)導(dǎo)納矩陣 Y 的元素。把實(shí)部虛部分開就得到兩個(gè)實(shí)數(shù)方程——有功平衡方程和無功平衡方程。節(jié)點(diǎn)數(shù) n 意味著最多 2n 個(gè)方程但每個(gè)節(jié)點(diǎn)有四個(gè)未知量電壓幅值、相角、注入有功、注入無功所以要給每個(gè)節(jié)點(diǎn)指定兩個(gè)已知量這就是節(jié)點(diǎn)類型的由來PQ 節(jié)點(diǎn)給定有功和無功PV 節(jié)點(diǎn)給定有功和電壓幅值平衡節(jié)點(diǎn)給定電壓幅值和相角、用來補(bǔ)足全網(wǎng)有功無功差額。這個(gè)設(shè)定很多人初看覺得是「人為規(guī)定」其實(shí)它背后是物理約束發(fā)電機(jī)可以控制有功輸出和無功輸出但不一定能同時(shí)控制機(jī)端電壓負(fù)荷節(jié)點(diǎn)則更像恒功率源你沒法指定它的電壓。節(jié)點(diǎn)類型的本質(zhì)是把「哪些量由方程決定、哪些量由邊界條件給定」的邊界問題映射成方程組里的已知與未知。2.2 為什么必須用牛頓-拉夫遜法高斯-賽德爾在病態(tài)系統(tǒng)面前有多脆弱早期潮流程序用過高斯-賽德爾迭代它直接對(duì)節(jié)點(diǎn)電壓方程做定點(diǎn)迭代實(shí)現(xiàn)簡單但收斂性差——遇到重負(fù)荷系統(tǒng)、長線路或 PV 節(jié)點(diǎn)較多的情況動(dòng)不動(dòng)就振蕩甚至發(fā)散。牛頓-拉夫遜法換了個(gè)思路把非線性方程 F(x) 0 在當(dāng)前估計(jì)點(diǎn)附近做一階泰勒展開用雅可比矩陣的修正量反復(fù)逼近真解。具體到潮流問題未知量是各節(jié)點(diǎn)電壓相角 θ 和幅值 U平衡節(jié)點(diǎn)除外方程是各節(jié)點(diǎn)的有功、無功偏差ΔP_i P_i^spec ? P_i^calc(θ, U) ΔQ_i Q_i^spec ? Q_i^calc(θ, U)每次迭代求解線性方程組 J · Δx ?ΔF其中 J 是雅可比矩陣。牛拉法的優(yōu)勢在二次收斂接近解時(shí)誤差按平方速度縮小通常 3 到 5 次迭代就能把偏差壓到 1e-6 以下。這份資源里的核心腳本正是圍繞這個(gè) J 的組裝與稀疏求解展開的。常見實(shí)現(xiàn)中雅可比矩陣的四個(gè)分塊 J_Pθ、J_PU、J_Qθ、J_QU 都用支路導(dǎo)納與節(jié)點(diǎn)電壓的顯式表達(dá)式填充而不是用數(shù)值差分。顯式求導(dǎo)不只是為了快更重要的是保證矩陣的解析結(jié)構(gòu)讓稀疏分解在每次迭代中的非零元模式穩(wěn)定不變。這是 Newton 法能在大規(guī)模系統(tǒng)上實(shí)用的關(guān)鍵——你不可能每次迭代都重新做一次完整的符號(hào)求導(dǎo)。2.3 稀疏矩陣與節(jié)點(diǎn)編號(hào)同樣一套方程組存儲(chǔ)順序決定仿真能跑多大文本里反復(fù)出現(xiàn)的「IEEE 14 節(jié)點(diǎn)」等算例規(guī)??雌饋聿淮蟮こ躺弦艿綆装偕锨Ч?jié)點(diǎn)時(shí)潮流程序的設(shè)計(jì)瓶頸就不在數(shù)學(xué)而在內(nèi)存與求解效率。高壓電網(wǎng)的導(dǎo)納矩陣極度稀疏平均每個(gè)節(jié)點(diǎn)只與三到五個(gè)節(jié)點(diǎn)相連。如果按稠密矩陣存14 節(jié)點(diǎn)還好1000 節(jié)點(diǎn)就是 100 萬元素的二維數(shù)組雅可比矩陣的規(guī)模翻四倍直接撐爆內(nèi)存。所以成熟的 Matlab 潮流代碼幾乎都走同一條路導(dǎo)納矩陣用稀疏存儲(chǔ)節(jié)點(diǎn)按最小度排序重編號(hào)再用列重排降低分解時(shí)的填充元。你可以把節(jié)點(diǎn)編號(hào)理解為求解器的「物理內(nèi)存布局」——編號(hào)順序直接影響 LU 分解后非零元的數(shù)量差的編號(hào)可能讓填充元膨脹十倍。很多復(fù)現(xiàn)代碼里你會(huì)看到對(duì) bus 表按類型排序平衡節(jié)點(diǎn)在前、PV 節(jié)點(diǎn)其次、PQ 節(jié)點(diǎn)最后這不只是為了美觀而是為了讓雅可比矩陣的塊結(jié)構(gòu)更規(guī)則方便做塊消去。% 雅可比矩陣構(gòu)建核心片段簡化邏輯 for k 1:nb % 非對(duì)角線元素基于支路導(dǎo)納的偏導(dǎo) % dP/dTheta、dP/dV、dQ/dTheta、dQ/dV 四項(xiàng) J11(i,j) U(i)*U(j)*(G(i,j)*sin(theta(i)-theta(j)) - B(i,j)*cos(theta(i)-theta(j))); J12(i,j) U(i)*(G(i,j)*cos(theta(i)-theta(j)) B(i,j)*sin(theta(i)-theta(j))); J21(i,j) -J12(i,j); J22(i,j) U(i)*(G(i,j)*sin(theta(i)-theta(j)) - B(i,j)*cos(theta(i)-theta(j))); end % 之后組裝成稀疏矩陣 J sparse([J11 J12; J21 J22]); % 再調(diào)用 x J \ (-F)利用 matlab 內(nèi)置稀疏 LU 分解這段代碼的邏輯要點(diǎn)在于雅可比矩陣的每個(gè)元素都不需要重新求導(dǎo)而是由當(dāng)前電壓幅值、相角差和導(dǎo)納矩陣實(shí)部虛部直接計(jì)算。也就是說導(dǎo)納矩陣一旦建好雅可比矩陣就是它的「函數(shù)」——這解釋了為什么潮流計(jì)算的性能瓶頸幾乎總是集中在稀疏線性求解器上而不是在迭代邏輯本身。3. 不對(duì)稱短路分析對(duì)稱分量法如何把三相耦合拆成三個(gè)獨(dú)立網(wǎng)絡(luò)3.1 為什么直接解三相短路方程會(huì)陷入耦合泥潭電力系統(tǒng)正常運(yùn)行時(shí)三相近似對(duì)稱但發(fā)生單相接地、兩相短路這些不對(duì)稱故障時(shí)三相電壓電流不再平衡abc 坐標(biāo)系下的方程每個(gè)相都和其他相耦合。這時(shí)候你面對(duì)的不再是三個(gè)獨(dú)立的單相電路而是一個(gè)含互感的耦合系統(tǒng)。直接在 abc 相域求解矩陣維度翻三倍而且故障邊界條件比如 A 相接地時(shí)該相電壓為零寫起來極其繞。對(duì)稱分量法的高明之處在于換坐標(biāo)系把三相量分解為正序、負(fù)序、零序三組對(duì)稱分量。正序是正常工況下的旋轉(zhuǎn)相序負(fù)序是反向旋轉(zhuǎn)的相序零序是三相同相的分量。轉(zhuǎn)換關(guān)系就是那組經(jīng)典的變換矩陣abc 域的三相向量左乘變換矩陣就得到 012 序域的向量。關(guān)鍵在于電力系統(tǒng)元件線路、變壓器、發(fā)電機(jī)在序域里幾乎是解耦的——正序網(wǎng)絡(luò)就是正常運(yùn)行的等值電路負(fù)序和零序網(wǎng)絡(luò)則各自獨(dú)立。3.2 三個(gè)序網(wǎng)絡(luò)與復(fù)合序網(wǎng)短路類型決定網(wǎng)絡(luò)怎么接不對(duì)稱短路分析的實(shí)操流程是把故障點(diǎn)看成三個(gè)序網(wǎng)絡(luò)的連接端口正序網(wǎng)絡(luò)在故障點(diǎn)有正常的電勢源負(fù)序網(wǎng)絡(luò)無源零序網(wǎng)絡(luò)無源且只在接地故障時(shí)才有通路。什么類型的故障就對(duì)應(yīng)什么樣的「復(fù)合序網(wǎng)」——把三個(gè)序網(wǎng)絡(luò)在故障端口按某種方式串并聯(lián)。單相接地時(shí)故障點(diǎn)的邊界條件是故障相電壓為零、非故障相電流為零。推導(dǎo)到序量得到的結(jié)論是三個(gè)序網(wǎng)絡(luò)在故障點(diǎn)串聯(lián)正序、負(fù)序、零序網(wǎng)絡(luò)的戴維南等值阻抗首尾相接。兩相短路則是負(fù)序網(wǎng)絡(luò)與正序網(wǎng)絡(luò)并聯(lián)零序不參與。兩相接地短路則是三個(gè)序網(wǎng)絡(luò)并聯(lián)。這個(gè)「串聯(lián)還是并聯(lián)」的差異直接決定了故障電流的解析表達(dá)式里的分母是 Z1Z2Z0 還是 Z1∥Z2而這正是很多教材里學(xué)生最容易記混的地方。% 單相接地短路復(fù)合序網(wǎng)串聯(lián) % 故障點(diǎn)各序電流相等電壓之和為零 I1 E / (Z1 Z2 Z0); I2 I1; I0 I1; % 相域故障電流3 * I0忽略負(fù)荷電流時(shí) If 3 * I0; % 兩相短路正序與負(fù)序并聯(lián) I1 E / (Z1 Z2); I2 -I1; I0 0;這段代碼背后的物理含義很直接單相接地時(shí)零序通路存在所以故障電流要經(jīng)過零序阻抗如果 Z0 很小比如中性點(diǎn)直接接地系統(tǒng)故障電流會(huì)非常大兩相短路沒有零序通路電流路徑變短表達(dá)式也簡潔得多。這也是為什么中性點(diǎn)接地方式會(huì)顯著影響單相短路電流的幅值——零序網(wǎng)絡(luò)接不接地本質(zhì)上是 Z0 有沒有接入復(fù)合序網(wǎng)。3.3 正序網(wǎng)絡(luò)里的戴維南等值為什么故障分析要「先算潮流再做短路」工程上不對(duì)稱短路分析的前一步總是潮流計(jì)算這不是流程習(xí)慣而是正序網(wǎng)絡(luò)的等值必須依賴故障前的穩(wěn)態(tài)運(yùn)行點(diǎn)。故障點(diǎn)的正序開路電壓就是故障前該節(jié)點(diǎn)的電壓幅值與相角——它從潮流結(jié)果里拿。而負(fù)序、零序網(wǎng)絡(luò)的阻抗參數(shù)則由各元件的序阻抗決定發(fā)電機(jī)、變壓器、線路的負(fù)序阻抗和正序阻抗近似相等靜態(tài)元件零序阻抗則差異巨大變壓器繞組接線方式直接決定零序通路是否存在。理解這個(gè)依賴關(guān)系你就能看懂為什么這份資源把「潮流計(jì)算」和「不對(duì)稱短路分析」打包在一起短路電流的工程意義不在本身而在于它決定了保護(hù)整定值、斷路器遮斷容量和系統(tǒng)穩(wěn)定性校核。先算穩(wěn)態(tài)是為了拿故障前的電壓相角再算短路是為了評(píng)估故障瞬間的沖擊電流。兩步合起來才是完整的暫態(tài)評(píng)估鏈路。4. 從公式到 Matlab 工程實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)、故障建模與關(guān)鍵函數(shù)拆解4.1 bus 表與 branch 表一切計(jì)算都是在這兩張表上做變換Matlab 潮流代碼可讀性高低幾乎只看數(shù)據(jù)結(jié)構(gòu)的組織方式。這套資源沿用的是電力系統(tǒng)分析里最通用的形式bus 表存節(jié)點(diǎn)信息每一行是一個(gè)節(jié)點(diǎn)列依次是節(jié)點(diǎn)編號(hào)、類型、有功負(fù)荷、無功負(fù)荷、發(fā)電有功、發(fā)電無功、電壓幅值初值、電壓相角初值和無功上下限branch 表存支路信息每一行是一條線路或變壓器列包含首末端節(jié)點(diǎn)、電阻、電抗、對(duì)地電納、變比和長期載流上限。這種表驅(qū)動(dòng)的設(shè)計(jì)讓「改算例」變成了「改 Excel 或矩陣數(shù)據(jù)」而不是改代碼邏輯。你在文本里看到的各類擴(kuò)展——碳排放流計(jì)算、無功補(bǔ)償配置、配電網(wǎng)重構(gòu)——本質(zhì)上都是在這兩張表上疊加新的計(jì)算層碳排放流求解器吃進(jìn)潮流結(jié)果按支路有功功率把碳排放從電源側(cè)分配到負(fù)荷側(cè)無功優(yōu)化則在給定同一張 bus 表的前提下把部分節(jié)點(diǎn)的無功出力變成決策變量。% 典型的 IEEE 14 節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)節(jié)選示意 % bus: [編號(hào) 類型 有功負(fù)荷 無功負(fù)荷 發(fā)電有功 發(fā)電無功 電壓幅值 相角 ...] bus [ 1 3 0 0 232.4 -16.9 1.06 0 ... % 平衡節(jié)點(diǎn) 2 2 21.7 12.7 40 42.4 1.045 0 ... % PV 節(jié)點(diǎn) 3 2 94.2 19 0 23.4 1.01 0 ... % PV 節(jié)點(diǎn) 4 1 47.8 -3.9 0 0 1.0 0 ... % PQ 節(jié)點(diǎn) ]; % branch: [首端 末端 電阻 電抗 對(duì)地電納 變比 載流上限] branch [ 1 2 0.01938 0.05917 0.0528 0 0 1 5 0.05403 0.22304 0.0492 0 0 2 3 0.04699 0.19797 0.0438 0 0 ];這張表就是整套程序的「接口協(xié)議」。你換一個(gè)系統(tǒng)的數(shù)據(jù)只需要按同樣格式填表牛頓法迭代部分可以原封不動(dòng)復(fù)用。這也是這份資源在多種場景微電網(wǎng)調(diào)度、儲(chǔ)能配置、經(jīng)濟(jì)調(diào)度之間橫向擴(kuò)展的根基框架不綁定具體算例綁定的是數(shù)據(jù)結(jié)構(gòu)約定。4.2 故障分析模塊的工程實(shí)現(xiàn)序阻抗如何從元件參數(shù)映射進(jìn)程序不對(duì)稱短路分析的代碼實(shí)現(xiàn)關(guān)鍵在「序阻抗數(shù)據(jù)怎么來」。發(fā)電機(jī)、變壓器、線路在序域里的等值參數(shù)教材里給的是標(biāo)幺值程序里要做的是按序網(wǎng)絡(luò)拓?fù)浣M裝出三個(gè)對(duì)應(yīng)的節(jié)點(diǎn)導(dǎo)納矩陣——正序網(wǎng)絡(luò)用發(fā)電機(jī)次暫態(tài)電勢和正序阻抗負(fù)序網(wǎng)絡(luò)去掉電勢源、用負(fù)序阻抗零序網(wǎng)絡(luò)則必須根據(jù)變壓器接線方式和中性點(diǎn)接地情況決定哪些支路能通零序電流。實(shí)際代碼里最常見的組織方式分別構(gòu)建 Z1、Z2、Z0 三個(gè)矩陣然后按故障類型在故障點(diǎn)做復(fù)合序網(wǎng)計(jì)算。這里有一個(gè)容易被忽略的細(xì)節(jié)負(fù)序和零序網(wǎng)絡(luò)中發(fā)電機(jī)的中性點(diǎn)阻抗要乘 3 計(jì)入零序。很多初版程序算出來的零序短路電流偏大就是因?yàn)樯倭诉@個(gè) 3 倍系數(shù)。% 零序網(wǎng)絡(luò)中性點(diǎn)阻抗處理 % 發(fā)電機(jī)零序電抗 x0中性點(diǎn)接地電阻 rg實(shí)際接入零序網(wǎng)絡(luò)為 x0 3*rg Z0_gen j * x0 3 * rg; % 兩繞組變壓器Y0/d 接線時(shí)低壓側(cè)零序無法流通需置為開路 if transformer_connection Y0d Z0_branch inf; end這樣的實(shí)現(xiàn)邏輯給后續(xù)擴(kuò)展留了口子你要計(jì)算單相接地時(shí)的各節(jié)點(diǎn)電壓分布只要把故障點(diǎn)注入的零序電流分配到零序網(wǎng)絡(luò)上再逆變換回 abc 相域即可。整個(gè)模塊的復(fù)用方式和潮流模塊保持一致——都是「數(shù)據(jù)表驅(qū)動(dòng)計(jì)算」改故障類型等于改一組邊界條件。4.3 收斂判據(jù)與迭代上限為什么「差不多」和「精確收斂」結(jié)果差異巨大潮流計(jì)算里收斂判據(jù)的選擇直接影響結(jié)果可信度。常見的兩種判據(jù)是功率偏差判據(jù)和電壓偏差判據(jù)前者要求所有節(jié)點(diǎn)的 ΔP、ΔQ 小于閾值如 1e-6后者要求電壓修正量足夠小。嚴(yán)格來說功率偏差判據(jù)更接近物理意義——電壓偏差小并不代表功率平衡了尤其在 R/X 比值高的配網(wǎng)中電壓對(duì)無功的靈敏度很低電壓看著不動(dòng)有功可能還差得遠(yuǎn)。實(shí)現(xiàn)上還隱藏著一個(gè)常見陷阱迭代上限設(shè)置過小。牛拉法雖然二次收斂但初始點(diǎn)差時(shí)前幾次迭代可能走彎路IEEE 14 節(jié)點(diǎn)這種小系統(tǒng)十次以內(nèi)能收斂幾百節(jié)點(diǎn)的系統(tǒng)配合平啟動(dòng)電壓全部置 1.0∠0°可能要二三十次。如果你把最大迭代次數(shù)設(shè)成 10會(huì)看到「本該收斂的算例報(bào)錯(cuò)發(fā)散」的假象。這個(gè)教訓(xùn)在后面單獨(dú)的排查章節(jié)還會(huì)展開。5. 潮流計(jì)算常見問題與避坑排查雅可比奇異、節(jié)點(diǎn)類型錯(cuò)位與零序接線5.1 PV 節(jié)點(diǎn)無功越限導(dǎo)致不收斂先去查無功上下限別急著調(diào)迭代參數(shù)現(xiàn)象同一個(gè)算例別人跑 5 次迭代收斂你跑 30 次還在振蕩最后報(bào)「maximum iteration exceeded」。排查打開 PV 節(jié)點(diǎn)的無功出力打印發(fā)現(xiàn)某臺(tái)發(fā)電機(jī)無功已經(jīng)頂?shù)缴舷蕹绦騾s沒有把節(jié)點(diǎn)類型從 PV 切換成 PQ結(jié)果雅可比矩陣?yán)飳?duì)應(yīng)的電壓幅值約束和實(shí)際物理行為矛盾迭代自然無法穩(wěn)定。原因潮流程序中 PV 節(jié)點(diǎn)按「電壓幅值恒定」建模但真實(shí)發(fā)電機(jī)的無功出力有上下限。當(dāng)需求超出上限時(shí)機(jī)端電壓會(huì)跌落節(jié)點(diǎn)實(shí)際應(yīng)該按 PQ 節(jié)點(diǎn)恒無功處理。這個(gè) PV-PQ 切換邏輯如果缺失雅可比矩陣會(huì)在無功受限的方向上「自相矛盾」。解決在每次迭代后檢查 Qg若越限則將該節(jié)點(diǎn)標(biāo)記為 PQ、電壓幅值松開并重新組裝雅可比矩陣通常兩步內(nèi)收斂恢復(fù)。5.2 負(fù)荷寫成「負(fù)的發(fā)電」導(dǎo)致導(dǎo)納矩陣不對(duì)稱注意功率方向約定現(xiàn)象潮流結(jié)果里某節(jié)點(diǎn)電壓高達(dá) 1.2 pu而且所有支路潮流方向都顛倒了。排查數(shù)據(jù)表里負(fù)荷節(jié)點(diǎn)的注入功率符號(hào)寫反了——把負(fù)荷當(dāng)成負(fù)發(fā)電寫入導(dǎo)致功率平衡方程整體反向。原因電力系統(tǒng)分析約定發(fā)電機(jī)注入為正、負(fù)荷消耗為正但不同代碼庫的符號(hào)約定不同。有的復(fù)現(xiàn)代碼把負(fù)荷直接寫成負(fù)的有功注入另一套代碼里又按正號(hào)加到 S_load混用時(shí)極易翻車。解決寫一個(gè)數(shù)據(jù)校驗(yàn)函數(shù)檢查全網(wǎng)有功注入之和是否接近網(wǎng)損量級(jí)偏差太大立刻報(bào)警別等到迭代結(jié)果出來才發(fā)現(xiàn)方向錯(cuò)了。這個(gè)血淚經(jīng)驗(yàn)我后來每次換算例都強(qiáng)制先過一遍。5.3 三繞組變壓器零序參數(shù)用錯(cuò)單相短路電流偏大兩倍現(xiàn)象不對(duì)稱短路計(jì)算結(jié)果與標(biāo)準(zhǔn)答案對(duì)比單相接地電流整體偏大但兩相短路數(shù)值正確。排查反復(fù)核對(duì)復(fù)合序網(wǎng)公式無果最后檢查零序網(wǎng)絡(luò)組裝發(fā)現(xiàn)三繞組變壓器的 Δ 側(cè)繞組沒有正確斷開零序通路。原因普通兩繞組 Y0/d 變壓器低壓側(cè) Δ 繞組內(nèi)部為零序電流提供閉合回路但不會(huì)傳到外部所以零序網(wǎng)絡(luò)在 Δ 側(cè)應(yīng)視為開路。若程序里把 Δ 側(cè)當(dāng)成 Y0 處理零序阻抗大幅減小短路電流虛高。解決按變壓器繞組接法生成零序拓?fù)浔鞾0/Δ 和 Y0/Y 的處理必須分列測試時(shí)先跑一個(gè)只有單臺(tái)變壓器的兩節(jié)點(diǎn)算例手算驗(yàn)證零序阻抗再上全系統(tǒng)。5.4 平啟動(dòng)初值直接擺爛R/X 高的配網(wǎng)局部不收斂該換初值策略現(xiàn)象輸電網(wǎng)算例全部正常換成配電網(wǎng)算例后牛拉法反復(fù)打轉(zhuǎn)。原因配網(wǎng)線路 R/X 比值高雅可比矩陣條件數(shù)變差平啟動(dòng)所有 PQ 節(jié)點(diǎn) U1.0、θ0提供的初值與真實(shí)解差距大牛拉法容易落入局部振蕩。解決先用高斯-賽德爾跑 3 到 5 次迭代熱身把電壓初值拉近真解再切換牛頓-拉夫遜精算。5.5 稀疏 LU 分解失敗節(jié)點(diǎn)編號(hào)有孤立島現(xiàn)象程序報(bào)「singular matrix」或「NaN」出現(xiàn)在第一二次迭代。原因數(shù)據(jù)表里某個(gè)節(jié)點(diǎn)沒有任何支路連接導(dǎo)納矩陣對(duì)應(yīng)行列全零分解時(shí)直接爆掉。解決建導(dǎo)納矩陣前做連通性檢查遍歷 branch 表標(biāo)記所有可達(dá)節(jié)點(diǎn)若有孤立節(jié)點(diǎn)則打印節(jié)點(diǎn)編號(hào)并終止同時(shí)把并聯(lián)補(bǔ)償支路對(duì)地導(dǎo)納單獨(dú)核對(duì)別把補(bǔ)償電納寫進(jìn)串聯(lián)支路。6. 設(shè)計(jì)取舍為什么牛拉法是事實(shí)標(biāo)準(zhǔn)以及如何驗(yàn)證你的復(fù)現(xiàn)結(jié)果可靠你如果把這套代碼從頭跟到尾會(huì)發(fā)現(xiàn)一個(gè)有趣的事實(shí)真正繁瑣的不是迭代公式而是數(shù)據(jù)準(zhǔn)備與拓?fù)浣M裝——雅可比矩陣的解析結(jié)構(gòu)幾十年前就定型了所有現(xiàn)代潮流程序都長一個(gè)樣差別只在稀疏求解器的快慢和數(shù)值穩(wěn)定性的細(xì)節(jié)比如是否做 pivoting、是否用因子修正。牛拉法能成為事實(shí)標(biāo)準(zhǔn)不是因?yàn)樗跀?shù)學(xué)上永遠(yuǎn)最優(yōu)而是它的二次收斂性質(zhì)使得「迭代次數(shù)基本不隨系統(tǒng)規(guī)模增長」這讓調(diào)度員和研究人員對(duì)計(jì)算時(shí)間有穩(wěn)定預(yù)期。但牛拉法也有明確的天花板初值敏感、雅可比矩陣需要每步重算因此在在線安全分析這類需要千次批量掃描的場景直流潮流簡化成線性方程和潮流靈敏度往往更實(shí)用。資源里配套的經(jīng)濟(jì)調(diào)度、機(jī)組組合等模塊其實(shí)就是把潮流模塊當(dāng)作約束評(píng)估器來用——粒子群或遺傳算法每生成一組機(jī)組出力就調(diào)用一次潮流程序檢查電壓約束與線路載流這時(shí)候潮流程序的單次計(jì)算速度直接決定優(yōu)化算法能不能在可接受時(shí)間內(nèi)跑完。驗(yàn)證復(fù)現(xiàn)結(jié)果我建議你從三個(gè)維度做交叉檢查。第一是量綱自洽全網(wǎng)有功注入之和減去網(wǎng)損應(yīng)該等于負(fù)荷總消耗偏差超過 0.1% 一定有數(shù)據(jù)錯(cuò)誤。第二是標(biāo)準(zhǔn)算例對(duì)照IEEE 14 節(jié)點(diǎn)的潮流結(jié)果、短路電流標(biāo)幺值在教材和權(quán)威論文里都有公開數(shù)據(jù)程序跑出的相角、電壓幅值和故障電流逐項(xiàng)比對(duì)。第三是靈敏度檢驗(yàn)把某條線路的阻抗調(diào)大 10%觀察潮流轉(zhuǎn)移方向是否符合直覺——逆著物理直覺的結(jié)果即使數(shù)值收斂也值得懷疑。做完這三項(xiàng)檢查你才算真正「復(fù)現(xiàn)」而不是「跑通」。從那以后我每次拿到一份新的電力仿真代碼第一件事不是看主函數(shù)而是先檢查數(shù)據(jù)表和收斂判據(jù)——這兩個(gè)地方藏著九成的問題。祝你的算例一次收斂希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取