崔 響,房俊龍,曲 樂
(1.東北農業大學 電氣與信息學院,哈爾濱 150031;2.國網黑龍江省電力有限公司哈爾濱供電公司,哈爾濱,150090)
在目前現代化生產中,人類所利用的主要能源是煤、石油、天然氣等不可再生能源。但長期使用這些能源不僅會造成能源枯竭,同時,這些能源在燃燒時釋放的氣體,也是全球環境變暖、溫室效應加重的主要誘因[1]。近年來,人們逐漸認識到,解決能源問題的最終方案是采用可再生能源取代傳統不可再生能源[2]。而光伏發電以其具有無污染,安全可靠等優點成為世界各國關注的目標。并且光伏發電具有極低的碳排放量,尤其是在低碳經濟發展的當下,光伏發電成為最具有潛力的電力能源之一[3-4]。
目前對光伏發電的預測有兩種分類:一是建立太陽輻照-光伏出力的物理模型,借此對光伏發電出力進行預測[5-8],這種方法可以在沒有任何歷史數據的情況下直接對光伏發電功率進行預測,但需要大量的光伏電站信息,以及諸多光電轉換參數來建立更加精確的物理模型,最后結合光電轉換效率等信息得到預測值;二是基于大數據應用智能算法進行預測[9-12],這種方法無需光伏電站以及光電轉化的信息,只需要對歷史的輸出功率、天氣、輻照等數據進行統計和整理,使用這些數據對算法模型進行訓練來建立輸入-輸出的非線性關系,對待測日的功率進行擬合,最終得到所需的輸出功率。
目前,通過大數據應用智能算法進行預測的研究越來越多,該文所討論的是采用粒子群優化的BP神經網絡算法(下稱PSO-BP算法)對光伏出力的預測。
光伏發電是指利用半導體界面的光生伏特效應將光能轉化為電能的一種技術。當光子照射到金屬上時,它的能量可以被金屬中某個電子全部吸收。如果電子因此獲得的能量足夠大就能從金屬表面逸散出來,成為光電子。硅原子中有4個外層電子,如果在其中摻入了具有5個外層電子的原子(如磷原子),就成為N型半導體;若摻入了具有3個外層電子的原子(如硼原子),則形成P型半導體。P型與N型結合在一起時,表面會形成電勢差,成為光伏電池。當太陽光照射到P-N結之后,電子由N極區向P極區移動,形成了電流。
光伏發電的影響因素有很多,文獻[13]給出了單位面積光伏陣列的輸出功率表達式:
Ps=ηSI[100.005(t0+25)]
式中:η為光電轉化效率;S為光伏陣列面積;I為輻射強度;t0為大氣溫度。
對于同一光伏電站,光電轉化效率和光伏陣列面積是固定不變的,所以輻射強度與大氣溫度是實際影響光伏發電輸出功率的主要因素。太陽輻射強度就是指太陽在垂直照射的情況下在單位時間內,1 cm2的面積上所得到的輻射能量。在光電轉化效率一定的情況下,與光伏發電輸出功率呈正相關。在大氣溫度單獨作用下,與光伏發電輸出功率呈負相關關系。大量實驗統計表明,溫度上升1 ℃,晶體硅太陽電池的最大輸出功率下降0.04%,開路電壓下降0.04%,短路電流上升0.04%。
在實際的光伏發電系統中,光伏發電的輸出功率是輻射強度與大氣溫度共同作用的結果。這兩個因素可作為判斷相似日的主要參數。同時,還有其他的一些因素也會影響光伏發電的功率,如風力、光伏陣列的安裝角度等。
如引言所述,隨著對光伏發電功率預測的研究,越來越多的學者開始或已經使用人工智能算法對光伏發電功率進行預測。常見的算法,諸如BP神經網絡、粒子群算法、灰度算法、支持向量機等都已有人將其應用于該領域并取得了較為出色的成果[14]。
粒子群算法(PSO算法)本身就是一種收斂速度快、全局搜索能力強、魯棒性強的算法。使用PSO算法對BP神經網絡進行優化可以有效解決BP神經網絡的缺點,改進算法精度以及收斂時間。PSO算法目前已經廣泛應用于包括風電在內的諸多領域之中,但在光伏發電功率的預測方面卻鮮有研究。
在PSO-BP算法中,依舊采用BP神經網絡的結構,即輸入層-隱含層-輸出層的結構方式,但不使用梯度下降的方式進行訓練,而是將隱含層中各個權值/閾值作為PSO算法的粒子,神經元個數作為PSO算法的種群數。在算法進行訓練學習時,首先將隨機生成的粒子初始值賦予BP網絡中對應神經元的閾值與權值并得到訓練結果,計算與期望值之間的誤差E。自然,由于粒子初始值為隨機值,會產生極大誤差。隨后將該組權值/閾值作為粒子,使用PSO算法對粒子的位置和速度進行迭代,表達式如下:
V1=W·V0+c1·rand·(pBest-X0)+
c2·rand·(gBest-X0)
X1=X0+V1
式中:V1是待更新的速度;V0是當前速度;W是慣性權重;c1、c2是學習因數;pBest與gBest分別為個體最優與群體最優值;X1為待更新位置;X0為當前位置;rand為隨機數,區間為(-1,1)。
BSO-BP算法流程框圖如圖1所示。

圖1 PSO-BP流程框圖
PSO算法進行迭代尋優之后,將迭代所得到的粒子值再次賦予BP網絡中對應神經元的閾值與權值并進行訓練得到訓練一次之后的結果,再次計算誤差E。如此反復直至誤差E縮小到設定誤差為止。
應用PSO-BP算法對光伏發電功率進行預測,需要有歷史數據作為支持來挑選相似日作為基準。選擇單日最高溫度、單日最低溫度、單日太陽輻射強度,作為挑選相似日的參考量。通過計算歷史數據與待測日的歐氏距離來確定相似日,歐式距離為
式中:tmax、tmin是歷史數據中各單日最高、最低溫度;t0max、t0min是待測日的最高、最低溫度;Q是歷史數據中各單日輻射強度;Q0是待測日輻射強度。
基于上述方式,可以挑選出與待測日的天氣環境相似的數個單日,作為相似日,并獲得該日8-17時每小時節點的對應輸出功率。將這10個功率與當天的最高、最低溫度、輻射強度作為一組數據,反復此過程,即可獲得數組數據。對數據進行隨機分組并代入算法中進行訓練,即可得出最終用于預測的模型。
由于輸入數據的量級以及單位各有不同,直接將原始數據輸入網絡會使得微小的數據變動引起較大的結果變化,對結果有較大的影響。為了避免這類誤差的產生,應對所有數據進行歸一化處理。歸一化后所有數據會被歸為[-1,1]區間,表達式如下:
式中:y為歸一化的結果;x為原始數據;xmax和xmin分別為該組數據中的最大值與最小值;ymax和ymin分別為歸一化的上下限。
選用待測日的輻射強度、最高溫度、最低溫度,以及基準日8-17時的光伏發電功率數據,共13個數據作為輸入,即輸入節點為13個。輸出節點數為待測日8-17時的光伏發電功率,即10個。
神經元個數確定方式目前尚無統一定論。較為主流的觀點是使用Kolmogorov定理大致確定神經元個數,之后通過try-error-try,即反復嘗試的方法確定最優神經元個數。
Kolmogorov定理公式如下:
或
n1=log2(n2)
式中:n2為理想中的神經元個數;n1為輸入層節點個數;m為輸出層節點個數;a為[1,10]區間內的任意數。
通過上述方式,確定神經元個數為15個。
如2.2節所述方法,在該季度的歷史數據庫中挑選與待測日歐氏距離最小的10個值所對應的日期作為相似日。在兩兩隨機分組后,使用Matlab工具箱的指令,建立5組13-15-10的BP神經網絡并應用2.1節中的PSO算法進行迭代尋優,將最終群體最優值回代入網絡,以此實現對網絡權值/閾值的訓練。分別得到5組網絡預測結果之后,計算每組的相對誤差,取誤差最小的模型作為最終算法模型。
采用美國俄勒岡大學光伏站的公開數據[15],根據第3節的內容建立預測模型,采用ASHLAND 2016年4月光伏數據作為數據樣本,使用Matlab進行仿真。在進行誤差對比之后選擇第二組神經網絡作為最終預測模型,并應用該模型對4月16日的光伏發電功率進行預測,其預測的結果如圖2所示。

圖2 PSO-BP算法的預測曲線
由圖2可以得出,該算法整體擬合程度較好。在上午和下午的3個時點的擬合精度較高,而在中午和日落前擬合精度略差。
誤差修正曲線如圖3所示。可以看出,在100次之前誤差下降率非常高,說明該算法可以迅速獲得擬合區間;在300次迭代之后,誤差已經趨于穩定。

圖3 誤差修正曲線
誤差分析圖如圖4所示。可以得出,總體相對誤差約為4.4%。而BP神經網絡的預測精度在8%~10%之間。由此可見,使用PSO-BP算法進行預測可以大幅提高整體預測精度。分析后發現,誤差較大的主要時間為日落時,分析認為在日落時存在太陽斜射電池板、云層遮擋、大氣折射等因素導致整體出力波動較大。并且,在原始數據中17時的功率波動最大可達100%,這也是導致最終預測結果差距較大的主要原因。

圖4 各時段相對誤差曲線
PSO-BP算法在光伏發電的預測領域應用較少,針對該算法在光伏發電的功率預測中的關鍵問題進行了一些研究,并進行了仿真分析與驗證。但由于研究條件等的限制,尚有需進一步完善的地方:
1)采用了美國俄勒岡大學光伏電站的公開數據,但中國幅員遼闊,不同的地區條件各不相同,之后研究方向轉向對國內光伏電站研究。
2)應用PSO算法對BP神經網絡進行優化,確實增加了整體預測精度,但對日落時的預測波動仍較大。今后研究應著重于提高對日落前功率預測的精度,以期進一步提高整體精度以及穩定性。