張經(jīng)博,郭 凌,王朝霞,劉 凌
(1.后勤工程學(xué)院,重慶 401311;2. 65133 部隊(duì),沈陽 110000;3.重慶大學(xué),重慶 400000;4.重慶工程職業(yè)技術(shù)學(xué)院,重慶 400055)
供暖系統(tǒng)的熱負(fù)荷與室外溫度、太陽輻射、風(fēng)向和風(fēng)速等氣候條件關(guān)系密切。熱負(fù)荷預(yù)測(cè)主要是指根據(jù)以往熱負(fù)荷溫度的實(shí)際情況,同時(shí)考慮影響熱負(fù)荷溫度相對(duì)權(quán)重較高的因素,如室外溫度、日照時(shí)長(zhǎng)、工作作息情況等因素,對(duì)未來某一時(shí)間段內(nèi)或某一具體時(shí)刻的需求量作出估計(jì)或范圍性推測(cè),從而實(shí)現(xiàn)對(duì)供暖系統(tǒng)輔助決策的數(shù)據(jù)支持;預(yù)測(cè)精度不夠高是現(xiàn)有預(yù)測(cè)模型的主要缺點(diǎn),同時(shí)供暖系統(tǒng)的供暖量的變化波動(dòng)大時(shí)自適應(yīng)能力較差[1]。根據(jù)供暖系統(tǒng)對(duì)熱負(fù)荷預(yù)測(cè)的預(yù)測(cè)精度要求高的實(shí)際需求,本文提出的預(yù)測(cè)模型是針對(duì)下一個(gè)工作日的短期熱負(fù)荷預(yù)測(cè),主要選擇了前3個(gè)工作日的負(fù)荷溫度、室外溫度、日照時(shí)長(zhǎng)作為輸入?yún)?shù);本文提出的基于遺傳算法(genetic algorithm,GA)優(yōu)化的BP 神經(jīng)網(wǎng)絡(luò)(back propagation neural network)對(duì)供暖系統(tǒng)熱負(fù)荷預(yù)測(cè),將遺傳算法自適應(yīng)性和全局優(yōu)化能力強(qiáng)的優(yōu)點(diǎn),和BP神經(jīng)網(wǎng)絡(luò)局部尋優(yōu)能力強(qiáng)的優(yōu)點(diǎn)相互結(jié)合,從而避免了BP神經(jīng)網(wǎng)絡(luò)容易陷入局部極小的缺點(diǎn),大大提高了預(yù)測(cè)的精度,從對(duì)比仿真實(shí)驗(yàn)可以驗(yàn)證提出的方法的誤差比BP 神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)出的誤差要小。
遺傳算法(genetic algorithm,GA)是一種基于自然選擇和基因遺傳學(xué)原理的優(yōu)化搜索方法,是模擬達(dá)爾文的遺傳選擇和自然淘汰的生物進(jìn)化原理被引入到待優(yōu)化參數(shù)形成的編碼串群體中,按照選取好的適應(yīng)值函數(shù)和一系列的遺傳操作對(duì)個(gè)體進(jìn)行篩選,從而保留下適應(yīng)值高的個(gè)體,組成新的群體。通過這種方式產(chǎn)生的新群體不僅遺傳了上一代的大量信息,而且包含優(yōu)于上一代的新個(gè)體。這樣一代一代遺傳下去,群體中個(gè)體的適應(yīng)值不斷提高,直至滿足一定的條件為止。
遺傳算法是從一個(gè)種群開始的,這個(gè)種群代表了問題的一個(gè)可行解。而種群則由一定數(shù)目的個(gè)體組成,每個(gè)個(gè)體通過基因編碼產(chǎn)生。在生物學(xué)里,每個(gè)個(gè)體是帶有特征的染色體實(shí)體。由于染色體是多個(gè)基因的集合,所以首先要進(jìn)行編碼,把表現(xiàn)型編碼成基因型。在每一代的進(jìn)化中,個(gè)體的選擇是由種群中的個(gè)體適應(yīng)值大小來決定的,由遺傳算子進(jìn)行組合、交叉和變異,產(chǎn)生出新的種群。這個(gè)過程使種群像遺傳選擇和自然進(jìn)化一樣,讓新種群更加適應(yīng)于環(huán)境,不適應(yīng)的種群逐步被淘汰,直到產(chǎn)生出最優(yōu)種群或達(dá)到迭代次數(shù)后形成末代種群,末代種群中的最優(yōu)個(gè)體經(jīng)過解碼,就可以作為問題近似最優(yōu)解。
Holland 的遺傳算法[2],通常稱為簡(jiǎn)單遺傳算法,主要特點(diǎn)是操作簡(jiǎn)單和作用強(qiáng)大,基本遺傳操作如下:
1)選擇操作
選擇操作是指以一定概率選擇舊種群中的個(gè)體到新種群中,個(gè)體被選中的概率跟適應(yīng)值有關(guān),個(gè)體適應(yīng)值越大,被選中的概率就越大。
2)交叉操作
交叉操作是指從種群中選擇兩個(gè)個(gè)體,通過兩個(gè)個(gè)體的染色體的交叉組合,來產(chǎn)生新個(gè)體。交叉過程為從種群中任選兩個(gè)個(gè)體,隨機(jī)選擇個(gè)體的一點(diǎn)或多點(diǎn)染色體位置進(jìn)行交換。交叉操作如圖1 所示。
圖1 交叉操作
3)變異操作
變異操作是指從種群中任選一個(gè)個(gè)體,選擇個(gè)體的染色體中的一點(diǎn)進(jìn)行變異產(chǎn)生新個(gè)體。變異操作如圖2 所示。
圖2 變異操作
由于BP 神經(jīng)網(wǎng)絡(luò)局部尋優(yōu)能力強(qiáng),但缺點(diǎn)是易于陷入局部極小;遺傳算法則具有自適應(yīng)性、全局優(yōu)化性和隱含并行性,但缺點(diǎn)是局部尋優(yōu)能力不強(qiáng)。本文提出了一種BP 神經(jīng)網(wǎng)絡(luò)與遺傳算法相結(jié)合的算法,用遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,解決BP 神經(jīng)網(wǎng)絡(luò)易陷入局部極小的問題,然后利用優(yōu)化后的權(quán)值和閾值經(jīng)過BP 網(wǎng)絡(luò)訓(xùn)練來得到最優(yōu)解[3]。
遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)分為BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)確定、遺傳算法優(yōu)化和BP 神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)3 個(gè)步驟。其中,BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)確定由問題和擬合函數(shù)的參數(shù)個(gè)數(shù)決定的,進(jìn)而遺傳算法個(gè)體的長(zhǎng)度才能得以確定;遺傳算法優(yōu)化是利用遺傳算法對(duì)BP 網(wǎng)絡(luò)的權(quán)值和閾值進(jìn)行優(yōu)化篩選,由于種群中的每個(gè)個(gè)體都包含了一個(gè)網(wǎng)絡(luò)所有權(quán)值和閾值,通過適應(yīng)度函數(shù)計(jì)算出每個(gè)個(gè)體的適應(yīng)值,通過遺傳算法的選擇,交叉和變異等操作后找到最優(yōu)的適應(yīng)值所對(duì)應(yīng)的個(gè)體;BP 神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)是指通過遺傳算法篩選出最優(yōu)個(gè)體,然后將最優(yōu)個(gè)體賦值給BP 網(wǎng)絡(luò)初始權(quán)值和閾值,BP 網(wǎng)絡(luò)基于初始權(quán)值和閾值進(jìn)行訓(xùn)練后得到預(yù)測(cè)輸出。從而使新生成的算法既要有神經(jīng)網(wǎng)絡(luò)的強(qiáng)自學(xué)習(xí)能力,又有遺傳算法的強(qiáng)全局搜索能力[4],其算法流程圖如圖3 所示。
通過遺傳算法來優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值,同時(shí)提高神經(jīng)網(wǎng)絡(luò)的泛化性能,是遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的主要方法,通過遺傳算法優(yōu)化后的BP 神經(jīng)網(wǎng)絡(luò),具有更好的預(yù)測(cè)輸出結(jié)果[5],遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)的具體實(shí)現(xiàn)步驟如下:
1)種群初始化
每個(gè)個(gè)體按照實(shí)數(shù)進(jìn)行編碼,每個(gè)遺傳個(gè)體由一個(gè)實(shí)數(shù)串組成,可分為輸入層與隱含層的連接權(quán)值、隱含層閾值、隱含層與輸出層連接權(quán)值以及輸出層閾值4 個(gè)部分,它與某個(gè)神經(jīng)網(wǎng)絡(luò)權(quán)值、閾值、隱節(jié)點(diǎn)一一對(duì)應(yīng)。在網(wǎng)絡(luò)結(jié)構(gòu)已經(jīng)確定的情況下,就組成了一個(gè)權(quán)值、閾值和結(jié)構(gòu)都確定的BP 網(wǎng)絡(luò),同時(shí)每個(gè)個(gè)體包含了BP 網(wǎng)絡(luò)全部的權(quán)值和閾值[6]。
圖3 遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)算法的流程
2)適應(yīng)值函數(shù)計(jì)算
根據(jù)種群初始化得到的BP 神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值[7],這樣就避免了BP 神經(jīng)網(wǎng)絡(luò)隨機(jī)生成初始權(quán)值和閾值的隨機(jī)性,避免了BP 網(wǎng)絡(luò)容易陷入局部極小的缺點(diǎn),同時(shí)利用訓(xùn)練數(shù)據(jù)對(duì)BP 神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,訓(xùn)練后的BP 神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)出輸出結(jié)果,可將預(yù)測(cè)輸出值和期望輸出值之間的平方誤差和作為個(gè)體的適應(yīng)值F
式中:n 為網(wǎng)絡(luò)輸出節(jié)點(diǎn)數(shù);yi為BP 神經(jīng)網(wǎng)絡(luò)第i 個(gè)節(jié)點(diǎn)的期望輸出;oi為第i 個(gè)節(jié)點(diǎn)的預(yù)測(cè)輸出;k 為系數(shù)。
3)選擇算子
本文的遺傳算法選擇操作是以輪盤賭法[8]為基礎(chǔ),即基于每個(gè)個(gè)體的選擇概率等于其適應(yīng)度與整個(gè)種群中個(gè)體適應(yīng)度和之比的選擇策略,個(gè)體適應(yīng)度越高,被選中的可能性就越大,進(jìn)入下一代的概率就越大。定義每個(gè)個(gè)體i 的選擇概率pi
式中:Fi為個(gè)體i 的適應(yīng)值,由于適應(yīng)值越小越好,所以在個(gè)體選擇前對(duì)適應(yīng)值求倒數(shù);k 為系數(shù);N 為種群個(gè)體數(shù)目。
4)交叉算子
交叉算子主要包括單點(diǎn)交叉、多點(diǎn)交叉、均勻交叉、算術(shù)交叉、啟發(fā)式交叉等,由于個(gè)體采用實(shí)數(shù)編碼,所以交叉操作方法采用實(shí)數(shù)交叉法,第k 個(gè)染色體ak和第l 個(gè)染色體al在j 位的交叉操作方法如下:
式(4)、式(5)中,b 為[0,1]間的隨機(jī)數(shù)。
5)變異算子
將父代群體中的每個(gè)個(gè)體以某種概率(即變異概率)改變某個(gè)個(gè)體的某些基因座上的基因值為其他的等位基因。對(duì)每次變異的結(jié)果,還原出神經(jīng)網(wǎng)絡(luò)并進(jìn)行性能評(píng)估。如果后代優(yōu)于父代則結(jié)束該父代的變異,否則,對(duì)該父代進(jìn)行下一次變異,直到找到優(yōu)于其父代的后代。
變異操作是對(duì)實(shí)數(shù)編碼選取第i 個(gè)個(gè)體的第j 個(gè)基因aij進(jìn)行變異,變異操作方法如下
式中:amax為基因aij的上界;amin為基因aij的下界;f(g)=r2(1-g/Gmax);r2為一個(gè)隨機(jī)數(shù);g 為當(dāng)前迭代次數(shù);Gmax是最大迭代次數(shù);r 為[0,1]之間的隨機(jī)數(shù)。
6)結(jié)束
根據(jù)網(wǎng)絡(luò)訓(xùn)練后得到的誤差,如果誤差滿足要求,或者達(dá)到一定的進(jìn)化代數(shù),則進(jìn)化停止;否則返回步驟(3)。
這里分別用BP 神經(jīng)網(wǎng)絡(luò)和遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)2 種方法對(duì)供暖系統(tǒng)熱負(fù)荷進(jìn)行預(yù)測(cè)。通過對(duì)影響熱負(fù)荷變化的各種因素進(jìn)行分析,發(fā)現(xiàn)可能的輸入變量有:在供暖系統(tǒng)方面,供水流量、供水溫度、回水溫度等;在外部條件方面,室外溫度、風(fēng)速風(fēng)向、太陽照射率、氣壓等,在時(shí)間性方面,是否工作日、白天還是晚上等[9]。根據(jù)數(shù)據(jù)獲取的難易程度和數(shù)據(jù)來源情況,本文在選擇影響供暖負(fù)荷的輸入變量時(shí),綜合考慮、簡(jiǎn)化各輸入變量,最后確定將是否工作日、室外溫度、日照時(shí)數(shù)和前3 天的負(fù)荷溫度等6 個(gè)影響因素作為輸入變量。
熱負(fù)荷預(yù)測(cè)模型的輸出變量的選取是根據(jù)系統(tǒng)不同的運(yùn)行方式來選擇的。一般情況下的控制方式主要有2 種:一是以控制回水壓差為主的控制方式,采用這種控制方式的供暖系統(tǒng)預(yù)測(cè)模型一般選擇供回水壓差作為輸出變量;另一種是以控制溫度為主的運(yùn)行方式,一般選擇供回水溫度作為輸出變量。本論文針對(duì)的是以控制溫度為主的供暖系統(tǒng),因此把供水溫度,也就是負(fù)荷溫度作為輸出變量。
本文對(duì)收集的500 個(gè)供暖系統(tǒng)熱負(fù)荷樣本數(shù)據(jù)進(jìn)行學(xué)習(xí)和預(yù)測(cè),其中400 個(gè)樣本數(shù)據(jù)作為學(xué)習(xí)樣本,另外100 個(gè)樣本數(shù)據(jù)作為預(yù)測(cè)樣本[10]。部分輸入樣本如表1 所示。
為了避開Sigmoid 函數(shù)的飽和區(qū)域,使輸出量隨著輸入量的變化較為明顯,在仿真實(shí)驗(yàn)中,先對(duì)樣本數(shù)據(jù)作歸一化處理。本文選取的BP 神經(jīng)網(wǎng)絡(luò)為3 層,網(wǎng)絡(luò)為6-5-1 結(jié)構(gòu),輸入層有6 個(gè)節(jié)點(diǎn),隱含層有5 個(gè)節(jié)點(diǎn),輸出層僅有1 個(gè)節(jié)點(diǎn)。本文的BP 算法采用L-M 算法,學(xué)習(xí)率選為0.1。在遺傳算法的優(yōu)化過程中,種群規(guī)模取40,最大進(jìn)化代數(shù)取80[11]。
表1 部分輸入樣本
用遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)算法對(duì)400 個(gè)學(xué)習(xí)樣本數(shù)據(jù)進(jìn)行訓(xùn)練[12],得到的訓(xùn)練結(jié)果如圖4 所示。其中遺傳算法的優(yōu)化過程如圖5 所示。
圖4 遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練結(jié)果
由圖4 可知其算法的訓(xùn)練誤差為294.958 3。用訓(xùn)練好的網(wǎng)絡(luò)對(duì)100 個(gè)預(yù)測(cè)樣本進(jìn)行預(yù)測(cè)[13],其預(yù)測(cè)的結(jié)果如圖6所示。
其預(yù)測(cè)得到的絕對(duì)誤差[14]結(jié)果為73.965 3,相對(duì)誤差結(jié)果為0.017 3,如圖7 和圖8 所示。
圖7 遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)結(jié)果的絕對(duì)誤差
圖8 遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)算法的預(yù)測(cè)結(jié)果的相對(duì)誤差
作為對(duì)比試驗(yàn),用BP 神經(jīng)網(wǎng)絡(luò)對(duì)400 個(gè)學(xué)習(xí)樣本數(shù)據(jù)進(jìn)行訓(xùn)練[15],得到的訓(xùn)練結(jié)果如圖9 所示。
圖9 BP 神經(jīng)網(wǎng)絡(luò)算法的訓(xùn)練結(jié)果
由圖9 可知其算法的訓(xùn)練誤差為305.109 8。用訓(xùn)練好的網(wǎng)絡(luò)對(duì)100 個(gè)預(yù)測(cè)樣本進(jìn)行預(yù)測(cè),其預(yù)測(cè)的結(jié)果如圖10所示。
圖10 BP 神經(jīng)網(wǎng)絡(luò)算法的預(yù)測(cè)結(jié)果
其預(yù)測(cè)得到的絕對(duì)誤差結(jié)果為85.232 7,相對(duì)誤差結(jié)果為0.019 7。
由上面的實(shí)驗(yàn)結(jié)果可看到,遺傳算法優(yōu)化的BP 神經(jīng)網(wǎng)絡(luò)算法的訓(xùn)練結(jié)果的誤差比BP 神經(jīng)網(wǎng)絡(luò)算法的訓(xùn)練結(jié)果的誤差要小,遺傳算法優(yōu)化的BP 神經(jīng)網(wǎng)絡(luò)算法的預(yù)測(cè)結(jié)果的絕對(duì)誤差和相對(duì)誤差也比BP 神經(jīng)網(wǎng)絡(luò)算法的訓(xùn)練結(jié)果的誤差要小。其原因是BP 算法容易陷入局部極小點(diǎn),而遺傳算法搜索的是全局極小點(diǎn),所以遺傳算法優(yōu)化的BP 神經(jīng)網(wǎng)絡(luò)算法要比BP 神經(jīng)網(wǎng)絡(luò)算法得到更好的訓(xùn)練結(jié)果,其預(yù)測(cè)結(jié)果也更好,如表2 所示。
表2 兩種方法的誤差對(duì)比表
本文針對(duì)供暖系統(tǒng)熱負(fù)荷短期預(yù)測(cè)問題,利用改進(jìn)的遺傳算法對(duì)BP 神經(jīng)網(wǎng)絡(luò)的初始權(quán)值和閾值進(jìn)行優(yōu)化,并在遺傳進(jìn)化過程中采取保留最佳個(gè)體的方法。該方法克服了一般BP 網(wǎng)絡(luò)初始權(quán)值的隨機(jī)性和網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練過程中的所帶來的網(wǎng)絡(luò)震蕩,以及一般BP 網(wǎng)絡(luò)容易陷入局部極小等問題。從以上的結(jié)果分析可知,對(duì)于供暖系統(tǒng)熱負(fù)荷短期預(yù)測(cè),本文所采用的遺傳算法優(yōu)化的BP 神經(jīng)網(wǎng)絡(luò)具有全局尋優(yōu)能力,預(yù)測(cè)精度高,絕對(duì)和相對(duì)誤差較小,收斂速度快,能夠有效針對(duì)供暖系統(tǒng)熱負(fù)荷進(jìn)行短期預(yù)測(cè)。
[1]康勝文.兩種熱負(fù)荷預(yù)測(cè)方法的比較[J]. 區(qū)域供暖,2004(2):22-24.
[2]李敏強(qiáng).遺傳算法的基本理論與應(yīng)用[M].北京:科學(xué)出版社,2002.
[3]王崇駿,于汶滌,陳兆乾,等.一種基于遺傳算法的BP 神經(jīng)網(wǎng)絡(luò)算法及其應(yīng)用[J].南京大學(xué)學(xué)報(bào):自然科學(xué)版,2003(5):459-466.
[4]周明,孫樹棟.遺傳算法原理及應(yīng)用[M].北京.國(guó)防工業(yè)出版社,1998:11-12.
[5]劉嚴(yán)崴.基于神經(jīng)網(wǎng)絡(luò)的供熱系統(tǒng)負(fù)荷預(yù)測(cè)[D].天津:天津大學(xué),2009.
[6]楊梅,卿曉霞,王波.基于改進(jìn)遺傳算法的神經(jīng)網(wǎng)絡(luò)優(yōu)化方法[J].計(jì)算機(jī)仿真,2009(5):198-201.
[7]唐麗杰.城市供暖系統(tǒng)的數(shù)據(jù)采集與算法研究[D].濟(jì)南:山東輕工業(yè)學(xué)院,2007.
[8]雷英杰,張善文,李續(xù)武,等. 遺傳算法工具箱及應(yīng)用[M].北京:中國(guó)水利水電出版社,2005.
[9]歐陽玉梅,馬志強(qiáng),方若森.基于MATLAB 的遺傳神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn)[J].信息技術(shù),2008(06): 73-76.
[10]彭嵐,何大鵬,李友榮.基于BP 神經(jīng)網(wǎng)絡(luò)的工業(yè)鍋爐房負(fù)荷預(yù)測(cè)[J].工業(yè)加熱,2006(5): 31-33.
[11]陳路路.基于負(fù)荷預(yù)測(cè)的集中供熱系統(tǒng)能效研究[D].濟(jì)南:山東建筑大學(xué),2013.
[12]李超.基于自適應(yīng)遺傳算法的BP 神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)研究及應(yīng)用[D].西安:陜西師范大學(xué),2012.
[13]聞新,周露.MATLAB 神經(jīng)網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)[M].北京:科學(xué)出版社,2002:207-302.
[14]高雋.人工神經(jīng)網(wǎng)絡(luò)原理及仿真實(shí)例[M].2 版.北京:機(jī)械工業(yè)出版社,2007:44-48.
[15]周開利,康耀紅.神經(jīng)網(wǎng)絡(luò)模型及其MATLAB 仿真程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2004.
[16]鄧代強(qiáng),朱永建,李健,等.基于BP 神經(jīng)網(wǎng)絡(luò)的充填料漿流變參數(shù)預(yù)測(cè)分析[J].武漢理工大學(xué)學(xué)報(bào),2012(7):82-87.