何建強,張玉萍,滕志軍
(1.商洛學院,陜西 商洛 726000;2.商洛市人工智能研究中心,陜西 商洛 726000;3.北京四方繼保自動化股份有限公司,北京 100085;4.東北電力大學 現代電力系統仿真控制與綠色電能新技術教育部重點實驗室,吉林 吉林 132012)
風能作為一種可再利用的、清潔的新型替代能源,能夠優化能源結構,增強能源供應能力,保障能源安全可靠。由于風具有隨機性、間歇性和不可控性,導致風電具有間斷性,致使風電并網會增加電力系統運行的不穩定性,極大地影響電網的供電質量。因此,科學、準確的預測風電場的輸出功率能夠平衡大規模風電對電網的影響,促進風電健康持續地發展。文獻[2]和文獻[3]闡述了由于風電的間斷性,致使風電功率預測大多主要集中于短期預測。目前短期預測技術被廣泛研究和應用,主要研究方法有物理法、統計方法、機器學習法和空間相關性法。文獻[4]對風電功率預測的物理方法和統計方法進行了綜述。物理預測方法由于受風電場所處環境地形和地貌以及周圍大氣環境的影響比較大,所以預測精度往往相對低。統計方法建模相對簡單、計算速度快、預測成本低,但是輸入的預測參數單一,不斷地擴大預測時間尺度會降低預測精度。文獻[5-7]對卡爾曼濾波法、時間序列法、最小二乘法、灰色預測法等常用的統計方法在風電功率預測中的應用進行研究,但都存在易陷入局部最優的缺點。機器學習方法預測精度相對較高,但預測模型比較復雜,建模相對困難,而且樣本訓練需要大量歷史數據的支持,訓練速度慢。常用的方法有小波分析法,BP神經網絡法、SVM等方法。文獻[8]提出的人工神經網絡法是風電功率短期預測當中最常用的預測方法,具有非線性映射、自學習、容錯性和泛化能力強等優點。但單一的預測方法具有不足之處,為克服單一方法預測的不足,組合預測法成為近年來風電功率預測研究的熱點,它是將一些統計方法和學習方法相結合,提高預測精度。文獻[9-12]提出了空間相關法,將其作為繼物理模型、統計學之后的第3種模型,它是一種通過鄰近風電場氣象信息對目標風電場進行預測的方法。文獻[13]結合空間相關性的方法,建立了預測模型,解決了風速突變造成預測精度低的問題。但由于風速時變性較強,預測的最大誤差很難控制,有時預測可能完全失效。
為解決單一模型在風電功率預測中的局限性,本文針對文獻[14]中提出的KNN算法在短期風電功率預測中的不足,提出了基于K-means和改進KNN算法的風電功率預測,該算法針對大量的歷史樣本集和預測樣本集,建模簡單,運算速度快,預測準確率高。以吉林省某風電場365天的實際數據為樣本,對本文預測方法的優越性進行了分析驗證。
K
個樣本相似或最鄰近,而且這K
個最鄰近的樣本大多數是同一個類別,那么此樣本也被標記為該類別。重點強調的是特征空間中的每個樣本必須已被正確分類。KNN算法在本質上采用的是投票分類決策機制,通過最鄰近樣本的類別決策待分類樣本的類別,決策前需要遍歷整個樣本空間,決策時只依靠最近鄰的少數樣本。KNN算法的優點是適合類域交叉或者大量重疊的待分類樣本集。本文利用樣本回歸特性對樣本進行功率預測,即對于一個預測樣本,首先獲取樣本的K
個最鄰近已分類樣本,然后計算其屬性的平均值,將該平均值作為預測樣本的屬性值。K
值進行預測時,每個樣本對應每個不同的K
值都要遍歷一次特征空間,那么隨著特征空間的擴大,就會成倍的增加運算量,也就會成倍的降低運算速度。同時在分類過程中,如果特征空間樣本類別不平衡時,一部分樣本容量較大,另一部分樣本容量較小,隨著K
值的逐漸增大,選取樣本的誤判率就會增大,針對這一情況本文對KNN算法進行了改進。改進策略是:同一個預測樣本,在同一個特征空間中,針對不同的K
值,只需要遍歷一次整體樣本空間。首先提取預測樣本的最大K
值,此時遍歷整體樣本空間,提取K
個最相似的樣本,重點是要對選取的K
個樣本按相似程度的從高到低進行排列,并且將這K
個相似樣本保存到相似隊列中。這樣如果預測樣本想提取K
-1個相似樣本的話,就不需要再遍歷整體特征空間了,只需要從相似隊列中提取前K
-1個樣本即可。這種改進策略是通過增加存儲空間來加快預算速度。因為對于現在的計算機來說,存儲空間越來越大。假設一個風電場有100臺風機,每分鐘記錄一項風機的運行狀態,運行狀態中包括20個屬性,那么10年的記錄也只有38.5 G。所以存儲空間不是風電功率預測的壓力。因此,利用存儲空間換取高效的預測空間是值得的。改進的KNN算法包括兩個過程,第一個過程是計算預測樣本選取最多近鄰樣本時對應的K
值,同時對獲取的相似樣本集合從高到低按照相似程度排序,并存至優先級隊列中;第二個過程是當K
值減小時,從已存儲的優先級隊列中直接獲取相似樣本集,根據相似距離決定相似權重,從而用訓練樣本的加權功率值來計算預測樣本的功率值。獲取最長優先級隊列的核心步驟如下。第一步:確定最近鄰樣本個數最多時對應的K
值,給出已知類別的訓練樣本集(或者叫做特征空間)D
;第二步:設每一個預測樣本為z
=(x
′,y
′),開始執行for循環forz
=(x
′,y
′);第三步:計算z
與每個訓練樣本(x
,y
)∈D
間的相似距離d
(x
′,x
′);第四步:選擇與預測樣本z
最相似的K
個訓練樣本D
?D
,同時記錄這K
個樣本與z
的相似距離;第五步:按照與z
相似程度對D
從高到低排序,將結果存至優先級隊列PriorityQueue中;第六步:end for;//結束for循環,并保存好本次預測的優先級隊列。
本文通過相似歷史數據建立模型,實現風電功率的預測。將風向、風速和風機變槳角度這3個參數作為輸入參數,選取不受時間序列影響而且樣本集合的相似度比較高的數據作為樣本數據。在輸入參數后會自動尋找與之相似的樣本數據集合,并匹配對應的風電功率數據,以此來對未來的輸出功率進行推算,預測模型框架如圖1所示。最后,通過吉林省某風電場實際數據來對預測模型的有效性和預測準確度進行檢驗。

圖1 預測模型框架圖
由于本文所提改進的KNN算法通過相似歷史數據進行預測時采用的數據分類方法與K-means聚類算法思想一致,因此在對歷史樣本進行分類時采用K-means算法,該方法在增加選中相似樣本概率的同時,也保障了預測的準確性。該算法進行歷史樣本分類的過程如下。
Input:N
//為區別改進KNN中的K
,此處用N
表示劃分子類的個數;{Y
}//
歷史樣本集,其中包含j
個對象。Outout:N
個子類。具體執行流程如下。
第一步:從歷史樣本集{Y
}中隨機選擇N
個樣本作為初始分類的中心。第二步:比較新讀取樣本對象和各個類中對象的均值,然后將其分配至最相似的類中。
第三步:對每個類的中心進行更新,重新對每個類中對象的均值進行計算。
第四步:until每個類的中心不再變化結束。
其中:{Y
}表示歷史樣本集合,其中每個樣本均包含風向、風速和風機變槳角度3個維度;N
為將要劃分子類的個數。以吉林省某風電場2019年2月的歷史數據為例,每隔一分鐘記錄一次風電機組的運行狀態,一共29天,每臺機組的歷史樣本數量為41 760條。以其中某一臺的風機的歷史樣本記錄為例,利用Clementine軟件中的K-means聚類模型得出的聚類結果如2圖所示。

圖2 某臺風機的歷史數據聚類結果
n
(k
)提高為n
(k
)。改進KNN的算法流程如圖3所示。
圖3 改進KNN算法流程
算法的具體執行過程如下:
1)初始化預測樣本X
和K
值的集合。2)獲取最大K
值,賦于K
,K
僅搜索K
對應的相似歷史樣本集合。3)選取相似度計算公式。
本文在計算預測樣本和歷史樣本的相似度時,選用適用于數值型數據的歐氏距離和曼哈頓距離計算公式,分別如公式(1)和公式(2)所示。

(1)

(2)
式中,X
和Y
分別表示第i
個預測樣本和第j
個歷史樣本。風向、風速和風機變槳角度為每個樣本3個維度,z
為維數。4)獲取最大優先級隊列PQ(X
,K
)。在歷史樣本中隨機選取K
個樣本,按相似距離大排序,生成優先級隊列PQ(X
,K
)。遍歷歷史樣本集,并計算其與預測樣本的相似距離。若相似距離比PQ(X
,K
)中最后一個樣本的相似距離大,則繼續遍歷下一個歷史樣本,否則移除PQ(X
,K
)中最后元素,將當前遍歷樣本值放入PQ(X
,K
)尾部,并按照相似程度重新自動排序,遍歷完所有歷史樣本,得到最終PQ(X
,K
)。5)其余K
值,從最終PQ(X
,K
)中提取對應的相似樣本優先級子隊列。如K
=K
時,提取PQ(X
,K
)中前m
個歷史樣本,作為K
的PQ(X
,K
)。6)計算PQ(X
,K
)中多數類別所有樣本輸出功率的平均值,將其作為預測樣本X
的預測值。計算公式如公式(3)所示:

(3)
式中,powerpr
(X
,K
)表示預測樣本X
選取K
個相似樣本的功率值;表示樣本類別是C
的第j
個相似歷史樣本,z
表示類型編號。AVG()為計算多數類樣本功率的加權平均值。7)計算所有K
值下X
對應的預測值,結束預測。最終功率預測值對應K
值選取時,要根據不同風機運轉情況通過實驗數據來進行確定最佳K
值。
圖4 風電功率預測系統架構圖

圖5 系統整體功能模塊
本文采用C/S架構設計風電功率預測系統,將預測模型轉換為計算機可以完成的功能,保障風電功率預測的高效性、穩定性和安全性。風電功率預測系統整體架構分為3層,依次為基礎數據層、功能服務層和用戶層。每一層之間是相互獨立且具有一定的聯系,風電功率預測系統架構圖如圖4所示。
4.1.1 基礎數據層
基礎數據層又包括3部分。第一部分是風電實時數據的采集與整理;第二部分是數據存儲,將整理完畢的實時數據,存儲于數據庫中,可以永久性的使用,并定期維護;第三部分建立數據訪問接口。
4.1.2 功能服務層
功能服務層主要是指風電功率預測系統需要完成的功能應用。本系統的應用服務主要有基礎數據更新模塊、實時數據展現模塊、風電數據清洗模塊、風電功率預測模塊、預測誤差分析模塊、用戶管理模塊、系統設置模塊、輔助模塊等。
4.1.3 用戶層
用戶層是與用戶直接相關的部分。用戶層是用戶與系統進行交互的終端。用戶可以輸入相關數據或者點擊相關操作,實現需要的功能。
采用java語言實現風電功率預測系統的整體功能,選用關系型數據庫MySQL作為數據庫管理系統。系統主要包括用戶管理模塊、核心模塊和系統設置模塊。系統整體功能模塊圖如圖5所示。
用戶管理模塊主要包括用戶注冊模塊、用戶登錄模塊、信息修改模塊等。用戶注冊模塊主要是新用戶在使用系統前進行用戶注冊。為了確定用戶賬號的安全性,系統引入MD5加密技術,對用戶的密碼以及密碼修改提示答案采用密文的形式存儲。這樣可以防止非法用戶的入侵,保障系統的安全性。用戶登錄模塊是任何一個軟件系統的基礎模塊。該系統的用戶登錄模塊需要用戶通過多方面的認證合格,才可以進入系統。主要包括權限認證、崗位認證、用戶名、密碼、驗證碼等合法驗證。
用戶修改模塊主要方便用戶對自身基本信息的更新。
系統設置模塊包括系統用戶權限管理、系統數據備份、系統數據還原。用戶權限管理模塊主要是根據風電功率預測系統中用戶的崗位類別、職稱類別等判定用戶的角色,并按照一定的安全策略為每種角色設置相應的權限。每個用戶只可以訪問自身權限范圍內的內容。本系統的權限設置管理主要包括功能級權限管理和數據級權限管理。數據備份模塊是系統容災方案的一種。本系統考慮到電力系統屬于專用網、風電數據的存儲量大、不易恢復等特性,采用數據庫備份方案。數據庫備份即在備份機上創建數據庫的拷貝版本,定期更新備份。系統數據恢復模塊是指將丟失的或者異常數據恢復到正常的狀態。本系統主要應用版本恢復將系統數據庫中的數據恢復到前一個備份版本,使數據恢復正常。
核心模塊的主要功能為風電實時數據存儲、實時數據查詢、實時數據處理、風電訓練樣本分類、風電功率預測、誤差分析和歷史預測結果查詢。該模塊的UML活動圖如圖6所示。

圖6 風電功率預測系統UML活動圖
風電實時數據存儲模塊主要用于獲取風電場的實時數據。通過I/O讀取程序,獲取已經存儲于記事本的風電功率實時采集數據。按照每一行為一個記錄的方式,將獲取的數據存入已經創建好的MySQL數據庫,作為風電功率預測的數據源。
風電實時數據顯示模塊主要協助用戶根據自己的意愿選擇要瀏覽的風電數據。用戶可以按照時間段模式進行預覽。風電實時數據處理模塊主要是清洗那些由于采集、傳輸和記錄過程中導致的異常數據、缺省數據或者記錄不完整的數據。利用相鄰時間點數據的加權平均值修補缺省值和更正不完善的數據。
風電訓練樣本分類模塊是由于預測模型需要輸入具有確定類別的風電訓練樣本。該模塊主要是將K-means聚類算法用java語言實現。
風電功率預測模塊是系統的核心模塊。該模塊同樣也是利用java語言實現預測算法的過程。該模塊留有輸入、輸出兩個接口。輸入接口主要是輸入訓練樣本和預測樣本。輸出接口就是輸出風電功率的預測結果。
歷史預測結果查詢模塊可以查詢預測完畢的結果。一般用戶可以通過預測時間段查詢預測結果,也可以根據預測誤差率或者準確率來查詢預測結果。
K
值的集合為[1,100],分別利用曼哈頓距離和歐氏距離尋找相似樣本。不同K
值下兩種距離計算方法的預測結果對比如7和圖8所示。
圖7 不同K值下曼哈頓距離計算方法的預測結果

圖8 不同K值下歐氏距離計算方法的預測結果
由圖7和圖8可以看出,當K
=48時,曼哈頓距離計算方法預測結果最好,平均絕對誤差最低。當K
=50時,歐氏距離計算方法預測結果較好,預測誤差也遠低于國家規定范圍。預測功率與實際功率值的對比結果分別如圖9和圖10所示。從圖7和圖8的預測誤差率中可以看出,預測誤差隨著K
值的增加逐漸降低,增加到一定值后,隨著K
值的增加又逐漸升高。其與K
值的變化關系如圖11所示。通過大量的實驗發現,當K
值在45~55時,預測準確率最高。
圖9 K=48時未來24小時功率預測值與實際值對比

圖10 K=50時未來24小時功率預測值與實際值對比

圖11 預測誤差與K值的關系
本文將預測結果和文獻[17-18]中的預測結果按照誤差分析方法進行了對比,預測誤差對比結果如表1所示。從對比結果中可以看出采用本文的方法,平均絕對誤差和均方根誤差預測誤差率分別最大下降1.08和0.48個百分點。在相同的條件下,本文的方法在預測時間最大提高了5.45個百分點??梢?,本文的預測方法提高了預測準確度。

表1 預測誤差對比
改進的KNN預測模型在預測過程中不斷地剔除訓練樣本中異常的或者影響預測準確度的樣本,從而修正預測模型,使得預測模型的預測準確率不斷自動地提升。因此,實驗數據表明在對20臺風機功率的預測中,誤差率越來越低,每臺風機的平均誤差都小于15%,滿足目前風電功率預測系統的要求。
K
值,仍是下一步需要重點研究的內容。