一種基于改進鄰接矩陣的稀疏技術(shù)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于電力系統(tǒng)計算領(lǐng)域,尤其涉及一種基于改進鄰接矩陣的稀疏技術(shù)。
【背景技術(shù)】
[0002] 隨著電壓等級的不斷提高,新系統(tǒng)元件的不斷出現(xiàn),現(xiàn)代電力系統(tǒng)規(guī)模龐大,節(jié)點 數(shù)動輒成千上萬,如何有效提高其計算效率,是電力工作者非常關(guān)心的一個問題。稀疏技術(shù) 是提高計算速度的有效方法,目前,該技術(shù)已廣泛應(yīng)用于電力系統(tǒng)很多方面的分析計算中, 如潮流計算、暫態(tài)計算、狀態(tài)估計、諧波阻抗掃描等。因此結(jié)合計算機技術(shù)和電力系統(tǒng)的特 點,對傳統(tǒng)稀疏技術(shù)加以優(yōu)化,進一步提高計算效率,對電力系統(tǒng)各種分析計算都有重要意 義。
[0003] 目前電力系統(tǒng)中常用的方法有稀疏向量法和基于十字鏈表的稀疏技術(shù),但仍存在 兩個缺點:1)在稀疏矩陣結(jié)構(gòu)確定的情況下,數(shù)組存儲比鏈表存儲更節(jié)省內(nèi)存,檢索效率 更高;2)節(jié)點優(yōu)化編號的過程中,已產(chǎn)生新增非零元的信息,可提前確定因子表結(jié)構(gòu)。
[0004] 隨著將STL (Standard Template Library)納入C++標準,數(shù)組的功能得到極大的 完善。利用容器數(shù)組可以方便地進行插入、刪除、查找等操作,且不會出現(xiàn)維數(shù)不足的情況, 使原本對數(shù)組的復(fù)雜操作變得簡單。
【發(fā)明內(nèi)容】
[0005] 針對現(xiàn)有技術(shù)存在的不足,本發(fā)明提出了一種可有效提高信息檢索效率、程序計 算速度的基于改進鄰接矩陣的稀疏技術(shù)。
[0006] 為了解決上述技術(shù)問題,本發(fā)明采用如下的技術(shù)方案:
[0007] -種基于改進鄰接矩陣的稀疏技術(shù),將鄰接矩陣的拓撲結(jié)構(gòu)稀疏存儲,構(gòu)造改進 鄰接矩陣,存儲電力網(wǎng)絡(luò)的拓撲結(jié)構(gòu);改進鄰接矩陣Μ用來表示與某一節(jié)點相連的節(jié)點號 及兩節(jié)點之間的支路編號,以非接地支路兩端的節(jié)點號和支路編號作為矩陣的行向量;改 進鄰接矩陣Μ共有三列,前兩列表示節(jié)點編號,第三列是對應(yīng)的支路編號;將改進鄰接矩陣 Μ運用于電力系統(tǒng)的節(jié)點優(yōu)化編號,LU分解檢索信息的提前確定和節(jié)點導(dǎo)納矩陣的形成。
[0008] 改進鄰接矩陣Μ首先用于節(jié)點優(yōu)化編號,節(jié)點優(yōu)化過程結(jié)束后的矩陣Ml用于LU 分解檢索信息的提前確定,矩陣Μ用于節(jié)點導(dǎo)納矩陣的形成。(其中,節(jié)點優(yōu)化編號和節(jié)點 導(dǎo)納矩陣的形成都是基于M,LU分解檢索信息的提前確定需要以節(jié)點優(yōu)化編號后矩陣Ml為 依據(jù))
[0009] (一)形成改進鄰接矩陣
[0010] 在圖論中,無向圖6' = (「,£?,其中,¥={¥1}為圖6的點集4={4}為圖6的 邊集,少= Kv,,v,)}為與邊對應(yīng)的節(jié)點之間的連接關(guān)系。用矩陣表示圖對研究圖的性質(zhì)及應(yīng) 用非常方便,鄰接矩陣就是圖的一種常用的存儲結(jié)構(gòu)。初始鄰接矩陣是一個η維布爾方陣, 表示節(jié)點之間的連接關(guān)系。鄰接矩陣直觀易懂,很容易判斷任意兩個節(jié)點之間是否直接相 連。然而鄰接矩陣與節(jié)點導(dǎo)納矩陣有著完全相同的結(jié)構(gòu),高度稀疏,因此考慮將圖G的拓撲 結(jié)構(gòu)稀疏存儲。為此構(gòu)造矩陣M,改變鄰接矩陣的表現(xiàn)形式,為表述方便,本文將矩陣Μ統(tǒng)稱 為改進鄰接矩陣。
[0011] 改進鄰接矩陣Μ主要用來表示與某一節(jié)點相連的節(jié)點號及兩節(jié)點之間的支路編 號,以非接地支路兩端的節(jié)點號和支路編號作為矩陣的行向量。矩陣Μ共有三列,前兩列表 不節(jié)點編號,第二列是對應(yīng)的支路編號。
[0012] ΒΡΑ數(shù)據(jù)包含了一個系統(tǒng)潮流計算所需的信息,其中,Β卡表示母線,L卡、Ε卡和 Τ卡分別表示對稱線路、不對稱線路和變壓器支路。掃描ΒΡΑ數(shù)據(jù)中的所有支路,即可得到 完整的拓撲信息。
[0013] ΒΡΑ數(shù)據(jù)以字符形式存儲,將字符信息轉(zhuǎn)換為數(shù)字信息,才能進行后續(xù)的計算。掃 描 ΒΡΑ 數(shù)據(jù)(中國版的 Bonneville Power Administration-ΒΡΑ 程序的 *· DAT 文件),將 B卡(母線)的節(jié)點名和節(jié)點電壓存入容器數(shù)組vecB,其在vecB中的行號就是其節(jié)點編號。 將L卡(對稱線路)兩側(cè)的節(jié)點名和節(jié)點電壓存入容器數(shù)組vecL。掃描vecB,找到L卡兩 端的節(jié)點在vecB中的位置,轉(zhuǎn)化為數(shù)字后存入矩陣M,由此得到該支路的連接關(guān)系,每記錄 一條支路,支路編號加1。E卡、T卡處理方法與L卡相同,如此可形成完整的矩陣M。
[0014] (二)基于改進鄰接矩陣的節(jié)點優(yōu)化編號
[0015] 節(jié)點優(yōu)化編號可以顯著提高稀疏技術(shù)的性能,矩陣Μ包含了原始網(wǎng)絡(luò)的拓撲信 息,在節(jié)點優(yōu)化編號過程中,需及時更新拓撲信息以反映拓撲結(jié)構(gòu)的變化。基于矩陣Μ采用 半動態(tài)法進行優(yōu)化編號的具體過程如下:
[0016] (1)去除并聯(lián)支路的影響,提取矩陣Μ前兩列互不相同的行存放到矩陣Μ0和Μ1, 此時Μ0和Ml完全相同;
[0017] (2)掃描矩陣M0,統(tǒng)計每個節(jié)點的出線度,存放到數(shù)組ND ;
[0018] (3)消去出線度最小的一個節(jié)點i ;
[0019] (4)在M0中去掉與節(jié)點i相關(guān)的所有支路,記錄新增的支路,存放到矩陣M0與矩 陣Ml ;
[0020] (5) ND [i] = 0,與節(jié)點i相連的所有未消去節(jié)點出線度減1,新增支路兩端節(jié)點的 出線度加1 ;
[0021] (6)重復(fù)執(zhí)行步驟(3)、(4)、(5),直到所有節(jié)點均被消去。
[0022](三)基于改進鄰接矩陣的三角分解檢索信息的確定
[0023] 在大規(guī)模系統(tǒng)節(jié)點電壓方程的求解過程中,通常采用的是LU分解技術(shù),因為節(jié)點 導(dǎo)納矩陣高度稀疏,LU分解后的L矩陣和U矩陣也高度稀疏,采用三角檢索存儲格式進行 存儲,檢索信息是的形成是至關(guān)重要的一步。在LU分解過程中,L可由U求出,所以只需存 儲U矩陣及其檢索信息。采用三角存儲格式存儲矩陣U及其檢索信息,如下所示:
[0024] YD :存儲U矩陣的對角線元素的值;
[0025] YU :按行順序的存儲U矩陣嚴格上三角非零元的值;
[0026] JU[p]:存儲元素YU[p]所在的列號;
[0027] IU[k]:存儲U矩陣嚴格上三角元素中第k行第1個非零元素在YU中的位置;
[0028] 節(jié)點編號完成后的矩陣M1,包含原有節(jié)點間連接關(guān)系和節(jié)點消去過程中的新增支 路,由此確定存儲框架和檢索信息。對照節(jié)點編號后的節(jié)點順序,通過掃描、查找等操作即 可在矩陣三角分解前確定矩陣U的存儲框架YD、YU和檢索信息JU、IU。形成數(shù)組JU和IU 的具體步驟如下;
[0029] (1) i = 0,將i存放于數(shù)組JU,節(jié)點j = BestTour[i],掃描矩陣M1,得到與節(jié)點j 相連的另一節(jié)點y ;
[0030] (2)掃描矩陣BestTour,找到y(tǒng)在其中的位置m,即y = BestTour[m];
[0031] (3)判斷是否滿足m>i,若是,轉(zhuǎn)步驟(4),若否,轉(zhuǎn)步驟(5);
[0032] (4)將m存放于數(shù)組JU ;
[0033] (5)判斷與節(jié)點j相連的節(jié)點是否都被找到,若是,轉(zhuǎn)步驟(6),若否,轉(zhuǎn)步驟⑴;
[0034] (6)將數(shù)組JU中數(shù)據(jù)個數(shù)存放于數(shù)組IU ;
[0035] (7) i = i+Ι,轉(zhuǎn)步驟(1),直至i = n-1,至此在LU分解之前形成矩陣U檢索信息。
[0036] 其中,數(shù)組BestTour存儲了優(yōu)化編號后的節(jié)點順序。
[0037] 數(shù)組YD元素的個數(shù)為節(jié)點的個數(shù),數(shù)組YU元素的個數(shù)與數(shù)組JU相同,由此形成 矩陣U存儲框架。
[0038] 檢索信息確定后在整個計算過程中不再發(fā)生改變,進行LU分解及前代回代時,按 照數(shù)組JU和IU檢索非零元。當產(chǎn)生非零注入元時,只需在數(shù)組YU的相應(yīng)位置處更新注入 值,整個分解過程不需要再對注入元的檢索信息進行額外處理。
[0039] (四)基于改進鄰接矩陣形成節(jié)點導(dǎo)納矩陣
[0040] 矩陣Μ包含了整個網(wǎng)絡(luò)的拓撲結(jié)構(gòu),利用矩陣Μ及元件的電氣參數(shù)形成系統(tǒng)的節(jié) 點導(dǎo)納矩陣。具體步驟如下:
[0041] (l)k = 0,節(jié)點i = BestTour[k],掃描矩陣Μ,得到與節(jié)點i相連的另一節(jié)點m及 支路編號d ;
[0042] (2)掃描 BestTour,找到節(jié)點 m 的位置 j,即 m = BestTour [j];
[0043] (3)根據(jù)支路編號d判斷支路類型,利用該支路電氣元件的數(shù)學(xué)模型得到節(jié)點i與 節(jié)點m之間的互導(dǎo)納,將互導(dǎo)納取負后累加到節(jié)點i的自導(dǎo)納;
[0044] (4)掃描發(fā)電機與負荷等接地元件的對地導(dǎo)納,累加到節(jié)點i的自導(dǎo)納;
[0045] (5)與節(jié)點i相連的所有節(jié)點都處理完畢后,形成完整一行的導(dǎo)納矩陣,轉(zhuǎn)步驟 (6),否則轉(zhuǎn)步驟(1);
[0046] (6)k = k+Ι,轉(zhuǎn)步驟(1),直到k = n-1,至此形成完整的節(jié)點導(dǎo)納矩陣。
[0047] 其中:數(shù)組BestTour存儲了優(yōu)化編號后的節(jié)點順序。
[0048] 本發(fā)明方法的優(yōu)點是:
[0049] 1、本發(fā)明將鄰接矩陣稀疏存儲,構(gòu)造改進鄰接矩陣,方便了對拓撲結(jié)構(gòu)的調(diào)用,結(jié) 合計算機技術(shù)和電力網(wǎng)絡(luò)特點形成的稀疏技術(shù),可以有效提高節(jié)點方程的計算效率;
[0050] 2、本發(fā)明將改進鄰接矩陣應(yīng)用于節(jié)點優(yōu)化編號,節(jié)點導(dǎo)納矩陣的形成,提高了檢 索網(wǎng)絡(luò)拓撲的效率;
[0051] 3、本發(fā)明根據(jù)優(yōu)化編號過程中新增支路與LU分解非零注入元的關(guān)聯(lián)性質(zhì),在優(yōu) 化編號的同時,記錄新增支路的信息,根據(jù)優(yōu)化編號后的改進鄰接矩陣,提前形成三角存儲 檢索信息,避免了 LU分解過程中對注入元的額外處理。
【附圖說明】
[0052] 圖1是IEEE 9節(jié)點系統(tǒng)拓撲結(jié)構(gòu)和改進鄰接矩陣。
[0053] 圖2是基于改進鄰接矩陣的半動態(tài)法節(jié)點優(yōu)化編號流程圖。
[0054] 圖3是LU分解后的U矩陣和節(jié)點優(yōu)化編號后的矩陣M。
[0055] 圖4是基于改進鄰接矩陣提前形成三角檢索信息流程圖。
[0056] 圖5是基于改進鄰接矩陣形成節(jié)點導(dǎo)納矩陣流程圖。
【具體實施方式】
[0057] 下面通過實施例,并結(jié)合附圖,對本發(fā)明的技術(shù)方案作進一步具體的說明。
[0058] 基于改進鄰接矩陣的稀疏技術(shù),包括以下步驟:
[0059](一)形成改進鄰接矩陣
[0060] BPA數(shù)據(jù)包含了一個系統(tǒng)潮流計算所需的信息,其中,B卡表示母線,L卡、E卡和 T卡分別表示對稱線路、不對稱線路和變壓器支路。掃描BPA數(shù)據(jù)中的所有支路,即可得到 完整的拓撲信息。
[0061] 掃描BPA數(shù)據(jù),將B卡(母線)的節(jié)點名和節(jié)點電壓存入容器數(shù)組vecB,其在vecB 中的行號就是其節(jié)點編號。將L卡(對稱線路)兩側(cè)的節(jié)點名和節(jié)點電壓存入容器數(shù)組 vecL。掃描vecB,找到L卡兩端的節(jié)點在vecB中的位置,轉(zhuǎn)化為數(shù)字后存入矩陣M,由此得 到該支路的連接關(guān)系,每記錄一條支路,支路編號加1。E卡、T卡處理方法與L卡相同,如 此可形成完整的矩陣M。
[0062](二)基于改進鄰接矩陣的節(jié)點優(yōu)化編號
[0063] 節(jié)點優(yōu)化編號可以顯著提高稀疏技術(shù)的性能,矩陣Μ包含了原始網(wǎng)絡(luò)的拓撲信 息,在節(jié)點優(yōu)化編號過程中,需及時更新拓撲信息以反映拓撲結(jié)構(gòu)的變化,因此Μ也隨節(jié)點 消去過程而變化。基于矩陣Μ采用半動態(tài)法進行優(yōu)化編號的具體過程如下:
[0064] (1)去除并聯(lián)支路的影響,提取矩陣Μ前兩列互不相同的行存放到矩陣Μ0與矩陣 Ml ;
[0065] (2)掃描矩陣M0,統(tǒng)計每個節(jié)點的出線度,存放到數(shù)組ND ;