基于GPS的新型出租車調(diào)度系統(tǒng)
引言
本文引用地址:http://butianyuan.cn/article/201706/350689.htm在大多數(shù)國(guó)家,出租車都是一種十分普遍和便捷的交通工具。多數(shù)發(fā)達(dá)國(guó)家建設(shè)了完善的出租車調(diào)度系統(tǒng),實(shí)現(xiàn)了出租車高效運(yùn)營(yíng),如美國(guó),電話預(yù)約和站點(diǎn)候客的出租車運(yùn)營(yíng)方式占98%,“路拋式”僅占2%;在倫敦、巴黎、新加坡等發(fā)達(dá)國(guó)家城市,除非電話預(yù)約,或者在指定的??康攸c(diǎn),否則很少能看到乘客在街頭打車,這大大提高了公共交通資源的運(yùn)行效率。但是在我國(guó)的大多數(shù)城市,仍然以乘客街頭叫車為主,雖然部分城市已經(jīng)實(shí)現(xiàn)了出租車安裝GPS設(shè)備和實(shí)時(shí)記錄出租車位置信息,但是并沒有很好地利用這些GPS位置信息為出租車調(diào)度服務(wù),導(dǎo)致很多出租車GPS系統(tǒng)成為擺設(shè)。為了進(jìn)一步提高我國(guó)的出租車調(diào)度系統(tǒng)的運(yùn)行效率和提高GPS系統(tǒng)的實(shí)用性,很有必要研究一種結(jié)合GPS/GIS技術(shù)的快速高效出租車調(diào)度系統(tǒng)。
本文設(shè)計(jì)和實(shí)現(xiàn)了一種新型的出租車調(diào)度系統(tǒng),該系統(tǒng)通過改進(jìn)當(dāng)前調(diào)度系統(tǒng)的叫車方式,并提出基于網(wǎng)格的出租車調(diào)度算法,該算法結(jié)合通信平臺(tái)上傳的出租車GPS位置信息和GIS系統(tǒng)網(wǎng)格信息把出租車分組,實(shí)現(xiàn)小組內(nèi)及小組間出租車高效協(xié)作和調(diào)度,很大程度上提高了出租車的調(diào)度效率。
1 系統(tǒng)設(shè)計(jì)
本系統(tǒng)包括三個(gè)部分:出租車調(diào)度終端、通信平臺(tái)和調(diào)度中心。調(diào)度終端是基于三星S3C2440硬件平臺(tái)和WINCE操作系統(tǒng)的智能嵌入式設(shè)備,實(shí)現(xiàn)了與調(diào)度平臺(tái)的通信和現(xiàn)場(chǎng)智能控制;調(diào)度終端實(shí)現(xiàn)GPS數(shù)據(jù)的采集、上報(bào)和調(diào)度信息的顯示;通信平臺(tái)提供準(zhǔn)確、高效的信息傳輸功能;調(diào)度中心實(shí)現(xiàn)出租車快速調(diào)度以及基于GIS的車輛實(shí)時(shí)監(jiān)控功能。
1.1 出租車調(diào)度終端設(shè)計(jì)
出租車調(diào)度終端在硬件上包括兩部分:基于三星S3C2440的系統(tǒng)板和基于VK3224的設(shè)備擴(kuò)展板。系統(tǒng)板和擴(kuò)展板之間通過SPI接口進(jìn)行通信。系統(tǒng)板包括:
S3C2440 ARM9核心處理器、存儲(chǔ)器FLASH、SDRAM、電源管理器件、RS232、I/O口空載標(biāo)識(shí)燈接口及上報(bào)乘客信息按鈕等。接口板包括:VK3224、GPS模塊、GPRS模塊和RS232等。此調(diào)度終端在設(shè)計(jì)上增加了一個(gè)出租車司機(jī)上報(bào)乘客位置的按鈕,其作用是行駛在馬路上的每個(gè)出租車司機(jī)都可以上報(bào)在路上發(fā)現(xiàn)的乘客位置信息,系統(tǒng)收到信息就會(huì)調(diào)度最近的空載出租車前來服務(wù)。
終端的硬件結(jié)構(gòu)如圖1所示。
出租車調(diào)度終端在軟件設(shè)計(jì)上采用透明通道提供可靠的數(shù)據(jù)傳輸層。透明通道是通過GPRS上面封裝TCP/IP協(xié)議和服務(wù)器進(jìn)行通信,當(dāng)主站控制終端上某個(gè)串口設(shè)備的時(shí)候,將主站發(fā)送的數(shù)據(jù)包中加載串口數(shù)據(jù),數(shù)據(jù)包傳輸?shù)搅私K端后,終端將這些串口數(shù)據(jù)直接發(fā)送給對(duì)應(yīng)的串口設(shè)備,當(dāng)串口設(shè)備返回?cái)?shù)據(jù)后,系統(tǒng)將這些數(shù)據(jù)加載在TCP/IP數(shù)據(jù)包上,通過GPRS發(fā)送到主站,在主站應(yīng)用層看來和直接操作串口沒有區(qū)別。調(diào)度終端和服務(wù)器之間GPS位置信息上傳,上報(bào)乘客信息,調(diào)度指令下發(fā)等都是通過透明通道完成的。調(diào)度終端軟件設(shè)計(jì)圖如圖2所示。
1.2 通信平臺(tái)
為了實(shí)現(xiàn)平臺(tái)和出租車的通訊以及收集乘客叫車信息,通信平臺(tái)包括M2M通信模塊、短信平臺(tái)和呼叫中心三個(gè)模塊。
(1)M2M通信模塊實(shí)現(xiàn)出租車和調(diào)度中心的通信功能,具體包括:出租車位置上傳、路邊乘客位置上傳、調(diào)度中心指令下發(fā)等。M2M通信模塊使用基于GPRS網(wǎng)絡(luò)上的TCP/IP技術(shù),服務(wù)器端采用Windows平臺(tái)的完成端口(IOCP)技術(shù),從而保證單個(gè)服務(wù)器能同時(shí)接入大量出租車調(diào)度終端(大于5000臺(tái))。完成端口的最大優(yōu)點(diǎn)在于其管理海量連接時(shí)的處理效率,通過操作系統(tǒng)內(nèi)核的相關(guān)機(jī)制完成I/O處理的高效率,由于出租車調(diào)度過程中連接量巨大,且每個(gè)連接上收發(fā)的數(shù)據(jù)包比較小,通常只有幾k甚至不到1k的字節(jié),因此很適合使用完成端口技術(shù)。
(2)短信平臺(tái)和呼叫中心模塊實(shí)現(xiàn)乘客和調(diào)度中心之間的通信,主要功能是乘客位置和打車請(qǐng)求收集。短信平臺(tái)負(fù)責(zé)接收短信調(diào)度的短信,再由調(diào)度中心分析短信內(nèi)容,完成短信調(diào)度。呼叫中心負(fù)責(zé)電話鏈路,話務(wù)員和系統(tǒng)根據(jù)來電內(nèi)容使用調(diào)度中心模塊實(shí)現(xiàn)電話調(diào)度。
1.3 調(diào)度中心設(shè)計(jì)
調(diào)度中心分為前臺(tái)應(yīng)用程序和后臺(tái)服務(wù)程序。
前臺(tái)應(yīng)用軟件采用B/S架構(gòu),主要包括:系統(tǒng)管理、注冊(cè)管理和調(diào)度管理三個(gè)部分,
(1)系統(tǒng)管理包括:部門管理、用戶管理、角色管理和權(quán)限管理等;
(2)注冊(cè)管理包括:固定電話注冊(cè)、手機(jī)注冊(cè)。固定電話注冊(cè)完成固定電話和單個(gè)固定叫車位置的關(guān)聯(lián)綁定,如酒店、公司等,通過GIS系統(tǒng)記錄該位置的經(jīng)緯度信息;手機(jī)短信注冊(cè)完成手機(jī)號(hào)碼和幾個(gè)固定叫車位置的綁定,每個(gè)綁定有一個(gè)標(biāo)簽短信代替,同時(shí)將每個(gè)叫車位置在GIS系統(tǒng)中的經(jīng)緯度信息記錄下來。
(3)調(diào)度管理包括:司機(jī)互助調(diào)度、話務(wù)員調(diào)度、注冊(cè)電話調(diào)度、短信調(diào)度等模塊。
后臺(tái)服務(wù)程序采用C/S架構(gòu),將通信平臺(tái)所收集到的出租車GPS位置信息和乘客GPS位置信息聯(lián)系起來,通過下節(jié)所講的基于網(wǎng)格的調(diào)度算法完成綜合調(diào)度,調(diào)度平臺(tái)和通信平臺(tái)是一個(gè)密切聯(lián)系的模塊,具體關(guān)系如圖3所示。
圖3 調(diào)度系統(tǒng)整體架構(gòu)(參見右欄)
2 系統(tǒng)關(guān)鍵模塊設(shè)計(jì)
2.1 叫車方式設(shè)計(jì)
國(guó)內(nèi)外現(xiàn)有出租車調(diào)度系統(tǒng)的叫車方式主要分為兩種類型:一是乘客打電話報(bào)告自己的位置,調(diào)度員或話務(wù)員在GIS地圖上標(biāo)注乘客位置;二是乘客觸發(fā)TAXI站點(diǎn)應(yīng)招按鈕叫車。
本系統(tǒng)在原有方式的基礎(chǔ)上增加和改進(jìn)了叫車方式。
1)在調(diào)度終端上增加一個(gè)報(bào)告乘客位置按鈕,當(dāng)出租車滿載期間在路上行駛時(shí)如若遇到路邊等車乘客就觸發(fā)此按鈕,實(shí)現(xiàn)出租車司機(jī)實(shí)時(shí)上報(bào)乘客位置,此方式體現(xiàn)了一種“我為人人,人人為我”的思想,這種互助協(xié)作的搜索,擴(kuò)大了搜索乘客的空間范圍。
2)在GIS地圖中事先注冊(cè)乘車地點(diǎn),將該地點(diǎn)的經(jīng)緯度信息與固定電話號(hào)碼綁定,乘客用綁定的固定電話撥打調(diào)度中心,調(diào)度中心即可確定撥入用戶的叫車位置,實(shí)現(xiàn)電話調(diào)度。這樣,注冊(cè)的固定電話(包括:家庭固話和公用電話亭電話等)都等價(jià)于出租車應(yīng)召站點(diǎn),這種叫車方式,調(diào)度中心無須人工參與,系統(tǒng)自動(dòng)完成調(diào)度。
3)短信叫車,乘客事先注冊(cè)幾個(gè)自己經(jīng)常打車的地點(diǎn),比如說家、公司等,然后將該地點(diǎn)的經(jīng)緯度信息、手機(jī)號(hào)碼和位置標(biāo)簽關(guān)聯(lián),乘客需要叫車時(shí)發(fā)送事先注冊(cè)好的位置標(biāo)簽短信,調(diào)度中心即可確定叫車乘客位置,從而實(shí)現(xiàn)短信調(diào)度。這三種叫車方式,調(diào)度中心端無須調(diào)度員人工干預(yù),自動(dòng)調(diào)度,方便乘客,節(jié)省資源。
2.2 基于網(wǎng)格的調(diào)度算法
現(xiàn)有的出租車調(diào)度中心大多設(shè)計(jì)為人工服務(wù)模式,首先調(diào)度中心不斷采集在系統(tǒng)中注冊(cè)的出租車的狀態(tài),然后將為空載狀態(tài)的出租車按照先進(jìn)先出原則送入一個(gè)隊(duì)列;最后對(duì)于每個(gè)在線預(yù)約的乘客請(qǐng)求,調(diào)度員會(huì)按照自己以往的經(jīng)驗(yàn),人工確定最方便的一輛出租車,如果同時(shí)有多個(gè)出租車滿足請(qǐng)求,就按照先進(jìn)先服務(wù)的方式前去服務(wù),這種方式人工成本較高,且服務(wù)質(zhì)量難以提高。
本系統(tǒng)放棄人工服務(wù)方式,采用系統(tǒng)自動(dòng)調(diào)度方式。
本調(diào)度服務(wù)程序采用基于網(wǎng)格的出租車調(diào)度算法,該算法具體過程如下:
(1)劃分城市網(wǎng)格。在GIS地圖上根據(jù)城市大小,用適當(dāng)?shù)木匦慰虬殉鞘懈采w,獲取矩形框?qū)蔷€的經(jīng)緯度信息:左上角經(jīng)緯度值為(a,b)、右下角經(jīng)緯度值為(c,d);結(jié)合城市出租車數(shù)量確定網(wǎng)格數(shù)(M×N)。
城市出租車總數(shù)為Tsum,出租車空載率為Pec,空載出租車數(shù)為Tec=Pec×Tsum。選取網(wǎng)格數(shù)約等于空載出租車數(shù)Tec≈M×N,為了計(jì)算方便,一般M、N選擇為2的冪次數(shù)(如:16、32、64、128、……),同時(shí)為了保證網(wǎng)格長(zhǎng)寬盡量接近,所以選擇M/N比值盡量靠近值。
(2)劃分城市經(jīng)緯度數(shù)組。確定M、N值以后,把所選城市經(jīng)度范圍(a,c)均分為M份,存入經(jīng)度數(shù)組citylongitude[M]中,相鄰值間隔為;同時(shí)將城市緯度范圍(b,d)均分為N份,存入緯度數(shù)組citylatitude[N]中,相鄰值間隔為。劃分經(jīng)緯度數(shù)組是為了下面使用二分法計(jì)算出租車和請(qǐng)求乘客所在網(wǎng)格。
(3)網(wǎng)格信息維護(hù)。通過劃分城市經(jīng)緯度數(shù)組確定網(wǎng)格數(shù)組CityGrid[M][N],網(wǎng)格數(shù)據(jù)結(jié)構(gòu)包括網(wǎng)格經(jīng)緯度等基本信息,同時(shí)每個(gè)網(wǎng)格動(dòng)態(tài)維護(hù)兩個(gè)鏈表:網(wǎng)格空車鏈表和網(wǎng)格乘客鏈表。城市網(wǎng)格結(jié)構(gòu)如圖4所示。
a.網(wǎng)格空車鏈表初始化。將當(dāng)前系統(tǒng)中的所有空載出租車根據(jù)所處位置,通過二分法計(jì)算出租車所屬網(wǎng)格,加載到對(duì)應(yīng)網(wǎng)格空車鏈表中,由于網(wǎng)格空車鏈表需要根據(jù)出租車終端上報(bào)的狀態(tài)信息實(shí)時(shí)調(diào)整,鏈表的增刪操作較為頻繁,因此本系統(tǒng)中網(wǎng)格空車鏈表采用雙鏈表結(jié)構(gòu)。鏈表中的結(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)如表1所示。
表1 出租車數(shù)據(jù)結(jié)構(gòu)
b.網(wǎng)格空車鏈表動(dòng)態(tài)維護(hù)。根據(jù)出租車終端實(shí)時(shí)上報(bào)的狀態(tài)信息,判斷是否為空載狀態(tài),如果為空載,判斷鏈表中該出租車是否為空載狀態(tài),如果為空載判斷本次是否需要將出租車調(diào)整網(wǎng)格,如果鏈表中沒有該出租車,根據(jù)上報(bào)的GPS位置信息計(jì)算所屬網(wǎng)格,將該出租車插入該網(wǎng)格空車鏈表中,空載狀態(tài)計(jì)算完畢。如果上報(bào)狀態(tài)為滿載狀態(tài),判斷此前出租車是否為空載狀態(tài),如果為空載,將其從空車鏈表中刪除,滿載狀態(tài)計(jì)算完畢。具體處理流程圖如圖5所示。
未調(diào)度的乘客根據(jù)所處位置,通過二分法計(jì)算乘客所屬網(wǎng)格,加載到對(duì)應(yīng)網(wǎng)格乘客鏈表中,遵循“先請(qǐng)求先服務(wù)”
原則,本系統(tǒng)中網(wǎng)格乘客鏈表采用鏈表隊(duì)列結(jié)構(gòu),鏈表中的結(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)如表2所示。
表2 乘客數(shù)據(jù)結(jié)構(gòu)
(4)乘客請(qǐng)求調(diào)度。通過第(3)步將出租車和乘客按照網(wǎng)格分組,單個(gè)網(wǎng)格中如果網(wǎng)格乘客鏈表不為空,從鏈表選擇一個(gè)乘客,同時(shí)判斷該網(wǎng)格中空車鏈表是否為空,如果不為空,從該鏈表中選擇一個(gè)空車去滿足該乘客請(qǐng)求;如果該網(wǎng)格中空車鏈表為空,選擇相鄰網(wǎng)格中空車鏈表中的空車來滿足乘客請(qǐng)求,直到搜索到空車為止。搜索到空載出租車后把乘客GPS位置和乘客具體文字描述位置發(fā)送給出租車終端,發(fā)送成功后,將乘客從網(wǎng)格乘客鏈表中刪除,同時(shí)將對(duì)應(yīng)的空車從網(wǎng)格空車鏈表中刪除。至此,調(diào)度過程完成。
3 模擬與性能測(cè)試
我們通過一臺(tái)服務(wù)器(DELLR710機(jī)架式服務(wù)器,XEON E5504×2JSDM/4G內(nèi)存條)作為調(diào)度服務(wù)器,模擬城市網(wǎng)格劃分為64×64=4096的系統(tǒng)調(diào)度,一臺(tái)PC機(jī)模擬10000臺(tái)出租車數(shù)據(jù)上傳GPS位置和狀態(tài)信息,上傳間隔為10s,測(cè)試內(nèi)容包括:出租車司機(jī)互助調(diào)度、電話調(diào)度、短信調(diào)度。通過模擬測(cè)試10000臺(tái)出租車運(yùn)行,調(diào)度服務(wù)器CPU使用率49%,證明此系統(tǒng)是高效可行的。
4 結(jié)語
本文基于GPS/GIS設(shè)計(jì)和實(shí)現(xiàn)了一種新型的出租車調(diào)度系統(tǒng),該系統(tǒng)改進(jìn)了現(xiàn)有出租車調(diào)度終端和叫車方式,并提出一種基于網(wǎng)格的出租車調(diào)度算法,實(shí)現(xiàn)出租車自動(dòng)調(diào)度,最大限度地減少人工參與,通過模擬測(cè)試證明該算法高效實(shí)用。通過本系統(tǒng)可以有效降低乘客等待時(shí)間(CWT)和出租車空駛率(ECP),提高出租車系統(tǒng)運(yùn)行效率。
評(píng)論