李昂儒,鄭偉彥,趙京虎,楊 勇,王輝東,汪李忠,邢海青
(1.南瑞集團有限公司(國網(wǎng)電力科學(xué)研究院有限公司),江蘇 南京 211106;2.南瑞研究院西安研發(fā)中心,陜西 西安 710000;3.國網(wǎng)浙江省電力有限公司杭州供電公司,浙江 杭州 310007;4.國網(wǎng)浙江省電力有限公司,浙江 杭州 310012;5.國網(wǎng)浙江杭州市余杭區(qū)供電有限公司,浙江 杭州 311100)
地球上的化石能源正在逐漸消耗殆盡,新能源的研發(fā)利用勢在必行。其中風(fēng)能資源的優(yōu)點較多,比如范圍廣、幾乎無污染、可重復(fù)利用等,儼然已成為最有潛力的新能源之一。但自然風(fēng)的特點是隨機性和間歇性較強[1],當(dāng)大規(guī)模集中并網(wǎng)時,會對電網(wǎng)的穩(wěn)定運行帶來一定的威脅。準(zhǔn)確預(yù)測未來一段時間的風(fēng)電功率,對電力調(diào)度及安全運行具有重要意義。
風(fēng)電功率預(yù)測常采用的方法有物理法和統(tǒng)計法。其中物理法不依賴風(fēng)電場的歷史數(shù)據(jù)[2],主要基于數(shù)值天氣預(yù)報,依據(jù)風(fēng)向、空氣濕度、氣壓等作為預(yù)測模型的輸入量,通過數(shù)據(jù)對風(fēng)電場所在地進行建模分析,但在不同位置、不同時刻,環(huán)境因素有較大的差異,使得物理法實用性差,難推廣;統(tǒng)計學(xué)習(xí)方法就是利用大量的歷史風(fēng)電發(fā)電數(shù)據(jù)、風(fēng)機輪轂的風(fēng)速風(fēng)向、氣壓等數(shù)據(jù),從大量歷史數(shù)據(jù)中獲取數(shù)值天氣參數(shù)等輸入數(shù)據(jù)與風(fēng)電實際功率之間的映射規(guī)律,建立輸入與輸出關(guān)系,采用建立的關(guān)系模型再進行預(yù)測,常用的一般有人工神經(jīng)網(wǎng)絡(luò)(artificial neural network,ANN)和支持向量機(support vector machine,SVM)[3]等方法。
另外一種為相似日法[4],經(jīng)過多年逐步的研究,已將該方法應(yīng)用到風(fēng)電功率預(yù)測[5]和光伏發(fā)電預(yù)測[6]中。Ashraf將神經(jīng)網(wǎng)絡(luò)、模糊推理研究和相似日法結(jié)合起來,融合相互間的優(yōu)勢來預(yù)測一天的風(fēng)速[7];張宜陽等[8]研究者將相似日細(xì)分為“相似時段”、“基準(zhǔn)段”和“預(yù)測段”,從不同的層次預(yù)測,卻忽略了基準(zhǔn)功率與氣象特征之間的相互影響;文獻[9]先采用聚類方法選取相似日,規(guī)避掉聚類的硬劃分問題,但無監(jiān)督方法的缺點也較明顯,對原始樣本要求較高且異常值敏感,容易造成分類過多,最終精度很難保障;丁志勇[10]考慮到在某段時間內(nèi)風(fēng)速的變化規(guī)律,提出了一種基于連續(xù)時段聚類的方法,并結(jié)合SVM算法來進行風(fēng)電功率預(yù)測,但該方法難以體現(xiàn)歷史數(shù)據(jù)與預(yù)測數(shù)據(jù)之間的相互變化關(guān)系;鄭婷婷等[11]學(xué)者研究前K日功率曲線,將功率變化曲線特性考慮到模型中,但并沒有分析前后相關(guān)趨勢關(guān)系;王輝等[12]先進行相似日抽取,再采用主成分分析法降維,降低計算復(fù)雜度,但預(yù)測的精度不高且模型無法解釋。
該文提出一種基于分形理論的混合K最近鄰算法(K-nearest-neighbor,KNN)用于風(fēng)電功率預(yù)測。借鑒分形理論的思想,考慮基準(zhǔn)功率曲線問題和氣象特征值,利用分形插值可有效地獲取相鄰樣本的局部信息,再結(jié)合自定義KNN算法生成預(yù)測模型。最后基于某風(fēng)電場的歷史實測數(shù)據(jù),與現(xiàn)有的一些預(yù)測模型進行對比驗證,提出的模型預(yù)測精度有所提高,復(fù)雜度降低且性能較好。
借鑒上述兩個引理的思想,若將風(fēng)電歷史數(shù)據(jù)作為一個集合,那么就應(yīng)該存在某一迭代函數(shù)系IFS,使得風(fēng)力發(fā)電歷史數(shù)據(jù)集合在這組映射下的象趨近于發(fā)電功率歷史數(shù)據(jù)集合。
該IFS[14]滿足上述引理1和引理2。確定數(shù)據(jù)集{(xi,yi):i=0,1,…,M},其中的吸引子A是連續(xù)函數(shù)F:[x0,xM]→R的圖像,下面構(gòu)造R2上的一個IFS。
IFS{R2;ωm,m=1,2,…,M},其中ωm是式(1)的仿射變換:
(1)
其中使得bm=0是為了與小區(qū)間的函數(shù)不交叉。
每一個變換都必須滿足下面的方程(2),使得在大區(qū)間的左端點和右端點可以映射到子區(qū)間的左端點和右端點:
(2)
ωm的垂直比例因子為dm[15],可把自由變量選擇為dm。使得dm<1,這樣做使得IFS收斂。令L=xM-x0來解上面的方程組,可以得出如下方程:
(3)
IFS的第i個仿射變換可以由上式得到的參數(shù)來確定,IFS的吸引子可由IFS的各個參數(shù)求出,而穩(wěn)定的插值曲線是多次迭代的結(jié)果。兩個相鄰已知信息點之間的局部特征在傳統(tǒng)方法中很難反映出來,但分形插值方法有其獨特的優(yōu)勢,可以更好地利用樣本局部信息,使得原采樣曲線的大部分特征得到有效的補充和保留[16]。
對于一組訓(xùn)練數(shù)據(jù)集合,KNN算法在訓(xùn)練集中尋找K個最相近實例,找出這K個實例后將其作為候選類。再以之間的相似度作為權(quán)重,代入預(yù)先設(shè)置好的閾值,就基本可以確定該樣本的分類[17]。
一般情況下,某一時間的風(fēng)電功率數(shù)值可能與其時間點最近鄰的m個的風(fēng)電功率數(shù)值最為相似。用m長度的時間序列β0={αn-m+1,αn-m+2,…,αn-1,αn}來預(yù)測αn+1。先確定β0的K個最近鄰,在{α1,α2,…,αn}的已知時間序列中,以β0為基礎(chǔ)時間序列,逐步移動窗口,取(n-m)個長度為m的子序列,再找出β0的K個最近鄰,用兩向量的夾角余弦值來表示相似度,如下:
其中,βij表示向量βi的第j個分量。由此可知,余弦值越大的話,相似度就越大[18]。最后,將這K個向量最后一個分量之后的近鄰元素視為αn+1的一個最近鄰。如此就得到αn+1的K個最近鄰b1,b2,…,bk,再對K個數(shù)加權(quán)平均即可求得αn+1。
風(fēng)力發(fā)電時間序列有周期性特征,日發(fā)電曲線在時間尺度上具有自相似性,也存在非常相近的分形維[19],一段發(fā)電時間序列也同樣具有相關(guān)性??梢詫v史數(shù)據(jù)和發(fā)電曲線擬合成一個相似的周期,借鑒分形插值法可以很好地利用相鄰已知點的局部信息的特點[16],使算法快速地收斂于真實值。傳統(tǒng)KNN算法中每次需要對歷史樣本集進行搜索以獲取n個相似歷史樣本集[20],當(dāng)設(shè)定的K值增大時,搜索次數(shù)不斷增加,搜索的重復(fù)樣本不斷出現(xiàn),不僅消耗額外的存儲空間,還會大大降低系統(tǒng)的運行速度。
為彌補傳統(tǒng)算法的一些缺點,該文設(shè)計了基于分形理論的混合自定義KNN算法。該算法基于分形理論中的自相似性的分形維,再結(jié)合KNN算法的相關(guān)理論,對搜索相似歷史樣本集的方式進行改進,既減少了消耗的內(nèi)存空間,又降低了算法的時間復(fù)雜度。
預(yù)測模型的主要流程如下:
(1)將預(yù)測日設(shè)為起點,用于分割分形維數(shù)據(jù),其中一部分用于訓(xùn)練,一部分用于驗證。
(2)將橫軸作為分形維點集合的時間坐標(biāo),然后分析基準(zhǔn)日的功率曲線特征,找出曲線的主要特征點。在本例中主要考慮天氣因素中溫度、風(fēng)速、風(fēng)向這三個主要特征,選定九個整點的功率值。
(3)建立基準(zhǔn)日的功率曲線IFS。迭代函數(shù)系統(tǒng)通過第(2)步的插值點集合來建立,可以知道dm取0.9~0.95時,預(yù)測誤差最小,用來計算的公式為式(3)。
(4)建立功率曲線IFS。插值點的集合通過第(2)步的基準(zhǔn)時間坐標(biāo)和每個相似的各個點所對應(yīng)的功率值得到。迭代函數(shù)分別建立,其中d值保持不變。
(5)計算結(jié)束后,將風(fēng)速、風(fēng)向、溫度這三個主要特征的分形維保存到內(nèi)存中,KNN算法不再搜索所有的歷史樣本集,而是從主要特征的分形維去搜索,大大減少了算法的搜索量。
圖1 風(fēng)電功率短期預(yù)測模型框架
(6)根據(jù)當(dāng)前數(shù)據(jù)集中指定的測試集日期,找出最近的9個時間點的觀測值組合成數(shù)據(jù)幀(DataFrame1),計算這個數(shù)據(jù)幀中風(fēng)速、風(fēng)向、溫度三個特征的分形維數(shù);(a)根據(jù)權(quán)重值和K1值,通過計算歐氏距離去找到K1個最近鄰的時間范圍內(nèi)的分形維緩存值,根據(jù)緩存值找到相應(yīng)指定日期,再根據(jù)指定日期將原始數(shù)據(jù)中天氣觀測值和訓(xùn)練集中的功率值組成一個新的數(shù)據(jù)幀(DataFrame2)。(b)輸入DataFrame2和測試集中天氣觀測值參數(shù),根據(jù)權(quán)重值和K2值,通過計算歐氏距離找到K2個最近的預(yù)測功率值,將K2個值做加權(quán)平均后作為最終的預(yù)測功率值。基于分形理論的混合KNN算法預(yù)測模型如圖1所示。
以某風(fēng)電場(20臺機組)為例,選取該風(fēng)電場自2019年1月1日至2019年12月1日共334天的數(shù)據(jù)作為樣本數(shù)據(jù),將前290天數(shù)據(jù)作為訓(xùn)練樣本集,利用該訓(xùn)練樣本集預(yù)測后44天的測試對象集。設(shè)置預(yù)測的時間間隔為15分鐘,提前24小時進行預(yù)測,計算出各個預(yù)測時間點在后44天內(nèi)的功率平均值,并與后44天的實際功率值進行比較。同時與隨機森林模型(random forest,RFR)、支持向量機模型(SVM)、梯度提升決策樹模型(gradient boosting decision tree,GBDT)進行對比,計算各算法的均方根誤差(root mean square error,RMSE)和預(yù)測準(zhǔn)確率,來驗證提出的基于分形理論的混合KNN算法預(yù)測模型是否具有更高的準(zhǔn)確性和有效性。
在基于分形理論的混合KNN算法預(yù)測模型中,該文設(shè)置了兩次K值,第一次K值為3,主要是為找到最近鄰的時間范圍內(nèi)的分形維緩存值,第二次K值為5,主要是為找到最近的加權(quán)平均功率值,對測試時間點進行預(yù)測,然后對實際功率和預(yù)測功率進行對比。結(jié)果如圖2所示,橫坐標(biāo)為預(yù)測時間軸,縱坐標(biāo)為功率值。
圖2 基于分形理論的混合KNN算法模型的 預(yù)測功率與實際功率對比
RFR模型的預(yù)測功率曲線如圖3所示,通過隨機搜索法結(jié)合網(wǎng)格全局搜索最優(yōu)參數(shù)調(diào)參,確定n_estimators=100,max_depth=10;SVM中的核技巧采用Linear核函數(shù),degree=3,采用懲罰系數(shù)調(diào)整模型,防止過擬合,最終預(yù)測功率曲線如圖4所示;GBDT模型的預(yù)測功率曲線如圖5所示,通過超參數(shù)調(diào)參,不斷修正模型,確定learning_rate=0.1,n_estimators=500,max_depth=3。
圖3 基于隨機森林算法模型的預(yù)測 功率與實際功率對比
圖4 基于支持向量機算法模型的預(yù)測 功率與實際功率對比
圖5 基于梯度提升回歸算法模型的預(yù)測 功率與實際功率對比
四種模型在超參數(shù)調(diào)優(yōu)后,預(yù)測模型的均方根誤差(RMSE)、訓(xùn)練模型數(shù)據(jù)消耗的時間(CT)、模型擬合優(yōu)度(SCORE)如表1所示。
表1 不同預(yù)測模型下風(fēng)電功率預(yù)測對比
從表中可以看出,SVM預(yù)測模型的表現(xiàn)最差,將低維數(shù)據(jù)映射到高維空間中,模型訓(xùn)練消耗的時間也較長,同時RMSE并沒有減?。籊BDT經(jīng)過不斷的超參數(shù)調(diào)優(yōu)后,模型訓(xùn)練消耗的時間有所減少,但RMSE和模型擬合度值的提升幅度并不明顯;RFR預(yù)測模型在一系列調(diào)整超參數(shù)后,模型擬合優(yōu)度提升明顯,但同時模型訓(xùn)練時間有所增加;而提出的基于分形理論的混合KNN風(fēng)電功率預(yù)測模型不論在均方根誤差、模型擬合優(yōu)度還是訓(xùn)練消耗時間上都有更好的表現(xiàn),充分驗證了該模型可以很好地用來預(yù)測風(fēng)力發(fā)電功率。
風(fēng)電作為最具潛力的新能源之一,目前的并網(wǎng)容量仍在不斷增加,大規(guī)模的風(fēng)電并網(wǎng)時對電網(wǎng)運行沖擊很大,為應(yīng)對風(fēng)電強隨機性帶來的挑戰(zhàn),風(fēng)電功率預(yù)測的準(zhǔn)確性提升得到極大關(guān)注。該文所作的一系列研究,目的就是為提升風(fēng)電預(yù)測精度,將分形思想相關(guān)理論與自定義的KNN算法相結(jié)合,先對樣本中的幾個重要特征進行分形維數(shù)計算并插值后存儲于內(nèi)存中,再結(jié)合KNN算法進行兩次搜索,一次是最近鄰的時間范圍內(nèi)的分形維數(shù)緩存,另一次是找出最近鄰的加權(quán)平均功率值。同時,與現(xiàn)有的風(fēng)電功率預(yù)測方法進行對比,在各指標(biāo)上都有更好的表現(xiàn)。該方法引入分形思想可以較好地保證樣本的局部信息,模型簡單,復(fù)雜度低,特別是針對大數(shù)量的樣本,算法性能依然良好。具體分形維數(shù)最優(yōu)值的選取上仍需要進一步研究,這也將是后續(xù)研究的主要方向。