印 江,戴春萍,袁華保峰,胡萬平,錢正杰
(1.山西大學(xué)電力與建筑學(xué)院,山西 太原 030000;2.山西大學(xué)自動(dòng)化與軟件學(xué)院,山西 太原 030000)
自動(dòng)發(fā)電系統(tǒng)(Automatic Generation Control,AGC)承擔(dān)著協(xié)調(diào)爐機(jī)系統(tǒng)及響應(yīng)調(diào)度中心負(fù)荷指令的重要任務(wù),是連接單元機(jī)組與電網(wǎng)的樞紐[1]?;痣姀S分布控制系統(tǒng)上位機(jī)接受來自AGC程序的分配,優(yōu)化后將負(fù)荷指令合理地分配給各個(gè)單元機(jī)組,通過協(xié)調(diào)機(jī)組燃燒和調(diào)門開度及時(shí)響應(yīng)AGC指令。但是機(jī)組運(yùn)行過程涉及的工藝設(shè)備多,且爐側(cè)和機(jī)側(cè)是2個(gè)動(dòng)態(tài)特性差異特別大的控制對象[1],汽輪機(jī)慣性小,而鍋爐系統(tǒng)燃燒過程慣性時(shí)間長,造成單元機(jī)組難以快速響應(yīng)AGC指令。利用短期負(fù)荷預(yù)測,開展AGC超前控制策略[2],協(xié)調(diào)電廠各個(gè)子系統(tǒng)提前動(dòng)作,補(bǔ)償大慣性設(shè)備造成的響應(yīng)遲延,可以提高電廠對AGC指令的響應(yīng)速度。負(fù)荷預(yù)測指對歷史負(fù)荷進(jìn)行數(shù)據(jù)挖掘并對未來負(fù)荷進(jìn)行預(yù)測,根據(jù)精確的負(fù)荷預(yù)測[3]指令開展超前控制,有利于實(shí)現(xiàn)電量的實(shí)時(shí)供需平衡,是電力領(lǐng)域的研究熱點(diǎn)。
電力負(fù)荷預(yù)測分為長期預(yù)測、中期預(yù)測、短期預(yù)測、超短期預(yù)測[4],短期負(fù)荷預(yù)測以小時(shí)或天為單位,由于短期負(fù)荷受節(jié)假日、天氣等復(fù)雜因素影響較大,隨著電網(wǎng)規(guī)模不斷擴(kuò)大和負(fù)荷多樣性增加,高效和精確的短期負(fù)荷預(yù)測變得更加困難[5]。眾多研究者提出不同模型進(jìn)行預(yù)測,文獻(xiàn)[6]提出利用Elman神經(jīng)網(wǎng)絡(luò)模型進(jìn)行負(fù)荷預(yù)測,但預(yù)測算法的初始權(quán)值是隨機(jī)選擇的,還有很大的優(yōu)化空間[7];文獻(xiàn)[8]提出基于MLR和LSTM的神經(jīng)網(wǎng)絡(luò)模型,但模型未考慮電價(jià)因素,預(yù)測精度有待進(jìn)一步提高;文獻(xiàn)[9]提出一種灰色模型和神經(jīng)網(wǎng)絡(luò)相結(jié)合的模型,但是大樣本情況下預(yù)測精度不高,由此可以看出,精確的負(fù)荷預(yù)測目前具有很大的改進(jìn)空間。
長短記憶的時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)(Long Short Term Memory,LSTM)具有很強(qiáng)的長時(shí)記憶功能,可以學(xué)習(xí)長期依賴信息[10],負(fù)荷預(yù)測采用LSTM模型可以獲得較高的預(yù)測精度。但其優(yōu)化算法學(xué)習(xí)率的初始值一般采用經(jīng)驗(yàn)值,降低了模型的預(yù)測精度和泛化能力。粒子群算法是一種常見的尋優(yōu)算法,但由于算法的靜態(tài)學(xué)習(xí)導(dǎo)致尋優(yōu)過程緩慢且容易陷入局部最優(yōu)值。本文提出一種改進(jìn)的自適應(yīng)粒子群算法(Adaptive Particle Swarm Optimization,APSO),將算法的學(xué)習(xí)因子和慣性權(quán)重動(dòng)態(tài)化,改進(jìn)位置更新公式,使算法具有更強(qiáng)的尋優(yōu)能力,利用APSO計(jì)算LSTM優(yōu)化算法的學(xué)習(xí)率初始值,并分別結(jié)合LSTM的3種優(yōu)化算法進(jìn)行模型學(xué)習(xí),得到最佳的預(yù)測模型,可以提高模型的預(yù)測精度。
為了解決循環(huán)神經(jīng)網(wǎng)絡(luò),(Recurent Neural Network,RNN)梯度爆炸的問題,首先由HOCHREⅠTER等在1997年提出LSTM模型,如今在時(shí)間序列數(shù)據(jù)的預(yù)測應(yīng)用十分廣泛[11]。LSTM模型作為RNN的一種特殊形式,具有RNN的重復(fù)鏈?zhǔn)浇Y(jié)構(gòu),但重復(fù)的模塊中具有與RNN網(wǎng)絡(luò)不同的結(jié)構(gòu),其主要結(jié)構(gòu)可以分為忘記門(又稱遺忘門)、輸入門、輸出門3部分[12]。
忘記門決定模型會(huì)從細(xì)胞狀態(tài)中丟棄何種信息,該門會(huì)讀取ht-1和xt,輸出一個(gè)0~1之間的數(shù)值,給每個(gè)在上一次細(xì)胞狀態(tài)中的Ct-1數(shù)字,1表示完全保留,0表示完全舍棄,將上一步的細(xì)胞狀態(tài)中的信息選擇性遺忘[13]。
式(1)中:ft為忘記上一次細(xì)胞信息Ct-1的程度;σ為Sigmoid函數(shù);Wf為忘記門的更新權(quán)重矩陣;ht-1為上一步LSTM的輸出;xt為當(dāng)前步LSTM的輸入;bf為忘記門的偏置。
輸入門的功能可以分為2部分,即找到那些需要更新的細(xì)胞狀態(tài)和把需要更新的信息更新到細(xì)胞里。
式(2)(3)中:it為輸入門更新值的概率;Wi為輸入門的更新權(quán)重矩陣;bi為輸入門的偏置;為tanh層創(chuàng)建的候選值向量;Wc為細(xì)胞狀態(tài)更新權(quán)重矩陣;bc為細(xì)胞狀態(tài)偏置。
在私密的臥室空間里設(shè)計(jì)一扇天窗,讓更多的光線進(jìn)入室內(nèi),可以讓室內(nèi)保持充足的溫度和大量的自然光,增大室內(nèi)的空間通透感。另外,通過不同的光感形式還可營造臥室空間豐富多彩的視覺效果。巧妙地設(shè)置天窗,可以讓臥室瞬間擁有明亮感;通過天窗的光線,可以為臥室營造浪漫舒適的氛圍,暈染的光環(huán)籠罩著整個(gè)臥室如夢如幻,質(zhì)樸的內(nèi)飾與大自然外景相輔相成,躺在自己的一片小天地里仰望上方,正是一片閃耀的星空。
忘記門找到需要忘記的信息后,將它與舊狀態(tài)相乘,丟棄確定需丟棄的信息,再將結(jié)果加上it·C?t使得細(xì)胞狀態(tài)獲得新的信息,這樣就完成了細(xì)胞狀態(tài)的更新。
式(4)中:Ct為當(dāng)前步LSTM的細(xì)胞狀態(tài);?為哈達(dá)瑪乘積;Ct-1為上一步LSTM的細(xì)胞狀態(tài)。
在輸出門中,通過一個(gè)Sigmoid層確定哪部分的信息將輸出,接著把細(xì)胞狀態(tài)通過tanh進(jìn)行處理得到一個(gè)-1~1之間的值,并將它和Sigmoid層的輸出相乘,得出最終想要輸出的那部分。
式(5)(6)中:Ot為輸出門中當(dāng)前步Sigmoid層的輸出;Wo為輸出門的更新權(quán)重矩陣;bo為輸出門的偏置;ht為當(dāng)前步LSTM的輸出。
由于神經(jīng)網(wǎng)絡(luò)的參數(shù)優(yōu)化方法中學(xué)習(xí)率的初始值一般來說都是根據(jù)經(jīng)驗(yàn)取值,但這不一定能夠達(dá)到很好的效果,超參數(shù)設(shè)置過大或者過小都會(huì)嚴(yán)重影響最終的負(fù)荷預(yù)測精度,于是本文考慮采用粒子群算法得到學(xué)習(xí)率的初始值。
粒子群算法通過設(shè)計(jì)一種無質(zhì)量的粒子來模擬鳥群中的鳥,通過鳥群之間的競爭與合作尋找目標(biāo)食物[14]。粒子僅具有速度和位置2個(gè)屬性,速度代表移動(dòng)的快慢,位置代表移動(dòng)的方向。每個(gè)粒子在搜索空間中單獨(dú)地搜尋最優(yōu)解,并將其記為當(dāng)前個(gè)體極值,并將個(gè)體極值與整個(gè)粒子群里的其他粒子共享,找到最優(yōu)的個(gè)體極值作為整個(gè)粒子群的當(dāng)前全局最優(yōu)解,粒子群中的所有粒子根據(jù)自己找到的當(dāng)前個(gè)體極值和整個(gè)粒子群共享的當(dāng)前全局最優(yōu)解來調(diào)整自己的速度和位置,從而使自己達(dá)到更優(yōu)的位置。
式(7)(8)中:w為慣性常數(shù),非負(fù)數(shù),調(diào)節(jié)對解空間的搜索范圍;為第i個(gè)粒子在第k-1次d維的速度;c1、c2為學(xué)習(xí)因子,調(diào)節(jié)學(xué)習(xí)的最大步長;r1、r2為2個(gè)隨機(jī)值,取值范圍為[0,1],增加解空間搜索的隨機(jī)性;pbestid為第i個(gè)粒子d維的歷史搜索最優(yōu)值;為第i個(gè)粒子在第k-1次d維的位置;gbestd為d維全局最優(yōu)解。
粒子群算法步驟如下:①對粒子群的隨機(jī)位置、學(xué)習(xí)因子、慣性權(quán)值等進(jìn)行初始設(shè)定,同時(shí)設(shè)定選代次數(shù)并將粒子的最優(yōu)歷史位置pbest作為當(dāng)前位置,群體中最優(yōu)的粒子設(shè)置為當(dāng)前的gbest;②在每一次迭代中計(jì)算每個(gè)粒子的適應(yīng)度函數(shù)值;③對每個(gè)粒子,將當(dāng)前所處位置的適應(yīng)度值與所經(jīng)歷的歷史最好位置pbest的適應(yīng)度值進(jìn)行比較,若當(dāng)前位置的適應(yīng)度較好,則將其作為該個(gè)體最優(yōu)位置;④對每個(gè)粒子,將當(dāng)前所處位置的適應(yīng)度值與全局所經(jīng)歷的最好位置gbest的適應(yīng)度值進(jìn)行比較,若當(dāng)前位置的適應(yīng)度較好,則將其作為當(dāng)前的全局最優(yōu)位置;⑤根據(jù)粒子的速度更新公式和位置更新公式對粒子的速度和位置進(jìn)行優(yōu)化,從而產(chǎn)生新的粒子狀態(tài);⑥如未達(dá)到結(jié)束條件(通常為最大迭代次數(shù)數(shù)或最小誤差要求),則返回第②步。
標(biāo)準(zhǔn)PSO算法存在一些固有缺陷,如搜索精度低、局部搜索能力差,尤其求解復(fù)雜非線性多峰函數(shù)時(shí)容易陷人局部極小解出現(xiàn)“早熟”收斂[15],于是,本節(jié)將粒子群算法進(jìn)行改進(jìn)。
c1是個(gè)體認(rèn)知因子,促使粒子獲得個(gè)體歷史的最優(yōu)位置,有利于開發(fā)局部最優(yōu)解,c1=0為無私型粒子群算法,會(huì)迅速喪失群體的多樣性優(yōu)勢,易陷入局部最優(yōu)而無法跳出;c2為社會(huì)認(rèn)知因子,推進(jìn)粒子向全局最優(yōu)的區(qū)域收斂,加快收斂速度,c2=0為自我認(rèn)知型粒子群算法,完全沒有信息的社會(huì)共享,導(dǎo)致算法收斂緩慢。
粒子群算法的2個(gè)學(xué)習(xí)因子對于學(xué)習(xí)過程具有不同促進(jìn)作用,在迭代過程的前半程和后半程粒子的尋優(yōu)特點(diǎn)是不同的,所以應(yīng)使得學(xué)習(xí)因子在整個(gè)迭代過程中動(dòng)態(tài)化,發(fā)揮2個(gè)學(xué)習(xí)因子的優(yōu)勢,提高尋優(yōu)速度和質(zhì)量。在迭代過程的前半程,應(yīng)增大c1,減小c2,能夠幫助粒子探索自身的最優(yōu)值,強(qiáng)調(diào)粒子的個(gè)體認(rèn)知,避免粒子過早聚集在最優(yōu)值周圍,在迭代過程后半程,應(yīng)增大c2,減小c1,能夠幫助粒子更快地向群體最優(yōu)值靠近,強(qiáng)調(diào)社會(huì)認(rèn)知部分,提高尋優(yōu)速度,這種改進(jìn)后的粒子群算法,其參數(shù)具有自適應(yīng)性,稱為自適應(yīng)粒子群算法。
式(9)—式(11)中:cmax為學(xué)習(xí)因子初始值最大值,一般設(shè)為2.1;cmin為學(xué)習(xí)因子初始值最小值,一般設(shè)為0.8;k為當(dāng)前迭代次數(shù);K為總迭代次數(shù);δ為加速度率,其值在[0.05,0.1]中隨機(jī)產(chǎn)生,可以防止第i個(gè)粒子k+1次和k次迭代學(xué)習(xí)因子差距過大。
慣性權(quán)重w是一個(gè)重要的調(diào)節(jié)參數(shù),調(diào)節(jié)對解空間的搜索范圍,使得算法具有較大的全局搜索能力,盡快靠近最優(yōu)解。w較大時(shí)算法具有更強(qiáng)的全局搜索能力,w較小時(shí)算法具有更強(qiáng)的局部搜索能力,在算法迭代的前期應(yīng)提高粒子的全局搜索能力,使得粒子快速靠近最優(yōu)解,算法迭代后期,應(yīng)提高粒子的局部搜索能力,發(fā)掘粒子附近的最優(yōu)值。
式(12)中:wmax為慣性權(quán)重最大值;wmin為慣性權(quán)重最小值。
傳統(tǒng)粒子群算法容易陷入局部最優(yōu),僅靠速度公式中參數(shù)的更新難以較好解決這一問題。因此對位置更新公式進(jìn)行改進(jìn),在傳統(tǒng)粒子群算法位置更新公式的基礎(chǔ)上引入擾動(dòng)補(bǔ)償因子可以很好解決這一問題,促使粒子跳出局部最優(yōu)值搜索空間,向全局最優(yōu)值空間進(jìn)行搜索,使得粒子對全局空間的搜索更加廣泛。
本小節(jié)將學(xué)習(xí)因子、慣性權(quán)重動(dòng)態(tài)化,使得粒子群算法的迭代過程中參數(shù)變化更加符合迭代過程階段特征的變化,此外引入擾動(dòng)因子更新位置公式,提高了粒子種群的多樣性。
LSTM模型訓(xùn)練中參數(shù)優(yōu)化算法通常使用SGD算法、AdaGrad算法、Adam算法,但是學(xué)習(xí)率的初始值一般是根據(jù)經(jīng)驗(yàn)值給定,降低了學(xué)習(xí)的效果和負(fù)荷預(yù)測的精度,于是采用APSO來進(jìn)行優(yōu)化算法中學(xué)習(xí)率初始值的優(yōu)化給定,可以提高模型的預(yù)測精度。
取山西某電廠2016-11-25—2019-11-24的負(fù)荷、當(dāng)日最高溫度和最低溫度為數(shù)據(jù)集,按照7∶3的比例將數(shù)據(jù)集劃分為訓(xùn)練集和測試集,使用24 h的負(fù)荷預(yù)測第25 h的負(fù)荷,APSO的適應(yīng)度函數(shù)取為LSTM模型中測試集的預(yù)測誤差MAPE,APSO的優(yōu)化目的就是最小化MAPE,即縮小預(yù)測值和真實(shí)值之間的差值。利用APSO得到最優(yōu)的學(xué)習(xí)率,再將此學(xué)習(xí)率帶入LSTM模型重新訓(xùn)練,得到負(fù)荷預(yù)測值。
式(13)中:yi為第i個(gè)樣本的負(fù)荷真實(shí)值;predi為第i個(gè)樣本的負(fù)荷預(yù)測值。
APSO-LSTM算法流程如圖1所示。算法流程總體上分為APSO部分和LSTM模型部分,具體步驟如下。
圖1 APSO-LSTM算法流程圖
電力負(fù)荷受溫度因素影響相對較大,將日最高氣溫、日最低氣溫、負(fù)荷值、日類型值、月類型值作為LSTM模型的輸入。其中,日類型和月類型分別體現(xiàn)負(fù)荷的日周期性和月周期性,大小區(qū)間為[0,1]。日類型值為每個(gè)時(shí)刻在一天24個(gè)時(shí)刻中的相對大小值,月類型值為每個(gè)時(shí)刻在一個(gè)月總天數(shù)中的相對天數(shù)大小值。
對數(shù)據(jù)集進(jìn)行預(yù)處理,剔除異常數(shù)據(jù)。將日最低溫和日最高溫進(jìn)行歸一化處理,并按照7∶3將LSTM模型的輸入劃分為訓(xùn)練接和測試集,將前24 h的負(fù)荷和第25 h的負(fù)荷作為一組數(shù)據(jù)輸入LSTM模型的迭代器。
初始化LSTM模型參數(shù)及粒子群,將適應(yīng)度函數(shù)定義為測試集的預(yù)測值和真實(shí)值的平均絕對誤差百分比MAPE,r1、r2的值由隨機(jī)函數(shù)產(chǎn)生。
粒子群算法中用隨機(jī)函數(shù)初始化學(xué)習(xí)率并輸入LSTM模型進(jìn)行模型訓(xùn)練,模型訓(xùn)練的優(yōu)化器分別使用SGD算法、AdaGrad算法、Adam算法來進(jìn)行神經(jīng)網(wǎng)絡(luò)權(quán)重參數(shù)的優(yōu)化。
比較粒子適應(yīng)度值和個(gè)體最優(yōu)值以及粒子適應(yīng)度值和群體最優(yōu)值,根據(jù)速度公式和改進(jìn)后的位置公式更新粒子狀態(tài),同時(shí)更新學(xué)習(xí)因子、慣性權(quán)重,進(jìn)行下一次迭代。
滿足APSO設(shè)置的迭代次數(shù)則迭代結(jié)束,得到3種不同權(quán)重優(yōu)化算法學(xué)習(xí)下最優(yōu)學(xué)習(xí)率初始值,代入LSTM模型,重新進(jìn)行LSTM模型訓(xùn)練,得到負(fù)荷預(yù)測值。
仿真實(shí)驗(yàn)采用Python語言進(jìn)行編寫,其中LSTM模型部分程序的編寫框架選用Pytorch,此框架是Facebook中最為流行的深度學(xué)習(xí)框架。選取山西某電廠2018-12-31的數(shù)據(jù)預(yù)測2019-01-01—2019-01-03的負(fù)荷,每小時(shí)采樣一次,2018-12-31的數(shù)據(jù)共計(jì)24個(gè)數(shù)據(jù)點(diǎn),2019-01-01—2019-01-03共計(jì)72個(gè)數(shù)據(jù)點(diǎn)。本次實(shí)驗(yàn)將LSTM模型中batch_size設(shè)置為30,即每次訓(xùn)練使用30組數(shù)據(jù),由于數(shù)據(jù)量很大,epoch設(shè)置為10,即將數(shù)據(jù)訓(xùn)練10遍。APSO中粒子數(shù)設(shè)置為50,迭代次數(shù)設(shè)置為20,將慣性權(quán)重初始值最大值設(shè)置為0.9,最小值設(shè)置為0.5,學(xué)習(xí)因子初始值最大值和最小值分別設(shè)置為2.1和0.8。為進(jìn)一步說明實(shí)驗(yàn)方案的可行性,將SGD算法、AdaGrad算法、Adam算法分別作為優(yōu)化算法進(jìn)行預(yù)測,學(xué)習(xí)率根據(jù)初始值設(shè)置為0.05,再利用APSO分別訓(xùn)練得到3種優(yōu)化算法下的初始學(xué)習(xí)率,然后重新代入LSTM模型訓(xùn)練得到預(yù)測結(jié)果。
運(yùn)行Python程序得到圖2和圖3,其中圖2為分別使用SGD算法、AdaGrad算法、Adam算法,并將學(xué)習(xí)率初始值設(shè)置為經(jīng)驗(yàn)值的預(yù)測結(jié)果,圖3為將APSO優(yōu)化后的學(xué)習(xí)率分別作為SGD算法、AdaGrad算法、Adam算法的初始學(xué)習(xí)率的預(yù)測結(jié)果。對比圖2和圖3可以明顯看出,經(jīng)過APSO優(yōu)化初始學(xué)習(xí)率后采用3種優(yōu)化算法的模型預(yù)測結(jié)果更加貼合實(shí)際預(yù)測值。
圖2 模型改進(jìn)前的預(yù)測結(jié)果
圖3 模型改進(jìn)后的預(yù)測結(jié)果
為了更有力說明預(yù)測精度的提高,計(jì)算MAPE指標(biāo)和MAE指標(biāo)來進(jìn)行說明,結(jié)果如表1所示??梢钥闯鼋?jīng)過自適應(yīng)粒子群算法優(yōu)化的LSTM模型,采用3種不同優(yōu)化算法進(jìn)行負(fù)荷預(yù)測時(shí),其預(yù)測精度均得到提升,預(yù)測性能好。
表1 不同模型的預(yù)測誤差對比
準(zhǔn)確的電力負(fù)荷預(yù)測能給電廠智能調(diào)配和穩(wěn)定運(yùn)行提供安全保障。為提高短期電力負(fù)荷預(yù)測的精度,使用改進(jìn)的自適應(yīng)粒子群算法對LSTM模型的初始學(xué)習(xí)率進(jìn)行優(yōu)化,實(shí)驗(yàn)采用3種不同的優(yōu)化算法進(jìn)行仿真,并使用MAPE和MAE這2個(gè)指標(biāo)對預(yù)測精度進(jìn)行說明。可以發(fā)現(xiàn),3種優(yōu)化算法結(jié)合了APSO后,預(yù)測誤差大幅度降低,其中APSO-Adam-LSTM模型的精度最高,APSO-LSTM模型比LSTM模型具有更高的預(yù)測精度。
但由于APSO的初始化參數(shù)是經(jīng)驗(yàn)給定,故還有較大的改進(jìn)空間。后續(xù)可以采用多重粒子群算法對粒子群初始化參數(shù)進(jìn)行優(yōu)化設(shè)置,進(jìn)一步提高模型的尋優(yōu)能力。