本發(fā)明涉及道路交通網(wǎng)絡(luò)最短路搜索領(lǐng)域,尤其涉及一種考慮轉(zhuǎn)向延誤的城市路網(wǎng)時變K最短路徑搜索方法。
背景技術(shù):
最短路問題是網(wǎng)絡(luò)優(yōu)化領(lǐng)域中的核心問題之一,對于交通分配、路徑誘導(dǎo)的實(shí)現(xiàn)具有重要意義。目前為止,國內(nèi)外對道路交通網(wǎng)絡(luò)最短路徑搜索技術(shù)開展了大量研究,基于改進(jìn)的Dijkstra算法和Floyd算法不斷被提出。隨著啟發(fā)式搜索方法技術(shù)日漸成熟,近些年以遺傳算法、模擬退火算法、蟻群算法等為代表的智能算法也被逐漸應(yīng)用到道路交通網(wǎng)絡(luò)最短路搜索中。然而,諸多研究都針對靜態(tài)交通網(wǎng)絡(luò)給出了相應(yīng)的求解算法,即以路段長度作為網(wǎng)絡(luò)權(quán)值,或?qū)⒓僭O(shè)靜態(tài)不變的路段行程時間作為權(quán)值。事實(shí)上,由于交通網(wǎng)絡(luò)的動態(tài)性,路段在不同時間段的行程時間是不完全一致的,將其簡化為定值進(jìn)行模型求解與實(shí)際情況有較大差異,導(dǎo)致計算結(jié)果準(zhǔn)確性較低。盡管一些研究考慮了交通網(wǎng)絡(luò)的動態(tài)性,構(gòu)建時變網(wǎng)絡(luò)最短路徑算法,但是在模型構(gòu)建過程中忽略了交叉口轉(zhuǎn)向延誤,或?qū)⒏鞣较虻霓D(zhuǎn)向延誤視為相等,作為該交叉口的節(jié)點(diǎn)阻抗。在城市道路中,交叉口延誤在路徑行程時間中占據(jù)了很大的比重,且各方向的轉(zhuǎn)向延誤有顯著差異,如右轉(zhuǎn)延誤一般遠(yuǎn)小于直行和左轉(zhuǎn)延誤。另一方面,由于交通事故或交通管制的存在,最短路有時是不可行的,有必要在搜索最短路徑的同時搜索次最短路徑作為備選方案。因此,在傳統(tǒng)最短路算法的基礎(chǔ)上,充分考慮道路交通網(wǎng)絡(luò)的時變性及交叉口轉(zhuǎn)向延誤,搜索K最短路徑,可進(jìn)一步提高最短路徑搜索的準(zhǔn)確性和可靠性。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:本發(fā)明針對當(dāng)前道路交通網(wǎng)絡(luò)最短路搜索技術(shù)缺乏對網(wǎng)絡(luò)動態(tài)性和交叉口轉(zhuǎn)向延誤的考慮,與實(shí)際情況有較大差異,本發(fā)明提出了一種考慮轉(zhuǎn)向延誤的城市路網(wǎng)時變K最短路徑搜索算法。
技術(shù)方案:本發(fā)明所述的考慮轉(zhuǎn)向延誤的城市路網(wǎng)時變K最短路徑搜索方法,包括如下步驟:
(1)讀取路網(wǎng)中研究時間范圍及擴(kuò)展研究時間范圍內(nèi)的所有離散等時間間隔的交叉口轉(zhuǎn)向延誤和路段行程時間;
(2)根據(jù)研究時間范圍擴(kuò)展研究時間范圍及離散時間間隔分別確定離散時刻集合S和S′,定義指定路徑搜索的出發(fā)時刻t0,t0∈S,定義所需搜索的K最短路徑的K值;其中,集合S和S′中存儲的時刻分別為研究時間范圍和擴(kuò)展研究時間范圍內(nèi)各個離散時間間隔的起始時刻;
(3)采用擴(kuò)展網(wǎng)絡(luò)法將交叉口擴(kuò)展為若干個交叉口邊界,并將與出發(fā)地小區(qū)緊鄰的交叉口邊界線確定為起點(diǎn)邊界線,將與目的地小區(qū)緊鄰的交叉口邊界線確定為終點(diǎn)邊界線;其中,以blij(·)代表交叉口i中與交叉口j相鄰的邊界線位置,blij(1)表示該邊界線位置處交叉口i的進(jìn)口道邊界線,blij(2)表示該邊界線位置處交叉口i的出口道邊界線;
(4)將交叉口轉(zhuǎn)向延誤和路段行程時間轉(zhuǎn)換為緊鄰兩條交叉口邊界線之間的連接線阻抗,并建立以連接線阻抗為元素的初始阻抗矩陣W;
(5)在阻抗矩陣為W的前提下,采用A*算法搜索t0時刻由起點(diǎn)邊界線至終點(diǎn)邊界線的最短路徑,記為第k條最短路徑,此時k=1;
(6)判斷k是否小于K,若“是”則進(jìn)入步驟(7),若“否”則進(jìn)入步驟(14);
(7)定義n為交叉口邊界線在第k-1條最短路徑中的序號,并且從起點(diǎn)邊界線至終點(diǎn)邊界線按順序排列,N為第k-1條最短路徑中所有交叉口邊界線的總數(shù),令k=k+1,n=1;
(8)將第k-1條最短路徑中第n條交叉口邊界線作為當(dāng)前邊界線,記該路徑中從起點(diǎn)邊界線出發(fā)到達(dá)當(dāng)前邊界線的時刻為t;
(9)令阻抗矩陣k_W等于原始阻抗矩陣W,并進(jìn)一步將阻抗矩陣k_W中當(dāng)前邊界線與符合條件的邊界線之間連接線的阻抗更改為正無窮,其中,符合條件的邊界線作如下定義:在第k-1條最短路徑中,當(dāng)前邊界線的下一邊界線視為符合條件的邊界線,若第k-1條最短路徑中起點(diǎn)邊界線至當(dāng)前邊界線的子路徑存在于前k-2條最短路徑中,則當(dāng)前邊界線在前k-2條最短路徑中的下一邊界線同樣視為符合條件的邊界線;
(10)在阻抗矩陣為k_W的前提下,采用A*算法搜索t時刻由當(dāng)前邊界線至終點(diǎn)邊界線的最短路徑;
(11)將步驟(10)搜索得到的最短路徑與第k-1條最短路徑中起點(diǎn)邊界線至當(dāng)前邊界線的路徑組合得到一條完整路徑,并放入列表CANDIDATE中;
(12)判斷n是否等于N-1,若“是”則進(jìn)入步驟(14),若“否”則返回步驟(9);
(13)從列表CANDIDATE中挑選出行程時間最短的路徑作為第k條最短路徑,并將其從列表CANDIDATE中移除,返回步驟(6);
(14)輸出t0時刻由起點(diǎn)邊界線到達(dá)終點(diǎn)邊界線的K條最短路徑及行程時間。
進(jìn)一步的,所述步驟(1)中,擴(kuò)展研究時間范圍是為保證在研究時間范圍內(nèi)任意時刻出發(fā)的車輛能完成出行而引入的,即解決在研究時間范圍末尾出發(fā)的車輛到達(dá)目的地時超出研究時間范圍的情況,擴(kuò)展研究時間范圍視全路網(wǎng)最長出行時間而定,交叉口轉(zhuǎn)向延誤和路段行程時間數(shù)據(jù)是以15分鐘為等時間間隔的時間序列數(shù)據(jù)。
進(jìn)一步的,所述步驟(2)中,出發(fā)時刻t0為集合S中任意感興趣的出發(fā)時刻,循環(huán)遍歷集合S中所有元素,即可輸出任意出發(fā)時刻起點(diǎn)邊界線至終點(diǎn)邊界線的K最短路徑。
進(jìn)一步的,所述步驟(3)中,交叉口邊界線具體是交叉口物理區(qū)邊界線。
進(jìn)一步的,所述步驟(4)中,連接線阻抗為y=1或2,且z≠y,t∈S∪S'},表示t時刻從邊界線blij(z)出發(fā)到邊界線blpq(y)之間的連接線阻抗,對路段表現(xiàn)為行程時間,對交叉口表現(xiàn)為轉(zhuǎn)向延誤。
進(jìn)一步的,所述步驟(5)中,采用A*算法搜索t0時刻由起點(diǎn)邊界線至終點(diǎn)邊界線的最短路徑,步驟如下:
A.讀取網(wǎng)絡(luò)阻抗矩陣,確定起點(diǎn)邊界線,終點(diǎn)邊界線及出發(fā)時刻t0;
B.初始化列表COST,列表COST包含各交叉口邊界線的總體費(fèi)用F,已完成費(fèi)用T,和未完成預(yù)估費(fèi)用G,各費(fèi)用定義及計算方法如下:
已完成費(fèi)用T為迭代過程中保存的起點(diǎn)邊界線至該邊界線的費(fèi)用,
未完成預(yù)估費(fèi)用G為該交叉口邊界線至終點(diǎn)邊界線的預(yù)估費(fèi)用,為確保預(yù)估費(fèi)用小于實(shí)際費(fèi)用,預(yù)估費(fèi)用G等于該交叉口邊界線和終點(diǎn)邊界線物理最短路程與路網(wǎng)最高行駛速度的比值,
總體費(fèi)用F為已完成費(fèi)用T和未完成預(yù)估費(fèi)用G的總和,
初始化列表COST,即令起點(diǎn)邊界線的已完成費(fèi)用T為0,其余交叉口邊界線的已完成費(fèi)用T為正無窮;記起點(diǎn)邊界線為BEST;
C.確定BEST的后繼邊界線集合Ω;后繼邊界線是指能從BEST一步到達(dá)的邊界線;
D.計算Ω中所有后繼邊界線的已完成費(fèi)用T;對于其中的任意某一后繼邊界線blij(z),其已完成費(fèi)用T的計算公式為:
式中:表示后繼邊界線blijm的已完成費(fèi)用,TBEST為BEST的已完成費(fèi)用,TBEST+t0為到達(dá)BEST的時刻,表示(TBEST+t0)時刻BEST與其后繼邊界線blij(z)之間連接線的阻抗;
E.更新列表OPEN、列表CLOSED、列表COST和列表BACK,列表OPEN中保存等待訪問的交叉口邊界線,列表CLOSED中保存已經(jīng)訪問過的交叉口邊界線,列表BACK中存儲各邊界線的父邊界線,具體實(shí)施方法如下:
若后繼邊界線blij(z)在列表OPEN中,且步驟D計算出后繼邊界線blij(z)的已完成費(fèi)用小于其在列表COST中保存的已完成費(fèi)用,則更新列表COST中邊界線blij(z)的T值,并將列表BACK中邊界線blij(z)的父邊界線更改為BEST,
若后繼邊界線blij(z)在列表CLOSED中,且步驟D計算出后繼邊界線blij(z)的已完成費(fèi)用小于其在列表COST中保存的已完成費(fèi)用,則更新列表COST中邊界線blij(z)的T值,將列表BACK中邊界線blij(z)的父邊界線更改為BEST,并將邊界線blij(z)從列表CLOSED移至列表OPEN,
若后繼邊界線blij(z)既不在列表OPEN中,也不在列表CLOSED中,則更新列表COST中邊界線blij(z)的T值,將列表BACK中邊界線blij(z)的父邊界線更改為BEST,并將邊界線blij(z)放入列表OPEN;
F.選取列表OPEN中具有最小F值的交叉口邊界線,記為BEST,將BEST從列表OPEN移至列表CLOSED;
G.判斷BEST是否為終點(diǎn)邊界線,若BEST是終點(diǎn)邊界線,則進(jìn)入步驟H,若不是終點(diǎn)邊界線則返回步驟C;
H.從BEST開始遞推搜索列表BACK,得到最短路徑;
I.輸出最短路徑及其行程時間,最短路徑的行程時間即列表COST中終點(diǎn)邊界線的T值。
進(jìn)一步的,所述步驟(11)中,列表CANDIDATE包含了第k條最短路徑的所有備選路徑,其中存儲了t0時刻從起點(diǎn)邊界線出發(fā)至終點(diǎn)邊界線的所有備選路徑及其行程時間。
進(jìn)一步的,所述步驟(13)中,刪除列表CANDIDATE中挑選出的第k條最短路徑,以避免下次重復(fù)挑選。
有益效果:本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn)是:傳統(tǒng)的道路交通網(wǎng)絡(luò)最短路徑搜索方法大多適用于靜態(tài)交通網(wǎng)絡(luò),即以路段長度作為網(wǎng)絡(luò)權(quán)值,或?qū)⒓僭O(shè)靜態(tài)不變的路段行程時間作為權(quán)值,與實(shí)際情況有較大差異,導(dǎo)致計算結(jié)果準(zhǔn)確性較低。盡管一些研究在考慮交通網(wǎng)絡(luò)動態(tài)性的基礎(chǔ)上,構(gòu)建了時變網(wǎng)絡(luò)最短路徑算法,但是在模型構(gòu)建過程中忽略了交叉口轉(zhuǎn)向延誤,或?qū)⒏鞣较虻霓D(zhuǎn)向延誤視為相等。此外,由于交通事故或交通管制的存在,最短路有時是不可行的,有必要在搜索最短路徑的同時搜索次最短路徑作為備選方案。為此,針對道路交通網(wǎng)絡(luò)的特征,本發(fā)明提出一種考慮轉(zhuǎn)向延誤的時變網(wǎng)絡(luò)K最短路徑搜索方法。具體而言,本發(fā)明在獲得等時間間隔的連續(xù)交叉口轉(zhuǎn)向延誤和路段行程時間數(shù)據(jù)序列的基礎(chǔ)上,首先結(jié)合擴(kuò)展網(wǎng)絡(luò)法得到網(wǎng)絡(luò)中各交叉口邊界間的線阻抗;其次,以目的邊界線為起點(diǎn),迭代計算各時刻所有邊界線至目的邊界線的K最短路徑,并保存對應(yīng)的后繼邊界線;再次,結(jié)合保存的后繼邊界線列表和交叉口邊界線間阻抗,獲得以邊界線為對象的K最短路徑;最后,結(jié)合網(wǎng)絡(luò)拓?fù)?,將以邊界線為對象的K最短路徑轉(zhuǎn)換成以實(shí)際交叉口為對象的K最短路徑。本發(fā)明提出的最短路徑搜索方法考慮了交通網(wǎng)絡(luò)的動態(tài)性及交叉口各方向的轉(zhuǎn)向延誤,并在給出最短路徑的同時搜索出次最短路徑,有效提高最短路徑搜索的準(zhǔn)確性和可靠性。
附圖說明
圖1為本發(fā)明流程示意圖;
圖2為步驟(5)的具體步驟流程示意圖;
圖3為本發(fā)明實(shí)施例研究路網(wǎng)拓?fù)鋱D;
圖4為本發(fā)明實(shí)施例最短路徑搜索結(jié)果。
具體實(shí)施方式
本實(shí)施例的流程示意圖如圖1所示,步驟(5)如圖2所示,研究對象為昆山城區(qū)實(shí)際路網(wǎng),路網(wǎng)拓?fù)淙鐖D3所示。研究路網(wǎng)包括18條道路,其中8條干線和10條支路;31個交叉口,其中27個為信號控制交叉口,4個為非信號控制交叉口。此外,結(jié)合路網(wǎng)拓?fù)浜屯恋乩眯再|(zhì),研究路網(wǎng)包含24個交通小區(qū)用以產(chǎn)生和吸引交通需求,此處即代表車輛的出發(fā)地小區(qū)和目的地小區(qū)。本發(fā)明采用時變的路段行程時間和交叉口轉(zhuǎn)向延誤作為網(wǎng)絡(luò)阻抗搜索小區(qū)間的K最短路徑。其中,路段行程時間由路段長度除以15分鐘間隔的地點(diǎn)車速獲得,地點(diǎn)車速可由布設(shè)在路段上的微波檢測器采集得到;信號控制交叉口轉(zhuǎn)向延誤由實(shí)際采集的15分鐘間隔交叉口轉(zhuǎn)向流量數(shù)據(jù),結(jié)合HCM 2010交叉口轉(zhuǎn)向延誤計算方法計算得到,交叉口轉(zhuǎn)向流量數(shù)據(jù)可由布設(shè)在交叉口進(jìn)口道的視頻車輛檢測器采集得到;本實(shí)施例中非信號控制交叉口的延誤忽略不計。
基于實(shí)際采集的2012年8月28日實(shí)施例研究范圍內(nèi)道路交通流數(shù)據(jù),圖4(a)給出了本發(fā)明小區(qū)1至小區(qū)13早晚高峰最短路徑搜索結(jié)果。其中,粗虛線表示早高峰(以8:00-8:15為例)最短路徑,粗點(diǎn)畫線表示晚高峰(以18:00-18:15為例)。同時,圖4(b)給出了以路段長度為阻抗的小區(qū)1至小區(qū)13最短路徑搜索結(jié)果,顯然此時最短路徑不隨時間發(fā)生變化。由圖中可以看出,三條最短路徑均存在較大差異,這是由時變的交通狀態(tài)導(dǎo)致的。因此,在實(shí)際工程應(yīng)用中有必要采用本發(fā)明提出的方法搜索K最短路徑以提高路徑搜索精度。
為進(jìn)一步評估本發(fā)明算法性能,選取遺傳算法對比分析本發(fā)明算法在搜索精度及搜索效率上的優(yōu)越性。為消除隨機(jī)誤差,選用實(shí)施例研究范圍內(nèi)8組交通小區(qū)作為路徑搜索對象,搜索時變K最短路徑(本實(shí)施例中K=3),每組交通小區(qū)間路徑搜索過程執(zhí)行5次。遺傳算法屬于啟發(fā)式算法,每次路徑搜索結(jié)果可能存在差異,本實(shí)施例選用5次搜索得到路徑長度的中位數(shù)代表遺傳算法的搜索結(jié)果。遺傳算法參數(shù)設(shè)置如下:種群規(guī)模popsize=80,交叉概率pcrossover=0.90,變異概率pmutation=0.09,最大迭代次數(shù)Generationmax=20。性能評估結(jié)果如表1所示,表中GA表示遺傳算法,KSP-A*表示本發(fā)明提出的算法,精度提升AG和速度提升SG分別由式(1)和式(2)計算得到。
SG=(tGA-tKSP-A*)/tGA×100% (2)
其中,K表示路徑總數(shù),Ti,GA表示遺傳算法搜索得到的第i最短路徑行程時間,Ti,KSP-A*表示本發(fā)明算法搜索得到的第i最短路徑行程時間,tGA表示遺傳算法搜索K最短路徑消耗的計算時間,tKSP-A*表示本發(fā)明算法搜索K最短路徑消耗的計算時間。
表1性能評估結(jié)果
從表1可以看出,本發(fā)明提出的算法相較于遺傳算法而言,在有效提高搜索精度的同時,也能夠顯著地縮短運(yùn)算時間。雖然遺傳算法能夠通過調(diào)整參數(shù)提升搜索精度,但運(yùn)算時間也會隨之增加。因此,本發(fā)明提出的算法較現(xiàn)有算法具有搜索精度高、運(yùn)算速度快的優(yōu)點(diǎn),實(shí)際應(yīng)用價值高。