白紅濤 彭 苗* 牛振濤 董得志 李鎮東
(1、國家電投集團湖北分公司,湖北 武漢430063 2、國家電投集團科學技術研究院有限公司,北京102209)
分布式能源系統(Distributed Energy System,DES)是我國能源發展重點戰略之一[1]。它是近年興起的利用小型分散設備建設在靠近用戶端(需求側)提供能源的新型能源利用方式[2],能夠有效的緩解能源危機和環境問題[3]。由于其具有負荷微量化和碎片化的優勢[4],在工業園區[5]、商業樓宇[6,7,8]、交通[9]等一些特定領域一直穩健發展[10]。同時由于互聯網技術的應用領域不斷拓展,一種以“互聯網+智慧能源”為代表的綜合智慧能源由此產生。它與分布式能源站的結合,不但能夠充分滿足用戶多樣化用能需求,實現用能互補,而且達到更高效用能的目的。要建立一種分布式能源站綜合智慧能源系統,負荷預測起著至關重要的作用。
對于負荷預測的研究不計其數。研究的方法通常有:支持向量機[11]、重構最小二乘支持向量機[12]、K-Means 聚類算法和改進增量型極限學習機(II-ELM)相結合[13]、貝葉斯網絡[14]等;研究的特征變量通常有:每天的最高溫度,最低溫度、平均溫度、相對濕度和降水量、歷史負荷數據、休息日與工作日、氣象因素、日期類型、實時電價、經濟與政策因素等。
本文結合湖北省某分布式能源站的實際情況,提出了一種以歷史的負荷數據和影響負荷的溫度、濕度、日期類型、季節類型等因素作為輸入變量,運用BP 神經網絡算法對能源站未來的電、熱、冷、熱水、蒸汽、光伏負荷進行智能預測的方法。
本文研究對象為湖北省某分布式能源站。該系統由燃氣內燃機2 臺、煙氣熱水型溴化鋰2 臺、電制冷4 臺、燃氣真空鍋爐3 臺、燃氣蒸汽鍋爐2 臺、156kwp 屋頂光伏構成。
該分布式能源站以“天然氣+光伏發電”分布式能源系統為核心,提供電、冷、熱及生活熱水。典型的工藝過程是天然氣進入燃氣發電機組發電,經發電機主控柜與市電并網(光伏發電直接在0.4kV 低壓并網),運行時應優先使用自發電匹配負荷,若不足以市電補充;在發電過程中產生的余熱(形式為煙氣等)回收進入余熱型溴化鋰機組,成為空調供應的動力源。運行時應優先使用余熱供應空調,不能滿足的空調負荷采用“電制冷機+燃氣鍋爐”補充供應。
本分布式能源站系統運行時應根據能源價格、負荷變化等確定余熱機組、調峰設備和水泵、冷卻塔等主輔設備的啟停及運行工況,以實現最大限度的節能和經濟運行。由于能源價格是已知的,因此,準確的負荷預測對生產計劃的制定起著至關重要的作用。本文提出了運用BP 神經網絡方法以歷史的負荷數據和影響負荷的溫度、濕度、日期類型、季節類型等因素作為輸入變量的預測模型,對能源站未來的電、熱、冷、熱水、蒸汽、光伏負荷進行智能預測。
氣象因素是本算法的特征變量,同時氣象尤其是天氣預報數據常見于互聯網,于是利用互聯網爬蟲技術獲取氣象數據成為主要手段。網絡爬蟲是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。當前,由于Python 語言能夠高效的完成爬蟲程序[16]。所以Python 爬蟲技術變得越來越普遍。Python是一種編程語言,于1989 年底由Guido van Rossum 發明[15],1991 年公開發行第一個版本。
本文使用Python 爬蟲的方式向內嵌式計算機提供命令,實現網絡爬取數據的快速存儲、解析與輸出功能。
2.1.1 爬蟲過程
本文以Anaconda3 為平臺編寫Python 程序。通過引用time模塊,獲取網絡爬取數據的時間以及設定程序的運行時間;引用serial 模塊,控制嵌入式計算機串口的開關以及數據的讀取、輸入和輸出;引用requests 模塊,向服務器請向服務器發送請求并從服務器返回所有資源;引用re 模塊,通過正則表達式選擇所需變量天氣類型,溫度、濕度等數據信息;引用MYSQL 模塊,將數據從內嵌式計算機讀入MySQL,實現數據的轉存,方便數據的使用;引用json 模塊,將爬取數據由字符串形式轉為字典形式,便于數據的查找與讀取。
該爬蟲程序遵守Robots 協議,Robots 協議是國際互聯網界通行的道德規范,用來告知爬蟲程序哪些頁面可以被抓取,哪些頁面不可以被抓取[17]。
2.1.2 爬蟲框架


其中,url 是所要爬取數據所在的網頁鏈接,本文主要抓取湖北省麻城市的天氣數據,則url 為湖北省麻城市天氣信息所在的網頁鏈接。Headers 是請求頭,應對很多網站采取的“反爬蟲”措施,所以利用Python 申請訪問源碼前修改請求頭,使得網絡爬蟲程序不容易被識別。encoding="utf-8",輸出中文形式,防止輸出結果出現亂碼。本文使用try, except 結構,具有容錯性,防止URL 連接不上或者網絡不通等異常情況使得程序無法正常運行,使得代碼更強健。
weather=re.search ('hour3data=.*}]];varhour3week',w.text)[0][10:-14].replace("[","").replace("]","")
運用正則表達式進行源碼數據的篩選,提取所需要的天氣數據的信息,在此正則表達式中篩選獲取的麻城天氣預報網絡源碼從hour3data 開始到varhour3week 結束的文本格式的內容保存為天氣數據。
ser.write(weather.encode("utf-8"))
將天氣信息的數據寫入嵌入式計算機。
ser.close();
如果上面的程序運行出現錯誤則關閉串口,防止程序陷入死循環。
為了數據的使用便捷,本文將網絡爬蟲得到的數據由嵌入式計算機導入MYSQL 中。具體的操作過程如下:
首先,利用Python 代碼ser=serial.Serial('/dev/ttyAMA0',9600);ser.open ()。使用嵌入式計算機的GPIO 口連接并打開串口。
其次,在MYSQL 里創建一個數據庫,并運用Python 代碼連接創建好的數據庫,具體代碼如下:
mydb =mysql.connector.connect(host=dbhost,passwd=dbpass,
database=dbname)
mycursor=mydb.cursor()
其中dbhost="localhost",即使用主機數據庫地址;dbpass 為主機數據庫密碼,dbname 為數據庫名,通過Python 模塊MYSQL中的connector.connect 方法連接到數據庫,使用cursor() 方法創建一個游標對象,將查詢結果進行保存,便于以后的使用。然后,運用正則表達式按需求篩選并逐條查找所需的數據。
最后,調用mycursor.execute()方法將篩選的數據按照一定的格數輸入MYSQL 中。則實現了數據的獲取與整理,為數據的使用做好準備。
根據湖北省某分布式能源站的運行情況,由DCS 采集數據點(如:系統時間、季節、各設備的輸出功率、冷熱媒水溫度、流量等),并利用尋優引擎計算得到用戶負荷數據。
由于采集的數據與各算法的輸入需求有所差別,在調用模型算法之前,需對數據進行預處理,具體包括數據篩選、電熱負荷計算、負荷預測數據處理。具體如下:
①數據篩選對系統采集信號出現的壞點進行過濾,消除錯誤數據對模型訓練以及負荷預測的影響,保證計算精度。
②用戶熱負荷不能直接采集,需利用流量及冷熱媒水溫度進行二次計算。
③負荷預測算法使用的是小時級的歷史數據,在數據庫中需針對預測模塊新建的點表,利用引擎按1 小時為周期的采集負荷的歷史數據并計算均值,寫入新點表。
④歷史數據按照時間序列存儲。
從歷史庫中采集預處理后負荷歷史數據(時間跨度至少為100 天),結合其對應的日期類型、季節類型、氣象數據用以訓練預測模型。利用訓練完成的預測模型,結合天氣預報的數據計算未來各時間點的電、熱、冷、熱水、蒸汽和光伏負荷。
本文選取的負荷預測的核心方法是BP(Back Propagation)神經網絡算法。本文首先對湖北省某分布式能源站的天氣類型、日期類型、季節類型等進行量化處理,然后對天氣類型、日期類型、最高溫度、最低溫度、平均溫度、最高濕度、最低濕度、平均濕度和歷史負荷值進行歸一化處理,再運用BP 神經網絡對電、熱、冷、熱水、蒸汽、光伏負荷進行預測。最后計算負荷預測的精度,檢驗預測結果的優劣。
BP(Back Propagation)神經網絡是由輸入層、輸出層和隱含層構成的一種多層前饋神經網絡,學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成[18]。
信號的正向傳播過程主要為:輸入樣本數據從輸入層傳入,由各隱含層內部的處理函數逐層處理之后,再由隱含層傳向輸出層。如果輸出層的輸出結果與預期的輸出結果相差較大,則轉向誤差反向傳播過程。誤差的反向傳播過程為:將輸出結果的誤差以一定的形式由隱含層向輸入層反向傳播,并將輸出結果的誤差分給各層單元,從而獲得各層單元的誤差信號,此誤差信號就是修正的各單元的權值。BP 神經網絡不斷訓練學習,由梯度下降法運用調節學習速率不斷調整各單元的權值和閾值[19]。直到網絡輸出結果誤差減小到可以接受的范圍,或進行到預先規定的學習次數為止,得到最終各單元的權值矩陣。
本文采用的BP 神經網絡的調節學習速率公式如下:

式中η(k)表示第k 步的學習速率,E(k)表示第k 步的誤差。學習速率能夠調節權值和閾值的大小。也就是首先驗證訓練出的結果誤差是否比前一次誤差小,如果訓練后的誤差比前一次誤差小,則加大學習速率可以更快到達誤差極小值點;如果訓練后的誤差比前一次誤差大,說明經修正后誤差跳過了誤差極小值點,那么就需要降低學習速率。
對應的BP 神經網絡的算法流程圖1 所示。
本文對湖北省某分布式能源站的電、熱、冷、熱水、蒸汽和光伏負荷進行預測。首先,對湖北省某市的天氣類型、日期類型、季節類型等進行量化處理,然后,對天氣類型、日期類型、最高溫度、最低溫度、平均溫度、最高濕度、最低濕度、平均濕度和歷史負荷值進行歸一化處理,去除量綱的影響。最后,計算未來各時刻的負荷值和負荷預測的精度,評估負荷預測效果。

圖1 BP 神經網絡的算法流程圖

圖2 BP 網絡負荷預測模型
負荷預測的過程主要分為兩個基本過程,負荷離線學習過程和負荷在線預測過程。負荷離線學習過程主要是運用BP 神經網絡方法對歸一化后的歷史負荷值和影響負荷的因素:天氣類型、日期類型、最高溫度、最低溫度、平均溫度、最高濕度、最低濕度、平均濕度和歷史負荷值進行訓練學習,得到模型的權值矩陣;然后轉到模型的滾動預測過程,將離線學習過程得到的負荷矩陣作為在線學習的BP 神經網絡的初始權重,根據最近兩天的負荷值和影響負荷的變量運用BP 神經網絡模型提前24小時對系統電、熱、冷、熱水、蒸汽以及光伏發電的負荷做預測。再利用新采集的數據再對模型進行滾動學習,優化模型,提高負荷預測的精度,使得負荷預測的預測誤差控制在10%以內,為能源供應量提供條件并實現負荷智能預測的目的。
本文運用的BP 神經網絡進行負荷預測的拓撲圖如圖2 所示。
以湖北省某分布式能源站的夏季負荷為例,運用BP 神經網絡進行負荷預測得到的電,熱、冷、熱水、蒸汽、光伏負荷的實際值和估計值的折線圖結果為(圖3-8):

圖3 夏季電負荷實際值和預測值
設負荷的實際值是yi,負荷預測的預測值為,其中i=1,2,…n。則負荷預測每個點誤差的計算公式:

負荷預測誤差的計算公式為:

以夏季為例,計算得到:
電負荷預測誤差百分值為4.57%;冷負荷預測誤差百分值為1.62%;熱負荷預測誤差百分值為2.28%;熱水負荷預測誤差百分值為6.86%;蒸汽負荷預測誤差百分值為5.91%;光伏負荷預測誤差百分值為2.46%。
本文通過爬蟲的方式采集天氣變量的數據,降低了負荷預測的成本。將網絡采集的數據保存到嵌入式計算機中,使數據通過串口通訊實現由外網向內網傳輸,確保數據的安全性。又由于嵌入式計算機的便攜可移動性,方便數據的使用;同時價格便宜,降低了存儲成本。

圖4 夏季冷負荷實際值和預測值圖

圖5 夏季熱負荷實際值和預測值圖

圖6 夏季熱水負荷實際值和預測值圖

圖7 夏季蒸汽負荷實際值和預測值圖

圖8 夏季光伏負荷實際值和預測值圖
通過運用BP 神經網絡算法對湖北省某市分布式能源站的負荷進行預測,經多次實驗數據分析驗證,得到湖北省某市分布式能源站的電、冷、熱、熱水、蒸汽和光伏負荷的負荷預測誤差均在10%以下。由此可知,運用BP 神經網絡對負荷進行預測得到負荷預測的精度較高且模型復雜度低,對湖北省某分布式能源站的用能需求規劃與系統優化調度具有重要的意義。