高 鷺,趙連甲,孔繁苗
(內(nèi)蒙古科技大學(xué) 信息工程學(xué)院,內(nèi)蒙古 包頭014000)
近幾年,風電預(yù)測技術(shù)取得了長足的發(fā)展,無論是預(yù)測精度還是預(yù)測時間都得到了很大的提高,能夠精準地預(yù)測到風功率的具體數(shù)值,對于電力部門的調(diào)度和規(guī)劃都能起到很好的指導(dǎo)作用,減少不必要的資源浪費[1-3],避免大量的棄風現(xiàn)象。其中風電預(yù)測根據(jù)時間尺度來分,常見的是長期預(yù)測,短期預(yù)測和超短期預(yù)測。長期預(yù)測能夠有利于調(diào)度,短期和超短期預(yù)測能夠用來控制。近兩年的論文中對于短期預(yù)測研究的比較多,長期和超短期預(yù)測研究的論文相對來說要少一些。為了增加對超短期風功率預(yù)測的研究,文章用內(nèi)蒙古的實際數(shù)據(jù)作為數(shù)據(jù)集,因為人工智能技術(shù)的高速發(fā)展和計算能力的大幅提高,神經(jīng)網(wǎng)絡(luò)方法在預(yù)測精度和預(yù)測時間上都能夠有很好的表現(xiàn),所以決定采用神經(jīng)網(wǎng)絡(luò)的建模方法進行超短期功率預(yù)測。
循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)[4]對于時間前后相關(guān)性強的數(shù)據(jù)有很強的處理能力,LSTM和GRU都能夠很好地預(yù)測風功率數(shù)據(jù),朱喬木[5]等人提出了一種基于LSTM網(wǎng)絡(luò)的超短期發(fā)電功率預(yù)測方法。該方法第一次嘗試使用距離分析法挑選出特征里面對風電功率影響程度最大的,從而能夠減少輸入神經(jīng)網(wǎng)絡(luò)的特征數(shù)量,進而減少數(shù)據(jù)輸入的數(shù)量。牛哲文[6]等人使用CNN結(jié)合GRU神經(jīng)網(wǎng)絡(luò)進行數(shù)據(jù)降維和特征提取操作,因為風功率數(shù)據(jù)波動性和不確定性太強,所以嘗試解決這個問題。韓朋[7]等人用了注意力模型篩選相關(guān)性系數(shù)最高的兩個特征作為模型輸入,再利用LSTM進行風功率預(yù)測。以上幾篇論文都利用深度學(xué)習模型取得了良好的預(yù)測效果,證明了神經(jīng)網(wǎng)絡(luò)方法的有效性。
本文采用的數(shù)據(jù)集是內(nèi)蒙古某風場機組一年的實際測量風電數(shù)據(jù),數(shù)據(jù)特征有風向、風速、功率、溫度、實測槳距角、氣壓等,部分數(shù)據(jù)情況如表1所示。

表1 部分數(shù)據(jù)特征
實驗數(shù)據(jù)集為2014年一年的數(shù)據(jù),從一月一號開始,每十分鐘一個數(shù)據(jù)點,本實驗用的數(shù)據(jù)是歷史的風功率數(shù)據(jù),利用之前的數(shù)據(jù)進行學(xué)習來預(yù)測后面的數(shù)據(jù),數(shù)據(jù)采集有的存在缺失值,采用均值插補法對缺失值進行填充。求得數(shù)據(jù)的平均值進行填充補全數(shù)據(jù)。
循環(huán)神經(jīng)網(wǎng)絡(luò)RNN開始在手寫識別、語音識別等領(lǐng)域取得了很好的實驗成果,后來學(xué)者們將它應(yīng)用在時間序列的預(yù)測上,發(fā)現(xiàn)在時間序列數(shù)據(jù)上也表現(xiàn)非俗。再之后成功地應(yīng)用到了風功率預(yù)測上,雖然RNN能夠處理時間序列數(shù)據(jù),但是如果網(wǎng)絡(luò)層數(shù)夠深可能會發(fā)生梯度消失和梯度爆炸,GRU和LSTM模型能夠避免RNN梯度消失和梯度爆炸[8-9]的問題,并且循環(huán)神經(jīng)網(wǎng)絡(luò)能夠很好地注意到數(shù)據(jù)前后的相關(guān)性,門控循環(huán)單元的設(shè)置能夠記住前面的數(shù)據(jù),并且能夠選擇性遺忘數(shù)據(jù),從而使得預(yù)測更準確和更快速,適用于超短期風功率預(yù)測。GRU模型結(jié)構(gòu)如圖1所示。

圖1 GRU結(jié)構(gòu)圖
本次實驗樣本為內(nèi)蒙古風電場一年的數(shù)據(jù),取其中5000條數(shù)據(jù)來做本次實驗,以4:1的比例劃分訓(xùn)練測試集。為了去除變量之間量綱的差異所帶來的影響。在補全數(shù)據(jù)的缺失值之后對于數(shù)據(jù)做了歸一化操作,將數(shù)據(jù)歸一到0和1之間,轉(zhuǎn)換函數(shù)為:

其中Xmin和Xmax分別為風功率數(shù)據(jù)的最小值和最大值。在本實驗中所用編程語言為Python,使用Keras和TensorFlow完成實驗部分,所用模型參數(shù)設(shè)置為:
BP神經(jīng)網(wǎng)絡(luò):三層的網(wǎng)絡(luò)結(jié)構(gòu),神經(jīng)元數(shù)量分別為80.100.80,激活函數(shù)用的是Sigmoid和Relu,優(yōu)化器是Adam。epochs=200,batch_size=20。
LSTM:兩層,神經(jīng)元都為300,激活函數(shù)用的是Relu,優(yōu)化器是Adam,Dropout取值為0.3。epochs=100,batch_size=32。GRU模型參數(shù)設(shè)置同LSTM。
RNN:兩層,神經(jīng)元都為200,激活函數(shù)用的是Sigmoid,優(yōu)化器是Adam,Dropout取值為0.3。epochs=100,batch_size=64。
橫坐標為測試集的1000個數(shù)據(jù)點,橫坐標為數(shù)據(jù)歸一化之后的值,四個模型預(yù)測結(jié)果匯總?cè)鐖D2所示。
由圖2我們可以看出,以上神經(jīng)網(wǎng)絡(luò)對于數(shù)據(jù)的預(yù)測效果都很不錯,無論是對于波動強烈和平穩(wěn)的數(shù)據(jù)都能有很好的預(yù)測效果。為了評價各個模型的擬合程度,我們選取了用標準均方根誤差(RMSE)和平均絕對誤差(MAE)來評價各個模型對于本實驗數(shù)據(jù)的效果。數(shù)值越小實驗效果越好,具體公式如下所示:

圖2 模型預(yù)測結(jié)果匯總

其中yi是預(yù)測值,另一個是測試值,n是數(shù)據(jù)的個數(shù),i表示從1開始。四個神經(jīng)網(wǎng)絡(luò)在內(nèi)蒙古風場預(yù)測的誤差如表2所示。
從表2分析得出:以上算法誤差都在10%以內(nèi),預(yù)測精度都達到了超短期風功率預(yù)測對于精準度的要求,GRU在本實驗數(shù)據(jù)的表現(xiàn)最優(yōu),但是各個神經(jīng)網(wǎng)絡(luò)的誤差相差不大。這與實驗匯總圖的圖像總體走向基本一致。

表2 實驗誤差
本文使用了四個神經(jīng)網(wǎng)絡(luò)來預(yù)測風功率的實際數(shù)值,經(jīng)過前期的大量調(diào)參工作,對于數(shù)據(jù)進行預(yù)處理,包括缺失值填充和數(shù)據(jù)歸一化,取得了良好的預(yù)測效果。從結(jié)果來看,本實驗選取的模型預(yù)測精度都在92%以上。基本能與真實數(shù)據(jù)相擬合,尤其是在數(shù)據(jù)有波動的情況下,對于一段時間內(nèi)數(shù)據(jù)波動不大的情況擬合效果有待提高,后續(xù)工作會對這類數(shù)據(jù)進行分析,保證以上幾種模型在各種情況的數(shù)據(jù)中都能取得很好的效果。