本發(fā)明涉及到城市智能公共交通信息處理技術(shù)領(lǐng)域,具體涉及一種公交車到站時(shí)間的實(shí)時(shí)預(yù)估方法。
背景技術(shù):
隨著城市化的快速推進(jìn),城市道路越來(lái)越擁擠。發(fā)展城市公共交通是緩解交通壓力重要手段之一。給乘客提供公交車實(shí)時(shí)到站信息,可以減少乘客不必要的等待時(shí)間。但是由于城市交通復(fù)雜多變,準(zhǔn)確預(yù)測(cè)公交車到站時(shí)間一直是個(gè)難點(diǎn)。
根據(jù)現(xiàn)有的電子地圖數(shù)據(jù),一條公交線路可以被路口劃分為多個(gè)子路段,但不能認(rèn)為所有的道路都是一樣的,根據(jù)電子地圖數(shù)據(jù)可以獲得道路的兩個(gè)基本信息:路程、有無(wú)信號(hào)燈。同時(shí)根據(jù)GPS數(shù)據(jù),可以獲得公交車當(dāng)前的位置,進(jìn)一步得到距離下游車站的路程;另外,通過(guò)汽車自帶計(jì)時(shí)裝置,可以算得平均速度等數(shù)據(jù),為本發(fā)明預(yù)測(cè)公交到站時(shí)間提供了及時(shí)、有效的數(shù)據(jù)支持。
又對(duì)于被劃分出來(lái)的子路段,因?yàn)榇嬖谄渌鐣?huì)車輛、有無(wú)信號(hào)燈、突發(fā)車禍等因素,導(dǎo)致道路情況有所差異。排除一些不顯著因素,我們先考慮必然因素:早晚高峰、天氣情況;這些因素對(duì)大部分道路影響情況一樣,所以子路段的平均速度可以為下游子路段提供參考。進(jìn)一步考慮隨機(jī)的顯著因素:交通事故,車輛變道加塞;這會(huì)使得公交車被迫減速,平均速度也出現(xiàn)波動(dòng),預(yù)測(cè)時(shí)間也發(fā)生相應(yīng)的變化。
以往的公交到站時(shí)間預(yù)測(cè),主要把公交車GPS信息作為數(shù)據(jù)來(lái)源并結(jié)合歷史數(shù)據(jù),和當(dāng)時(shí)的行駛參數(shù)和道路狀況進(jìn)行修正。此方法數(shù)據(jù)龐大、復(fù)雜,難以保證實(shí)時(shí)性。同時(shí)考慮因素太多,過(guò)于復(fù)雜。過(guò)長(zhǎng)的計(jì)算時(shí)間和過(guò)于龐大的數(shù)據(jù)會(huì)影響到站時(shí)間的實(shí)時(shí)性。
基于這些背景和數(shù)據(jù)樣本,可以設(shè)計(jì)一種基于遺傳算法和行駛數(shù)據(jù)的公交車到站時(shí)間實(shí)時(shí)預(yù)估方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于遺傳算法和行駛數(shù)據(jù)的公交車到站時(shí)間實(shí)時(shí)預(yù)估方法,這既能滿足實(shí)時(shí)應(yīng)用需求又具有較高的精度。
為了達(dá)到上述目的,本發(fā)明提供如下技術(shù)方案。
本發(fā)明所述的基于遺傳算法和行駛數(shù)據(jù)的公交車到站時(shí)間實(shí)時(shí)預(yù)估方法,包括以下步驟:
(1)根據(jù)汽車行駛路線的起點(diǎn)、終點(diǎn)、路口和站點(diǎn),劃分子路段;
(2)獲取所有子路段的信息:路程,是否有信號(hào)燈;把有信號(hào)燈的歸為Ⅰ類,沒(méi)有信號(hào)燈的歸為Ⅱ類;把已經(jīng)行駛過(guò)的Ⅰ類路段路程記為S1,Ⅱ類路段路程記為S2,同時(shí)用兩個(gè)變量t1,t2,分別表示在Ⅰ,Ⅱ類路段上行駛的時(shí)間之和;
(3)根據(jù)實(shí)時(shí)的公交GPS數(shù)據(jù),公交車所在位置記為點(diǎn)m,得到公交車在li,j子路段上行駛距離d;進(jìn)一步計(jì)算兩類路段的平均速度;進(jìn)一步計(jì)算到下游q站的兩類路段路程,最后計(jì)算用平均速度行駛到站的時(shí)間
(4)利用插值擬合法,構(gòu)建預(yù)估時(shí)間x與真實(shí)時(shí)間y的關(guān)系式;
(5)構(gòu)建遺傳算法,優(yōu)化參數(shù);修正得到較為精確的時(shí)間最終時(shí)間為:
進(jìn)一步,所述的步驟(1)中,用標(biāo)號(hào)0表示:起點(diǎn);符號(hào)∞表示:終點(diǎn);用標(biāo)號(hào)1、2...n表示:第1站到第n站;用標(biāo)號(hào)li,j表示:第i-1站到第i站之間的第j個(gè)子路段;用si,j表示:第i-1站到第i站之間的第j個(gè)路口(i≥1)。從起點(diǎn)0到終點(diǎn)∞之間的路程就可以劃分為多個(gè)子路段:0、l1,1…1…i-1、li,1…li,j…i…∞。
進(jìn)一步,所述的步驟(2)中,每個(gè)子路段與路程Li,j一一對(duì)應(yīng);路口處是否有信號(hào)燈pi,j(有,p=1;無(wú),p=0);并且把路段分為兩類,p=1的為Ⅰ類,p=0的為Ⅱ類;再根據(jù)路段的類型,對(duì)已行駛的同類型路段進(jìn)行累和,得到S1,S2;進(jìn)一步當(dāng)汽車在Ⅰ類道路上時(shí)t1計(jì)時(shí),t2停止;當(dāng)汽車在Ⅱ類道路上時(shí)t1停止,t2計(jì)時(shí)。
進(jìn)一步,所述的步驟(3)中,獲得公交車位置點(diǎn)m,在路段li,j上行駛距離為d;進(jìn)一步根據(jù)步驟(2)已知的路程S1,S2和時(shí)間t1,t2得到平均速度;進(jìn)一步計(jì)算出下游兩類路段的路程S1*,S2*;進(jìn)一步計(jì)算出
進(jìn)一步,所述的步驟(4)中,每輛車發(fā)車時(shí)開(kāi)始為“插值擬合法”提供大量的計(jì)算數(shù)據(jù)和真實(shí)數(shù)據(jù),系統(tǒng)利用這些數(shù)據(jù)進(jìn)行差值分析,擬合出一個(gè)y與x的關(guān)系式。
進(jìn)一步,所述的步驟(5)中,由于關(guān)系式有許多可變參數(shù),它們會(huì)根據(jù)道路情況的不同而變化,在得到的時(shí)間偏差太大時(shí),利用遺傳算法,更新優(yōu)化參數(shù);再把計(jì)算時(shí)間代入關(guān)系式,修正時(shí)間。
本發(fā)明優(yōu)點(diǎn):首先,本發(fā)明能夠用簡(jiǎn)單的數(shù)據(jù)得到到站時(shí)間,因?yàn)榈秸緯r(shí)間的長(zhǎng)短均表現(xiàn)在車輛平均速度之中,若干因素均不需再考慮。這使得系統(tǒng)獲得的信息量小,進(jìn)而因系統(tǒng)計(jì)算而延誤的時(shí)間減少;其次,把路線進(jìn)行劃分,可以有效的、精確的預(yù)測(cè)到站時(shí)間;最后,采用兩種先進(jìn)的誤差處理方法:插值擬合法、遺傳算法,這可以有效地減少誤差,具有出現(xiàn)誤差便及時(shí)糾正的優(yōu)點(diǎn)。
附圖說(shuō)明
圖1為本發(fā)明流程示意圖。
圖2標(biāo)示出了本發(fā)明如何劃分子路段。
圖3標(biāo)示出了子路段路程的始末位置。
圖4標(biāo)示出了計(jì)算路程時(shí)的注意要點(diǎn)。
具體實(shí)施方式
為了使本發(fā)明更具體,更清晰,下面為本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明;
(1)根據(jù)公交車行駛方向和路口信息,同時(shí)公交車又具有定點(diǎn)行駛的特點(diǎn),可以先把整個(gè)線路進(jìn)行劃分,以站點(diǎn)1與站點(diǎn)2之間的路段為例,如圖2所示。
首先按照停靠站點(diǎn)進(jìn)行劃分,每個(gè)站點(diǎn)用標(biāo)號(hào)1、2、…、n表示,0表示起點(diǎn),∞表示終點(diǎn);由于道路交叉路口對(duì)交通有重要影響,所以再獲得所有路口信息,及是否有信號(hào)燈;用si,j表示:第i-1站到第i站之間的第j個(gè)路口(i≥1),如圖2中的s1,3就表示第一站與起點(diǎn)之間的第三個(gè)路口;而路口和路口、路口和站點(diǎn)、站點(diǎn)和路口之間的路段,就是劃分出來(lái)的子路段li,j;
(2)再根據(jù)GPS和電子地圖數(shù)據(jù),獲得所有路段的路程;這里要注意的是,由于每個(gè)路口都是有寬度的,所以路程為一個(gè)路口中遠(yuǎn)離行駛方向一側(cè)到下一個(gè)路口靠近行駛方向一側(cè),如圖3所示;進(jìn)一步,如圖4所示,路程計(jì)算應(yīng)該為L(zhǎng)1+L2,而不是路口的直線距離L;進(jìn)一步,根據(jù)路口有無(wú)信號(hào)燈,有則劃分為Ⅰ類,無(wú)則劃分為Ⅱ類;有些路段可能不包含路口,如圖3中的l1,4,這種路口也歸為Ⅱ類;
進(jìn)一步計(jì)算起點(diǎn)O到si,j之間的兩類路段路程之和,構(gòu)建矩陣,把所有路段的路程用行矩陣A=[L1,1 L1,2 … Li.j]表示,所有路段的Pi,j值構(gòu)成列矩陣B=[P1,1 P1,2 … Pi.j]T,則所有Ⅰ類路程之和可以用以下公式得到:
s1=|AB|
進(jìn)一步計(jì)算Ⅱ類路程之和,A矩陣不變,B中每項(xiàng)減1,得到B‘=[P1,1-1 P1,2-1 … Pi.j-1]T,Ⅱ類路程之和可以用以下公式得到:
S2=||AB′||
(3)根據(jù)GPS數(shù)據(jù),公交車在li,j上行駛距離為d;如果Pi,j=1則Ⅰ類路程為s1+d,Ⅱ類路程為s2-d;如果Pi,j=0則Ⅰ類路程為s1-d,Ⅱ類路程為s2+d;進(jìn)一步用步驟(2)的方法,得到起點(diǎn)O到站點(diǎn)q的Ⅰ類總路程S1總,Ⅱ類總路程S2總,再分別減去Ⅰ類路程,Ⅱ類路程,得到距離下游站點(diǎn)q的距離S1*,S2*;進(jìn)一步,根據(jù)公式:v=s/t,得到前路程平均速度v1,v2;進(jìn)一步,利用公式:t=s/v,得到用此速度行駛到站所需時(shí)間;
(4)每輛車發(fā)車時(shí),它先把第一、二條道路:l1,1、l1,2由1……n個(gè)點(diǎn)平均劃分為n+1段小路程,取名為[q1 q2 ... qn+1],路程都為L(zhǎng),則每點(diǎn)到起點(diǎn)的路程為[L 2*L ... (n+1)*L],走到每一點(diǎn)都會(huì)得到一個(gè)時(shí)間[y1 y2 ... yn yn+1]=[t1 t2 ... tn tn+1],每點(diǎn)平均速度可用以下公式得到:
系統(tǒng)計(jì)算的走到下一點(diǎn)的時(shí)間為[0 L/v2 L/v3 ... L/vn+1](其中0表示無(wú)法計(jì)算,下同),則從起點(diǎn)到達(dá)每一點(diǎn)的時(shí)間可用以下公式得到:
進(jìn)一步利用插值擬合法,構(gòu)造出關(guān)系式:
y=anxn+an-1xn-1+...+a0x0;
(5)汽車行駛時(shí),會(huì)不斷地統(tǒng)計(jì)計(jì)算數(shù)據(jù)和真實(shí)值之間的誤差當(dāng)p≥10%時(shí)開(kāi)始構(gòu)建遺傳算法,對(duì)參數(shù)an,an-1...a0進(jìn)行更新優(yōu)化,方法步驟如下:
1、種群:把子路段li,1分成均等的n份,為[l1 ... ln];每一份對(duì)應(yīng)了一個(gè)標(biāo)準(zhǔn)時(shí)間[T1 ... Tn];每一段平均速度用以下公式得到:
每段lx,時(shí)間可用以下公式得到:
把[t1 t2 ... tn]與[T1 T2 ... Tn]代入方程進(jìn)行比較,得到其中一個(gè)參數(shù)an的種群[α1,α2,-,αn],其中αx為浮點(diǎn)數(shù),精度為小數(shù)點(diǎn)后3位;
2、編碼:采用“浮點(diǎn)數(shù)編碼”方法獲取基因型,對(duì)[α1,α2,-,αn]進(jìn)行編碼,得到[β1,β2,-,βn],編碼數(shù)即為其真值,即在數(shù)值上:[α1,α2,-,αn]=[β1,β2,-,βn];
3、繁殖:隨機(jī)選取兩個(gè)個(gè)體αn,αm基因型為βn,βm。對(duì)基因型的整數(shù)位和小數(shù)點(diǎn)后三位,隨機(jī)的選取若干位,進(jìn)行交換。得到新的個(gè)體αn′,αm′基因型為β′n,β′m。這樣進(jìn)行n/2(取整)次。得到新的個(gè)體[α1′,α2′,-,αn′],基因型[β1′,β2′,-,βn′];
4、變異:在新個(gè)體中隨機(jī)選取不多于個(gè)體數(shù)1/3個(gè)的個(gè)體,隨機(jī)選取任意一位,將那一位數(shù)字變成0-9中任意一個(gè),得到新個(gè)體
5、淘汰:將新種群帶入到tn+1,計(jì)算得到T′n+1,與真實(shí)值Tn+1比較,則某一個(gè)個(gè)體的適應(yīng)度可用以下公式得到:
越小,適應(yīng)度越大。進(jìn)一步,最終留下適應(yīng)度最大的個(gè)體;
6、重復(fù)3—5步驟,直到選出最優(yōu)個(gè)體(參數(shù));
7、重復(fù)1—6步驟,優(yōu)化所有參數(shù)。
利用這個(gè)優(yōu)化方程對(duì)時(shí)間進(jìn)行優(yōu)化,修正,代入方程:
最終預(yù)測(cè)到站時(shí)間可用以下公式得到: