蔣 杰,張江鑫
(浙江工業(yè)大學(xué)信息工程學(xué)院,浙江 杭州 310014)
隨著城市交通系統(tǒng)的快速發(fā)展,移動互聯(lián)、車路協(xié)同、主動安全、自主高效的新一代合作智能交通系統(tǒng)(C-ITS)已經(jīng)成為未來道路交通管理系統(tǒng)的關(guān)鍵推動者[1]。其中,短時交通流量預(yù)測是智能交通系統(tǒng)研究的核心問題。
關(guān)于預(yù)測,早期的預(yù)測模型有移動平均模型(MA)、歷史平均模型(HA)、自回歸模型(AR)、自回歸移動平均模型(ARIMA)等,這些模型的理論基礎(chǔ)多數(shù)是線性估計模型[2],然而實際的交通是一個復(fù)雜、隨機性干擾、非線性系統(tǒng),所以這些模型的預(yù)測效果難以保證。相比之下,神經(jīng)網(wǎng)絡(luò)能夠作為多維非線性函數(shù)的通用模型,不用受非線性模型的約束,又能通過學(xué)習(xí)以任意精度逼近復(fù)雜的非線性映射,其學(xué)習(xí)算法在工程上容易實現(xiàn),因此神經(jīng)網(wǎng)絡(luò)模型更適合用于不確定性與非線性的交通流預(yù)測[3-4]。其中,BP 神經(jīng)網(wǎng)絡(luò)是最常使用的預(yù)測模型,但該模型在解決此類問題時自身存在一些不足之處,如收斂速度緩慢,且易陷入局部最優(yōu)解[5],對于BP神經(jīng)網(wǎng)絡(luò)存在的缺點,文獻[6]是通過采用加動量項來提高收斂速度,同時在BP神經(jīng)網(wǎng)絡(luò)算法迭代的過程中,使步長進行自適應(yīng)調(diào)整,但BP神經(jīng)網(wǎng)絡(luò)算法的初始權(quán)閾值是隨機生成的,因此這種改進方法并不能保證每次預(yù)測結(jié)果都較為準(zhǔn)確。文獻[7-8]是根據(jù)遺傳算法的原理,將BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)閾值作為變量引入到遺傳算法中,通過選擇、交叉、變異等一系列操作后得出最優(yōu)解,但其算法的參數(shù)較多,而且參數(shù)的選擇大部分是根據(jù)經(jīng)驗,并且不能夠及時利用網(wǎng)絡(luò)的反饋信息,搜索速度比較慢,要得要較精確的解需要較多的訓(xùn)練時間,算法對初始種群的選擇有一定的依賴性,因此預(yù)測效果也不能保證。文獻[9-10]是根據(jù)粒子群算法收斂速度快,設(shè)置的參數(shù)少等優(yōu)點,對BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)閾值進行計算,但其局部尋優(yōu)能力較差,后期多樣性的丟失導(dǎo)致算法容易過早收斂。
針對上述不足之處,本文提出了采用改進蟻群算法的方法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)來進行短時交通流量預(yù)測。主要思路是采用蟻群算法確定BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)閾值,同時考慮到蟻群算法也易出現(xiàn)停滯現(xiàn)象,因此對蟻群算法進行改進,從而提高預(yù)測性能。
神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)的計算系統(tǒng)不同,它的學(xué)習(xí)能力使其可以解決諸如預(yù)測交通流量一類的復(fù)雜問題。反饋式神經(jīng)網(wǎng)絡(luò)(BP)是一種按信號向前傳輸、誤差反向傳輸?shù)亩鄬忧梆伾窠?jīng)網(wǎng)絡(luò),已廣泛應(yīng)用于交通預(yù)測[11]。用BP神經(jīng)網(wǎng)絡(luò)進行短時交通流預(yù)測大致可分為兩個階段:BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練階段和短時交通流量預(yù)測階段。
BP神經(jīng)網(wǎng)絡(luò)短時交通流量預(yù)測模型框圖如圖1所示。
圖1 BP神經(jīng)網(wǎng)絡(luò)短時交通流量預(yù)測框圖
其步驟可總結(jié)如下:
1)對歷史交通流數(shù)據(jù)進行預(yù)處理。
2)建立BP神經(jīng)網(wǎng)絡(luò),并確定神經(jīng)網(wǎng)絡(luò)的輸入層節(jié)點個數(shù)和輸出層節(jié)點個數(shù)。
3)生成樣本數(shù)據(jù)庫,并劃分訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)的比例。
4)確定BP神經(jīng)網(wǎng)絡(luò)的隱層數(shù)及各隱層的節(jié)點數(shù)。
5)改進蟻群算法確定BP神經(jīng)網(wǎng)絡(luò)的權(quán)閾值。
6)輸入測試數(shù)據(jù),進行短時交通流量預(yù)測。
蟻群算法的基本思路如下:螞蟻在已通過的路上釋放一定量的信息素,后面的螞蟻,通過識別前一個螞蟻所遺留在道路上的信息素,會朝著信息素濃度較大的路徑上行進,并且同時自身也釋放信息素,這樣,大量的螞蟻的移動狀態(tài)能形成一個信息素的正反饋機制,信息素積累小的路徑會隨著逐漸由于螞蟻的減少和信息素的消散,最終減少甚至是選擇為零,最終通過不斷的搜尋和影響,整個蟻群能找到一條最短的路徑[12]。
在尋找解的過程中,螞蟻是通過感知道路上信息素量的大小來決定走哪條路,濃度越高,選擇的幾率越大,反之亦然,但信息素會不斷揮發(fā)的,本文采用信息素自適應(yīng)揮發(fā)參數(shù)來代替固定的值。在一次迭代結(jié)束后,全部螞蟻會更新信息素,本文采用精英保留策略,將符合要求的種群留下,不符合要求的加入變異因子,然后重新迭代循環(huán)。
在使用蟻群算法構(gòu)建解的過程中,構(gòu)建自適應(yīng)揮發(fā)系數(shù)ρ的思想來確定 BP 神經(jīng)網(wǎng)絡(luò)的權(quán)閾值,基本蟻群算法的揮發(fā)系數(shù)ρ,在初始化時給一個初始值,在之后的迭代中不再使用固定不變的值,而是每次更新迭代的同時進行自適應(yīng)的改變,揮發(fā)系數(shù)公式如下
(1)
其中,NC表示循環(huán)次數(shù),NCmax表示最大循 環(huán)次數(shù),ρstart表示初始化是給定的初始值。
如果揮發(fā)系數(shù)過大,可能直接導(dǎo)致振蕩現(xiàn)象的出現(xiàn),如果揮發(fā)系數(shù)過小,使得收斂的速度比較緩慢,所以采用自適應(yīng)的揮發(fā)系數(shù),前期可以增強收斂能力,后期揮發(fā)系數(shù)越大,也就越能避免振蕩現(xiàn)象的出現(xiàn)。
在全局信息素更新過后,需要根據(jù)需求對種群進行選擇,對蟻群個體適應(yīng)度也就是信息素濃度的判斷,如果適應(yīng)度大于平均值,則繼續(xù)更新迭代,小于平均值的部分,加入變異因子α,使新的種群加入循環(huán),繼續(xù)迭代尋優(yōu)。其中判斷適應(yīng)度的公式如下
(2)
(3)
其中,公式中P0=(最好適應(yīng)度-最差適應(yīng)度)/螞蟻個數(shù),fitness為適應(yīng)度,用來評判當(dāng)前螞蟻種群的好壞標(biāo)準(zhǔn),fitness(i)是當(dāng)前螞蟻i信息濃度的值。pop(i,α) 表示當(dāng)前蟻群種群中加入變異因子,i表示當(dāng)前的螞蟻序號,rand是隨機值,α是變異因子。
使用精英選擇策略可以使螞蟻系統(tǒng)快速找出最優(yōu)解,如果螞蟻數(shù)量過多,搜索便會迅速地聚集在極優(yōu)值的附近,從而導(dǎo)致搜索早熟收斂,所以,選擇合適的精英螞蟻數(shù)量有利于避免算法在迭代中陷入極值。
根據(jù)2.3節(jié)的思想,針對計算結(jié)果較差的種群,加入變異因子,增加變量的多樣性,為后期尋找解提供更多的可能性,其中加入變異因子α的公式如下
α=5×rands(1,1)
(4)
其中,rands表示產(chǎn)生隨機數(shù)組的函數(shù)。
在蟻群算法迭代到后期,很容易陷入局部極值,加入變異因子主要是為了增加多樣性,為尋找解提供更多的可能性。
當(dāng)建立好一個BP神經(jīng)網(wǎng)絡(luò)之后,就可將數(shù)據(jù)樣本輸入網(wǎng)絡(luò)對其進行訓(xùn)練并實現(xiàn)對短時交通流的預(yù)測。通常情況下,BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值是隨機產(chǎn)生值,此外,由于BP算法是一種梯度最速下降算法,因此其不可避免地容易陷入局部極小值。蟻群算法是一種具有較好全局優(yōu)化能力的智能算法,故可將蟻群算法與BP神經(jīng)網(wǎng)絡(luò)進行結(jié)合,利用蟻群算法的全局尋優(yōu)特性克服BP算法存在的不足[13]。
改進蟻群算法確定BP神經(jīng)網(wǎng)絡(luò)權(quán)閾值的流程圖如圖2所示。
圖2 改進ACO確定BP神經(jīng)網(wǎng)絡(luò)的權(quán)閾值流程圖
權(quán)閾值確定的步驟如下:
Step2:所有螞蟻從第一個集合開始依次從128個集合中分別選取一個隨機數(shù),當(dāng)全部螞蟻都完成了在某一集合中的數(shù)據(jù)選擇后,才跳到下一集合,直到結(jié)束。其中,第k只螞蟻選擇集合I中的第j個元素的概率公式為
(5)
其中,τj(I)表示集合I的第j個元素信息素值。
Step3:在該次迭代中,m只螞蟻得出的解作為BP神經(jīng)網(wǎng)絡(luò)的權(quán)閾值,輸入訓(xùn)練數(shù)據(jù),并計算該次訓(xùn)練的均方誤差(MSE),公式如下
(6)
將128只螞蟻計算得到的最小的均方誤差即最優(yōu)解(MSEbest)記錄下來。
Step4:在一次迭代完成后,進行全局信息素更新,任一個集合I所有元素更新的公式如下
(7)
Δτ=1/MSEbest
(8)
其中,ρ是信息素?fù)]發(fā)系數(shù),τ表示信息素值。
Step5:在全局信息素更新過后,對信息素值進行精英選擇策略,如果信息素值大于平均值,則繼續(xù)迭代,反之,則加入變異因子,然后加入迭代,其中判斷公式如3.3節(jié)所示。
Step6:加入變異因子,其中公式如3.4節(jié)所示。
Step7:重復(fù)Step2~Step6,直到循環(huán)結(jié)束,退出循環(huán)。
實驗是在Intel(R)Core(TM)i5-3230M CPU @ 2.60GHz 2.20GHz,內(nèi)存為6.00GB,操作系統(tǒng)為Window10中文版 64位,采用Matlab 2016a進行仿真。
本文采用的是雙隱層的BP神經(jīng)網(wǎng)絡(luò),輸入節(jié)點數(shù)為7,隱層1節(jié)點數(shù)為11,隱層2節(jié)點數(shù)為3,輸出層節(jié)點數(shù)為1。訓(xùn)練輸入數(shù)據(jù)共6720(7×960)個,訓(xùn)練輸出數(shù)據(jù)共96(1×96)個,測試輸入數(shù)據(jù)共672(7×96)個,測試輸出數(shù)據(jù)共96(1×96)個。
選取四川南充公路的西河南路與西門壩街十字交通路口北向南方向作為測試對象,預(yù)測的是3月28號的流量,選取的路口如圖3所示,根據(jù)采集的三個月的交通流量數(shù)據(jù),分別用遺傳優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法,粒子群優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法,魚群優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法,本文算法進行仿真,實驗結(jié)果如圖4所示,其中圖(a)、(b)、(c)、(d)分別是遺傳優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法、粒子群優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法、魚群優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法和本文算法。
圖3 南充市西河南路與西門壩街十字路口
圖4 各種算法預(yù)測流量與誤差
作為對短時交通流預(yù)測結(jié)果好壞的評估,本文也引入了常用的誤差指標(biāo),即均等系數(shù)EC、平均相對誤差MRE和平均絕對誤差MAE作為交通流預(yù)測誤差的衡量指標(biāo)。
通常情況下,當(dāng)EC 值大于0.9 時,就可認(rèn)為是較好的預(yù)測結(jié)果[14]。MAE、MRE,反應(yīng)預(yù)測誤差的大小,數(shù)值越小,預(yù)測效果越好。
根據(jù)實際的交通情況,城市道路車流量在不同時間段內(nèi)有較大差別,比如每天上班時間的早晚高峰,以及夜間流量較少等情況,本文按0點到7點、7點至17點、17點至20點、20點至24點分成4段,實驗路口幾種算法的質(zhì)量評價如表1、2、3、4所示,全天評價指標(biāo)為表5。
表1 0點至7點各算法質(zhì)量評價
表2 7點至17點各算法質(zhì)量評價
表3 17點至20點各算法質(zhì)量評價
表4 20點至24點各算法質(zhì)量評價
表5 0點至24點各算法質(zhì)量評價
如表1所示,在0點至7點之間,車流量較小,本文算法的EC值均優(yōu)于其它算法,比相對最好的遺傳算法高了0.0043415。
在絕對誤差MRE上,本文算法比相對最優(yōu)的遺傳算法低了14.88%。在相對誤差MAE上,本文算法比相對最優(yōu)的遺傳算法降低了3.93%。
從表1和圖4(d)本文算法在0點到7點之間不論是預(yù)測效果還是誤差方面均為最優(yōu)。
如表2所示,在7點至17點之間,本文算法的EC值比相對最優(yōu)的遺傳算法高了0.0059181。在絕對誤差MRE上,本文算法比魚群算法低了16.15%,在相對誤差MAE上,本文算法比較好的魚群算法低了15.33%。
從評價指標(biāo)來看,本文預(yù)測的結(jié)果相對較好,與其它算法誤差相對較小,且EC值大于0.9,可認(rèn)為是較好的預(yù)測結(jié)果。
從表2和圖4(d)可以看出,車流量處于白天高峰時段,從評價指標(biāo)可以看出,本文算法最優(yōu),可認(rèn)為預(yù)測效果較好。
如表3所示,17點到20點之間出現(xiàn)了流量高峰,本文算法的EC值比最優(yōu)的遺傳算法高了0.000219。在絕對誤差MRE上,本文算法比魚群算法低了2.95%。在相對誤差MAE上,本文算法比粒子群低了1.31%。
從表3和圖4(d)可以看出,本文算法對流量高峰的趨勢預(yù)測更準(zhǔn)確,相較于其余幾種算法在高峰時段內(nèi)的預(yù)測結(jié)果更優(yōu)。在EC值和誤差指標(biāo)上,本文算法均為最優(yōu)。
如表4所示,本文算法的EC值均優(yōu)于其它算法,比相對較優(yōu)的粒子群算法高了0.0094。在絕對誤差MRE上,本文算法比遺傳算法低了11.59%。在相對誤差MAE上,本文算法比魚群算法低了10.78%。
從表4和圖4(d)可以看出,20點過后,車流量逐漸減少,本文算法相較于其余幾種算法在該時段內(nèi)的預(yù)測結(jié)果更優(yōu)。在EC值和誤差指標(biāo)上,本文算法均為最優(yōu)。
如表5所示,本文算法的EC值均優(yōu)于其它算法,比相對較好的遺傳算法高了0.0029657。在絕對誤差MRE上,本文算法比相對較好的遺傳算法低了8.16%。在相對誤差MAE上,本文算法比遺傳算法低了4.43%。
從表5和圖4(d)可以看出,在全天范圍內(nèi),本文算法比其它算法在三個指標(biāo)上更好,實際的預(yù)測效果也更好。
本文利用改進蟻群算法的全局搜索能力來優(yōu)化 BP 神經(jīng)網(wǎng)絡(luò)的初始權(quán)閾值,既可以很好地避免其陷入局部最優(yōu)值,又能一定程度地縮短收斂時間,與未優(yōu)化的 BP 神經(jīng)網(wǎng)絡(luò)相比,大大提高了預(yù)測精度且處于合理范圍內(nèi)。相較于其它幾類的優(yōu)化算法,預(yù)測的流量也更好地擬合出交通流的各種變化規(guī)律,從而使其較準(zhǔn)確地反映出未來路面交通狀況,為人們的出行提供便利,方便交通管理部門掌握流量情況,及時進行引導(dǎo)和分流,有一定的實用價值。