專利名稱:一種電力系統(tǒng)小干擾穩(wěn)定仿真方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電力系統(tǒng)的模擬仿真領(lǐng)域,特別涉及一種電力系統(tǒng)小干擾穩(wěn)定仿真方法。
背景技術(shù):
電力系統(tǒng)小干擾穩(wěn)定是指電力系統(tǒng)受到小干擾后,不發(fā)生非周期性失步,自動恢復(fù)到起始運(yùn)行狀態(tài)的能力。電力系統(tǒng)運(yùn)行過程中總是不可避免地存在小干擾,進(jìn)行電力系統(tǒng)的小干擾穩(wěn)定性仿真分析,判斷系統(tǒng)在給定運(yùn)行方式下是否穩(wěn)定,是電力系統(tǒng)分析中最基本和最重要的任務(wù)之一。
電力系統(tǒng)小干擾穩(wěn)定仿真主要涉及發(fā)電機(jī)及其勵磁系統(tǒng)、動態(tài)負(fù)荷(如感應(yīng)電動機(jī)和同步電動機(jī))、直流輸電系統(tǒng)、電力電子元件(如FACTS)等眾多動態(tài)元件和輸電網(wǎng)絡(luò)、靜態(tài)負(fù)荷等組成的非線性動態(tài)系統(tǒng)。借助于線性系統(tǒng)特征分析的豐富成果,李雅普諾夫(Lyaponov)線性化方法在電力系統(tǒng)小干擾穩(wěn)定性分析中獲得了廣泛的應(yīng)用。這種方法建立在分析系統(tǒng)的線性化狀態(tài)空間方程式的特征根(模式)及其特征向量(模態(tài))的基礎(chǔ)上,將系統(tǒng)動態(tài)行為的非線性微分方程在運(yùn)行點(diǎn)附近線性化,計算線性化系統(tǒng)狀態(tài)矩陣的特征值、左右特征向量以及阻尼比、機(jī)電回路相關(guān)比、參與因子和特征值靈敏度等,從而分析判斷電力系統(tǒng)在小干擾下的行為特征。
然而,隨著電力系統(tǒng)規(guī)模的不斷擴(kuò)大,小干擾穩(wěn)定計算分析的規(guī)模和計算量也隨之大幅增加。目前對一個一萬個仿真母線的電力系統(tǒng)來說,小干擾穩(wěn)定計算的微分-代數(shù)方程組線性化后求解的稀疏矩陣規(guī)模在數(shù)萬階以上。使用當(dāng)前主流配置的微機(jī),串行計算這樣規(guī)模的小干擾穩(wěn)定仿真耗時在5分鐘以上,計算效率較低。
并行計算方法是解決電力系統(tǒng)計算機(jī)仿真速度的主要方法之一。并行計算基于一個簡單的想法N臺計算機(jī)應(yīng)該能夠提供N倍計算能力,不論當(dāng)前計算機(jī)的速度如何,都可以期望被求解的問題在1/N的時間內(nèi)完成。顯然,這只是一個理想的情況,因?yàn)楸磺蠼獾膯栴}在通常情況下都不可能被分解為完全獨(dú)立的各個部分,而是需要進(jìn)行必要的數(shù)據(jù)交換和同步。在現(xiàn)有工藝下,改善CPU性能的傳統(tǒng)方法如提升時鐘速度和指令吞吐量等在摩爾定律限制下已經(jīng)難有大的進(jìn)展。近年來新型芯片的性能提升將主要從多核和緩存兩個方面入手,其中最為矚目的當(dāng)屬多核技術(shù)。Intel、AMD等主要的處理器廠商均將提高處理器性能的途徑從提高主頻轉(zhuǎn)向整合多個處理引擎,多核心處理器已成為未來處理器技術(shù)的發(fā)展方向。在采用多核心CPU處理器的微機(jī)中,內(nèi)存為共享式,這種硬件架構(gòu)與共享內(nèi)存的多CPU處理器計算機(jī)非常類似。因此,并行算法也是類似的。對于共享內(nèi)存的多CPU處理器的并行算法,由于不考慮多臺計算機(jī)之間的分布式計算,而只考慮同一臺計算機(jī)內(nèi)部的并行計算時,所以,并行算法主要分為多進(jìn)程和多線程兩類。
為了滿足小干擾穩(wěn)定程序在Windows和Linux兩種操作系統(tǒng)中并行計算的需要,本方法選擇Linux系統(tǒng)的并行處理函數(shù),并通過cygwin實(shí)現(xiàn)跨平臺的并行計算。cygwin是一個在Windows平臺上運(yùn)行的unix模擬環(huán)境,是cygnus solutions公司開發(fā)的自由軟件。Linux下可執(zhí)行程序的源碼代碼通過cygwin編譯鏈接后,也可在Windows下執(zhí)行,并且執(zhí)行效率基本相同。
在Linux操作系統(tǒng)中,一個進(jìn)程(Process)相當(dāng)于一個任務(wù)(Task),從操作系統(tǒng)核心的角度來看,進(jìn)程是管理系統(tǒng)資源(CPU、內(nèi)存、文件等)的基本單位,是為正在運(yùn)行的程序所提供的運(yùn)行環(huán)境;從用戶角度來看,進(jìn)程是應(yīng)用程序的一個動態(tài)執(zhí)行過程。進(jìn)程具有一段可執(zhí)行的程序、專用的系統(tǒng)堆??臻g、私有的“進(jìn)程控制塊”(即task_struct數(shù)據(jù)結(jié)構(gòu))和獨(dú)立的存儲空間。內(nèi)核空間是通過進(jìn)程模擬線程的,在用戶空間用pthread創(chuàng)建線程,線程是程序執(zhí)行的最小單位。一個進(jìn)程至少需要有一個線程來執(zhí)行指令。線程也具有一段可執(zhí)行的程序、專用的系統(tǒng)堆??臻g、私有的“進(jìn)程控制塊”,但是沒有自己的存儲空間。
線程與進(jìn)程的主要區(qū)別在于線程不能夠單獨(dú)執(zhí)行,它必須運(yùn)行在處于活動狀態(tài)的進(jìn)程中;多個線程共享同一進(jìn)程除CPU以外的所有資源,各線程間允許任務(wù)協(xié)作和數(shù)據(jù)交換。
創(chuàng)建線程比進(jìn)程開銷小,多線程間通信也比多進(jìn)程間的通信過程簡單。簡而言之,線程只不過是進(jìn)程的一個執(zhí)行上下文。通常單獨(dú)一個程序運(yùn)行時,缺省的包含一個主線程,主線程以函數(shù)地址的形式(如main函數(shù))提供程序的啟動點(diǎn),這就是單進(jìn)程單線程的情況。若在main函數(shù)中創(chuàng)建多個線程,則該程序運(yùn)行時,操作系統(tǒng)為每個線程分配不同的CPU時間片,并根據(jù)線程優(yōu)先級進(jìn)行調(diào)度。由于每個時間片時間很短,看上去好象各個線程是并發(fā)執(zhí)行的,實(shí)際上同一時刻只有一個線程在運(yùn)行,這就是單進(jìn)程多線程的情況。
若用Linux操作系統(tǒng)下的fork()函數(shù)創(chuàng)建多個進(jìn)程,而每個進(jìn)程只采用默認(rèn)的一個主線程,則程序運(yùn)行時,由內(nèi)核調(diào)度操作系統(tǒng),將CPU分配給各個進(jìn)程使用,這就是多進(jìn)程的情況。
由此可知,雖然多線程的并行計算效率要大于多進(jìn)程程序,但是其缺點(diǎn)是需要對已有的串行程序進(jìn)行大量的重新編程,把程序中適合并行計算的部分變?yōu)槎嗑€程來實(shí)現(xiàn)。而多進(jìn)程程序雖然執(zhí)行效率稍低,但是不需要對現(xiàn)有的串行程序編程,可以使用多任務(wù)的方式來實(shí)現(xiàn)并行計算,程序?qū)崿F(xiàn)簡單可靠。
對于大規(guī)模電力系統(tǒng)小干擾穩(wěn)定計算來說,必須采用部分特征值算法(本發(fā)明采用隱式重啟動的Arnoldi算法),需要對關(guān)心的低頻振蕩區(qū)域采用多個搜索點(diǎn)(一般在20個左右)分別進(jìn)行計算,每個搜索點(diǎn)計算出復(fù)坐標(biāo)平面上在該搜索點(diǎn)周圍一定區(qū)域內(nèi)的特征值,即計算出每個搜索點(diǎn)附近的一個區(qū)域內(nèi)的特征值。只要設(shè)置一定數(shù)量的合適的搜索點(diǎn),則這些搜索點(diǎn)的搜索區(qū)域的疊加就覆蓋了整個關(guān)心的區(qū)域。這些搜索點(diǎn)的計算是相互獨(dú)立的,因此,使用多進(jìn)程的并行計算方法具有明顯的優(yōu)越性,在現(xiàn)有成熟的串行計算程序基礎(chǔ)上,只需要編寫搜索點(diǎn)的CPU核心分配和調(diào)度程序即可實(shí)現(xiàn)。當(dāng)所有搜索點(diǎn)的計算結(jié)束后,合并所有單個搜索點(diǎn)的結(jié)果,就可以得到所求解問題的完整結(jié)果。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中仿真計算復(fù)雜繁瑣效率低下的缺點(diǎn),提供一種簡單高效可靠的電力系統(tǒng)小干擾穩(wěn)定仿真方法。
在電力系統(tǒng)小干擾穩(wěn)定仿真方法中,首先計算搜索點(diǎn)的數(shù)目,然后根據(jù)CPU核心數(shù)目自動給CPU核心分配搜索點(diǎn)計算任務(wù)。由于是多進(jìn)程,每個核心的搜索點(diǎn)計算和串行計算過程是完全相同的。該方法能夠直接利用現(xiàn)有的串行計算程序,通過簡單的編程,即可實(shí)現(xiàn)并行計算。它的優(yōu)點(diǎn)是編程簡單,可靠性高,且具有巨大的數(shù)值計算和數(shù)據(jù)處理能力,能夠在保證結(jié)果正確和仿真精度的前提下,大大提高仿真速度。
本發(fā)明的技術(shù)方案是一種電力系統(tǒng)小干擾穩(wěn)定仿真方法,用多核心處理器來并行求解同一仿真的問題,即將過去由單一處理器串行求解的同一仿真的問題分解成若干個獨(dú)立的計算任務(wù),分散到各個處理器進(jìn)行并行運(yùn)算。
上述方法包含下列步驟 步驟101并行計算開始; 步驟102統(tǒng)計搜索點(diǎn)的個數(shù); 步驟103根據(jù)CPU核心數(shù)目N,生成N個搜索點(diǎn)的計算任務(wù)(N≥2); 步驟104調(diào)用Linux操作系統(tǒng)下的fork()函數(shù)生成N個進(jìn)程; 步驟105各個子進(jìn)程同時調(diào)用相應(yīng)的CPU獨(dú)立執(zhí)行其搜索點(diǎn)集的計算任務(wù); 步驟106判斷是否所有子進(jìn)程都執(zhí)行結(jié)束; 步驟107收集子進(jìn)程的計算結(jié)果; 步驟108輸出部分。
其中步驟101并行計算開始包括 (1)使用電力系統(tǒng)潮流和穩(wěn)定數(shù)據(jù)文件作為輸入,首先運(yùn)行潮流程序得到潮流結(jié)果文件,從潮流結(jié)果文件獲取分析系統(tǒng)的動態(tài)元件數(shù)、節(jié)點(diǎn)數(shù)、網(wǎng)絡(luò)線路數(shù)以及潮流參數(shù),確定系統(tǒng)基本結(jié)構(gòu),初始化系統(tǒng)變量,然后通過穩(wěn)定數(shù)據(jù)文件獲取系統(tǒng)小干擾穩(wěn)定性分析所需的動態(tài)元件參數(shù),初始化系統(tǒng)參數(shù)數(shù)組; (2)初始化各個元件,計算元件的參數(shù)矩陣,通過上述(1)獲取的各類參數(shù),建立系統(tǒng)中各個動態(tài)元件的元件對象實(shí)例,不同的動態(tài)元件對應(yīng)不同的元件類,獲取各實(shí)例參數(shù),并計算各個動態(tài)元件的系數(shù)矩陣Ai、Bi、Ci、Di; 電力系統(tǒng)的動態(tài)特性由一組非線性微分方程組和一組非線性代數(shù)方程組描述 在平衡點(diǎn)x0附近線性化,定義狀態(tài)向量和非狀態(tài)向量如下 ΔX=[x1,x2,...,xm]T ΔY=[xm+1,xm+2,...,xn]T 得到得到系統(tǒng)的矩陣形式 其中,某個動態(tài)元件(假設(shè)該原件有k個微分方程、h個代數(shù)方程)的系數(shù)矩陣Ai、Bi、Ci、Di為 (3)將各個元件的系數(shù)矩陣Ai、Bi、Ci、Di合并,即得到大系統(tǒng)矩陣JA、JB、JC、JD 然后結(jié)合網(wǎng)絡(luò)導(dǎo)納矩陣形成增廣狀態(tài)矩陣AB 其中E1、E2為網(wǎng)絡(luò)節(jié)點(diǎn)電壓矩陣,I1、I2為節(jié)點(diǎn)注入電流矩陣,Y為網(wǎng)絡(luò)導(dǎo)納矩陣。
步驟102統(tǒng)計搜索點(diǎn)的個數(shù)包括 根據(jù)用戶定義的關(guān)心區(qū)域范圍以及隱式重啟動Arnoldi算法控制信息中搜索點(diǎn)的個數(shù),形成整個系統(tǒng)所有搜索點(diǎn)的信息; 步驟103根據(jù)CPU核心數(shù)目N,生成N個搜索點(diǎn)的特征值計算任務(wù)包括 根據(jù)CPU核心數(shù)目N,將整個系統(tǒng)所有的搜索點(diǎn)平均分成N份; 步驟104調(diào)用Linux操作系統(tǒng)下的fork()函數(shù)生成N個進(jìn)程; 步驟105各個子進(jìn)程同時調(diào)用相應(yīng)的CPU獨(dú)立執(zhí)行其搜索點(diǎn)集的計算任務(wù)包括 該步驟中有N個串行仿真進(jìn)程,也即N個串行仿真程序在同時計算,這N個進(jìn)程的啟動通過Linux操作系統(tǒng)下的進(jìn)程調(diào)用函數(shù)execlp()來實(shí)現(xiàn); 步驟106判斷是否所有子進(jìn)程都執(zhí)行結(jié)束包括 該步驟調(diào)用Linux操作系統(tǒng)下的waitpid()函數(shù)判斷是否所有子進(jìn)程都執(zhí)行結(jié)束,只要有一個子進(jìn)程沒有結(jié)束,程序?qū)⒗^續(xù)等待,一直等到所有的子進(jìn)程全部執(zhí)行結(jié)束,程序才進(jìn)入到下一步; 步驟107收集子進(jìn)程的計算結(jié)果包括 為了避免各個子進(jìn)程計算后,有多個計算結(jié)果文件的存在而導(dǎo)致在結(jié)果查看上的不方便,對同一個線性化矩陣,將不同CPU核心搜索計算的結(jié)果合并為一個結(jié)果,當(dāng)上述所有子進(jìn)程都執(zhí)行結(jié)束,程序?qū)⑹占舆M(jìn)程的計算結(jié)果,將其合并成一個結(jié)果文件。
步驟108輸出部分包括 當(dāng)程序計算完畢后,通過文本方式、表格方式以及圖形方式將結(jié)果輸出。
其中,步驟101中所述的動態(tài)元件包括發(fā)電機(jī)、勵磁系統(tǒng)、調(diào)速器、原動機(jī)、動態(tài)負(fù)荷元件(如感應(yīng)電動機(jī)和同步電動機(jī))、風(fēng)電機(jī)、直流輸電系統(tǒng)、電力電子元件(如FACTS)等。
本發(fā)明的有益效果是在國內(nèi)外電力系統(tǒng)小干擾穩(wěn)定仿真領(lǐng)域首次提出使用多核心CPU多進(jìn)程的并行計算仿真方法。在仿真中可以根據(jù)CPU核心數(shù)目自動選擇調(diào)用合適的進(jìn)程數(shù),從而在保證結(jié)果正確和仿真精度的前提下,大大縮短了仿真時間,提高了程序的計算效率,克服了現(xiàn)有的只能串行計算的電力系統(tǒng)小干擾穩(wěn)定仿真方法效率較低和不能充分利用CPU資料的缺陷。
圖1為本發(fā)明的一種電力系統(tǒng)小干擾穩(wěn)定仿真方法的流程圖示意圖; 圖2為本發(fā)明的Arnoldi算法的搜索圓示意圖。
具體實(shí)施例方式 以下,參考附圖1詳細(xì)描述本發(fā)明的一種電力系統(tǒng)小干擾穩(wěn)定仿真方法。
電力系統(tǒng)是一個用微分方程描述的復(fù)雜動力學(xué)系統(tǒng)。電力系統(tǒng)運(yùn)行的理想情況是,在任何時候系統(tǒng)能夠以恒定的電壓和頻率連續(xù)不斷地向負(fù)荷供電。然而在實(shí)際系統(tǒng)中這種理想是不現(xiàn)實(shí)的,事實(shí)上電力系統(tǒng)時刻遭受到一些干擾的沖擊。電力系統(tǒng)遭到小干擾后是否穩(wěn)定與很多因素有關(guān),主要包括初始運(yùn)行狀態(tài)、輸電系統(tǒng)中各元件的電氣聯(lián)系緊密程度、以及各種控制裝置的特性等等。在現(xiàn)代電力系統(tǒng)中,受多種因素的影響和制約,一些電源基地位置遠(yuǎn)離負(fù)荷中心,長距離輸電等效電抗較大,傳輸功率一般也很大;發(fā)電機(jī)單機(jī)容量增大,發(fā)電機(jī)相對的同步電抗值增加,而機(jī)組慣性時間常數(shù)減??;互聯(lián)系統(tǒng)聯(lián)絡(luò)線傳輸容量增加,系統(tǒng)備用容量相對不足;運(yùn)用快速高增益勵磁控制等。由于以上這一系列原因,對電力系統(tǒng)本身固有的穩(wěn)定性會產(chǎn)生影響,容易出現(xiàn)負(fù)阻尼型低頻振蕩,甚至引起互聯(lián)系統(tǒng)解列等更嚴(yán)重的穩(wěn)定破壞事故。
從理論上來說,電力系統(tǒng)的小干擾穩(wěn)定性相當(dāng)于一般動力學(xué)系統(tǒng)在Lyaponov意義下的漸進(jìn)穩(wěn)定性。Lyaponov線性化方法與非線性系統(tǒng)的局部穩(wěn)定性有關(guān),從直觀上來理解,非線性系統(tǒng)在小范圍內(nèi)運(yùn)動時應(yīng)當(dāng)與它的線性化近似具有相似的特性。當(dāng)前,用于研究復(fù)雜電力系統(tǒng)小干擾穩(wěn)定的方法主要是基于Lyaponov一次近似法的小干擾法。該方法原理如下 電力系統(tǒng)的動態(tài)特性由一組非線性微分方程組和一組非線性代數(shù)方程組描述 (式1) 在平衡點(diǎn)x0附近線性化,把各變量表示為其初始值與微增量之和 xi=xi0+Δxi (式2) 將所得方程組在平衡點(diǎn)x0附近展開成泰勒級數(shù),并略去各微增量的二次及高次項(xiàng),得 (式3) 定義狀態(tài)向量和非狀態(tài)向量如下 ΔX=[x1,x2,...,xm]T ΔY=[xm+1,xm+2,...,xn]T 將(式3)寫成矩陣形式 (式4) 其中,某個動態(tài)元件(假設(shè)該原件有k個微分方程、h個代數(shù)方程)的系數(shù)矩陣Ai、Bi、Ci、Di為 將各個元件的系數(shù)矩陣Ai、Bi、Ci、Di合并,即得到大系統(tǒng)矩陣JA、JB、JC、JD 在式(4)中消去非狀態(tài)變量 (式5) (式5)就是描述線性系統(tǒng)的狀態(tài)方程,其中A為n×n維系數(shù)矩陣,稱為該系統(tǒng)的狀態(tài)矩陣。
對于由狀態(tài)方程描述的線性系統(tǒng),其小干擾穩(wěn)定性由狀態(tài)矩陣的所有特征值決定。這里不加證明引出Lyaponov第一穩(wěn)定性定理如果線性化方程(式5)的所有特征根都具有負(fù)實(shí)部,則原系統(tǒng)的平衡狀態(tài)是漸近穩(wěn)定的;如果線性化方程(式5)的特征根至少有一個根具有正實(shí)部,則原系統(tǒng)的平衡狀態(tài)是不穩(wěn)定的;如果線性化方程(式5)的特征根有實(shí)部為零的情況(稱為臨界情況),則原非線性系統(tǒng)(式5)的穩(wěn)定性不能從線性化方程(式5)來判斷,而必須考慮原方程展開式中二次和更高次項(xiàng)的影響。對于實(shí)際運(yùn)行的電力系統(tǒng)來說,分析臨界情況下的系統(tǒng)穩(wěn)定性并無多大意義,可以視它為小干擾穩(wěn)定的極限情況。因此,分析系統(tǒng)在某個運(yùn)行點(diǎn)的小干擾穩(wěn)定性問題,可以歸結(jié)為求解狀態(tài)矩陣A的全部特征值的問題。
于是,電力系統(tǒng)小干擾穩(wěn)定性分析的一般過程可歸結(jié)為 1)計算給定穩(wěn)態(tài)運(yùn)行情況下各變量的穩(wěn)態(tài)值(即平衡點(diǎn)的值); 2)對描述暫態(tài)過程的微分-代數(shù)方程式,在穩(wěn)態(tài)值附近進(jìn)行線性化; 3)形成狀態(tài)矩陣A,并根據(jù)其特征值的性質(zhì)判斷系統(tǒng)的穩(wěn)定性。
求解狀態(tài)矩陣A的特征值的方法有很多,本發(fā)明使用的是隱式重啟動Arnoldi算法,是一種非常有效的全維特征值部分特征值計算方法,適合于大規(guī)模電力系統(tǒng)小干擾穩(wěn)定仿真中的特征值計算。
大型電力系統(tǒng)小干擾穩(wěn)定性分析一般只需要計算系統(tǒng)弱阻尼和不穩(wěn)定(模式),特別對于低頻振蕩問題,只要求計算弱阻尼轉(zhuǎn)子搖擺模式,即關(guān)鍵特征值。關(guān)鍵特征值并非是系統(tǒng)狀態(tài)矩陣模最大的特征值,不能直接使用隱式重啟動Arnoldi算法進(jìn)行高效計算。因此,為了利用隱式重啟動Arnoldi算法計算系統(tǒng)的關(guān)鍵特征值,必須先進(jìn)行狀態(tài)矩陣的預(yù)處理。
矩陣的預(yù)處理技術(shù)通過矩陣變換At=f(A)將原始矩陣的關(guān)鍵特征值λi變換為矩陣At的主導(dǎo)特征值,而后者可以用稀疏特征值分析方法高效求解。
位移求逆變換法是最常用的預(yù)處理技術(shù),它將原始矩陣平移點(diǎn)附近的特征值映射成變換后陣的主導(dǎo)特征值,同時增大了原始矩陣平移點(diǎn)附近特征值的分離度。其變換形式為 At=(A-qI)-1 (式6) 其中q為復(fù)數(shù)位移,設(shè)矩陣At的一個特征值及相應(yīng)特征向量分別為λt和Xt,則 AtXt=(A-qI)-1 Xt=λtXt (式7) 由上式可得 (式8) 顯然矩陣A和矩陣At的特征向量相等,而二者的特征值之間有如下關(guān)系 (式9) 可見,A陣中最靠近q的幾個特征值被映射到At陣中模最大的幾個特征值,并且特征向量不變。如果能夠求出At的前r個模數(shù)遞減的特征值,則它們是A中距離q由近到遠(yuǎn)的r個特征值,這顯然適應(yīng)于我們所需要的選擇特征分析。由于這種變換增大了映射的特征值之間的距離,因而提高了特陣值求解方法的收斂性;然而,為了得到所有的關(guān)鍵特征值,需要多次位移從而掃描整個虛軸,這就不可避免地需要做一些冗余計算。
位移求逆變換法中的平移點(diǎn)在本發(fā)明中稱之為搜索點(diǎn)。電力系統(tǒng)小干擾穩(wěn)定仿真中,需要求出一系列搜索點(diǎn)附近的特征值,從而求出所關(guān)心區(qū)域的特征值。
完成一個搜索點(diǎn)的計算后,則在復(fù)平面上以搜索點(diǎn)為圓心,以圓心到搜出的特征值分布點(diǎn)中的最大直線距離為半徑的圓,稱為搜索圓。如果計算收斂,則搜索圓內(nèi)將不存在漏根(漏根指遺漏的沒有計算出的特征值);如果計算不收斂,雖然計算出的特征值是準(zhǔn)確的,但搜索圓內(nèi)可能存在漏根。為了能夠搜索到關(guān)心區(qū)域內(nèi)的所有特征值,往往需要多個搜索點(diǎn)的多次特征值計算。
搜索圓的示例如圖2所示。圖中顯示了兩個搜索點(diǎn)的兩次特征值搜索計算結(jié)果兩個搜索點(diǎn)坐標(biāo)分別是C1和C2,搜索的特征值個數(shù)分別是4和5,兩次計算都得到特征值E4。計算完畢后,如果兩次搜索計算時都收斂,則以C1和C2為圓心的兩個搜索圓內(nèi),只有8個特征值存在。如果只有搜索點(diǎn)C1的計算不收斂,則圖2中陰影部分內(nèi)可能存在漏根。
另外,系統(tǒng)的狀態(tài)矩陣A本身不是稀疏的,但是,系統(tǒng)增廣狀態(tài)矩陣卻非常稀疏,基于以上事實(shí),提出了一種利用系統(tǒng)增廣狀態(tài)矩陣稀疏特性求解系統(tǒng)特征值和特征向量的方法,即稀疏矩陣技術(shù),稀疏矩陣技術(shù)不但可以節(jié)省內(nèi)存空間,而且可以大大降低計算量。通過使用稀疏矩陣技術(shù),隱式重啟動Arnoldi算法才真正可以用于電力系統(tǒng)小干擾穩(wěn)定性分析。
本發(fā)明的電力系統(tǒng)小干擾穩(wěn)定仿真方法主要步驟如下 步驟101并行計算開始; (1)使用電力系統(tǒng)潮流和穩(wěn)定數(shù)據(jù)文件作為輸入。首先運(yùn)行潮流程序得到潮流結(jié)果文件,從潮流結(jié)果文件獲取分析系統(tǒng)的動態(tài)元件(發(fā)電機(jī)等)數(shù)、節(jié)點(diǎn)數(shù)、網(wǎng)絡(luò)線路數(shù)以及潮流參數(shù),確定系統(tǒng)基本結(jié)構(gòu),初始化系統(tǒng)變量。然后通過穩(wěn)定數(shù)據(jù)文件獲取系統(tǒng)小干擾穩(wěn)定性分析所需的發(fā)電機(jī)等動態(tài)元件參數(shù),初始化系統(tǒng)參數(shù)數(shù)組。
(2)初始化各個元件,計算元件的參數(shù)矩陣。通過前面獲取的各類參數(shù),建立系統(tǒng)中各個動態(tài)元件(發(fā)電機(jī)等)的元件對象實(shí)例(不同的動態(tài)元件對應(yīng)不同的元件類);獲取各實(shí)例參數(shù),并計算其系數(shù)矩陣Ai、Bi、Ci、Di。
電力系統(tǒng)的動態(tài)特性由一組非線性微分方程組和一組非線性代數(shù)方程組描述 在平衡點(diǎn)x0附近線性化,定義狀態(tài)向量和非狀態(tài)向量如下 ΔX=[x1,x2,...,xm]T ΔY=[xm+1,xm+2,...,xn]T 得到得到系統(tǒng)的矩陣形式 其中,某個動態(tài)元件(假設(shè)該原件有k個微分方程、h個代數(shù)方程)的系數(shù)矩陣Ai、Bi、Ci、Di為 (3)將各個元件的系數(shù)矩陣Ai、Bi、Ci、Di合并,即得到大系統(tǒng)矩陣JA、JB、JC、JD 然后結(jié)合網(wǎng)絡(luò)導(dǎo)納矩陣形成增廣狀態(tài)矩陣AB 其中E1、E2為網(wǎng)絡(luò)節(jié)點(diǎn)電壓矩陣,I1、I2為節(jié)點(diǎn)注入電流矩陣,Y為網(wǎng)絡(luò)導(dǎo)納矩陣。
步驟102統(tǒng)計搜索點(diǎn)的個數(shù); 根據(jù)用戶定義的關(guān)心區(qū)域范圍以及隱式重啟動Arnoldi算法控制信息中搜索點(diǎn)的個數(shù),形成整個系統(tǒng)所有搜索點(diǎn)的信息。
步驟103根據(jù)CPU核心數(shù)目N,生成N個搜索點(diǎn)的特征值計算任務(wù); 根據(jù)CPU核心數(shù)目N,將整個系統(tǒng)所有搜索點(diǎn)平均分成N份。
步驟104調(diào)用Linux操作系統(tǒng)下的fork()函數(shù)生成N個進(jìn)程; 步驟105各個子進(jìn)程同時調(diào)用相應(yīng)的CPU獨(dú)立執(zhí)行其搜索點(diǎn)集的計算任務(wù); 本步驟中有N個串行仿真進(jìn)程(也即N個串行仿真程序)在同時計算,這N個進(jìn)程的啟動是通過Linux操作系統(tǒng)下的進(jìn)程調(diào)用函數(shù)execlp()實(shí)現(xiàn)的。
步驟106判斷是否所有子進(jìn)程都執(zhí)行結(jié)束; 該步驟調(diào)用Linux操作系統(tǒng)下的waitpid()函數(shù)判斷是否所有子進(jìn)程都執(zhí)行結(jié)束。只要有一個子進(jìn)程沒有結(jié)束,程序?qū)⒌却?,一直到所有的子進(jìn)程全部執(zhí)行結(jié)束,程序才進(jìn)入到下一步。
步驟107收集子進(jìn)程的計算結(jié)果; 為了避免各個子進(jìn)程計算后,有多個計算結(jié)果文件的存在而導(dǎo)致在結(jié)果查看上的不方便,對同一個線性化矩陣,不同CPU核心搜索計算的結(jié)果可以合并為一個結(jié)果。當(dāng)所有子進(jìn)程都執(zhí)行結(jié)束,程序?qū)⑹占舆M(jìn)程的計算結(jié)果,將其合并成一個結(jié)果文件。
步驟108程序輸出部分。
當(dāng)程序計算完畢后,可以通過文本方式、表格方式以及圖形方式將結(jié)果輸出。并行計算的任務(wù)調(diào)度和分配代碼是由C++語言實(shí)現(xiàn)的。由于使用了Linux操作系統(tǒng)下的進(jìn)程管理和調(diào)度函數(shù),所以,在Windows操作系統(tǒng)下,代碼需要經(jīng)過cygwin軟件工具進(jìn)行編譯。
以上是為了使本領(lǐng)域普通技術(shù)人員理解本發(fā)明,而對本發(fā)明進(jìn)行的詳細(xì)描述,但可以想到,在不脫離本發(fā)明的權(quán)利要求所涵蓋的范圍內(nèi)還可以做出其它的變化和修改,這些變化和修改均在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1、一種電力系統(tǒng)小干擾穩(wěn)定仿真方法,其特征在于用多核心處理器來并行求解同一仿真的問題,即將過去由單一處理器串行求解的同一仿真的問題分解成若干個獨(dú)立的計算任務(wù),分散到各個處理器進(jìn)行并行運(yùn)算。
2、如權(quán)利要求1所述的一種電力系統(tǒng)小干擾穩(wěn)定仿真方法,其特征在于包含下列步驟
步驟101并行計算開始;
步驟102統(tǒng)計搜索點(diǎn)的個數(shù);
步驟103根據(jù)CPU核心數(shù)目N,生成N個搜索點(diǎn)的計算任務(wù)(N≥2);
步驟104調(diào)用Linux操作系統(tǒng)下的fork()函數(shù)生成N個進(jìn)程;
步驟105各個子進(jìn)程同時調(diào)用相應(yīng)的CPU獨(dú)立執(zhí)行其搜索點(diǎn)集的計算任務(wù);
步驟106判斷是否所有子進(jìn)程都執(zhí)行結(jié)束;
步驟107收集子進(jìn)程的計算結(jié)果;
步驟108輸出部分。
3、如權(quán)利要求2所述的一種電力系統(tǒng)小干擾穩(wěn)定仿真方法,其特征在于其中
步驟101并行計算開始包括
(1)使用電力系統(tǒng)潮流和穩(wěn)定數(shù)據(jù)文件作為輸入,首先運(yùn)行潮流程序得到潮流結(jié)果文件,從潮流結(jié)果文件獲取分析系統(tǒng)的動態(tài)元件數(shù)、節(jié)點(diǎn)數(shù)、網(wǎng)絡(luò)線路數(shù)以及潮流參數(shù),確定系統(tǒng)基本結(jié)構(gòu),初始化系統(tǒng)變量,然后通過穩(wěn)定數(shù)據(jù)文件獲取系統(tǒng)小干擾穩(wěn)定性分析所需的動態(tài)元件參數(shù),初始化系統(tǒng)參數(shù)數(shù)組;
(2)初始化各個元件,計算元件的參數(shù)矩陣,通過上述(1)獲取的各類參數(shù),建立系統(tǒng)中各個動態(tài)元件的元件對象實(shí)例,不同的動態(tài)元件對應(yīng)不同的元件類,獲取各實(shí)例參數(shù),并計算各個動態(tài)元件的系數(shù)矩陣Ai、Bi、Ci、Di;
電力系統(tǒng)的動態(tài)特性由一組非線性微分方程組和一組非線性代數(shù)方程組描述
在平衡點(diǎn)x0附近線性化,定義狀態(tài)向量和非狀態(tài)向量如下
ΔX=[x1,x2,...,xm]T
ΔY=[xm+1,xm+2,...,xn]T
得到得到系統(tǒng)的矩陣形式
其中,某個動態(tài)元件(假設(shè)該原件有k個微分方程、h個代數(shù)方程)的系數(shù)矩陣Ai、Bi、Ci、Di為
(3)將各個元件的系數(shù)矩陣Ai、Bi、Ci、Di合并,即得到大系統(tǒng)矩陣JA、JB、JC、JD
然后結(jié)合網(wǎng)絡(luò)導(dǎo)納矩陣形成增廣狀態(tài)矩陣AB
其中E1、E2為網(wǎng)絡(luò)節(jié)點(diǎn)電壓矩陣,I1、I2為節(jié)點(diǎn)注入電流矩陣,Y為網(wǎng)絡(luò)導(dǎo)納矩陣。
步驟102統(tǒng)計搜索點(diǎn)的個數(shù)包括
根據(jù)用戶定義的關(guān)心區(qū)域范圍以及隱式重啟動Arnoldi算法控制信息中搜索點(diǎn)的個數(shù),形成整個系統(tǒng)所有搜索點(diǎn)的信息;
步驟103根據(jù)CPU核心數(shù)目N,生成N個搜索點(diǎn)的特征值計算任務(wù)包括
根據(jù)CPU核心數(shù)目N,將整個系統(tǒng)所有的搜索點(diǎn)平均分成N份;
步驟104調(diào)用Linux操作系統(tǒng)下的fork()函數(shù)生成N個進(jìn)程;
步驟105各個子進(jìn)程同時調(diào)用相應(yīng)的CPU獨(dú)立執(zhí)行其搜索點(diǎn)集的計算任務(wù)包括
該步驟中有N個串行仿真進(jìn)程,也即N個串行仿真程序在同時計算,這N個進(jìn)程的啟動通過Linux操作系統(tǒng)下的進(jìn)程調(diào)用函數(shù)execlp()來實(shí)現(xiàn);
步驟106判斷是否所有子進(jìn)程都執(zhí)行結(jié)束包括
該步驟調(diào)用Linux操作系統(tǒng)下的waitpid()函數(shù)判斷是否所有子進(jìn)程都執(zhí)行結(jié)束,只要有一個子進(jìn)程沒有結(jié)束,程序?qū)⒗^續(xù)等待,一直等到所有的子進(jìn)程全部執(zhí)行結(jié)束,程序才進(jìn)入到下一步;
步驟107收集子進(jìn)程的計算結(jié)果包括
為了避免各個子進(jìn)程計算后,有多個計算結(jié)果文件的存在而導(dǎo)致在結(jié)果查看上的不方便,對同一個線性化矩陣,將不同CPU核心搜索計算的結(jié)果合并為一個結(jié)果,當(dāng)上述所有子進(jìn)程都執(zhí)行結(jié)束,程序?qū)⑹占舆M(jìn)程的計算結(jié)果,將其合并成一個結(jié)果文件。
步驟108輸出部分包括
當(dāng)程序計算完畢后,通過文本方式、表格方式以及圖形方式將結(jié)果輸出。
4、如權(quán)利要求3所述的一種電力系統(tǒng)小干擾穩(wěn)定仿真方法,其特征在于步驟101中所述的動態(tài)元件包括發(fā)電機(jī)、勵磁系統(tǒng)、調(diào)速器、原動機(jī)、動態(tài)負(fù)荷元件(如感應(yīng)電動機(jī)和同步電動機(jī))、風(fēng)電機(jī)、直流輸電系統(tǒng)、電力電子元件(如FACTS)等。
全文摘要
本發(fā)明提出了一種電力系統(tǒng)小干擾穩(wěn)定仿真方法,能夠有效地利用一臺計算機(jī)內(nèi)的多CPU或多核心CPU處理器資源,大大提高仿真效率。該方法首先計算特征值搜索點(diǎn)的數(shù)目,根據(jù)CPU核心數(shù)目N自動給每個CPU核心分配一定的特征值搜索點(diǎn)計算任務(wù),然后,調(diào)用Linux操作系統(tǒng)下的fork( )函數(shù)生成N個進(jìn)程,各個子進(jìn)程同時調(diào)用相應(yīng)的CPU核心獨(dú)立執(zhí)行其搜索點(diǎn)集運(yùn)算,從而實(shí)現(xiàn)并行計算。在所有子進(jìn)程都計算完畢后,主程序收集各子進(jìn)程的計算結(jié)果,進(jìn)行結(jié)果輸出。
文檔編號G06F9/50GK101630273SQ200910089199
公開日2010年1月20日 申請日期2009年8月6日 優(yōu)先權(quán)日2009年8月6日
發(fā)明者宋新立, 仲悟之, 濤 劉, 涌 湯, 強(qiáng) 郭 申請人:中國電力科學(xué)研究院