本發(fā)明涉及公共交通信息處理
技術(shù)領(lǐng)域:
,具體地說是一種基于遞歸神經(jīng)網(wǎng)絡(luò)的路網(wǎng)狀態(tài)預(yù)測(cè)方法。
背景技術(shù):
:隨著城市化進(jìn)程加快,交通擁堵問題日益突出,尤其是大城市,交通擁堵問題更為嚴(yán)峻,嚴(yán)重影響了人們的日常出行。城市道路日趨飽和,而汽車保有量卻逐年攀升,這種供需不平衡的關(guān)系加重了交通擁堵,而交通擁堵預(yù)測(cè)是緩解交通擁堵的重要途徑。在現(xiàn)有的專利中,已經(jīng)有一些針對(duì)交通狀態(tài)預(yù)測(cè)的方法,比較主流的方法包括Kalman濾波模型,時(shí)間序列模型,神經(jīng)網(wǎng)絡(luò)模型,參數(shù)回歸模型等。交通狀態(tài)變化具有非線性的特點(diǎn),還會(huì)因?yàn)橐恍┩话l(fā)事件而存在不確定性,Kalman濾波作為一種線性濾波器,適用性有限,而且存在滯后現(xiàn)象。時(shí)間序列模型不僅需要大量的歷史數(shù)據(jù),且對(duì)交通狀態(tài)變化的時(shí)敏性差,難以應(yīng)對(duì)突發(fā)事件,神經(jīng)網(wǎng)絡(luò)對(duì)參數(shù)初始化非常敏感,需要多次預(yù)測(cè)求取平均值,計(jì)算量大,且存在局部最優(yōu)解,容易出現(xiàn)過擬合,參數(shù)移植性較差。參數(shù)回歸模型難以表達(dá)交通狀態(tài)的不確定性、復(fù)雜性以及動(dòng)態(tài)特性等。此外,現(xiàn)有的專利大多是基于路段層面的交通狀態(tài)預(yù)測(cè),難以從宏觀角度把握路網(wǎng)狀態(tài)演變規(guī)律,難以把握交通狀態(tài)的復(fù)雜性、不確定性。而且基于路段層面的預(yù)測(cè)對(duì)交通設(shè)備要求高,個(gè)別點(diǎn)的數(shù)據(jù)缺失對(duì)預(yù)測(cè)精度會(huì)造成較大的影響,而基于路網(wǎng)層面的預(yù)測(cè)將有效解決這一問題,因?yàn)閺暮暧^角度上看,個(gè)別點(diǎn)數(shù)據(jù)的缺失對(duì)整個(gè)路網(wǎng)狀態(tài)預(yù)測(cè)影響較小。技術(shù)實(shí)現(xiàn)要素:本發(fā)明為解決以上現(xiàn)有技術(shù)的不足,提供一種基于遞歸神經(jīng)網(wǎng)絡(luò)的路網(wǎng)狀態(tài)預(yù)測(cè)方法,該方法能夠充分考慮路網(wǎng)狀態(tài)變化的時(shí)序性。基于路網(wǎng)層面的狀態(tài)預(yù)測(cè),對(duì)出行者來說,可以更好地規(guī)劃出行路徑,極大提高了出行效率。對(duì)管理者來說,從宏觀角度把握路網(wǎng)狀態(tài)演變趨勢(shì),可以更好地分析路網(wǎng)交通狀況,規(guī)劃交通網(wǎng)絡(luò),實(shí)現(xiàn)交通優(yōu)化控制。為了解決上述問題,本發(fā)明提供的技術(shù)方案包括:一種基于遞歸神經(jīng)網(wǎng)絡(luò)的路網(wǎng)狀態(tài)預(yù)測(cè)方法,所述方法包括以下步驟:步驟一、建立樣本集;選取一路網(wǎng),將路網(wǎng)劃分為k個(gè)路段,并對(duì)各個(gè)路段進(jìn)行編號(hào),記為(1,2,3,…,k),將一天24小時(shí)分成各個(gè)時(shí)間長(zhǎng)度一樣的j個(gè)時(shí)間段,計(jì)算各個(gè)路段在每個(gè)時(shí)間段的平均速度;計(jì)算完各個(gè)路段的平均速度之后,用一個(gè)狀態(tài)向量表示該時(shí)間段的路網(wǎng)狀態(tài),即Vj=[v1,j,v2,j,…,vk,j];考慮前三個(gè)時(shí)間段的路網(wǎng)狀態(tài),預(yù)測(cè)下一個(gè)時(shí)間段的路網(wǎng)狀態(tài),因此,單個(gè)樣本為[(Vj-2,Vj-1,Vj),(Vj+1)]其展開形式為:整個(gè)樣本集為所有時(shí)間段樣本的集合;步驟二、遞歸神經(jīng)網(wǎng)絡(luò)建模;首先,確定輸入輸出變量;輸入變量是三個(gè)一維狀態(tài)向量,分別j-2,j-1,j時(shí)間段的路網(wǎng)狀態(tài)向量,輸出變量一個(gè)是一維狀態(tài)向量,即下一個(gè)時(shí)間段的路網(wǎng)狀態(tài),每個(gè)狀態(tài)向量的維度均為k,即路網(wǎng)中的路段數(shù)目;其次,確定訓(xùn)練集和測(cè)試集,根據(jù)步驟一中的樣本集按預(yù)定比例分為訓(xùn)練集和測(cè)試集;最后,進(jìn)行遞歸神經(jīng)網(wǎng)絡(luò)模型參數(shù)標(biāo)定;所述的遞歸神經(jīng)網(wǎng)絡(luò)包括輸入層、隱藏層以及輸出層。通過訓(xùn)練數(shù)據(jù)學(xué)習(xí)輸入層與隱藏層、隱藏層與輸入層之間的權(quán)重矩陣和偏置向量,其中所述隱藏層的每個(gè)記憶單元都有三個(gè)輸入和兩個(gè)輸出,輸入內(nèi)容包括x(t),h(t-1),c(t-1),輸出包括h(t),c(t)。他們之間的關(guān)系是通過三個(gè)門進(jìn)行控制,分別是輸入門、遺忘門和輸出門,在t時(shí)刻有:it=sigmoid(whiht-1+wxixt+bi)ft=sigmoid(whfht-1+whfxt+bf)ct=ft⊙ct-1+it⊙tanh(whcht-1+wxcxt+bc)ot=sigmoid(whoht-1+whxxt+wcoct+bo)ht=ot⊙tanh(ct)其中it,ft,ot分別代輸入門、遺忘門和輸出門的輸出,w.,b.分別是系數(shù)矩陣和偏置向量,⊙是點(diǎn)乘運(yùn)算,sigmoid和tanh是激活函數(shù),ct代表t時(shí)刻隱藏層的記憶單元的輸出,ht-1是在t-1時(shí)刻隱藏層的輸出,ht是在t時(shí)刻隱藏層的輸出;隱藏層之間的權(quán)重矩陣W是一個(gè)[k,z]矩陣,z為隱藏層單元個(gè)數(shù),k為路段的數(shù)量;連接輸入層和隱藏層之間的權(quán)值矩陣U是一個(gè)[z,z]矩陣;連接隱藏與輸出層之間的輸出矩陣V是一個(gè)[z,k]矩陣;隱藏層和輸出層的關(guān)系為:Yj+1=HV+by其中,H=[h1,h2,……h(huán)z],hi是j時(shí)刻的隱藏層單元的輸出值,所述by是連接隱藏層和輸出層的偏置函數(shù)Yj+1=[y1,j+1,y2,j+1,…,yk,j+1];得到輸出層后建立損失函數(shù),損失函數(shù)是用來衡量輸出層的輸出值與真實(shí)值的差異,利用損失函數(shù)對(duì)各個(gè)參數(shù)求導(dǎo),計(jì)算其梯度。所述的遞歸神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時(shí)采用批量梯度下降法學(xué)習(xí)模型參數(shù),模型參數(shù)包括所有的權(quán)重矩陣和偏置向量;步驟三、下一時(shí)刻路網(wǎng)狀態(tài)預(yù)測(cè);將測(cè)試數(shù)據(jù)的輸入變量輸入到步驟二中已訓(xùn)練好的模型中,獲得輸出向量,那么該向量就是所預(yù)測(cè)的下一個(gè)時(shí)間段的路網(wǎng)狀態(tài)。本發(fā)明的優(yōu)點(diǎn):(1)本發(fā)明最大的優(yōu)點(diǎn)是提供一種路網(wǎng)狀態(tài)預(yù)測(cè)方法,從宏觀的角度把握路網(wǎng)狀態(tài)演變規(guī)律。(2)本發(fā)明采用遞歸神經(jīng)網(wǎng)絡(luò)算法充分考慮路網(wǎng)狀態(tài)變化的時(shí)序規(guī)律,從而更好地做出預(yù)測(cè)。附圖說明圖1是本發(fā)明的流程圖;圖2是LSTM結(jié)構(gòu)圖;圖3是本發(fā)明所使用的遞歸神經(jīng)網(wǎng)絡(luò)模型圖;圖4是遞歸神經(jīng)網(wǎng)絡(luò)與BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)對(duì)比圖。具體實(shí)施方式下面將結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明,使得本領(lǐng)域技術(shù)人員參照說明書文字能夠據(jù)以實(shí)施。本發(fā)明提供一種基于遞歸神經(jīng)網(wǎng)絡(luò)的路網(wǎng)狀態(tài)預(yù)測(cè)方法,流程如圖1所示,包括以下步驟:步驟一,建立樣本集。選取某一路網(wǎng),將路網(wǎng)劃分為各個(gè)小路段,假設(shè)分為k個(gè)路段,并對(duì)各個(gè)路段進(jìn)行編號(hào),記為(1,2,3,…,k),將一天24小時(shí)分成各個(gè)時(shí)間長(zhǎng)度一樣的時(shí)間段(比如每2分鐘作為一個(gè)時(shí)間段),計(jì)算各個(gè)路段在每個(gè)時(shí)間段的平均速度。平均速度的計(jì)算方法是:在某一時(shí)間段內(nèi),在某一路段通過的所有車輛平均速度的均值,如式(1)所示,其中n代表在該時(shí)間段在該路段通過的車輛數(shù)目,m代表路網(wǎng)中的第m個(gè)路段,m∈(1,2,···,k),j是時(shí)間段編號(hào),s代表該路段的長(zhǎng)度,Δt代表時(shí)間段的長(zhǎng)度,代表車輛i在Δt的平均速度。若某一路段在Δt內(nèi)沒有車輛通過,在用上一個(gè)時(shí)間段的平均速度替代當(dāng)前時(shí)間段的平均速度,即vm,j=vm,j-1。計(jì)算完各個(gè)路段的平均速度之后,用一個(gè)狀態(tài)向量表示該時(shí)間段的路網(wǎng)狀態(tài),即Vj=[v1,j,v2,j,…,vk,j]。本發(fā)明具體實(shí)施方式中考慮前三個(gè)時(shí)間段的路網(wǎng)狀態(tài),預(yù)測(cè)下一個(gè)時(shí)間段的路網(wǎng)狀態(tài),因此本發(fā)明的單個(gè)樣本形如[(Vj-2,Vj-1,Vj),(Vj+1)]其展開形式為:整個(gè)樣本集為所有時(shí)間段樣本的集合。步驟二,遞歸神經(jīng)網(wǎng)絡(luò)建模。首先,確定輸入輸出變量。輸入變量是三個(gè)一維狀態(tài)向量,分別j-2,j-1,j時(shí)間段的路網(wǎng)狀態(tài)向量,輸出變量一個(gè)是一維狀態(tài)向量,即下一個(gè)時(shí)間段的路網(wǎng)狀態(tài),每個(gè)狀態(tài)向量的維度均為k,即路網(wǎng)中的路段數(shù)目。其次,確定訓(xùn)練集和測(cè)試集,根據(jù)步驟一中的樣本集按一定比例分為訓(xùn)練集和測(cè)試集。最后,遞歸神經(jīng)網(wǎng)絡(luò)模型參數(shù)標(biāo)定。所述的遞歸神經(jīng)網(wǎng)絡(luò)包括輸入層、隱藏層以及輸出層。該步驟需要通過訓(xùn)練數(shù)據(jù)學(xué)習(xí)輸入層與隱藏層、隱藏層與輸入層之間的權(quán)重矩陣和偏置向量,本發(fā)明為了充分考慮路網(wǎng)狀態(tài)演變的時(shí)序特性,采用LSTM(LongShort-TermMemory,長(zhǎng)短時(shí)記憶)單元作為隱藏層單元,結(jié)構(gòu)如圖2所示。每個(gè)記憶單元都有三個(gè)輸入,兩個(gè)輸出,輸入內(nèi)容包括x(t),h(t-1),c(t-1),輸出包括h(t),c(t)。他們之間的關(guān)系是通過三個(gè)門進(jìn)行控制,分別是輸入門(inputgate)、遺忘門(forgetgate)、輸出門(outputgate),在t時(shí)刻有:it=sigmoid(whiht-1+wxixt+bi)(3)ft=sigmoid(whfht-1+whfxt+bf)(4)ct=ft⊙ct-1+it⊙tanh(whcht-1+wxcxt+bc)(5)ot=sigmoid(whoht-1+whxxt+wcoct+bo)(6)ht=ot⊙tanh(ct)(7)其中it,ft,ot分別代inputgate、forgetgate、outputgate的輸出,w·,b·分別是系數(shù)矩陣和偏置向量,⊙是點(diǎn)乘運(yùn)算,sigmoid和tanh是激活函數(shù),ct代表t時(shí)刻LSTM記憶cell單元的輸出,ht-1是在t-1時(shí)刻LSTM單元的輸出,ht是在t時(shí)刻LSTM單元的輸出。本發(fā)明的模型結(jié)構(gòu)圖如圖3所示,其中Yj+1是預(yù)測(cè)結(jié)果,即下一時(shí)間段的路網(wǎng)狀態(tài)。U是連接輸入層和隱藏層之間的權(quán)值矩陣,W是連接隱藏層之間的權(quán)重矩陣,V是連接隱藏與輸出層之間的輸出層。而且不同邊之間的權(quán)值是共享的。W是一個(gè)[k,h]矩陣,h為隱藏層單元個(gè)數(shù)。U是一個(gè)[h,h]矩陣,V是一個(gè)[h,k]矩陣。隱藏層和輸出層的關(guān)系如式(8)所示:Yj+1=HV+by(8)其中,hi是j時(shí)刻的LSTM單元的輸出值,得到輸出層后需要建立損失函數(shù),所述的遞歸神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時(shí)采用批量梯度下降法學(xué)習(xí)模型參數(shù)。通過上述部分完成本發(fā)明的模型參數(shù)標(biāo)定。步驟三,下一時(shí)刻路網(wǎng)狀態(tài)預(yù)測(cè)。將測(cè)試數(shù)據(jù)的輸入變量輸入到步驟二中已訓(xùn)練好的模型中,獲得輸出向量,那么該向量就是所預(yù)測(cè)的下一個(gè)時(shí)間段的路網(wǎng)狀態(tài)。由于在實(shí)際應(yīng)用中,用我們所獲取的路段速度值來描述路網(wǎng)狀態(tài)可靠性有限,因此我們將速度值轉(zhuǎn)化為擁堵程度,具體指標(biāo)如下表1所示:表1擁堵程度指標(biāo)表速度值擁堵指標(biāo)小于等于20km/h擁堵20~40km/h緩行大于等于40km/h暢通實(shí)施例需要說明的是,本發(fā)明所使用的數(shù)據(jù)由某公司提供的北京市某一路網(wǎng),數(shù)據(jù)包括9個(gè)字段,如表2所示,路段數(shù)據(jù)是每2分鐘更新一次,其中與本發(fā)明有直接關(guān)系數(shù)據(jù)字段包括時(shí)間,路段編號(hào),速度三個(gè)字段,時(shí)間跨度3個(gè)月,路段數(shù)目為278個(gè)。表2:本發(fā)明的實(shí)現(xiàn)路線包括以下幾步:步驟一,建立樣本集。用一個(gè)狀態(tài)向量表示上述數(shù)據(jù)在某一時(shí)間段的路網(wǎng)狀態(tài),時(shí)間段長(zhǎng)度為2分鐘,向量中的元素值是各個(gè)路段的速度值,元素值將按路段編號(hào)排序,即Vj=[v1,j,v2,j,…,v278,j],j表示第j個(gè)時(shí)間段。如下圖所示,這樣每2分鐘就有一個(gè)狀態(tài)向量。本發(fā)明考慮前三個(gè)時(shí)間段的路網(wǎng)狀態(tài),預(yù)測(cè)下一個(gè)時(shí)間段的路網(wǎng)狀態(tài),因此本發(fā)明的單個(gè)樣本形如[(Vj-2,Vj-1,Vj),(Vj+1)]其展開形式為:表示的是用j-2,j-1,j時(shí)間段的路網(wǎng)狀態(tài)預(yù)測(cè)第j+1時(shí)間段的路網(wǎng)狀態(tài)。整個(gè)樣本集為所有時(shí)間段樣本的集合。步驟二,遞歸神經(jīng)網(wǎng)絡(luò)建模。首先,確定輸入輸出變量。輸入變量是三個(gè)一維狀態(tài)向量,分別j-2,j-1,j時(shí)間段的路網(wǎng)狀態(tài)向量,輸出變量一個(gè)是一維狀態(tài)向量,即下一個(gè)時(shí)間段的路網(wǎng)狀態(tài),每個(gè)狀態(tài)向量的維度均為278,即路網(wǎng)中的路段數(shù)目。其次,確定訓(xùn)練集和測(cè)試集,根據(jù)步驟一中的樣本集以2:1比例分為訓(xùn)練集和測(cè)試集。最后,遞歸神經(jīng)網(wǎng)絡(luò)模型參數(shù)標(biāo)定。所述的遞歸神經(jīng)網(wǎng)絡(luò)包括輸入層、隱藏層以及輸出層。該步驟需要通過訓(xùn)練數(shù)據(jù)學(xué)習(xí)輸入層與隱藏層、隱藏層與輸入層之間的權(quán)重矩陣和偏置向量,本發(fā)明為了充分考慮路網(wǎng)狀態(tài)演變的時(shí)序特性,采用LSTM(LongShort-TermMemory,長(zhǎng)短時(shí)記憶)單元作為隱藏層單元。結(jié)構(gòu)如圖2所示。每個(gè)記憶單元都有三個(gè)輸入,兩個(gè)輸出,輸入內(nèi)容包括x(t),h(t-1),c(t-1),輸出包括h(t),c(t)。他們之間的關(guān)系是通過三個(gè)門進(jìn)行控制,分別是輸入門(inputgate)、遺忘門(forgetgate)、輸出門(outputgate),在t時(shí)刻有:it=sigmoid(whiht-1+wxixt+bi)(3)ft=sigmoid(whfht-1+whfxt+bf)(4)ct=ft⊙ct-1+it⊙tanh(whcht-1+wxcxt+bc)(5)ot=sigmoid(whoht-1+whxxt+wcoct+bo)(6)ht=ot⊙tanh(ct)(7)其中it,ft,ot分別代inputgate、forgetgate、outputgate的輸出,w.,b.分別是系數(shù)矩陣和偏置向量,⊙是點(diǎn)乘運(yùn)算,sigmoid和tanh是激活函數(shù),ct代表t時(shí)刻LSTM記憶cell單元的輸出,ht-1是在t-1時(shí)刻LSTM單元的輸出,ht是在t時(shí)刻LSTM單元的輸出。本發(fā)明的模型結(jié)構(gòu)圖如圖3所示,其中Yj+1是預(yù)測(cè)結(jié)果,即下一時(shí)間段的路網(wǎng)狀態(tài)。U是連接輸入層和隱藏層之間的權(quán)值矩陣,W是連接隱藏層之間的權(quán)重矩陣,V是連接隱藏與輸出層之間的輸出層。而且不同邊之間的權(quán)值是共享的。W是一個(gè)[278,500]矩陣,h為隱藏層單元個(gè)數(shù)。U是一個(gè)[500,500]矩陣,V是一個(gè)[500,278]矩陣。隱藏層和輸出層的關(guān)系如式(8)所示:Yj+1=HV+by(8)其中,hi是j時(shí)刻的LSTM單元的輸出值,Yj+1=[y1,j+1,y2,j+1,…,yk,j+1]。得到輸出層后需要建立損失函數(shù),所述的遞歸神經(jīng)網(wǎng)絡(luò)采用BP(backpropagation)算法學(xué)習(xí),從而確定模型的權(quán)值及偏置,為了加快訓(xùn)練速度,本發(fā)明采用批量梯度下降算法對(duì)參數(shù)進(jìn)行迭代更新。本發(fā)明的參數(shù)初始化均采用(0,1)的均分布隨機(jī)數(shù),輸入變量歸一化后在輸入到模型中。通過上述部分完成本發(fā)明的模型參數(shù)標(biāo)定。步驟三,下一時(shí)刻路網(wǎng)狀態(tài)預(yù)測(cè)。將測(cè)試數(shù)據(jù)的輸入變量輸入到步驟二中已訓(xùn)練好的模型中,獲得輸出向量,那么該向量就是所預(yù)測(cè)的下一個(gè)時(shí)間段的路網(wǎng)狀態(tài)。本發(fā)明的路網(wǎng)狀態(tài)預(yù)測(cè),采用的是遞歸神經(jīng)網(wǎng)絡(luò)算法,工具是Python2.7,選取前兩個(gè)月的樣本集作為訓(xùn)練集,第三個(gè)月的樣本集作為測(cè)試集。將本發(fā)明與傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)作對(duì)比,圖4所示的是隨機(jī)選取的一個(gè)時(shí)間段RNN與BPNN的預(yù)測(cè)結(jié)果。從圖中可以看出RNN預(yù)測(cè)值比BPNN更靠近真實(shí)值,預(yù)測(cè)精度高一些,由于在實(shí)際應(yīng)用中,用我們所獲取的路段速度值來描述路網(wǎng)狀態(tài)可靠性有限,因此我們將速度值轉(zhuǎn)化為擁堵程度,即路網(wǎng)中各個(gè)路段有不一樣的擁堵程度,具體指標(biāo)如表1所示,只要真實(shí)擁堵程度與預(yù)測(cè)擁堵程度一致,即可認(rèn)為預(yù)測(cè)正確,因此本發(fā)明利用整體有效率和整體有效率對(duì)模型進(jìn)行評(píng)價(jià),如表3所示。本發(fā)明中每個(gè)狀態(tài)向量有278個(gè)路段,每天有720個(gè)狀態(tài)向量(兩分鐘更新一次),測(cè)試集(一個(gè)月)中一共有21600個(gè)狀態(tài)向量。若將每個(gè)路段在不同時(shí)間的擁堵程度視為一個(gè)樣本的話,一共有6004800個(gè)樣本。正樣本:擁堵程度預(yù)測(cè)正確的樣本正樣本中的暢通樣本:預(yù)測(cè)值或真實(shí)值為暢通的路段整體準(zhǔn)確率:正樣本數(shù)/總樣本數(shù)整體有效率:(正樣本數(shù)-正樣本中的暢通樣本)/(總樣本數(shù)-正樣本中的暢通樣本)表3模型評(píng)價(jià)表模型整體準(zhǔn)確率整體有效率遞歸神經(jīng)網(wǎng)絡(luò)模型86.04%81.48%BP神經(jīng)網(wǎng)絡(luò)模型75.88%71.23%同BP神經(jīng)網(wǎng)絡(luò)對(duì)比,本發(fā)明所采用的模型(遞歸神經(jīng)網(wǎng)絡(luò))整體有效率提高了10.16%,整體有效率提高了10.25%,從預(yù)測(cè)的精度來看,本發(fā)明提供了一種比較可靠且穩(wěn)定的路網(wǎng)狀態(tài)預(yù)測(cè)方法,有助于出行者更好地規(guī)劃路徑可以更好規(guī)劃路徑,提高出行效率。當(dāng)前第1頁1 2 3