一種實時拼車匹配方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于基于位置服務(wù)(LBS, Locat1n Based Service)的移動應(yīng)用領(lǐng)域,主要針對當(dāng)前城市車輛激增引起的一系列交通擁堵、人們出行困難等問題,提出一種實時的動態(tài)拼車匹配方法,可自動的將愿意進行拼車的乘客與司機進行匹配,進而以拼車的形式減緩上述交通問題。
【背景技術(shù)】
[0002]拼車作為解決城市交通問題的有效手段,有著方式靈活,政府投入成本少,降低空車率,減少環(huán)境污染,分擔(dān)出行費用等優(yōu)勢。近年來,隨著智能手機和基于位置的服務(wù)(LBS)的普及以及相關(guān)政策上的逐漸放開,拼車問題以其良好的前景獲得了工業(yè)界,學(xué)術(shù)界以及投資者們的一致關(guān)注。
[0003]在工業(yè)界,大部分拼車系統(tǒng)使用模式為:用戶選擇拼車的角色,輸入拼車的相關(guān)信息如起點、終點、時間和費用等。之后系統(tǒng)有幾種處理方法:(I)等待其他用戶手動配對并電話聯(lián)系確認(rèn),這樣做對拼車雙方來說十分不便。(2)與打車軟件類似,系統(tǒng)選擇乘客起點附近的K個最鄰近司機,并將離乘客最近的司機返回給乘客。這樣找到的司機可能終點離乘客終點很遠(yuǎn),導(dǎo)致拼車費用高;(3)系統(tǒng)只選擇有重合路線的司機與乘客。這樣無疑大大減少了拼車成功的概率;(4)系統(tǒng)允許司機指定乘客的上下客地點,因此乘客可能需要在上車前或下車后步行,這樣的拼車方式在實際應(yīng)用中不夠靈活。
[0004]在學(xué)術(shù)界,拼車的問題始于發(fā)達國家的電話叫車服務(wù)(Dial-a-ride Service),電話叫車是需要服務(wù)的人(通常為老年人或殘疾人)撥打政府的服務(wù)熱線預(yù)約服務(wù),調(diào)度中心根據(jù)每個服務(wù)的時間和地點安排工作人員開車上門。近年來,研宄人員主要關(guān)注于司機和乘客的動態(tài)匹配方法設(shè)計,但現(xiàn)有的主流匹配方法大多基于大規(guī)模的司機行車軌跡數(shù)據(jù)對司機的位置進行預(yù)測或者對拼車匹配過程中耗時最多的最短路徑進行預(yù)處理計算。這些方法能夠保證實時高效,但是預(yù)測的方式使得匹配方法在實際中的準(zhǔn)確度無法得到有效保證,而對最短路徑的預(yù)處理需要消耗大量的空間存儲資源。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要克服現(xiàn)有技術(shù)的上述缺點,提出一種實時的動態(tài)拼車匹配方法。該方法最終目的是根據(jù)乘客實時的拼車需求,高效地匹配出滿足其要求的候選司機集合。
[0006]本發(fā)明方法包括如下步驟:
[0007]步驟I實時拼車場景建模
[0008]實際拼車場景中,乘客和司機均有起點和終點,此外,乘客還有最遲到達目的地時間和最大拼車費用的要求。為了實現(xiàn)拼車匹配,本步驟將對拼車費用建立模型,對拼車問題進行定義,并設(shè)計拼車匹配過程中的數(shù)據(jù)結(jié)構(gòu)。
[0009]步驟1-1拼車費用建模
[0010]在拼車過程中,司機d首先需要從自己的起點趕到乘客r的起點,接著從乘客r的起點將乘客載至其終點,最后從乘客r的終點回到自己的終點。在拼車結(jié)束后,乘客r需要支付一定的拼車費用給司機作為報酬。
[0011]根據(jù)上述的拼車過程,本方法中的拼車費用定義如下:
[0012]Price (d, r) = RiderTrip(r)+Detour(d, r)
[0013]其中Price(d,r)表示拼車費用;RiderTrip (r)表示拼車后司機和乘客共同走的路程,即司機載著乘客從乘客起點到乘客終點的路程(本發(fā)明中路程、費用以及時間均與距離成正比,因此可互相轉(zhuǎn)化);Det0Ur(d,r)表示司機相對其原始路線多走的路程,即繞道路程,其計算方式如下:
[0014]Detour (d, r) = Pickup(d, r)+RiderTrip(r)+Return(d, r) - DriverTrip(d, r)
[0015]其中,Pickup(d,r)是司機起點與乘客起點間的路程,即司機去接乘客時的費用;Return(d,r)表示司機目的地與乘客目的地間的路程距離,即司機在送完乘客時返回的費用;DriverTrip(d, r)是指司機在不接送乘客的情況下自己的原有路程。
[0016]基于上述關(guān)系,可進一步得到計算拼車費用的如下公式:
[0017]Price (d, r) = Pickup(d, r)+2*RiderTrip(r)+Return(d, r) - DriverTrip (d, r)(公式I)
[0018]步驟1-2拼車匹配過程建模
[0019]本發(fā)明適用的拼車場景中,乘客和司機都有其各自的拼車約束條件。其中乘客有起點、終點的拼車約束,以及最遲到達時間rMx A?TinM和最大拼車費用車約束;司機有起點與終點的位置約束。因此,本方法將拼車匹配過程定義如下:
[0020]定義1.給定一個司機集合D和一個乘客r,拼車匹配旨在D中找到一個子集合D’,并且對于D’中的任意一個司機d,需要滿足如下約束:
[0021].時間約束:Pickup (d, r) +RiderTrip (r) <rmax ArrTime
[0022].費用約束:Price (d, r) <rmax Price
[0023].Skyline 約束:D’ 中的每個司機在 Pickup (d, r)與 Price (d, r)上是 skyline 關(guān)系O
[0024]Skyline約束是指集合D’中的司機與司機之間在乘客到達時間與拼車費用兩個屬性上是skyline關(guān)系,即任意一個司機不會同時在等待時間和拼車費用上大于另一個集合中的司機。否則選擇該司機則沒有實際意義,例如,屯在15分鐘內(nèi)接到乘客,并且所涉及的拼車費用是20元,d2提供給同一乘客的等待時間與拼車費用分別是17分鐘和25元,那么,本發(fā)明認(rèn)為d2這樣的司機作為候選司機推薦給乘客是沒有意義的。因此本發(fā)明匹配技術(shù)在匹配過程當(dāng)中,也對這一類的司機進行了相應(yīng)的skyline過濾處理。
[0025]步驟1-3拼車數(shù)據(jù)結(jié)構(gòu)設(shè)計
[0026]為了便于后續(xù)的拼車匹配計算、記錄備選司機和匹配過程,需要設(shè)計相關(guān)的拼車數(shù)據(jù)結(jié)構(gòu)。即如下兩個表格:
[0027]司機信息表(Driver Table):該表共有四個字段,用于記錄司機的相關(guān)信息。包括:1)司機唯一標(biāo)識ID ;2)司機當(dāng)前位置CurrentLocat1n ;3)司機的目的地位置Destinat1n ;4)司機從當(dāng)前位置到目的地需要經(jīng)過的路程DriverTrip。
[0028]匹配記錄表(Matching Table):該表共有6個字段,作為拼車匹配記錄和計算的依據(jù)。包括:1)司機唯一標(biāo)識ID ;2)司機起點與乘客起點間的最短實際路徑Pickup,該值可換算表示成乘客的實際等待時間;(3)司機起點與乘客起點間的歐式距離EuclideanPickup ;4)司機目的地與乘客目的地間的最短實際路徑Return ;5)司機目的地與乘客目的地間的歐式距離EuclideanReturn ;6)司機的起點與目的地間的最短路徑DriverTripJPDriver Table中的第4個字段。步驟2,實時拼車匹配;
[0029]本發(fā)明使用場景中,會有大量的司機與乘客參與,在每次拼車匹配過程中,有大量的司機與乘客間的最短路徑需要計算,而這些計算十分耗時,嚴(yán)重影響了實時拼車場景的應(yīng)用。為此,本發(fā)明設(shè)計了一系列的剪枝步驟,盡可能的減少最短路徑計算數(shù)量,進而提高拼車匹配的效率。
[0030]步驟2-1基于歐氏距離的乘客最大等待時間篩選策略
[0031]本步驟的核心思路是使用乘客的最遲到達時間作為約束條件,將此條件轉(zhuǎn)化為歐氏距離對司機進行篩選。
[0032]?時間約束轉(zhuǎn)化:乘客到達其目的地的時間為其等待時間Pickup與其從起點到目的地的路程對應(yīng)的時間RiderTrip之和。由于乘客RiderTrip為定值,因此將乘客的最遲到達時間rmax A?Time與乘客的RiderTrip對應(yīng)的時間相減即可得到乘客的最大等待時間Max_Pickup。即:Max_Pickup = rmaxJtaTime _ Pickup。因此乘客的最遲到達時間被轉(zhuǎn)化為最大等待時間,即司機的Pickup值不能超過Max_Pickup。
[0033]?歐氏范圍查詢篩選:為了將不能在乘客最大等待時間Max_Pickup內(nèi)趕到其起點的司機排除,可以采用歐氏范圍查詢的篩選方式。首先將時間Max_Pickup轉(zhuǎn)化為對應(yīng)的歐氏距離(用MaX_Pickup乘以當(dāng)前的路網(wǎng)平均車速),接著以乘客當(dāng)前的起點為圓心,以Max_Pickup對應(yīng)的歐氏距離為半徑做一個圓形的范圍查詢(Range Query)。所有不在此圓形范圍內(nèi)的司機將會被排除,原因是他們在最短距離(歐氏距離EuclideanPickup)的條件下也無法及時趕到乘客起點。
[0034]步驟2-2基于歐式距離的最大拼車費用篩選策略
[0035]對通過了上一步歐氏距離篩選的司機,將會被添加到匹配信息表中,并利用乘客的最大拼車費用約束進行進一步篩選,排除在歐氏距離下的所需拼車費用超過乘客最大拼車費用rmax—_的司機。
[0036]將拼車費用Price (d, r)(即公式I)當(dāng)中的Pickup和Return使用歐氏距離代替,得到歐氏拼車費用公式:
[0037]EuclideanPrice(d, r) = EuclideanPickup(d, r)+2*RiderTrip(r) +
[0038]EuclideanReturn - DriverTrip (d)(公式 2、
[0039]因為路網(wǎng)實際距離大于歐氏距離,所以若司機使用公式2計算出的理想拼車費用EuclideanPrice (d, r)大于rmax—Mee,則根據(jù)不等式的傳遞性,用公式I得出的實際費用Price (d, r)也將大于rmax 因此這部分司機不滿足乘客的最大拼車費用條件,將被排除。
[0040]至此,步驟I與步驟2均未產(chǎn)生任何的最短路徑距離計算,僅利用簡單的歐氏距離計算可以過濾掉一部分司機。
[0041]下面,對于通過上面兩步驟篩選的司機,將通過匹配表重排序,對司機Return和Pickup漸進式的搜索與篩選,最后根據(jù)skyline的原則為乘客選出候選的司機。
[0042]步驟2-3漸進式Return篩選
當(dāng)前第1頁
1 
2 
3