背景技術:
電網連(lian)通(tong)性(xing)分(fen)(fen)析在電力系統中有著(zhu)重要作(zuo)用。如電源點(dian)追(zhui)溯、短路計算、停電分(fen)(fen)析等(deng),都是基于電網連(lian)通(tong)性(xing)分(fen)(fen)析的(de)應(ying)用。相對于其它(ta)領域(yu)的(de)連(lian)通(tong)性(xing)分(fen)(fen)析業務,電網連(lian)通(tong)性(xing)分(fen)(fen)析具(ju)有設備(bei)數量和種類多、拓撲結構復雜、節點(dian)狀態(tai)變動頻繁的(de)特點(dian),因此,電網連(lian)通(tong)性(xing)分(fen)(fen)析的(de)方法必須具(ju)有高(gao)效處理大(da)量拓撲節點(dian)的(de)能力,并(bing)且具(ju)有較(jiao)高(gao)的(de)實時(shi)性(xing)。
現(xian)有(you)(you)的(de)電網拓撲連通性分析(xi)方(fang)法一般(ban)有(you)(you)兩種:鄰接(jie)矩陣法和樹/有(you)(you)向圖搜索法。
鄰(lin)接(jie)矩陣(zhen)法(fa)(fa)是構造一個n*n的0-1矩陣(zhen)m(n為拓撲節(jie)點(dian)數(shu)(shu)),若節(jie)點(dian)i可(ke)達節(jie)點(dian)j,則將(jiang)矩陣(zhen)m[i][j]置為1,進行連通性(xing)分析(xi)時,從指定節(jie)點(dian)遍歷為矩陣(zhen)m中(zhong)為1的要素即可(ke),鄰(lin)接(jie)矩陣(zhen)法(fa)(fa)實現簡單,實時性(xing)高,但(dan)矩陣(zhen)較為稀疏(shu)時,空間(jian)浪費較大,且隨(sui)著(zhu)節(jie)點(dian)數(shu)(shu)n的增(zeng)長,算法(fa)(fa)的時間(jian)成(cheng)本和空間(jian)成(cheng)本都按平方增(zeng)長,不適用(yong)于節(jie)點(dian)數(shu)(shu)較多的分析(xi)。
樹/有(you)向圖(tu)(tu)(tu)搜索法是將連通(tong)關系(xi)構建為一個樹或(huo)有(you)向圖(tu)(tu)(tu),進行(xing)連通(tong)性分析時(shi)采(cai)用深度優先或(huo)廣度優先的方式,遍歷樹/有(you)向圖(tu)(tu)(tu)中(zhong)的節(jie)點(dian)。樹/有(you)向圖(tu)(tu)(tu)搜索法的時(shi)間(jian)、空間(jian)開銷都比鄰接(jie)矩陣法要(yao)好,但在實現上比鄰接(jie)矩陣法要(yao)復(fu)雜許多(duo),同時(shi),當節(jie)點(dian)連接(jie)狀態發(fa)生變化時(shi),需要(yao)對(dui)樹進行(xing)調(diao)整(zheng),當節(jie)點(dian)數較(jiao)多(duo)時(shi),樹的深度會(hui)較(jiao)深,導致節(jie)點(dian)的調(diao)整(zheng)開銷較(jiao)大(da),對(dui)系(xi)統實時(shi)性造成影響。
在(zai)電(dian)力(li)領(ling)域,一般(ban)會采用拓(tuo)(tuo)撲(pu)島分(fen)析的(de)方法對上(shang)述(shu)方法進(jin)行優化:預先把具有直接(jie)(jie)或(huo)間接(jie)(jie)連(lian)接(jie)(jie)關系的(de)設備聚合(he)在(zai)一起,得到一個(ge)拓(tuo)(tuo)撲(pu)島。進(jin)行分(fen)析時(shi),只需(xu)在(zai)待分(fen)析設備所(suo)屬的(de)拓(tuo)(tuo)撲(pu)島上(shang)進(jin)行遍(bian)歷,而不需(xu)要(yao)涉及整個(ge)電(dian)網,大大減少了運(yun)算量。但電(dian)網中的(de)開關狀態發(fa)生變化,或(huo)需(xu)要(yao)模擬某些設備故障(zhang)時(shi),可能會對拓(tuo)(tuo)撲(pu)島進(jin)行合(he)并/拆分(fen)操作,性能開銷比較大。
技術實現要素:
本文根據電網(wang)(wang)的特點,基于(yu)(yu)深度優先的樹/有向圖搜索(suo)法和現有拓撲島(dao)聚合方(fang)法,提出了一種基于(yu)(yu)靜(jing)態(tai)拓撲島(dao)的電網(wang)(wang)連(lian)通性分(fen)析方(fang)法,使得電網(wang)(wang)連(lian)通性分(fen)析系統擁(yong)有較高(gao)性能和實時(shi)性的同時(shi),還(huan)兼具高(gao)擴展性、易(yi)于(yu)(yu)部署到(dao)分(fen)布(bu)式環境中的優點。
一種基于靜態拓撲島的(de)電網連通性分(fen)析方法(fa),所述(shu)分(fen)析方法(fa)包括以下步驟:
步驟(1)建(jian)立(li)靜態(tai)拓撲(pu)島(dao)視(shi)所有開關(guan)設備均(jun)處于斷開狀態(tai),遍歷所有設備節(jie)(jie)點(dian),將有連(lian)通(tong)關(guan)系的(de)設備合(he)為一(yi)組(zu)(zu),直(zhi)到(dao)遍歷結(jie)(jie)束,每(mei)組(zu)(zu)節(jie)(jie)點(dian)即(ji)為一(yi)個拓撲(pu)島(dao),各節(jie)(jie)點(dian)數據結(jie)(jie)構中(zhong)的(de)相鄰設備信息(xi)也在(zai)此(ci)次(ci)遍歷中(zhong)得(de)到(dao);
步驟(2)計算(suan)各設備的動態可達(da)設備;
步(bu)驟(zou)(3)建立通用遍歷器(qi):通用遍歷器(qi)的工作(zuo)步(bu)驟(zou)如下:
(3.1)接(jie)收應用程序傳入的節點訪問(wen)函數visitor、終(zhong)止條件函數isend;
(3.2)構建一個(ge)棧(zhan)s,將起始(shi)節(jie)點壓入棧(zhan)中;
(3.3)從(cong)棧s中取出棧頂(ding)節點(dian)e,若e被(bei)標(biao)記(ji)為已讀,則轉至(zhi)步驟(3.6);
(3.4)將e標(biao)記為已(yi)讀,并將e遞給終止條件函數(shu)isend,若函數(shu)isend(e)返回結束標(biao)記,則結束整個遍(bian)歷過程;
(3.5)將e的靜(jing)態可(ke)達設備壓入棧(zhan)中,傳遞e給訪問函數visitor處理(li),并根據visitor的返回(hui)結果,決定將e的哪(na)些動態可(ke)達設備壓入棧(zhan)中;
(3.6)若(ruo)棧s中尚有元素,則(ze)跳轉至步(bu)驟(3.3),否(fou)則(ze)結束(shu)整個遍歷過(guo)程;
步驟(4)運行通用遍歷器,收集訪問函數(shu)visitor得(de)到的(de)節(jie)點(dian),按需求的(de)格式返回查詢結果;
步驟(5)若(ruo)開關狀態發生變動,或設(she)備被模擬為故障等,修改(gai)所影響設(she)備的(de)相(xiang)關狀態即(ji)可;
所述設(she)(she)(she)備(bei)(bei)節點(dian)的(de)數據結(jie)構(gou)為存(cun)儲設(she)(she)(she)備(bei)(bei)連接關系的(de)一(yi)種結(jie)構(gou)體(ti),包(bao)含了(le)設(she)(she)(she)備(bei)(bei)基(ji)本信息,設(she)(she)(she)備(bei)(bei)的(de)直(zhi)接相鄰設(she)(she)(she)備(bei)(bei)(下(xia)簡(jian)稱靜態可(ke)達設(she)(she)(she)備(bei)(bei)),及(ji)在某組開關閉合時設(she)(she)(she)備(bei)(bei)的(de)直(zhi)接相鄰設(she)(she)(she)備(bei)(bei)(下(xia)簡(jian)稱動態可(ke)達設(she)(she)(she)備(bei)(bei));
所述的(de)靜態拓撲島(dao)為在(zai)電網中,所有開(kai)關(guan)設備均斷開(kai)時(shi),具(ju)有直(zhi)接或(huo)間接連接關(guan)系的(de)一組設備組成的(de)一個(ge)集群(qun),與現有技術中的(de)拓撲島(dao)相比,靜態拓撲島(dao)不(bu)隨著開(kai)關(guan)狀態、模擬狀態等信息發生合(he)并或(huo)拆分。
所述的通(tong)(tong)(tong)用遍歷(li)器為(wei)一段(duan)通(tong)(tong)(tong)用的電網遍歷(li)程序,只(zhi)需傳(chuan)入節(jie)點訪問函數(shu)、終止條件函數(shu),即可實現所需連通(tong)(tong)(tong)性分析功能,達到代碼高度復用,功能易于擴展的目的;
所述步驟(1)遍歷所有(you)設(she)備節點過程中(zhong),對于(yu)遍歷到的節點e,判斷e與現(xian)有(you)設(she)備是否具有(you)連(lian)接(jie)關系,若(ruo)(ruo)無,則建立(li)新拓撲島t,將e加入(ru)t中(zhong);若(ruo)(ruo)有(you)且只(zhi)有(you)一(yi)個(ge)拓撲島t0與e有(you)連(lian)接(jie)關系,則將e加入(ru)t0;若(ruo)(ruo)有(you)多(duo)個(ge)拓撲島t1,t2,...tn與e具有(you)連(lian)接(jie)關系,則將t2...tn合并(bing)(bing)到t1,并(bing)(bing)將e加入(ru)t1;
所(suo)(suo)述步(bu)驟(2)計算各設(she)備(bei)的動(dong)態可(ke)達設(she)備(bei)時,將(jiang)所(suo)(suo)有(you)開關(guan)視為(wei)閉合、所(suo)(suo)有(you)設(she)備(bei)視為(wei)無故障,此時針對各個設(she)備(bei),計算出(chu)與之直接相連的設(she)備(bei),并(bing)出(chu)去其靜(jing)態可(ke)達設(she)備(bei),即得到其動(dong)態可(ke)達設(she)備(bei);
所述(shu)步驟(3.5)中,visitor的返回結果(guo)視具體需求而定,如“根據(ju)(ju)開關狀(zhuang)(zhuang)態(tai)決定入(ru)(ru)棧設備”、“根據(ju)(ju)模擬(ni)狀(zhuang)(zhuang)態(tai)和開關狀(zhuang)(zhuang)態(tai)決定入(ru)(ru)棧設備”、“無(wu)視開關狀(zhuang)(zhuang)態(tai),只由模擬(ni)狀(zhuang)(zhuang)態(tai)決定入(ru)(ru)棧設備”等。
與現(xian)有技術相(xiang)比,本(ben)發(fa)明(ming)具有以下(xia)有益效果(guo):相(xiang)比于現(xian)有的(de)(de)(de)拓撲(pu)島(dao)分析方法,本(ben)發(fa)明(ming)遍(bian)歷(li)的(de)(de)(de)節(jie)(jie)點(dian)數和深度一致,只是(shi)多了(le)一步是(shi)否遍(bian)歷(li)動態(tai)可達(da)節(jie)(jie)點(dian)的(de)(de)(de)判斷(duan),因(yin)此,兩種方法在分析過程中的(de)(de)(de)耗時(shi)相(xiang)差無幾(實測本(ben)方法比現(xian)有拓撲(pu)島(dao)分析方法慢(man)5%左右);在開關狀(zhuang)態(tai)、模擬狀(zhuang)態(tai)變更時(shi),只需修(xiu)改對(dui)應(ying)節(jie)(jie)點(dian)的(de)(de)(de)狀(zhuang)態(tai),不會進行拆分/合并操作,大幅(fu)減(jian)少了(le)系統(tong)在節(jie)(jie)點(dian)狀(zhuang)態(tai)時(shi)的(de)(de)(de)性(xing)能(neng)開銷;因(yin)此,本(ben)方法以極小的(de)(de)(de)分析時(shi)的(de)(de)(de)開銷為代(dai)價,兼具了(le)性(xing)能(neng)和實時(shi)性(xing)。
本方法(fa)將遍歷(li)方法(fa)提取為遍歷(li)器(qi),在開發具(ju)體連通性分析的(de)業務時,只需額外編寫訪問函(han)數(shu)visitor、終止(zhi)條件函(han)數(shu)isend即可,代碼(ma)高度復(fu)用,具(ju)有很強的(de)可擴展性。
龐(pang)大(da)的電網被(bei)分(fen)(fen)割成了多個拓(tuo)撲(pu)島(dao),可方便地將拓(tuo)撲(pu)島(dao)分(fen)(fen)散到分(fen)(fen)布式(shi)系統中(zhong),由于拓(tuo)撲(pu)島(dao)不會進行拆分(fen)(fen)/合(he)并的修(xiu)改操作(zuo),故無需處理(li)由于修(xiu)改操作(zuo)帶(dai)來的分(fen)(fen)布式(shi)系統一致性問題。
附圖說明
圖1為各子(zi)程序分工(gong)和交互(hu)示意圖;
圖2為通(tong)用(yong)遍歷器的工作(zuo)流程圖。
具體實施方式
下面結(jie)合(he)實(shi)施例對本發明(ming)的技(ji)術(shu)方(fang)案作進一步詳細說明(ming),但(dan)本發明(ming)并不(bu)局限于以下技(ji)術(shu)方(fang)案。
實施(shi)例1所(suo)述電網連通性分析(xi)方法做配電網上游追溯
電(dian)源點,即為指定設備供電(dian)的的設備,在配電(dian)網中,電(dian)源點一般為變電(dian)站。
上游設(she)(she)(she)備(bei),即從電源(yuan)點到(dao)達待分析設(she)(she)(she)備(bei)所經歷的設(she)(she)(she)備(bei),這些設(she)(she)(she)備(bei)是(shi)否正常工(gong)作、工(gong)作負載等參數,對于待分析設(she)(she)(she)備(bei)的供電可靠性有著(zhu)重(zhong)要(yao)的意義。
配電(dian)網上游(you)追溯,即查(cha)詢配電(dian)網中(zhong)待分析設(she)備的(de)上游(you)設(she)備的(de)過程。
步(bu)驟(1)建立靜態拓(tuo)撲島本實施例中的(de)(de)數(shu)(shu)據倉庫為hbase數(shu)(shu)據庫,編寫mapreduce模型程(cheng)序(xu),將數(shu)(shu)據庫中的(de)(de)數(shu)(shu)據分(fen)片(pian)地讀到(dao)(dao)map程(cheng)序(xu)節(jie)(jie)點上(shang),map程(cheng)序(xu)節(jie)(jie)點將接收到(dao)(dao)的(de)(de)數(shu)(shu)據分(fen)片(pian)封(feng)裝為設(she)備節(jie)(jie)點對象,并將具有連(lian)通性的(de)(de)設(she)備節(jie)(jie)點標上(shang)相同的(de)(de)拓(tuo)撲島編號(hao),傳遞(di)給reduce程(cheng)序(xu)節(jie)(jie)點;
reduce程序(xu)節(jie)點(dian)收集map程序(xu)節(jie)點(dian)傳(chuan)遞的(de)拓撲(pu)島分組(zu)的(de)信息(xi),并將拓撲(pu)島分組(zu)信息(xi)進行合(he)并,得(de)到初始拓撲(pu)島;
最(zui)后,將初始拓撲島分發到(dao)服(fu)務器集群(qun)中;
步驟(2)建立動態可達關系視所有開(kai)關設備均為閉合(he)狀(zhuang)態,得到各(ge)節點在某組開(kai)關閉合(he)時的相鄰節點;
步驟(3)建立通用遍(bian)歷器(qi):通用遍(bian)歷器(qi)的工作步驟如下:
(3.1)設計(ji)訪(fang)問函數visitor、終止條(tiao)件函數isend
visitor函數的設(she)計尋找上(shang)(shang)游設(she)備,本(ben)質上(shang)(shang)就是從(cong)電網(wang)無向圖(tu)中(zhong)獲(huo)取由待分析設(she)備出發的所(suo)有分支,并從(cong)這(zhe)些分支中(zhong)獲(huo)取一條包(bao)含電源點的路徑,因(yin)此visitor設(she)計為:
在(zai)visitor中建立(li)一個(ge)棧(zhan)(zhan)rs,當(dang)visitor接收到通用遍歷(li)器傳入(ru)的設備(bei)e時,判斷(duan)e是否與棧(zhan)(zhan)rs的棧(zhan)(zhan)頂元(yuan)素(su)是否相鄰或動態可(ke)達,若是,則e壓入(ru)棧(zhan)(zhan)rs;若否,則說明通用遍歷(li)器已遍歷(li)完一個(ge)子分支,故需要將棧(zhan)(zhan)rs中非本分支的設備(bei)剔除,具體做(zuo)法(fa)是重復(fu)移除rs的棧(zhan)(zhan)頂元(yuan)素(su),直至(zhi)棧(zhan)(zhan)頂元(yuan)素(su)與e相鄰或動態可(ke)達或rs為(wei)空(kong);
visitor的返回(hui)值(zhi)為”chosebyswitch”,即要求將(jiang)e的動態(tai)可達(da)設(she)備(bei)中開關閉合的設(she)備(bei)壓入棧(zhan)s中。
isend函數的設(she)計當傳(chuan)入isend函數的節點(dian)e為電源點(dian)時,返回結束標記;
(3.2)構建(jian)一個(ge)棧s,將待分(fen)析設(she)備(bei)壓入(ru)棧中(zhong);
(3.3)從棧(zhan)(zhan)s中取出棧(zhan)(zhan)頂節(jie)點e,若(ruo)e被標記為已(yi)讀,則轉至步驟(3.6);
(3.4)將e標記為已讀,并(bing)將e遞給(gei)終止條(tiao)件函數isend,若函數isend(e)返(fan)回(hui)結(jie)束標記,則結(jie)束整個遍(bian)歷(li)過(guo)程;
(3.5)將e的(de)靜態(tai)可達設備(bei)壓(ya)入棧(zhan)中,傳遞e給(gei)訪問(wen)函數visitor處理,并根據visitor的(de)返回結(jie)果(guo),決定將e的(de)哪些動態(tai)可達設備(bei)壓(ya)入棧(zhan)中;
(3.6)若棧(zhan)s中(zhong)尚有元素,則跳轉(zhuan)至(zhi)步驟(3.3),否(fou)則結束整(zheng)個遍(bian)歷(li)過程。
步(bu)驟(4)運行通用遍(bian)歷器,收集訪問函數visitor得到(dao)的(de)節點,按需求的(de)格式返回(hui)查(cha)詢結(jie)果;
步(bu)驟(5)若(ruo)開(kai)關(guan)(guan)狀態發生變動(dong),或設備被模擬為(wei)故(gu)障等(deng),修改(gai)所(suo)影(ying)響設備的相關(guan)(guan)狀態即可;
當遍歷過(guo)(guo)程結(jie)束后,若(ruo)isend未(wei)(wei)返回過(guo)(guo)結(jie)束標記,則說(shuo)明未(wei)(wei)找到電(dian)源點,即待分析設備(bei)處于斷電(dian)狀(zhuang)態,故不存(cun)在其上游設備(bei);若(ruo)isend返回過(guo)(guo)結(jie)束標記,則說(shuo)明找到了電(dian)源點,visitor中的棧rs中的元(yuan)素(su)即為待分析設備(bei)的上游設備(bei)。
實施例(li)2所述電(dian)網連通性分(fen)析(xi)方法做(zuo)配電(dian)網停(ting)電(dian)模擬分(fen)析(xi)
停電(dian)(dian)模擬分析,即假(jia)設(she)電(dian)(dian)網(wang)中(zhong)的一個或(huo)多個設(she)備(bei)(bei)發生故障,分析假(jia)設(she)故障的設(she)備(bei)(bei)會導(dao)致(zhi)指(zhi)定片(pian)區(qu)中(zhong)的哪些設(she)備(bei)(bei)斷電(dian)(dian)。
由(you)于(yu)設(she)計了通用遍歷(li)器(qi),故電(dian)網模擬分(fen)析的(de)步驟和程序均可(ke)復(fu)用實(shi)施(shi)例(li)1中的(de)對應部分(fen),只需重新(xin)設(she)計實(shi)施(shi)例(li)1中步驟(3.1)用到的(de)訪問(wen)函(han)數visitor、終(zhong)止條件函(han)數isend,并設(she)待分(fen)析設(she)備為片(pian)區的(de)電(dian)源點即可(ke)。
visitor函數的(de)設(she)計在visitor中建立一個列表list,當visitor接收到通用遍歷器(qi)傳入(ru)的(de)設(she)備e時,將e加(jia)入(ru)list中;
visitor的(de)返回(hui)值為”chosebyswitchandsim”,即要求將e的(de)動態可達(da)設(she)備中開關閉合且未被模擬為故障的(de)設(she)備壓入棧s中。
isend函(han)數的設計當傳入isend函(han)數的節(jie)點e為電源點時,返回(hui)結束標記;
當遍(bian)歷過(guo)程結(jie)束(shu)或,visitor中的(de)列表list即為帶電(dian)設備,將(jiang)片區內所有設備與list中的(de)設備相減,所得(de)結(jie)果即為斷電(dian)設備,至(zhi)此停電(dian)模擬(ni)分析完(wan)成。