本發(fā)明考慮多因素的路徑導(dǎo)航問題,如需要考慮時間、油耗或者需要經(jīng)過指定地點的情況,提出一種考慮多因素的dijkstra導(dǎo)航方法,屬于路徑導(dǎo)航技術(shù)領(lǐng)域。
背景技術(shù):
目前,dijkstra已經(jīng)在車載導(dǎo)航系統(tǒng)等各種導(dǎo)航系統(tǒng)得到廣泛的應(yīng)用。而目前的導(dǎo)航系統(tǒng)大多數(shù)只考慮起點和終點信息,給出統(tǒng)一的導(dǎo)航信息,忽略了用戶在個性化的需求。比如,有些用戶對路徑的耗時很在意,另一些用戶則希望給出的導(dǎo)航路徑能夠有更少的油耗,還有一些用戶則希望經(jīng)過某些固定的地點?,F(xiàn)有的導(dǎo)航設(shè)備常常不能考慮到用戶個性化的要求,在使用的時候給用戶帶來不便。
而隨著越來越多的環(huán)境因素的信息可以被收集,車載導(dǎo)航系統(tǒng)可以做得更加人性化和智能化。對于用戶的特性需求也應(yīng)該被滿足,比如時間、油耗等因素,也應(yīng)該在規(guī)劃導(dǎo)航路徑時考慮進去。因此需要一種考慮多因素的dijkstra導(dǎo)航方法,具體來說,首先讓用戶輸入需要考慮的因素,并給各個考慮的因素賦予不同的權(quán)重,接著計算每兩點之間的代價函數(shù)。最后通過dijkstra算法來規(guī)劃導(dǎo)航的路徑,然后給用戶返回最終的路徑。
技術(shù)實現(xiàn)要素:
發(fā)明目的:目前的導(dǎo)航系統(tǒng)往往只根據(jù)起點和終點就進行導(dǎo)航,或者通常只考慮某一個具體的因素,忽略了用戶個性化或者更復(fù)雜的需求,不具有普適性。針對上述問題,本發(fā)明提供了一種考慮多因素的dijkstra導(dǎo)航方法,具體來說,首先輸入地圖、起點和終點的數(shù)據(jù),定義導(dǎo)航過程中需要考慮的各個環(huán)境因素的代價,計算每兩點之間的總體代價;接著設(shè)置需要經(jīng)過的固定的作業(yè)點;最后把問題化歸后采用dijkstra算法加以解決,輸出最終的導(dǎo)航路徑。
技術(shù)方案:一種考慮多因素的dijkstra導(dǎo)航方法,包括計算整體代價函數(shù)步驟和獲得通過指定作業(yè)點路徑步驟;
所述計算整體代價函數(shù)步驟具體為:
步驟100,輸入地圖的信息,即各點的位置信息和各種環(huán)境因素;
步驟101,根據(jù)需要考慮的各個環(huán)境因素,定義地圖上任意兩點的各種環(huán)境對應(yīng)的代價函數(shù):
cost(p1,p2)=exp(ratio)×min(p(thick|p1),p(thick|p2))
+exp(1-ratio)dist(p1,p2)(1)
其中p1、p2分別代表地圖上的任意兩點,p(thick|p1)表示p1是厚冰的概率,dist(p1,p2)代表這兩點之間的歐式距離。exp(ratio)和exp(1-ratio)分別代表冰的厚度和兩點間的歐式距離在航行中所占不同的權(quán)重。
步驟102,輸入地圖的起點和終點
步驟103,根據(jù)定義的兩點之間環(huán)境的代價函數(shù),計算任意兩點在各個環(huán)境上的代價;
步驟104,設(shè)置各個環(huán)境因素對應(yīng)的權(quán)重
步驟105,根據(jù)各個環(huán)境因素設(shè)置的權(quán)重和兩點之間各個環(huán)境對應(yīng)的代價,根據(jù)公式(1)計算兩個點之間的整體代價
所述獲得通過指定作業(yè)點路徑步驟具體為:
步驟200,根據(jù)輸入的起點和終點,劃定出需要用到的大致矩形區(qū)域;
步驟201,輸入需要經(jīng)過的所有作業(yè)點;
步驟202,按照經(jīng)度將需要經(jīng)過的作業(yè)點排序;
步驟203,從起點開始,依次經(jīng)過按照經(jīng)度排過序的作業(yè)點,直到終點,在每兩個點之間,調(diào)用dijkstra算法,得到這兩個點之間的最短路徑;
步驟204,將依次得到的最短路徑連接起來,得到最終需要輸出的路徑;
所述劃定大致矩形區(qū)域的流程為:首先找到起點和終點的經(jīng)度和維度的最大值和最小值,然后將經(jīng)度和緯度對應(yīng)的最大值各加上一個常數(shù),同樣,對精度和緯度的最小值也各減去一個常數(shù),這樣得到四個數(shù)值所構(gòu)成的區(qū)域就是劃定出的大致矩形區(qū)域。
所述的各種需要考慮的環(huán)境因素包括時間、油耗、安全程度等等。
所述生成推薦路徑的步驟包括,按照用戶設(shè)置的參數(shù)推薦路徑,找到可達路徑后,會給用戶進行反饋;如果用戶對當(dāng)前的路徑不滿意,可以修改參數(shù),重新生成導(dǎo)航路徑。
例如:在公式(1)中,如果船的破冰能力比較強,則冰的厚度對最終船只航行的代價影響比較小,公式(1)的第一項所占的權(quán)重應(yīng)當(dāng)降低,此時可以通過降低ratio的值來達到;如果船只破冰能力比較弱,則ratio的值應(yīng)當(dāng)適當(dāng)提高。找到可達路徑后,會給用戶進行反饋;如果用戶對當(dāng)前的路徑不滿意,可以修改參數(shù),重新生成導(dǎo)航路徑。
所述的不存在可達路徑的提示具體為,如果不存在可達路徑,會提示用戶;如果存在可達路徑,則會輸出可達路徑。
有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明提供的考慮多因素的dijkstra導(dǎo)航方法,可以滿足的個性化定制,適用性強。
附圖說明
圖1是本發(fā)明方法流程圖;
圖2是本發(fā)明在地圖上給出任意兩點之間導(dǎo)航路徑的工作流程圖;
圖3是本發(fā)明把增加作業(yè)點化歸為多個dijkstra算法的工作流程圖。
具體實施方式
下面結(jié)合具體實施例,進一步闡明本發(fā)明,應(yīng)理解這些實施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對本發(fā)明的各種等價形式的修改均落于本申請所附權(quán)利要求所限定的范圍。
如圖1所示,考慮多因素的dijkstra導(dǎo)航方法,首先用戶需要輸入地圖數(shù)據(jù),即輸入地圖上的各個點的位置信息(步驟10),以及需要考慮的各個環(huán)境變量。接著,用戶需要定義各個環(huán)境因素對應(yīng)的代價函數(shù)(步驟11),在定義如公式(1)所示的代價行數(shù)時。定義完代價函數(shù)后,用戶需要輸入起點和終點(步驟12)。為了滿足用戶的個性化需求,接下來,用戶可以輸入作業(yè)點(步驟13),即用戶在規(guī)劃路徑過程中需要經(jīng)過的點。在用戶輸入作業(yè)點后,可以利用公式(1)計算各個環(huán)境因素對應(yīng)的具體代價(步驟14)。用戶可以根據(jù)自己的實際需求,給不同的環(huán)境的因素賦予不同的權(quán)重(步驟15)。這樣,對不同環(huán)境因素的代價進行加權(quán)求和,可以計算任意兩點之間的代價函數(shù)(步驟16)。有了這些基礎(chǔ)信息后,便可以規(guī)劃導(dǎo)航路徑了(步驟17)。接下來判斷是否存在合適的路徑(步驟18),如果不存在合適的路徑,則會給用戶輸出提示的結(jié)果。如果存在可達的路徑,會讓用戶判斷路徑對當(dāng)前的路徑是否滿意(步驟19),如果用戶對當(dāng)前的路徑不滿意,可以重新設(shè)置各個環(huán)境因素的權(quán)重,重新生成需要規(guī)劃的路徑;如果用戶對當(dāng)前的路徑滿意,則輸出導(dǎo)航的路徑(步驟20)。
計算任意兩點之間的導(dǎo)航路徑的工作流程圖如圖2所示,首先計算這兩點的經(jīng)度和緯度的最大值和最小值(步驟21),接著把經(jīng)度和緯度的最大值分別加上一個常數(shù)(步驟22),把經(jīng)度和緯度的最小值分別減去一個常數(shù)(步驟23),這樣,會得到新的一個矩形區(qū)域(步驟24),在這個新的區(qū)域中調(diào)用dijkstra算法,可以生成從起點到終點的一條導(dǎo)航路徑(步驟25)。
增加作業(yè)點的路徑規(guī)劃化歸為多個dijkstra算法的工作路程圖如圖3所示。首先把所有的作業(yè)點按照經(jīng)度進行排序(步驟171)。接下來判斷是否存在下一個作業(yè)點(步驟172),如果存在下一個作業(yè)點,則采用dijkstra算法計算當(dāng)前兩個作業(yè)點之間的導(dǎo)航路徑(步驟173)。在計算完畢所有的作業(yè)點之間的導(dǎo)航路徑后,計算起點和第一個作業(yè)點之間的導(dǎo)航路徑(步驟174),接下來計算最后一個作業(yè)點和終點之間的導(dǎo)航路徑(步驟175),最后,從起點開始,依次把所有路徑連接起來(步驟176),輸出最終的導(dǎo)航路徑(步驟177)。