蔡延光,樂(lè) 冰,蔡 顥,李旭陽(yáng)
(1.廣東工業(yè)大學(xué) 自動(dòng)化學(xué)院,廣州 510006; 2.奧爾堡大學(xué) 健康科學(xué)與工程系,丹麥 奧爾堡 9220)
不良天氣會(huì)給高速公路交通安全和高速公路網(wǎng)的正常運(yùn)行帶來(lái)較大影響。據(jù)統(tǒng)計(jì),全國(guó)高速公路發(fā)生的交通阻斷事件大約有三分之一是由于不良天氣原因所致,大霧、暴雨和降雪等天氣環(huán)境還會(huì)導(dǎo)致交通擁堵和事故率顯著上升[1]。由于傳統(tǒng)的徑向基函數(shù)(RBF)神經(jīng)網(wǎng)絡(luò)不能對(duì)不良天氣下的交通流進(jìn)行有效預(yù)測(cè),為了能夠準(zhǔn)確預(yù)測(cè)交通流狀態(tài)信息,文獻(xiàn)[2]使用布谷鳥搜索(Cuckoo Search,CS)算法對(duì)小波神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)參數(shù)進(jìn)行尋優(yōu),通過(guò)與其他算法的仿真對(duì)比驗(yàn)證了其能取得較好的預(yù)測(cè)效果。CS算法模擬布谷鳥尋找最優(yōu)鳥巢位置而進(jìn)行不斷迭代的過(guò)程,其具有較強(qiáng)的全局尋優(yōu)能力,能夠很好地應(yīng)用于工程問(wèn)題優(yōu)化任務(wù)。但是,CS算法在迭代過(guò)程中由于搜索能力的限制導(dǎo)致其不能跳出當(dāng)前最優(yōu)解,從而降低了算法性能。為提高CS算法的搜索能力,文獻(xiàn)[3]利用混沌序列來(lái)確定CS算法的初始解,通過(guò)混沌初始化種群以加快種群的收斂速度。文獻(xiàn)[4]提出一種自適應(yīng)步長(zhǎng)調(diào)整CS算法,其能夠有效避免算法陷入局部最優(yōu)。文獻(xiàn)[5]在CS算法中引入高斯擾動(dòng)對(duì)鳥巢位置更新進(jìn)行優(yōu)化,擴(kuò)大了每個(gè)解的搜索范圍并能夠得到較好的全局解。上述算法雖然能避免CS算法陷入局部最優(yōu),但在求解一些復(fù)雜度較高的問(wèn)題時(shí)會(huì)導(dǎo)致算法訓(xùn)練時(shí)間過(guò)長(zhǎng)以及算法發(fā)散等問(wèn)題。為此,本文提出一種基于猴爬山過(guò)程的自適應(yīng)CS算法,將改進(jìn)后的CS算法與RBF神經(jīng)網(wǎng)絡(luò)相結(jié)合[6-8],建立改進(jìn)的CS-RBFNN模型,以對(duì)暴雨天氣下的高速公路短時(shí)交通流進(jìn)行預(yù)測(cè)。
CS算法[9]是一種模仿布谷鳥尋覓窩巢產(chǎn)蛋行為的啟發(fā)式智能優(yōu)化算法。布谷鳥不同于一般的鳥類,其繁衍后代時(shí)只產(chǎn)蛋,不親自進(jìn)行孵化。鳥蛋的孵化是靠其他種群的鳥類來(lái)實(shí)現(xiàn),即布谷鳥在一定空間內(nèi)搜索所有的鳥巢,將自己產(chǎn)的蛋與其他鳥類的蛋混雜在一起,其他鳥類無(wú)法辨認(rèn)蛋是否為自己所生產(chǎn),因此會(huì)對(duì)鳥巢中所有的蛋進(jìn)行孵化。但其中某些鳥類比較聰明,很容易識(shí)別出外來(lái)的鳥蛋,然后損壞布谷鳥鳥蛋或拋棄自己的整個(gè)鳥巢,最后重新尋找位置以修建新的鳥巢[10]。CS算法在迭代過(guò)程中需要遵循以下原則:
1)布谷鳥將自己的鳥蛋隨機(jī)打亂,并將鳥蛋放在其他鳥類的鳥巢中。
2)算法保留每次計(jì)算的最優(yōu)解。
3)假設(shè)其他鳥類的鳥巢數(shù)不變,其他鳥類識(shí)別出某蛋是外來(lái)鳥蛋的概率為Pa,Pa值在0~1之間。
CS算法中的鳥巢相當(dāng)于解向量,在迭代過(guò)程中,首先初始化n個(gè)解向量,通過(guò)適應(yīng)度函數(shù)f評(píng)價(jià)各個(gè)解向量,最優(yōu)解被保留,其他解根據(jù)萊維飛行策略尋找新的鳥巢,通過(guò)適應(yīng)度函數(shù)計(jì)算并保留較優(yōu)的解,當(dāng)其他鳥類以Pa識(shí)別出布谷鳥鳥蛋時(shí),則拋棄該鳥巢,拋棄的同時(shí)隨機(jī)產(chǎn)生新的鳥巢位置,評(píng)價(jià)并保留較好的解,至此一次迭代完成。算法經(jīng)過(guò)多次迭代,在達(dá)到一定條件時(shí)就得到最終解。布谷鳥尋窩路徑的位置更新過(guò)程如式(1)所示:
(1)
(2)
依照布谷鳥尋找最優(yōu)鳥巢位置的過(guò)程,CS算法的具體步驟如下:
步驟1CS算法初始化。其他種類鳥的鳥巢數(shù)為n,適應(yīng)度函數(shù)為f(X),X=(x1,x2…,xi)T,i=1,2,…,n,其他種類鳥識(shí)別出鳥蛋的概率為Pa,允許的誤差為ε,算法的最大迭代次數(shù)為tmax。
步驟2按照適應(yīng)度函數(shù)f(X)求出所有鳥巢位置的值,并找出當(dāng)前最優(yōu)解。
步驟3鳥巢位置更新。其他鳥巢位置按式(1)進(jìn)行更新。
步驟4計(jì)算更新后鳥巢位置的f(X),并與更新前最優(yōu)鳥巢位置進(jìn)行比較。
步驟5如果更新后的鳥巢位置優(yōu)于更新前的位置,則更新后的鳥巢位置與更新前位置進(jìn)行交換,其成為當(dāng)前最優(yōu)解;否則保持原始最優(yōu)鳥巢位置。
步驟6產(chǎn)生一個(gè)0~1之間的數(shù),將其與其他種類鳥識(shí)別出鳥蛋的概率Pa進(jìn)行比較,若該數(shù)比Pa大,則隨機(jī)改變鳥巢位置。
步驟7保留當(dāng)前最優(yōu)鳥巢位置。
步驟8若達(dá)到最大迭代次數(shù)或滿足允許的誤差,則轉(zhuǎn)步驟7;否則,轉(zhuǎn)步驟2。
步驟9輸出算法所求解。
CS算法的搜索結(jié)果很大程度上受步長(zhǎng)因子的影響,當(dāng)步長(zhǎng)設(shè)置太大時(shí),會(huì)導(dǎo)致搜索精度較低;當(dāng)步長(zhǎng)設(shè)置太小時(shí),會(huì)增加算法的訓(xùn)練時(shí)間,降低尋優(yōu)速度。CS算法對(duì)鳥巢位置的更新也與Pa有關(guān),Pa概率選擇過(guò)大或過(guò)小,都會(huì)影響CS算法的性能,因此,對(duì)于CS算法中步長(zhǎng)α和概率Pa的選擇非常重要。在一般情況下,CS算法中的步長(zhǎng)α和概率Pa都不變,由于α和Pa不會(huì)隨著算法尋優(yōu)過(guò)程進(jìn)行變化,從而導(dǎo)致算法搜尋時(shí)間過(guò)長(zhǎng)或者出現(xiàn)發(fā)散的情況。本文擬在CS算法的基礎(chǔ)上引入猴爬山過(guò)程策略,利用猴群算法中的爬山過(guò)程對(duì)CS算法進(jìn)行優(yōu)化[11]。
1.3.1 猴爬山過(guò)程策略改進(jìn)
猴群算法是模擬猴子爬山最終達(dá)到山頂過(guò)程中的一些行為特性的優(yōu)化算法。猴群算法通過(guò)猴子的爬、望、跳3種行為進(jìn)行迭代,按照算法特定的路線逐漸地接近整個(gè)群體最優(yōu)解。猴群算法中的爬行為在每次迭代過(guò)程中都需要運(yùn)行多次,在每次爬的過(guò)程中,產(chǎn)生的新位置都是局部最優(yōu)解,因此,爬過(guò)程對(duì)算法性能的影響極大,爬過(guò)程中的步長(zhǎng)設(shè)置更為重要,步長(zhǎng)設(shè)置過(guò)大,雖然能減少迭代次數(shù),但會(huì)降低求解精度;當(dāng)步長(zhǎng)設(shè)置過(guò)小,情況則相反。本文采用自適應(yīng)改變步長(zhǎng)的策略來(lái)更新爬過(guò)程,再對(duì)CS算法鳥巢位置的更新進(jìn)行優(yōu)化[12]。猴群爬過(guò)程改進(jìn)策略的具體過(guò)程如下:
步驟1對(duì)于猴子i,其當(dāng)前位置為xi=(xi1,xi2,…,xin),i=1,2,…,M,其中,M為猴子的數(shù)量,n為所求解的維數(shù),引入一個(gè)增加爬過(guò)程的系數(shù)Δxi,Δxi=(Δxi1,Δxi2,…,Δxin),其滿足:
a>0,j=1,2,…,n
(3)
其中,a為爬山步長(zhǎng),本文采用自適應(yīng)改變步長(zhǎng)的策略,具體如式(4)所示:
(4)
其中,amin為最小步長(zhǎng),amax為最大步長(zhǎng),at為第t代的爬山步長(zhǎng)。當(dāng)算法的更替次數(shù)較小時(shí),步長(zhǎng)at的值較大,能夠快速地移動(dòng)到最優(yōu)解附近;當(dāng)算法的更替次數(shù)較大時(shí),步長(zhǎng)慢慢變小,能夠避免步長(zhǎng)太大而錯(cuò)過(guò)最優(yōu)鳥巢位置,使得CS算法在迭代后期的全局尋優(yōu)能力開始減弱,局部尋優(yōu)的能力逐漸增強(qiáng)[13]。
步驟2計(jì)算偽梯度向量:
(5)
其中,向量f′i(xi)=(f′i1(xi),f′i2(xi),…,f′in(xi))為f(x)的偽梯度。
步驟3計(jì)算猴子i更新后的位置yi=(yi1,yi2,…,yin),其中,yi=xij+a·sign(f′ij(xi)),j=1,2,…,n,sign為符號(hào)函數(shù)。
步驟4若yi在合理范圍內(nèi),且滿足f(yi)≥f(xi),則用新鳥巢位置替換舊位置;否則,位置保持不變。
步驟5若達(dá)到最大迭代次數(shù)或滿足允許的誤差,則退出操作;否則,重復(fù)步驟1~步驟4。
1.3.2 識(shí)別概率自適應(yīng)更新策略
在尋優(yōu)過(guò)程中,由于搜索能力的限制,CS算法容易快速聚集到局部最優(yōu)解附近,導(dǎo)致算法提早收斂到局部最優(yōu)解而出現(xiàn)早熟狀態(tài),從而很難出現(xiàn)更好的適應(yīng)度值,即難以搜索到全局最優(yōu)。識(shí)別概率Pa設(shè)置過(guò)大或過(guò)小都會(huì)直接影響算法的收斂速度與求解精度。為此,本文采用改進(jìn)的識(shí)別概率來(lái)提高算法性能,具體如下:
(6)
其中,pmin為最小識(shí)別概率,pmax為最大識(shí)別概率。當(dāng)算法的更替次數(shù)較小時(shí),識(shí)別概率接近于pmax,隨著更替次數(shù)的增加,識(shí)別概率逐漸降低,當(dāng)?shù)螖?shù)接近tmax時(shí),識(shí)別概率接近pmin。當(dāng)種群的最佳個(gè)體接近全局最優(yōu)解時(shí),識(shí)別概率自適應(yīng)更新策略會(huì)縮小對(duì)種群的搜索范圍,并將當(dāng)前較好的解保留到下一代,使得算法在較短時(shí)間內(nèi)獲取最優(yōu)解。
本文基于改進(jìn)CS-RBFNN的交通流預(yù)測(cè)[14-16]步驟具體如下:
步驟1交通流數(shù)據(jù)的預(yù)處理。利用指數(shù)平滑法對(duì)歷史高速公路交通流數(shù)據(jù)進(jìn)行降噪,再按照如下公式對(duì)數(shù)據(jù)作最小-最大規(guī)范化處理:
將xik的值映射到[xnewmin,xnewmax]的區(qū)域中,其中,xnewmax與xnewmin分別為處理后數(shù)據(jù)的最大值和最小值,本文取xnewmax=0.8,xnewmin=0.1。
步驟2利用改進(jìn)CS算法對(duì)RBF神經(jīng)網(wǎng)絡(luò)參數(shù)進(jìn)行編碼。初始化算法參數(shù):其他種類鳥的鳥巢數(shù)為n,適應(yīng)度函數(shù)為f(X),X=(x1,x2,…,xi)T,其中i=1,2,…,n,猴爬山最小步長(zhǎng)為amin,最大步長(zhǎng)為amax,其他種類鳥最大識(shí)別概率為Pmax,最小識(shí)別概率為Pmin,允許的誤差為ε,算法的最大迭代次數(shù)為tmax。
步驟3按照適應(yīng)度函數(shù)f(X)求出所有鳥巢位置的值,并找出當(dāng)前最優(yōu)鳥巢位置。
步驟4改進(jìn)猴爬山過(guò)程策略:
1)對(duì)于鳥巢i,其當(dāng)前位置為xi=(xi1,xi2,…,xip),i=1,2,…,n,其中,n為鳥巢的數(shù)量,p為所求解的維數(shù),引入一個(gè)增加爬過(guò)程的系數(shù)Δxi。
2)采用自適應(yīng)改變步長(zhǎng)的策略,具體如式(4)所示。
3)計(jì)算偽梯度向量。
4)計(jì)算新的鳥巢位置yi。若yi在合理范圍內(nèi),且滿足f(yi)≥f(xi),則用新鳥巢位置替換舊位置;否則,位置保持不變。
5)若達(dá)到最大迭代次數(shù)或滿足允許的誤差,則退出操作;否則,重復(fù)步驟1)~步驟4)。
步驟5計(jì)算更新后鳥巢位置的f(X),并與更新前最優(yōu)鳥巢位置進(jìn)行比較。
步驟6如果更新后的鳥巢位置優(yōu)于更新前的位置,則更新后的鳥巢位置成為當(dāng)前最優(yōu)解;否則,保持原始最優(yōu)鳥巢位置。
步驟7產(chǎn)生一個(gè)0~1之間的數(shù),將其與其他種類鳥識(shí)別概率Pa進(jìn)行比較,若該數(shù)比Pa大,則隨機(jī)改變鳥巢位置。
步驟8保留當(dāng)前最優(yōu)鳥巢位置。
步驟9若達(dá)到最大迭代次數(shù)或滿足允許的誤差,則轉(zhuǎn)步驟10;否則,轉(zhuǎn)步驟3。
步驟10輸出算法所求解并解碼。
步驟11訓(xùn)練RBF神經(jīng)網(wǎng)絡(luò)。
步驟12利用訓(xùn)練好的RBF神經(jīng)網(wǎng)絡(luò)對(duì)暴雨天氣下的高速公路交通流進(jìn)行預(yù)測(cè)。
步驟13算法結(jié)束。
基于改進(jìn)CS-RBFNN的暴雨天氣下高速公路短時(shí)交通流預(yù)測(cè)流程如圖1所示。
圖1 基于改進(jìn)CS-RBFNN的暴雨天氣下高速公路 短時(shí)交通流預(yù)測(cè)流程
本文實(shí)驗(yàn)的交通流數(shù)據(jù)由某高速公路控制中心提供,采用2015年3月—7月共153天的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),每隔15 min統(tǒng)計(jì)一次車流量信息,單日樣本長(zhǎng)度為96,共獲取記錄14 688條,以2017年8月發(fā)生暴雨天氣的數(shù)據(jù)作為測(cè)試數(shù)據(jù)[17-19]。為了驗(yàn)證本文改進(jìn)CS-RBFNN交通流預(yù)測(cè)模型的性能,采用MATLAB實(shí)現(xiàn)仿真驗(yàn)證。設(shè)置算法參數(shù)為:M=18,n=150,amin=0.05,amax=0.2,pmin=0.1,pmax=0.4,學(xué)習(xí)率η=0.01,tmax=800,ε=10-5。
為顯示改進(jìn)CS-RBFNN的優(yōu)越性,本文分別基于改進(jìn)GSO-RBFNN和基本CS-RBFNN預(yù)測(cè)模型[20]設(shè)計(jì)2個(gè)對(duì)比實(shí)驗(yàn)。首先分析3種模型在預(yù)測(cè)-真實(shí)值和預(yù)測(cè)誤差上的差異性,其中,預(yù)測(cè)誤差采用帶符號(hào)的相對(duì)誤差?;诟倪M(jìn)GSO-RBFNN模型的暴雨天氣下高速公路交通流預(yù)測(cè)結(jié)果如圖2所示,基于基本CS-RBFNN和改進(jìn)CS-RBFNN模型的暴雨天氣下高速公路交通流預(yù)測(cè)結(jié)果分別如圖3、圖4所示。從圖2~圖4可以看出,改進(jìn)CS-RBFNN預(yù)測(cè)結(jié)果與實(shí)際交通流曲線基本吻合,其能夠很好地預(yù)測(cè)該路段車流量的走勢(shì),而改進(jìn)GSO-RBFNN和基本CS-RBFNN的預(yù)測(cè)結(jié)果與實(shí)際交通流曲線存在較大偏差,兩者不能有效地預(yù)測(cè)暴雨條件下的高速公路車流量。改進(jìn)CS-RBFNN、改進(jìn)GSO-RBFNN和基本CS-RBFNN 3種模型的預(yù)測(cè)誤差對(duì)比如圖5所示。
圖2 基于改進(jìn)GSO-RBFNN模型的暴雨天氣下高速 公路交通流預(yù)測(cè)結(jié)果
圖3 基于基本CS-RBFNN模型的暴雨天氣下高速 公路交通流預(yù)測(cè)結(jié)果
圖4 基于改進(jìn)CS-RBFNN模型的暴雨天氣下高速 公路交通流預(yù)測(cè)結(jié)果
圖5 3種模型的預(yù)測(cè)誤差對(duì)比結(jié)果
從圖5可以看出,基本CS-RBFNN模型的預(yù)測(cè)誤差較大,超過(guò)了0.3,改進(jìn)GSO-RBFNN模型的預(yù)測(cè)誤差在0.2以內(nèi),而改進(jìn)CS-RBFNN模型的預(yù)測(cè)誤差在0.1以內(nèi),其對(duì)暴雨條件下的高速公路車流量有很好的預(yù)測(cè)效果。
僅依據(jù)交通流預(yù)測(cè)曲線和誤差曲線并不能直觀反映交通流預(yù)測(cè)的各項(xiàng)評(píng)價(jià)指標(biāo),本文進(jìn)一步對(duì)3種模型預(yù)測(cè)效果的平均絕對(duì)百分比誤差(MAPE)、平均絕對(duì)誤差(MAE)、均方根誤差(RMSE)3個(gè)指標(biāo)進(jìn)行對(duì)比分析,結(jié)果如表1所示。
表1 3種模型的交通流預(yù)測(cè)性能對(duì)比
從表1可以看出,相比于其他2種預(yù)測(cè)模型,改進(jìn)CS-RBFNN模型的預(yù)測(cè)性能最優(yōu),其MAPE為8.2%,MAE為20.14,RMSE為19.2,改進(jìn)GSO-RBFNN模型預(yù)測(cè)性能次之,而基本CS-RBFNN模型預(yù)測(cè)性能最差。
本文針對(duì)暴雨天氣下高速公路交通流預(yù)測(cè)問(wèn)題進(jìn)行分析,將改進(jìn)的CS算法與RBF神經(jīng)網(wǎng)絡(luò)相結(jié)合,建立一種改進(jìn)的CS-RBFNN模型。在CS算法的基礎(chǔ)上引入猴爬山過(guò)程策略,利用猴群算法中的爬過(guò)程來(lái)優(yōu)化鳥巢位置的更新,再通過(guò)自適應(yīng)策略對(duì)識(shí)別概率進(jìn)行改進(jìn),以提高CS算法的全局搜索性并減少訓(xùn)練時(shí)間。將改進(jìn)的CS-RBFNN模型、基本CS-RBFNN模型和改進(jìn)的GSO-RBFNN模型進(jìn)行對(duì)比,結(jié)果表明,改進(jìn)的CS-RBFNN模型能夠較好地預(yù)測(cè)暴雨天氣下的高速公路交通流。下一步將考慮更多影響交通流量的實(shí)際因素,如節(jié)假日、交通事故等,以建立更精確的預(yù)測(cè)模型。此外,結(jié)合初始化策略以及鄰域搜索策略等對(duì)算法進(jìn)行改進(jìn)并提高短時(shí)交通流量預(yù)測(cè)的精度,也是今后的研究重點(diǎn)。