本發(fā)明涉及網(wǎng)絡(luò)路徑規(guī)劃算法、信息通信、電子地圖等領(lǐng)域,特別涉及一種基于網(wǎng)絡(luò)路徑選擇算法的地圖路徑規(guī)劃方法及系統(tǒng)。
背景技術(shù):
隨著社會(huì)的飛速發(fā)展,城市規(guī)模不斷擴(kuò)大,越來越多的道路構(gòu)成了四通八達(dá)的交通網(wǎng),拉近了人們之間的距離,然而,在我們享受著交通現(xiàn)代化建設(shè)帶來便利的同時(shí),也出現(xiàn)了很多問題,復(fù)雜的交通網(wǎng)絡(luò)使人們無(wú)法適從,頻繁的交通擁堵使人們難以選擇正確的行車線路,處于陌生環(huán)境時(shí)無(wú)法確定自己的位置和附近的交通狀況及設(shè)施分布,這些問題的存在經(jīng)常給人們帶來困擾,也浪費(fèi)了人們的時(shí)間。
近幾年來,隨著GPS定位的民用化和GIS系統(tǒng)的不斷發(fā)展,加上解決上述問題的緊迫性,越來越多的地圖導(dǎo)航系統(tǒng)層出不窮,它們的出現(xiàn)極大得方便了人們的生活,大家可以借助導(dǎo)航系統(tǒng)隨時(shí)隨地地了解自己所處的地理位置和周邊環(huán)境,結(jié)合當(dāng)前的道路情況做出最合理的規(guī)劃,尋找抵達(dá)目的地的最優(yōu)路徑,也可以快速找到周邊所需設(shè)施,便捷有效,有效避免了出行中迷路、繞路、擁堵等情況的發(fā)生,最近無(wú)人駕駛等方向的研究也非?;馃?,它的發(fā)展更加離不開精確合理的定位和路徑規(guī)劃,錯(cuò)綜復(fù)雜的道路形成一個(gè)網(wǎng)狀拓?fù)浣Y(jié)構(gòu),每個(gè)地點(diǎn)都可以看作一個(gè)節(jié)點(diǎn),他們之間的道路可以看作邊,導(dǎo)航的核心問題就是實(shí)現(xiàn)兩點(diǎn)間的路徑規(guī)劃,為用戶提供最優(yōu)的路徑選擇,因此,常見的網(wǎng)絡(luò)路徑選擇規(guī)劃算法都可以經(jīng)過適當(dāng)修改后,應(yīng)用于地圖路徑規(guī)劃問題,在車載導(dǎo)航系統(tǒng)中,城市道路網(wǎng)的表現(xiàn)形式一般為GIS矢量電子地圖,采用的是Shape格式的矢量地圖結(jié)構(gòu)文件,矢量地圖數(shù)據(jù)是路徑規(guī)劃的基礎(chǔ),路徑規(guī)劃的過程是將路網(wǎng)數(shù)據(jù)構(gòu)造成拓?fù)鋱D,然后基于具有拓?fù)浣Y(jié)構(gòu)的路網(wǎng)數(shù)據(jù)運(yùn)用路徑搜索算法進(jìn)行尋徑的過程,尋徑時(shí)如何快速準(zhǔn)確地找出城市路網(wǎng)中起點(diǎn)到目標(biāo)點(diǎn)之間的最優(yōu)路徑,很大程度上取決于矢量地圖的數(shù)據(jù)結(jié)構(gòu)和路徑搜索算法的選擇。
由此可見,導(dǎo)航系統(tǒng)的核心之一是路徑規(guī)劃問題,它直接決定了一個(gè)導(dǎo)航系統(tǒng)的有效性和可用性,由于現(xiàn)實(shí)中的道路普遍呈網(wǎng)狀分布,因此可以利用常見的網(wǎng)絡(luò)路徑選擇搜索算法,如Dijkstra算法與最佳優(yōu)先搜索等,加以修改之后對(duì)地圖路徑進(jìn)行規(guī)劃,為用戶選擇最優(yōu)路徑,現(xiàn)在雙向廣度搜索算法、啟發(fā)式最優(yōu)路徑搜索算法等都取得了不錯(cuò)的效果。
然而,現(xiàn)有的導(dǎo)航系統(tǒng)還都普遍存在著一定問題,主要表現(xiàn)在以下幾點(diǎn):
(1)很多系統(tǒng)都是按照系統(tǒng)中保存的電子地圖直接進(jìn)行靜態(tài)規(guī)劃,而多種因素的影響和路況的實(shí)時(shí)變化,導(dǎo)致很難找到最優(yōu)路徑;
(2)地圖系統(tǒng)中經(jīng)常存在信息更新不及時(shí)的情況,在設(shè)施發(fā)生變動(dòng)時(shí),很多時(shí)候規(guī)劃結(jié)果會(huì)發(fā)生偏差,有些路徑甚至?xí)豢蛇_(dá);
(3)在進(jìn)行路徑規(guī)劃時(shí),綜合考慮的因素太少,例如天氣、突發(fā)事故等情況,經(jīng)常導(dǎo)致最終的結(jié)果并不是最優(yōu);
(4)一次導(dǎo)航進(jìn)行過程中,現(xiàn)有系統(tǒng)都只能顯示出規(guī)劃完成時(shí)計(jì)算出的數(shù)據(jù),如路線、剩余距離和時(shí)間等,無(wú)法在行駛過程中動(dòng)態(tài)變化,顯示最新的結(jié)果,也不能實(shí)時(shí)根據(jù)外界條件的變化對(duì)路線進(jìn)行微調(diào);
(5)現(xiàn)有導(dǎo)航系統(tǒng)無(wú)法根據(jù)用戶偏好進(jìn)行路徑規(guī)劃,例如分析收集到的用戶信息,可以得出用戶偏好,從而推薦用戶可能最喜歡的路線;
(6)普遍沒有反饋機(jī)制,不能根據(jù)用戶的使用情況來優(yōu)化系統(tǒng),例如很多用戶在某地掉頭或不按規(guī)劃路線走,可以判斷此路不通;
(7)缺少人機(jī)交互,很多時(shí)候用戶無(wú)法事先在系統(tǒng)中寫入自己的用路需求,在用路過程中也不能很方便得向系統(tǒng)反應(yīng)問題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提出一種基于網(wǎng)絡(luò)路徑選擇算法的地圖路徑規(guī)劃方法及系統(tǒng)。
本發(fā)明提出一種基于網(wǎng)絡(luò)路徑選擇算法的地圖路徑規(guī)劃系統(tǒng),包括:
信息獲取模塊,用于獲取用戶輸入的出發(fā)地與目的地,并從數(shù)據(jù)存儲(chǔ)模塊中獲取所述出發(fā)地與所述目的地的交通信息,同時(shí)調(diào)用互聯(lián)網(wǎng)上的交通信息及交通控制中心發(fā)布的實(shí)時(shí)交通信息,并發(fā)送給所述數(shù)據(jù)存儲(chǔ)模塊進(jìn)行存儲(chǔ);
定位模塊,用于根據(jù)用戶輸入的出發(fā)地與目的地,在地圖中查找所述出發(fā)地與所述目的地的位置;
信息處理模塊,用于將所述交通信息與所述實(shí)時(shí)交通信息進(jìn)行處理,生成交通信息參數(shù),并將所述交通信息參數(shù)發(fā)送到路徑規(guī)劃模塊;
所述路徑規(guī)劃模塊,用于根據(jù)所述交通信息參數(shù)與所述出發(fā)地與所述目的地的位置,通過網(wǎng)絡(luò)路徑選擇算法進(jìn)行路徑規(guī)劃,查找N條路徑并返回給用戶,用戶選定所需路徑。
還包括動(dòng)態(tài)更新模塊,用于用戶在選定路線后,實(shí)時(shí)刷新用戶的位置及周邊環(huán)境,對(duì)返回?cái)?shù)據(jù)進(jìn)行動(dòng)態(tài)微調(diào),為用戶顯示的當(dāng)前位置、交通信息及剩余到達(dá)時(shí)間。
還包括信息反饋模塊,用于用戶在使用所述系統(tǒng)的過程中遇到任何問題或突發(fā)情況,主動(dòng)反饋給所述系統(tǒng),幫助所述系統(tǒng)更好得實(shí)現(xiàn)地圖路徑規(guī)劃。
所述信息處理模塊中,所述交通信息參數(shù)還包括獲取用戶最近一段時(shí)間內(nèi)使用所述系統(tǒng)時(shí)產(chǎn)生的數(shù)據(jù),獲取用戶的使用偏好,作為地圖路徑規(guī)劃時(shí)的考慮因素;
獲取對(duì)所有用戶最近一段時(shí)間內(nèi)在所述出發(fā)地與所述目的地的路徑選擇情況進(jìn)行分析,獲取路徑被選擇次數(shù)為N的路徑,并生成交通信息參數(shù)。
所述網(wǎng)絡(luò)路徑選擇算法為設(shè)出發(fā)地S、目的地D,輸出為出發(fā)地S與目的地D之間的一條路徑,具體步驟為:
判斷出發(fā)地S與目的地D所在的路網(wǎng)級(jí)別,假設(shè)出發(fā)地S位于第i級(jí)路網(wǎng)Gi,目的地D位于第j級(jí)路網(wǎng)Gj,則在第i級(jí)路網(wǎng)Gi上調(diào)用Dijkstra算法,找到距離出發(fā)地S最近的位于i-1級(jí)路網(wǎng)Gi-1上的節(jié)點(diǎn)Si-1,接著在第i-1級(jí)路網(wǎng)Gi-1上調(diào)用Dijkstra算法,找到距離節(jié)點(diǎn)Si-1最近的位于i-2級(jí)路網(wǎng)Gi-2上的節(jié)點(diǎn)Si-2,直到在第2級(jí)路網(wǎng)G2上找到距離S2最近的位于最低級(jí)路網(wǎng)上的節(jié)點(diǎn)S1,獲取從出發(fā)地S到S1的路徑序列RS1;同樣在第j級(jí)路網(wǎng)Gj上調(diào)用Dijkstra算法,找到距離目的地D最近的位于j-1級(jí)路網(wǎng)Gj-1上的節(jié)點(diǎn)Dj-1,接著在第j-1級(jí)路網(wǎng)Gj-1上調(diào)用Dijkstra算法,找到距離Dj-1最近的位于j-2級(jí)路網(wǎng)Gj-2上的節(jié)點(diǎn)Sj-2,直到在第2級(jí)路網(wǎng)G2上找到距離D2最近的位于最低級(jí)路網(wǎng)上的節(jié)點(diǎn)D1,獲取從目的地D到D1的路徑序列RD1;
在最低級(jí)路網(wǎng)G1上,調(diào)用啟發(fā)式最優(yōu)路徑搜索算法,搜索從S1到D1的最短路徑,得到路徑序列RS1D1;
將RS1,RD1,RS1D1結(jié)合,輸出出發(fā)地S到目的地D之間的一條最優(yōu)路徑。
本發(fā)明還提出一種基于網(wǎng)絡(luò)路徑選擇算法的地圖路徑規(guī)劃方法,包括:
步驟1,獲取用戶輸入的出發(fā)地與目的地,并從數(shù)據(jù)存儲(chǔ)模塊中獲取所述出發(fā)地與所述目的地的交通信息,同時(shí)調(diào)用互聯(lián)網(wǎng)上的交通信息及交通控制中心發(fā)布的實(shí)時(shí)交通信息,并發(fā)送給所述數(shù)據(jù)存儲(chǔ)模塊進(jìn)行存儲(chǔ);
步驟2,根據(jù)用戶輸入的出發(fā)地與目的地,在地圖中查找所述出發(fā)地與所述目的地的位置;
步驟3,將所述交通信息與所述實(shí)時(shí)交通信息進(jìn)行處理,生成交通信息參數(shù),并將所述交通信息參數(shù)發(fā)送到路徑規(guī)劃模塊;
所述路徑規(guī)劃模塊,用于根據(jù)所述交通信息參數(shù)與所述出發(fā)地與所述目的地的位置,通過網(wǎng)絡(luò)路徑選擇算法進(jìn)行路徑規(guī)劃,查找N條路徑并返回給用戶,用戶選定所需路徑。
還包括用戶在選定路線后,實(shí)時(shí)刷新用戶的位置及周邊環(huán)境,對(duì)返回?cái)?shù)據(jù)進(jìn)行動(dòng)態(tài)微調(diào),為用戶顯示的當(dāng)前位置、交通信息及剩余到達(dá)時(shí)間。
還包括用戶在使用所述系統(tǒng)的過程中遇到任何問題或突發(fā)情況,主動(dòng)反饋給所述系統(tǒng),幫助所述系統(tǒng)更好得實(shí)現(xiàn)地圖路徑規(guī)劃。
所述步驟3中,所述交通信息參數(shù)還包括獲取用戶最近一段時(shí)間內(nèi)使用所述系統(tǒng)時(shí)產(chǎn)生的數(shù)據(jù),獲取用戶的使用偏好,作為地圖路徑規(guī)劃時(shí)的考慮因素;
獲取對(duì)所有用戶最近一段時(shí)間內(nèi)在所述出發(fā)地與所述目的地的路徑選擇情況進(jìn)行分析,獲取路徑被選擇次數(shù)為N的路徑,并生成交通信息參數(shù)。
所述網(wǎng)絡(luò)路徑選擇算法為設(shè)出發(fā)地S、目的地D,輸出為出發(fā)地S與目的地D之間的一條路徑,具體步驟為:
判斷出發(fā)地S與目的地D所在的路網(wǎng)級(jí)別,假設(shè)出發(fā)地S位于第i級(jí)路網(wǎng)Gi,目的地D位于第j級(jí)路網(wǎng)Gj,則在第i級(jí)路網(wǎng)Gi上調(diào)用Dijkstra算法,找到距離出發(fā)地S最近的位于i-1級(jí)路網(wǎng)Gi-1上的節(jié)點(diǎn)Si-1,接著在第i-1級(jí)路網(wǎng)Gi-1上調(diào)用Dijkstra算法,找到距離節(jié)點(diǎn)Si-1最近的位于i-2級(jí)路網(wǎng)Gi-2上的節(jié)點(diǎn)Si-2,直到在第2級(jí)路網(wǎng)G2上找到距離S2最近的位于最低級(jí)路網(wǎng)上的節(jié)點(diǎn)S1,獲取從出發(fā)地S到S1的路徑序列RS1;同樣在第j級(jí)路網(wǎng)Gj上調(diào)用Dijkstra算法,找到距離目的地D最近的位于j-1級(jí)路網(wǎng)Gj-1上的節(jié)點(diǎn)Dj-1,接著在第j-1級(jí)路網(wǎng)Gj-1上調(diào)用Dijkstra算法,找到距離Dj-1最近的位于j-2級(jí)路網(wǎng)Gj-2上的節(jié)點(diǎn)Sj-2,直到在第2級(jí)路網(wǎng)G2上找到距離D2最近的位于最低級(jí)路網(wǎng)上的節(jié)點(diǎn)D1,獲取從目的地D到D1的路徑序列RD1;
在最低級(jí)路網(wǎng)G1上,調(diào)用啟發(fā)式最優(yōu)路徑搜索算法,搜索從S1到D1的最短路徑,得到路徑序列RS1D1;
將RS1,RD1,RS1D1結(jié)合,輸出出發(fā)地S到目的地D之間的一條最優(yōu)路徑。
由以上方案可知,本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明結(jié)合地圖中道路形成的網(wǎng)狀拓?fù)浣Y(jié)構(gòu)和系統(tǒng)實(shí)時(shí)接收到的各種信息,為用戶尋找出當(dāng)前可達(dá)目的地的最優(yōu)路徑,并且可以根據(jù)當(dāng)前的情況不斷進(jìn)行重新規(guī)劃,實(shí)時(shí)為用戶呈現(xiàn)最新結(jié)果,同時(shí)設(shè)有反饋機(jī)制,可以收集用戶的路徑信息和主動(dòng)反饋的信息,用來優(yōu)化路徑規(guī)劃的結(jié)果。
附圖說明
圖1為本發(fā)明系統(tǒng)模塊組成圖;
圖2為本發(fā)明一次導(dǎo)航過程的流程圖。
具體實(shí)施方式
針對(duì)現(xiàn)有導(dǎo)航系統(tǒng)存在的問題,本發(fā)明設(shè)計(jì)了一種基于網(wǎng)絡(luò)路徑選擇算法的地圖路徑規(guī)劃方法及系統(tǒng),它可以根據(jù)GPS定位信息及系統(tǒng)實(shí)時(shí)接收到的各種信息,如天氣、突發(fā)事故、實(shí)時(shí)路況等多方面的信息,通過特有的路徑選擇算法為用戶規(guī)劃出當(dāng)前可達(dá)目的地的最優(yōu)路徑,同時(shí),該系統(tǒng)可以收集用戶在行進(jìn)過程中產(chǎn)生的信息,利用這些數(shù)據(jù)來優(yōu)化路徑選擇算法,盡量為用戶選擇最優(yōu)路徑,也可以根據(jù)用戶個(gè)人的用路習(xí)慣,在進(jìn)行規(guī)劃時(shí)考慮用戶偏好這個(gè)因素,為其推薦用戶可能最喜歡的路線,同時(shí),本發(fā)明還結(jié)合Dijkstra算法和啟發(fā)式算法,提出了一種基于多級(jí)路網(wǎng)數(shù)據(jù)模型的多級(jí)比例尺啟發(fā)式最優(yōu)路徑規(guī)劃算法作為路徑規(guī)劃的一個(gè)示例,并基于A*算法,對(duì)實(shí)際導(dǎo)航過程中的幾個(gè)常見限定條件提出了一種解決方法,作為信息處理模塊滿足用戶特定需求的一個(gè)示例。
如附圖1所示,該系統(tǒng)包含定位模塊、信息獲取模塊、用戶信息采集模塊、數(shù)據(jù)存儲(chǔ)模塊、信息處理模塊、路徑規(guī)劃模塊、信息反饋模塊、動(dòng)態(tài)更新模塊等。其中定位模塊可以快速獲取GPS定位的信息,確定用戶的地點(diǎn),接著信息獲取模塊會(huì)搜集該點(diǎn)附近的各種信息,包括地圖上固有的道路和周邊各種設(shè)施的分布信息,以及實(shí)時(shí)獲取的當(dāng)前路況、天氣、突發(fā)事件和周圍用戶發(fā)布的即時(shí)信息,在盡可能多得獲取了需要的信息后,信息處理模塊會(huì)將搜集到的所有信息進(jìn)行處理和規(guī)范化,得出規(guī)劃算法中所需要的各個(gè)參數(shù),之后,路徑規(guī)劃模塊會(huì)利用特定的網(wǎng)絡(luò)路徑選擇算法,根據(jù)各類信息綜合得到的參數(shù)進(jìn)行計(jì)算之后為用戶規(guī)劃出一條或幾條可達(dá)目的地的最優(yōu)路徑,當(dāng)用戶在道路上行走時(shí),用戶信息采集模塊會(huì)持續(xù)收集用戶的用路信息,這也是系統(tǒng)反饋機(jī)制的重要環(huán)節(jié)之一,它會(huì)根據(jù)用戶的用路習(xí)慣、偏好等信息,結(jié)合用戶自身特征為其規(guī)劃更合適的路線,例如夏天選擇比較陰涼的道路、盡量選擇直路避免太多轉(zhuǎn)彎等個(gè)人特殊偏好,同時(shí),用戶也可以利用信息反饋模塊主動(dòng)向系統(tǒng)發(fā)送一些信息,例如路上的突發(fā)情況、周圍設(shè)施變動(dòng)等信息,系統(tǒng)也將會(huì)利用這些信息進(jìn)行優(yōu)化和改進(jìn),系統(tǒng)也可以將從所有用戶那里收集到的數(shù)據(jù)和所有用戶主動(dòng)反饋的信息進(jìn)行整理,從宏觀層面進(jìn)行分析,挖掘出有用信息來優(yōu)化現(xiàn)有路徑規(guī)劃模型,使之達(dá)到更理想的效果,為了加快工作速度,該系統(tǒng)設(shè)置了數(shù)據(jù)存儲(chǔ)模塊,用來儲(chǔ)存固有信息和實(shí)時(shí)接收到的信息,實(shí)時(shí)信息超過一定時(shí)效后自動(dòng)作廢,固有信息有變動(dòng)時(shí)也會(huì)實(shí)時(shí)更新,同時(shí)也會(huì)存儲(chǔ)用戶最近一段時(shí)間內(nèi)產(chǎn)生的數(shù)據(jù),用以保證為用戶提供最優(yōu)路徑,在一次導(dǎo)航過程中,動(dòng)態(tài)更新模塊會(huì)每隔很小一段時(shí)間刷新一次,讓定位和信息獲取模塊再次探測(cè)周圍的信息,保證信息的準(zhǔn)確性,同時(shí)路徑規(guī)劃模塊也會(huì)不斷利用當(dāng)前數(shù)據(jù)進(jìn)行計(jì)算,對(duì)之前的規(guī)劃結(jié)果進(jìn)行持續(xù)微調(diào),保證在變化的環(huán)境下依然實(shí)現(xiàn)最優(yōu)路徑選擇,顯示給用戶的數(shù)據(jù)如到達(dá)所需剩余時(shí)間等也都即時(shí)動(dòng)態(tài)變化,避免像現(xiàn)有導(dǎo)航系統(tǒng)那樣必須退出重新規(guī)劃,給用戶帶來不便。
以下為本發(fā)明的實(shí)施例,如下所示:
本發(fā)明設(shè)計(jì)了一種基于網(wǎng)絡(luò)路徑選擇算法的地圖路徑規(guī)劃方法及系統(tǒng),它可以根據(jù)GPS定位信息及系統(tǒng)實(shí)時(shí)接收到的各種信息,通過特有的路徑選擇算法為用戶規(guī)劃出當(dāng)前可達(dá)目的地的最優(yōu)路徑,該系統(tǒng)帶有反饋機(jī)制,可以收集用戶在行進(jìn)過程中產(chǎn)生的信息,利用這些數(shù)據(jù)來優(yōu)化路徑選擇算法,盡量為用戶選擇最優(yōu)路徑,也可以根據(jù)用戶個(gè)人的使用習(xí)慣,推薦用戶可能最喜歡的路線,該系統(tǒng)設(shè)有緩存機(jī)制,可以存儲(chǔ)現(xiàn)有的各種數(shù)據(jù)并實(shí)時(shí)更新,加快路徑規(guī)劃的速度,在一次導(dǎo)航中,系統(tǒng)會(huì)進(jìn)行動(dòng)態(tài)規(guī)劃,持續(xù)接收周圍的信息,并進(jìn)行計(jì)算和微調(diào),保證在變化的環(huán)境下依然實(shí)現(xiàn)最優(yōu)路徑選擇,顯示給用戶的數(shù)據(jù)如到達(dá)所需剩余時(shí)間等也都即時(shí)動(dòng)態(tài)變化的,如附圖2的流程圖所示,該系統(tǒng)在一次導(dǎo)航過程中的主要步驟如下:
S1,系統(tǒng)確定用戶的起點(diǎn)和終點(diǎn)及周圍的各種信息,具體步驟如下:
S1.1,用戶在系統(tǒng)中輸入自己的出發(fā)地和目的地,定位模塊在地圖中尋找這兩個(gè)點(diǎn)所對(duì)應(yīng)的精確位置,如果使用當(dāng)前位置則利用GPS進(jìn)行定位;
S1.2,信息獲取模塊從數(shù)據(jù)存儲(chǔ)模塊中獲得所需位置附近的固有信息,如道路結(jié)構(gòu)、設(shè)施分布等;
S1.3,信息獲取模塊調(diào)用互聯(lián)網(wǎng)上的信息及交通控制中心發(fā)布的實(shí)時(shí)動(dòng)態(tài)交通信息等,確定起點(diǎn)到終點(diǎn)的路段上的即時(shí)動(dòng)態(tài)信息,如天氣、車流量、有無(wú)管制和突發(fā)情況等,并將一些重要的實(shí)時(shí)信息傳入數(shù)據(jù)存儲(chǔ)模塊,便于當(dāng)前其他使用者可以更快獲取相關(guān)信息。
S2,系統(tǒng)對(duì)獲得的所有信息進(jìn)行處理,具體步驟如下:
S2.1,將當(dāng)前狀態(tài)下獲取的即時(shí)信息進(jìn)行整合,由于信息復(fù)雜且種類不一,首先必須對(duì)其進(jìn)行數(shù)字化轉(zhuǎn)化,之后通過規(guī)范化算法使數(shù)據(jù)都處于可處理的范圍內(nèi),常見的算法有最小-最大規(guī)范化、z-score規(guī)范化和按小數(shù)定標(biāo)規(guī)范化等,將其變成可以進(jìn)行計(jì)算的數(shù)據(jù);
S2.2,調(diào)用用戶最近一段時(shí)間內(nèi)使用系統(tǒng)時(shí)產(chǎn)生的數(shù)據(jù),例如用戶從A點(diǎn)到B點(diǎn)經(jīng)常經(jīng)過的路線,分析后得出用戶的使用偏好,作為選擇路徑時(shí)的考慮因素;
S2.3,調(diào)用對(duì)所有用戶最近在該路段用路情況進(jìn)行分析的結(jié)果,獲取路徑被選擇次數(shù)為N的路徑,選擇次數(shù)越多則認(rèn)為路的重要性越高,會(huì)影響相應(yīng)路段的權(quán)重;
S2.4結(jié)合S2.1、S2.2、S2.3中產(chǎn)生的數(shù)據(jù)和用戶的實(shí)際需求,調(diào)節(jié)各類數(shù)據(jù)所占的比重,產(chǎn)生相關(guān)參數(shù),如路徑初始權(quán)重、距離、時(shí)間、費(fèi)用、偏好因子、異常點(diǎn)等,之后可以計(jì)算得出不同路段的選擇概率和選擇代價(jià);
S2.5,將所有產(chǎn)生的可用于路徑規(guī)劃的參數(shù)送入路徑規(guī)劃模塊。
S3,系統(tǒng)綜合考慮所有因素,為用戶規(guī)劃出合理的路線,具體步驟如下:
S3.1,路徑規(guī)劃模塊根據(jù)S2所得的各個(gè)變量,通過特定的網(wǎng)絡(luò)路徑選擇算法進(jìn)行路徑規(guī)劃,尋找?guī)讞l優(yōu)化后的路線;
S3.2,將規(guī)劃出的幾條優(yōu)化后的路線返回給用戶,同時(shí)標(biāo)注出所有路段的基本概況及到達(dá)所需時(shí)間等數(shù)據(jù),由用戶進(jìn)行選擇;
S3.3,用戶在選定路線前進(jìn)后,系統(tǒng)實(shí)時(shí)刷新用戶的位置及周邊環(huán)境的變化,動(dòng)態(tài)得對(duì)返回?cái)?shù)據(jù)進(jìn)行微調(diào),顯示給用戶的當(dāng)前位置、路況信息及剩余到達(dá)時(shí)間等信息都是實(shí)時(shí)變化的,當(dāng)遇到突發(fā)情況時(shí)也可以即時(shí)調(diào)整路線;
S3.4,在用戶用路過程中,系統(tǒng)會(huì)隨之收集用戶產(chǎn)生的信息,了解用戶的用路偏好,保證為其推薦更合理的線路;
S3.5,用戶在使用過程中遇到任何問題或突發(fā)情況,都可以隨時(shí)主動(dòng)反饋給系統(tǒng),幫助系統(tǒng)更好得實(shí)現(xiàn)導(dǎo)航。
在信息處理模塊中,可根據(jù)用戶的特定需求,滿足其一些限制條件,如必經(jīng)節(jié)點(diǎn)、避開節(jié)點(diǎn)、時(shí)間最短、路線最短等。本發(fā)明基于A*算法,對(duì)上述需求提供了一種解決方案。
必經(jīng)節(jié)點(diǎn)是根據(jù)用戶的需求,如旅游途中要經(jīng)過的景點(diǎn)、回家途中要經(jīng)過的超市等限制條件抽象出的一系列道路結(jié)點(diǎn),針對(duì)帶有必經(jīng)節(jié)點(diǎn)序列的路徑最短問題,本發(fā)明的基本思想為:首先利用前向關(guān)聯(lián)邊存儲(chǔ)結(jié)構(gòu),找出從起點(diǎn)S到終點(diǎn)E的一系列必經(jīng)節(jié)點(diǎn)(必經(jīng)節(jié)點(diǎn)序列為KeyNode[N],N為必經(jīng)節(jié)點(diǎn)數(shù)),組成結(jié)點(diǎn)對(duì);然后對(duì)每個(gè)結(jié)點(diǎn)對(duì)采用A*算法進(jìn)行搜索最短路徑。具體實(shí)現(xiàn)步驟如下:
S1,依據(jù)前向關(guān)聯(lián)邊存儲(chǔ)結(jié)構(gòu)生成起點(diǎn)S——必經(jīng)節(jié)點(diǎn)序列——終點(diǎn)E之間距離最短的路徑序列KeyshortPath[N+2];
S2,初始時(shí),n=1;
S3,以KeyshortPath(n)為起點(diǎn),以KeyshortPath(n+1)為終點(diǎn),調(diào)用A*算法尋找最短路徑;
S4,令n=n+1,若n<N,則重復(fù)S3;
S5,依次輸出整個(gè)最優(yōu)路徑結(jié)果。
避開節(jié)點(diǎn)序列是用戶對(duì)于一些路段或地點(diǎn),如道路維修路段、交通嚴(yán)重阻塞路段等,明確不計(jì)在行車考慮范圍內(nèi)而形成的結(jié)點(diǎn)序列,針對(duì)帶有避開節(jié)點(diǎn)序列的路徑最短問題,本發(fā)明的基本思想為:首先建立避開節(jié)點(diǎn)序列AvoidNode[N],N為避開節(jié)點(diǎn)數(shù):然后在最短路徑搜索過程中(以S為起點(diǎn),E為終點(diǎn)),對(duì)于下一個(gè)最短路徑點(diǎn)w,增加選擇條件,若w∈AvoidNode[N],則放棄w,重新選擇其他的待選結(jié)點(diǎn)。具體實(shí)現(xiàn)步驟如下:
S1,令當(dāng)前最短路徑點(diǎn)為v,d(v)是從S到v的當(dāng)前己知的最短路徑長(zhǎng)度(實(shí)際代價(jià));
S2,對(duì)于當(dāng)前最短路徑節(jié)點(diǎn)的鄰接節(jié)點(diǎn)w進(jìn)行條件判斷,若w∈AvoidNode[N],則放棄此結(jié)點(diǎn),選擇其他鄰接節(jié)點(diǎn),重復(fù)S2進(jìn)行條件判斷,否則,選擇一個(gè)w,其滿足:
d(w)+d’(w)=min{d(wi)+d’(wi)1|wi∈V)
其中,d’(w)為結(jié)點(diǎn)w到終點(diǎn)E的直線距離;
S3,對(duì)于選取的節(jié)點(diǎn)w,進(jìn)行判斷,若滿足d(w)>d(v)+W(v,w),則令d(w)=d(v)+W(v,w),將當(dāng)前最短路徑點(diǎn)設(shè)為w,重復(fù)執(zhí)行S2和S3,直到w=E;
S4,依次輸出整個(gè)最優(yōu)路徑結(jié)果。
時(shí)間最優(yōu)路徑是確保使用最短時(shí)間到達(dá)目的地,可以設(shè)路段(v,w)的時(shí)間權(quán)重為WeightTime(v,w),交叉口即結(jié)點(diǎn)w權(quán)重為NodeWeightTime(w),則考慮交叉口延誤的最短時(shí)間路段優(yōu)化算法可應(yīng)用A*算法,同時(shí)將選擇下一節(jié)點(diǎn)的權(quán)重W(v,w)改為WeightTime(v,w)+NodeWeightTime(w),其具體步驟如下:
S1,對(duì)節(jié)點(diǎn)v,令d(v)是從S到v的當(dāng)前已知的時(shí)間最短路徑(實(shí)際代價(jià));
S2,對(duì)于下一個(gè)時(shí)間最小路徑的節(jié)點(diǎn)w,
d(w)=min{d(v)+WeightTime(v,w)+NodeWeightTime(w)|w∈V-S};
S3,若w不等于終點(diǎn),重復(fù)執(zhí)行掃描操作S2;
S4,輸出時(shí)間最短路徑。
在實(shí)際的車輛導(dǎo)航系統(tǒng)中,用戶對(duì)路徑規(guī)劃的要求是多種多樣的,這就需要對(duì)上述單一路徑規(guī)劃算法進(jìn)行組合以滿足用戶的需求,例如要求既有必經(jīng)節(jié)點(diǎn)又有避開節(jié)點(diǎn)的路徑尋優(yōu),則在必經(jīng)節(jié)點(diǎn)算法的基礎(chǔ)上加入避開節(jié)點(diǎn)序列限制即可實(shí)現(xiàn),如果也同時(shí)要求最短時(shí)間,可以綜合上述三個(gè)算法,如果還有其他各類特殊需求,都可以在基本算法的基礎(chǔ)上,加入新的影響因素,調(diào)整不同因素所占的權(quán)重,對(duì)結(jié)果造成一定影響,優(yōu)化系統(tǒng)的性能。
在路徑規(guī)劃模塊中,本發(fā)明結(jié)合Dijkstra算法和啟發(fā)式算法,提出了一種基于多級(jí)路網(wǎng)數(shù)據(jù)模型的多級(jí)比例尺啟發(fā)式最優(yōu)路徑規(guī)劃算法(該算法為上文提到的特定的網(wǎng)絡(luò)路徑選擇算法),該最優(yōu)路徑規(guī)劃算法在啟發(fā)式路徑搜索算法基礎(chǔ)上引入了主干道優(yōu)先搜索策略,使基于多級(jí)比例尺路網(wǎng)模型的路徑規(guī)劃算法效率更高,實(shí)效性更強(qiáng),更適用于實(shí)際導(dǎo)航產(chǎn)品的開發(fā)工作,算法中輸入為多比例尺路網(wǎng)數(shù)據(jù),起點(diǎn)S,目標(biāo)點(diǎn)D,輸出為S和D之間的一條最優(yōu)路徑,其基本步驟如下:
S1,判斷S和D所在的路網(wǎng)級(jí)別,假設(shè)S位于第i級(jí)路網(wǎng)Gi,D位于第j級(jí)路網(wǎng)Gj,則在第i級(jí)路網(wǎng)Gi上調(diào)用Dijkstra算法,找到距離S最近的位于i-1級(jí)路網(wǎng)Gi-1上的節(jié)點(diǎn)Si-1,接著在第i-1級(jí)路網(wǎng)Gi-1上調(diào)用Dijkstra算法,找到距離Si-1最近的位于i-2級(jí)路網(wǎng)Gi-2上的節(jié)點(diǎn)Si-2,直到在第2級(jí)路網(wǎng)G2上找到距離S2最近的位于最低級(jí)路網(wǎng)上的節(jié)點(diǎn)S1,得到從S到S1的路徑序列RS1;同樣在第j級(jí)路網(wǎng)Gj上調(diào)用Dijkstra算法,找到距離D最近的位于j-1級(jí)路網(wǎng)Gj-1上的節(jié)點(diǎn)Dj-1,接著在第j-1級(jí)路網(wǎng)Gj-1上調(diào)用Dijkstra算法,找到距離Dj-1最近的位于j-2級(jí)路網(wǎng)Gj-2上的節(jié)點(diǎn)Sj-2,直到在第2級(jí)路網(wǎng)G2上找到距離D2最近的位于最低級(jí)路網(wǎng)上的節(jié)點(diǎn)D1,得到從D到D1的路徑序列RD1;
S2,在最低級(jí)路網(wǎng)G1上,調(diào)用啟發(fā)式最優(yōu)路徑搜索算法,搜索從S1到D1的最短路徑,得到路徑序列RS1D1;
S3,將RS1,RD1,RS1D1結(jié)合,輸出S到D之間的一條最優(yōu)路徑。