原 野,田 園
(云南電網(wǎng)有限責(zé)任公司信息中心,云南 昆明 650217)
近年來,隨著傳感器、智能電表、智能變電站等的普及,數(shù)據(jù)采集與監(jiān)視控制(supervisory control and data acquisition,SCADA)系統(tǒng)布局的完善,電力工業(yè)的信息化進(jìn)程加速[1]。中國電力企業(yè)的信息化建設(shè)始于20世紀(jì)60年代,最開始是推行電力生產(chǎn)的自動化,接下來是倡導(dǎo)財務(wù)的電算化,近年來則是大力推進(jìn)規(guī)模化的信息化建設(shè)。特別是隨著下一代智能變電站的全面鋪開,以物聯(lián)網(wǎng)大數(shù)據(jù)為核心的信息技術(shù)得到了電力公司的青睞,以能源互聯(lián)網(wǎng)為總體框架的電力大數(shù)據(jù)研究開始急劇增長,并形成了一定的規(guī)模。電力大數(shù)據(jù)是中國能源行業(yè)變革的關(guān)鍵。這不僅是技術(shù)層面的發(fā)展,而且是中國電力工業(yè)在信息化背景下發(fā)展理念、技術(shù)架構(gòu)、管理制度等各方面的重大變革。電力大數(shù)據(jù)是中國電力工業(yè)實現(xiàn)核心價值觀塑造以及集約式增長的核心[2]。十二五時期,國家電網(wǎng)在發(fā)展部署時指出,全面實施人物財力的集約化使用,推進(jìn)大建設(shè)、大檢修、大運行、大營銷以及大規(guī)劃(簡稱“三集五大”),從而實現(xiàn)國家電力發(fā)展的集約式增長。其中:五大體系與電力行業(yè)的配、輸、傳等環(huán)節(jié)全面呼應(yīng),電力大數(shù)據(jù)的高效利用將在電力行業(yè)各環(huán)節(jié)得到全面體現(xiàn)[3]。
目前,按照應(yīng)用方法,用戶負(fù)荷聚類可分為直接聚類與間接聚類兩大類。直接聚類在用戶日負(fù)荷曲線的基礎(chǔ)上直接聚類,計算復(fù)雜,涉及到的數(shù)據(jù)維度較高[3]。間接聚類則是指對用戶日負(fù)荷曲線進(jìn)行預(yù)處理后再進(jìn)行聚類分析,按照處理技術(shù)可以分為基于時間序列和基于降維技術(shù)兩種形式。用戶負(fù)荷聚類研究如圖1所示。
圖1 用戶負(fù)荷聚類研究示意圖
由于用戶用電數(shù)據(jù)隨時間的變化性較大,與時間成正向關(guān)系,呈現(xiàn)海量趨勢;另外,由于用戶的分散性,導(dǎo)致測量終端具有極強的分散性趨勢,因而用戶負(fù)荷聚類需要對大數(shù)據(jù)問題進(jìn)行處理[4]。目前,常用的方法是利用人工智能算法,先對不同區(qū)域的用戶用電數(shù)據(jù)進(jìn)行局部聚類分析;接著利用傳統(tǒng)聚類算法構(gòu)建局部模型對其進(jìn)行二次聚類,從而得到全局聚類模型;最后,將全局聚類結(jié)果反饋到局部數(shù)據(jù)中心,實現(xiàn)全局聚類最優(yōu)分析。對用戶負(fù)荷聚類的研究具有多方面的積極作用:可以對負(fù)荷構(gòu)成進(jìn)行系統(tǒng)分析,從而對用戶的用電習(xí)慣進(jìn)行調(diào)節(jié),實現(xiàn)集約用電;還可以對負(fù)荷變化趨勢進(jìn)行分析,從而為管理人員提供決策支持,實現(xiàn)電能的高效利用[5]。
變電站負(fù)荷聚類按照其狀態(tài)屬性,可以分為負(fù)荷靜態(tài)特性聚類與負(fù)荷動態(tài)特性聚類兩大類。靜態(tài)負(fù)荷特性聚類主要用于理論分析,實際應(yīng)用較少;動態(tài)負(fù)荷特性聚類則主要用于負(fù)荷建模,實際分析較多[6]。負(fù)荷靜態(tài)特性聚類主要應(yīng)用人工智能算法進(jìn)行負(fù)荷分類,對負(fù)荷影響因素及其關(guān)聯(lián)進(jìn)行分析。而動態(tài)負(fù)荷特性聚類的關(guān)鍵在于特征向量的選取。特征向量按照其特征,可以分為運行特征向量、動態(tài)特征向量、時間特征向量與參數(shù)特征向量。運行特征向量主要包括負(fù)荷功率、靜態(tài)負(fù)荷與感應(yīng)電動機的比值等指標(biāo)。動態(tài)特征向量主要是指感應(yīng)電動機的特征值。時間特征向量包括年份、季度、月份、周數(shù)、天數(shù)等指標(biāo)。參數(shù)特征向量則是指負(fù)荷相應(yīng)的模型參數(shù)[7]。
變電站負(fù)荷聚類的應(yīng)用主要包括兩大領(lǐng)域,分別是負(fù)荷建模與負(fù)荷預(yù)測[8]。常規(guī)負(fù)荷建模主要應(yīng)用譜系數(shù)平均距離聚類算法,實現(xiàn)對全網(wǎng)負(fù)荷的精確分類。聚類算法的非線性映射能力較強,可實現(xiàn)大樣本數(shù)據(jù)中相似樣本的提取,因此可以通過負(fù)荷聚類實現(xiàn)氣候、季節(jié)、配電環(huán)境、裝置參數(shù)等各因素對負(fù)荷變化的分析,實現(xiàn)精確的負(fù)荷預(yù)測,為電能管理人員提供方法支持。
Hadoop是一種分布式架構(gòu)集成開發(fā)平臺,能夠?qū)Υ髷?shù)據(jù)進(jìn)行高效、精確處理,應(yīng)用領(lǐng)域非常廣泛[9]。Hadoop的主要構(gòu)成包括Hbase、Hadoop分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)、MapReduce、Hadoop內(nèi)核、Zookeeper。其中,最為關(guān)鍵的部分是MapReduce以及HDFS。Hadoop的總控制中心位于Hadoop內(nèi)核。MapReduce為平臺的分布式編程框架,主要功能是對大數(shù)據(jù)進(jìn)行處理與挖掘工作。作為Hadoop的協(xié)調(diào)系統(tǒng),Zookeeper可以實現(xiàn)復(fù)雜服務(wù)的封裝。作為Hadoop存儲結(jié)構(gòu)的Hbase,利用分布式數(shù)據(jù)庫,能夠?qū)崿F(xiàn)大數(shù)據(jù)的存儲。Hadoop平臺結(jié)構(gòu)如圖2所示。
圖2 Hadoop平臺結(jié)構(gòu)圖
Hadoop數(shù)據(jù)處理需要解決的最重要問題是大規(guī)模數(shù)據(jù)的存儲,僅靠集中式的物理服務(wù)器難以滿足現(xiàn)實企業(yè)與電力部門的需求[10]。因此,要實現(xiàn)系統(tǒng)大規(guī)模數(shù)據(jù)的管理,需要建立大量的分布式服務(wù)節(jié)點。Hadoop設(shè)計了分布式文件系統(tǒng)HDFS,以實現(xiàn)對節(jié)點的控制和管理。分布式文件系統(tǒng)作為Hadoop的重要組成部分,各集群由多DateNode節(jié)點以及單NameNode節(jié)點構(gòu)成,是一種主從結(jié)構(gòu)。其中:NameNode為控制中心,對整個文件系統(tǒng)進(jìn)行管理;DateNode作為數(shù)據(jù)處理模塊,主要對數(shù)據(jù)存儲與輸出負(fù)責(zé),以其強大的容錯性以及開源性而受到廣大企事業(yè)單位的青睞。為了適應(yīng)分布式存儲,HDFS具有較強容錯能力、數(shù)據(jù)塊式的存儲模式、并行式的訪問模式、順序式的文件訪問、大規(guī)模數(shù)據(jù)存儲能力等特點[11]。較強的容錯能力則要求HDFS具有自檢測硬件故障的功能,使數(shù)據(jù)在故障發(fā)生后能夠得到快速的恢復(fù),不存在數(shù)據(jù)丟失,從而保證平臺的穩(wěn)定運行。為了對大規(guī)模數(shù)據(jù)進(jìn)行處理,要求該系統(tǒng)具有分布式儲存能力,能夠?qū)Χ鄶?shù)據(jù)節(jié)點進(jìn)行有效管理,使其存儲容量隨著數(shù)據(jù)量的增加而不斷提升,最終成為一個大型的分部式數(shù)據(jù)處理文件系統(tǒng)。數(shù)據(jù)塊式的存儲模式對HDFS數(shù)據(jù)塊的大小進(jìn)行了嚴(yán)格要求,將每個數(shù)據(jù)塊的默認(rèn)容量設(shè)定為64 GB,使得數(shù)據(jù)塊的個數(shù)最小。此外,要求該系統(tǒng)能夠?qū)?jié)點進(jìn)行隨機選擇,實現(xiàn)數(shù)據(jù)的不同節(jié)點存儲[12]。并行訪問模式則要求HDFS對多節(jié)點訪問模式進(jìn)行詳細(xì)設(shè)計,實現(xiàn)同一時間點數(shù)據(jù)在多節(jié)點上的并發(fā)訪問。HDFS基本組成結(jié)構(gòu)如圖3所示。
圖3 HDFS基本組成結(jié)構(gòu)圖
由圖3可知,分布式文件系統(tǒng)在運行時會涉及到多模塊的協(xié)同運作,每個模塊實現(xiàn)不同的功能。分布式文件系統(tǒng)訪問的基本過程包括目標(biāo)文件名發(fā)送、數(shù)據(jù)塊地址返回、處理結(jié)果提交這三大步驟。在目標(biāo)文件名的發(fā)送過程中,需要HDFS與NameNode的協(xié)同合作。數(shù)據(jù)塊地址的返回要求NameNode接收到文件名后,通過HDFS對數(shù)據(jù)塊的DataNode地址進(jìn)行查找,同時將這些地址反饋給客戶。而數(shù)據(jù)處理結(jié)果過程要求客戶收到DataNode地址后,就開始對數(shù)據(jù)進(jìn)行處理,然后將處理結(jié)果提交至NameNode。
MapReduce是針對大數(shù)據(jù)的分布式編程模型,其計算過程主要分為Map處理、Reduce處理以及Shuffle處理三大部分。在Map處理過程中,大規(guī)模數(shù)據(jù)會進(jìn)行排序處理,同時生成特殊格式的Key鍵值;接著在系統(tǒng)框架中對其進(jìn)行儲存,并將其發(fā)送給下一階段。在Shuffle處理過程中,系統(tǒng)自動將具有相似或者相同屬性的關(guān)鍵值進(jìn)行合并處理,即合并大鍵值對的過程。在Reduce過程中,各數(shù)據(jù)塊依據(jù)接收鍵值對數(shù)據(jù)進(jìn)行分析處理,最后將處理結(jié)果存放在分布式文件系統(tǒng)(distributed file system,DFS)中,同時將其輸出。MapReduce的并行計算模型如圖4所示。
圖4 并行計算模型圖
R語言常用于統(tǒng)計分析、制圖等過程。因此,R語言具有統(tǒng)計學(xué)的技術(shù),例如線性建模與非線性建模、基于時間序列的統(tǒng)計分析、聚類、景點統(tǒng)計學(xué)測試等。同時,R語言具有處理結(jié)果可視化的功能。由于其開源性和較強的可用性,因而其應(yīng)用領(lǐng)域較為寬泛。R語言的實質(zhì)是一個免費數(shù)據(jù)解決方案,能夠進(jìn)行全面的統(tǒng)計學(xué)習(xí)分析,幾乎包括了所有的數(shù)據(jù)分析技術(shù);同時,R語言具有可視化處理功能,能夠以圖表的形式較直觀地展示統(tǒng)計分析結(jié)果。此外,R語言可以實現(xiàn)人機交互功能,任何分析操作都具有較強的交互性;其支持處理的數(shù)據(jù)格式多樣,既包括文本文件,又包括數(shù)據(jù)倉庫、數(shù)據(jù)庫等軟件數(shù)據(jù)類型;其兼容性也較高,幾乎可在市面上所有的操作系統(tǒng)上運行。
數(shù)據(jù)挖掘的前提是數(shù)據(jù)的真實和正確。但是很多時候,采集的數(shù)據(jù)都不是完整、準(zhǔn)確的,因此需要對數(shù)據(jù)進(jìn)行預(yù)處理,包括統(tǒng)一數(shù)據(jù)形式、消除數(shù)據(jù)冗余、填補數(shù)據(jù)缺失等[13]。電力大數(shù)據(jù)的采集方式主要為終端裝置讀數(shù)采集,即從變電站、智能表、母線段上獲取數(shù)據(jù)信息,并將這些信息存儲至數(shù)據(jù)庫中。常見的電力大數(shù)據(jù)異常情況包含連續(xù)時區(qū)某用戶用電負(fù)荷缺失一個值、某用戶用電負(fù)荷缺失多個值(用戶負(fù)荷值大面積缺失以及電力數(shù)據(jù)出現(xiàn)多個孤立點等)[14]。
電力數(shù)據(jù)中出現(xiàn)數(shù)據(jù)缺失情況最常見的思路是用可能值代替缺失值。本次研究采用缺失前三天的負(fù)荷數(shù)據(jù)彌補缺失數(shù)據(jù)。從源數(shù)據(jù)庫中得到的用戶負(fù)荷數(shù)據(jù)屬性為時間以及負(fù)荷。根據(jù)智能表采集規(guī)則對數(shù)據(jù)進(jìn)行采集,采集頻率為20 min/次。若采集數(shù)據(jù)中出現(xiàn)缺失,研究中利用R語言實現(xiàn)所有用戶負(fù)荷文件的遍歷查詢,以與缺失值同時間點的前三天的數(shù)據(jù)進(jìn)行填充[15]。
聚類算法中常采用歐氏聚類作為計量標(biāo)準(zhǔn),對聚類對象臨近度進(jìn)行計算。歐氏距離在對數(shù)據(jù)集合點距離相似度進(jìn)行計算時具有較強的有效性,但是在涉及時間序列計算時則會出現(xiàn)較大的判斷誤差。例如,對于時間序列A{1,1,10,2,3,1}、B{1,1,2,10,3,1},若用歐氏距離進(jìn)行判斷會出現(xiàn)較大的不一致性。但實際上這兩個時間序列的形狀相似度極高。動態(tài)時間規(guī)整(dynamic time warping,DTW)通過對非線性時間序列距離值的計算,從而找出序列間的最短距離。DTW算法基于動態(tài)規(guī)劃理論。其通過組建一個時間序列點矩陣,以兩條時間序列點間的距離為矩陣元素,應(yīng)用動態(tài)規(guī)劃理論對最短路徑進(jìn)行判定。假設(shè)兩個時間序列,分別為T=t1,t2,...,tn、D=d1,d2,...dn。首先,構(gòu)建一個n階鄰接矩陣,鄰接矩陣中i、j間的距離就是ti與dj間的歐式距離;通過矩陣鄰接矩陣對最小距離路徑進(jìn)行累積;對時間序列間的距離w進(jìn)行比較。假設(shè)w=w1,w2,...,wk,則距離公式為:
wk=(ti-dj)2
(1)
式中:wk為ti到dj的距離。
距離的最小路徑如式(2)所示:
(2)
定義累積距離γ(i,j)從時間序列的第一個點開始,每到一個點就進(jìn)行累加,直至?xí)r間序列的最后一個點。其得到的累積距離則為兩時間序列之間的相似距離。
γ(i,j)=d(ti,dj)+min{γ(i-1,j-1),γ(i-1,j),γ(i,j-1)}
(3)
以動態(tài)轉(zhuǎn)移方程遞歸的時間序列距離進(jìn)行累加計算,最終得到最優(yōu)距離?;贒TW的層次聚類方法準(zhǔn)確性較高。但該方法在進(jìn)行執(zhí)行時需要生成鄰近矩陣,時間復(fù)雜度為0。因此,如果直接采用DTW層級聚類算法對電力大數(shù)據(jù)進(jìn)行處理,時間復(fù)雜度相對較高。這是許多平臺不能處理的。對此,提出了基于Hadoop的DTW層次聚類算法。DTW的Hadoop其實現(xiàn)如圖5所示。
圖5 DTW的Hadoop實現(xiàn)
DTW算法需要對時間序列點與點間的距離矩陣進(jìn)行構(gòu)建,大規(guī)模數(shù)據(jù)要求較高的時間復(fù)雜度,難以對速度和時間進(jìn)行保證。因此,為了解決此類問題,首先需對電力數(shù)據(jù)進(jìn)行抽樣,以實現(xiàn)聚類分析。對部分?jǐn)?shù)據(jù)的提取基于DTW層次聚類分析法,從而得到數(shù)據(jù)聚類中心點。接下來,將所有的電力負(fù)荷數(shù)據(jù)全部部署至HDFS中,通過MapReduce程序?qū)崿F(xiàn)所有負(fù)荷數(shù)據(jù)到聚類中心的DTW距離計算,同時將每個負(fù)荷數(shù)據(jù)進(jìn)行最近劃分,并以此為原則對所有數(shù)據(jù)進(jìn)行排序與分類。最后,得到基于所有電力負(fù)荷數(shù)據(jù)的聚類分析結(jié)果?;贖adoop的層次聚類分析法能夠克服大規(guī)模數(shù)據(jù)進(jìn)行聚類分析時的不足,同時,通過Hadoop集群技術(shù)可以實現(xiàn)大規(guī)模電力負(fù)荷數(shù)據(jù)計算的高效率。
此次試驗的Hadoop集群使用一臺主機和三臺阿里云服務(wù)器進(jìn)行搭建,同時使用Hadoop2.0版對生產(chǎn)環(huán)境進(jìn)行部署。接下來,對HDFS的HA進(jìn)行配置。主備NameNode的配置方法有多種。本次試驗使用JournalNode方式。利用三個節(jié)點作為JournalNode的節(jié)點。因為機器數(shù)量限制,這三個節(jié)點還用作其他服務(wù)的節(jié)點。為了防止試驗運行過程中出現(xiàn)宕機等情況,需要將主、備節(jié)點NameNode分別在不同節(jié)點上進(jìn)行部署。主、備節(jié)點切換方式可以分為手動和自動兩種。其中,自動切換需要對Zookeeper進(jìn)行部署。本次試驗主要運用手動切換模式。接下來對HDFS2.0集群進(jìn)行部署,以Active NameNode作為NameNode的節(jié)點,備份節(jié)點采用StandByNameNode,實現(xiàn)主節(jié)點出現(xiàn)宕機后的及時替換。利用Journal Node節(jié)點實現(xiàn)數(shù)據(jù)的同步。主備節(jié)點主分別在NN1與NN2上進(jìn)行部署,節(jié)點切換利用手動切換模式。
集成R和Hadoop技術(shù)主要有三種方法,分別是RHIPE、Hadoop streaming以及RHadoop。本次研究使用RHadoop技術(shù)進(jìn)行整合。RHadoop是一種開源包集合,包含rhdfs、rhbase以及rmr,主要功能是基于R語言環(huán)境進(jìn)行大數(shù)據(jù)處理。Rhdfs可以在R語言中提供HDFS的接口,從而使得其能夠通過HDFS API實現(xiàn)HDFS運行結(jié)果的迅速調(diào)用。而rmr會在R語言內(nèi)部提供HDFS的功能接口。在R語言中,將程序分為Map與Reduce兩階段,然后通過rmr包提交試驗任務(wù)。Rhbase可以通過Thrift服務(wù)器對Hadoop Hbase數(shù)據(jù)源的R語言接口進(jìn)行操作,從而實現(xiàn)數(shù)據(jù)的初始化以及讀寫等功能。RHadoop的環(huán)境配置分為兩個步驟,分別為在Linux環(huán)境下對R語言進(jìn)行安裝、安裝RHadoopde 三個開源包。在Linux環(huán)境下安裝R比較簡單,這里不再詳細(xì)解釋。接下來,主要對安裝RHadoop的三個包進(jìn)行詳細(xì)說明。安裝rmr需先安裝包digest、itertools以及RJSONIO,因為這些包之間具有相互依賴關(guān)系。因為rhdfs對rJAVA的依賴性較強,安裝rhdfs則需要安裝包rJAVA,最后安裝rhbase。安裝rhbase需要配置R CMD INSTALL ‘rhbase_1.2.1.tar.gz。完成上述R與Hadoop的包對接以后,在R語言控制臺即可對MapReduce進(jìn)行調(diào)用,實現(xiàn)對數(shù)據(jù)的分析工作。
選取X省某電網(wǎng)某地區(qū)大用戶正常工作日的日負(fù)荷曲線數(shù)據(jù),通過基于Hadoopde平臺技術(shù)和DTW層次聚類算法對其進(jìn)行聚類分析,得到了五種類型的用戶負(fù)荷數(shù)據(jù)特征。通過R語言實現(xiàn)結(jié)果的可視化。五類用戶的負(fù)荷曲線分別如圖6~圖10所示。
圖6 第一類用戶負(fù)荷曲線
圖7 第二類用戶負(fù)荷圖
圖8 第三類用戶負(fù)荷圖
圖9 第四類用戶負(fù)荷圖
圖10 第五類用戶負(fù)荷圖
由圖6可知,第一類用戶負(fù)荷曲線顯示出的平均負(fù)荷值較大,可以判斷其用戶均為大宗用戶中的大功率用戶。其主要工作時間較長,一般從凌晨持續(xù)到早上;同時,其電力負(fù)荷波動幅度較大,可以得知其用戶屬于晚上工作類型。
由圖7可知,第二類用戶負(fù)荷曲線顯示出的平均負(fù)荷值適中,可以判斷其用戶屬于大宗用戶中的中小功率用戶。一天時間內(nèi)出現(xiàn)波峰3次,分別是10~12點、15~17點、19~21點;同時,其電力負(fù)荷波動幅度一般,可以得知其用戶屬于間歇性工作類型。
由圖8可知,第三類用戶負(fù)荷曲線顯示出的平均負(fù)荷值較大,可以判斷其用戶屬于大宗用戶中的中等功率用戶。每天除了12~15點有波谷現(xiàn)象出現(xiàn)外,其余時間均保持較高功率,可知其為全天工作類型。
由圖9可知,第四類用戶負(fù)荷曲線顯示出的平均負(fù)荷值中等偏上,可以判斷其用戶屬于大宗用戶中的小功率用戶。每天除了7~12點以及15~19點有波峰現(xiàn)象出現(xiàn)外,其余時間均保持較低功率,可知其為集中性工作類型。
由圖10可知,第五類用戶負(fù)荷曲線顯示出的平均負(fù)荷值中等偏上,同樣可以判斷其用戶屬于大宗用戶中的小功率用戶。較第四類用戶不同的是,第五類用戶的波峰出現(xiàn)時間為8~18點,可知其為正常工作類型。
在對電力負(fù)荷數(shù)據(jù)特征的研究中,關(guān)鍵在于對信息技術(shù)的充分利用。本次研究在選取智能算法以及平臺技術(shù)的基礎(chǔ)上,采用基于Hadoop的DTW層次聚類方法對電力負(fù)荷數(shù)據(jù)的特征屬性進(jìn)行研究。研究中,選取X省某電網(wǎng)某地區(qū)的大宗用戶正常工作日的日負(fù)荷數(shù)據(jù)進(jìn)行試驗。試驗結(jié)果表明,該地區(qū)的大宗用戶電力負(fù)荷數(shù)據(jù)可分為長時間大功率用戶、間歇性中小功率用戶、全天候中等功率用戶、集中工作型小功率用戶以及正常工作類型的小功率用戶五大類。這五個類型的用戶用電時間均有較大的差別,一般用電時間長、負(fù)荷均值大的用戶都屬于大功率用戶,也符合基本常識;其余用電時間較短的用戶,其用電負(fù)荷曲線均值較為適中,屬于小功率用戶。根據(jù)上述的分類結(jié)果可知,DTW層次聚類算法能夠根據(jù)用戶用電的特征對用戶進(jìn)行分類,不過研究過程中的數(shù)據(jù)略微偏少,精度仍然稍有欠缺。今后研究的方向在于進(jìn)一步提高精度,增強用戶識別的準(zhǔn)確度。