Matlab Astar算法简单对比分析
(一) 任務(wù)描述: 在隨機(jī)的二維柵格地圖中,地圖中存在隨機(jī)給定的靜態(tài)障礙物,給定路徑起點(diǎn)和路徑終點(diǎn),利用 Astar 算法生成最優(yōu)路徑。
(二)算法分析與具體實(shí)現(xiàn)Astar 算法是建立 Dijkstra 算法的思想上的,它們?cè)谶M(jìn)行圖的拓展的時(shí)候,每次都選擇了具備某種最優(yōu)性的節(jié)點(diǎn)進(jìn)行拓展,最終,當(dāng)圖結(jié)構(gòu)拓展到目標(biāo)節(jié)點(diǎn)時(shí),對(duì)應(yīng)的路徑往往能夠滿足最優(yōu)性的要求。而 Astar 算法與Dijkstra 算法的不同之處在于 Astar 算法在累計(jì)代價(jià)函數(shù) g(n) 的基礎(chǔ)上,進(jìn)一步引入了啟發(fā)函數(shù) h(n),節(jié)點(diǎn)排序以 g(n)+h(n) 為參照,當(dāng)選取了合適的 h(n) 時(shí),節(jié)點(diǎn)圖往往能夠迅速地向目標(biāo)節(jié)點(diǎn)方向拓展,同時(shí)保證結(jié)果的最優(yōu)秀,其偽代碼如 Algorithm 1 所示:
(三)仿真實(shí)驗(yàn)及結(jié)果分析
在仿真實(shí)驗(yàn)過(guò)程中,主要考慮了兩方面的影響因素:啟發(fā)函數(shù) h(n) 與節(jié)點(diǎn)拓展形式 expand(n)。啟發(fā)函數(shù)選擇了三種距離函數(shù):對(duì)角距離、曼哈頓距離以及歐氏距離;節(jié)點(diǎn)拓展形式考慮了四叉樹和八叉樹兩種。而在代價(jià)函數(shù)方面,使用的是對(duì)角距離函數(shù),由于無(wú)論是四叉樹還是八叉樹,拓展節(jié)點(diǎn)與當(dāng)前節(jié)點(diǎn)均為相鄰節(jié)點(diǎn),在此情形下,對(duì)角距離與歐氏距離是相等的。在二維平面下三種距離函數(shù)的定義如下:
為了使得實(shí)驗(yàn)結(jié)果根據(jù)可信性,令隨機(jī)地圖生成過(guò)程中的障礙物生成閾值為 0.1( 0.25 時(shí)容易出現(xiàn)無(wú)解的情況),而后令隨機(jī)數(shù)種子從 1 取到 1000,生成約 1000 張地圖(不排除多個(gè)隨機(jī)數(shù)種子對(duì)應(yīng)一張地圖的情形),
在八叉樹拓展形式下進(jìn)行算法測(cè)試,最終主要出現(xiàn)了三類對(duì)比結(jié)果:
( 1)存在可行路徑,而且三類方法尋得的最優(yōu)路徑是相同的,實(shí)際上,這也是絕大多數(shù)地圖測(cè)試的結(jié)果,這說(shuō)明,在絕大多數(shù)情況下,三種算法的最優(yōu)路徑和實(shí)際的最短路徑是相同的,結(jié)果如圖 1(a) 所示。
( 2)不存在可行路徑。這是比較少見的,實(shí)際上,這是在障礙物生成閾值為 0.25,隨機(jī)數(shù)種子為 9 時(shí)生成的地圖。如圖 1(b),此情形下主要原因在于存在一個(gè)由障礙物和場(chǎng)地邊界線構(gòu)成的封閉曲線,使得起始點(diǎn)和目標(biāo)點(diǎn)分別在封閉曲線的內(nèi)外部,不存在從起始點(diǎn)到目標(biāo)點(diǎn)穿越該封閉曲線而無(wú)碰撞的可行路徑。
( 3)存在可行路徑,但是曼哈頓距離所尋得的最優(yōu)路徑與其他兩種距離所尋得的最優(yōu)路徑不同。實(shí)際上,這是由于八叉樹拓展形勢(shì)下,對(duì)角距離是從當(dāng)前點(diǎn)到目標(biāo)點(diǎn)的真實(shí)距離,而 manh_dis ≥ diag_dis ≥ eucl_dis,因此,引用曼哈頓距離函數(shù)作為啟發(fā)函數(shù)時(shí)不一定能夠找到真正的最段路徑,如圖 1? 和圖 1(d) 所示。
圖 1: (a) 隨機(jī)種子為 1,障礙物生成閾值為 0.1,三種距離函數(shù)均尋到最優(yōu)路徑; (b) 隨機(jī)種子為 9,障礙物生成閾值為 0.25,不存在可行路徑 ? 隨機(jī)種子為 266,障礙物生成閾值為 0.1,距離函數(shù)為對(duì)角距離和歐氏距離,兩種距離函數(shù)均尋到最優(yōu)路徑,路徑長(zhǎng)度為 11.8995; (d) 隨機(jī)種子為 266,障礙物生成閾值為 0.1,距離函數(shù)為曼哈頓距離,未能尋到最優(yōu)路徑,路徑總長(zhǎng)度為 12.4853.
為了驗(yàn)證啟發(fā)函數(shù)對(duì)最優(yōu)路徑尋取結(jié)果的影響,將節(jié)點(diǎn)拓展形式改為四叉樹拓展形式,此時(shí),各個(gè)節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的最優(yōu)距離為曼哈頓距離,從 1000 張地圖的尋得路徑長(zhǎng)度的統(tǒng)計(jì)結(jié)果來(lái)看,在存在可行路徑的情況下,三種算法尋得的最優(yōu)路徑是相同的。 從表 1 中可以看出,在八叉樹拓展形式下,曼哈頓距離尋得的路徑確實(shí)不是最優(yōu)的,而在四叉樹拓展形勢(shì)下,三種啟發(fā)函數(shù)尋得的路徑長(zhǎng)度是相同的。
此外,算法運(yùn)行時(shí)間同樣至關(guān)重要,因此,在 10000 張地圖下,對(duì)算法運(yùn)行時(shí)間進(jìn)行統(tǒng)計(jì),此時(shí)障礙物生成閾值為 0.1,八叉樹拓展形式下僅隨機(jī)數(shù)種子為 276 時(shí)不存在可行路徑,四叉樹拓展形式下,有 8 張地圖不存在可行路徑,最終得到運(yùn)行時(shí)間統(tǒng)計(jì)數(shù)據(jù)如下:
從表 2 中可以看出,曼哈頓距離函數(shù)對(duì)應(yīng)的平均時(shí)間和運(yùn)行時(shí)間標(biāo)準(zhǔn)差優(yōu)于其他兩種距離函數(shù),而歐氏距離函數(shù)對(duì)應(yīng)的平均時(shí)間與對(duì)角距離函數(shù)對(duì)應(yīng)的平均運(yùn)行時(shí)間大致相同和標(biāo)準(zhǔn)差大致相同。算法運(yùn)行時(shí)間與距離函數(shù)的選取存在一定的關(guān)聯(lián)性,可能是由于距離函數(shù)導(dǎo)致節(jié)點(diǎn)拓展形式存在差異,但是也并不能排除由于本身距離函數(shù)計(jì)算復(fù)雜度不同而導(dǎo)致這一現(xiàn)象發(fā)生的可能性。
csdn鏈接:https://download.csdn.net/download/qq_31813825/11940280
總結(jié)
以上是生活随笔為你收集整理的Matlab Astar算法简单对比分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue 中播放帧动画(抽离方法)
- 下一篇: Quartus II破解出现的问题