本發(fā)明涉及一種基于多目標(biāo)搜索的兩群多向機(jī)器人路徑規(guī)劃方法,屬于計(jì)算機(jī)
技術(shù)領(lǐng)域:
。
背景技術(shù):
:路徑規(guī)劃問題是機(jī)器人研究領(lǐng)域內(nèi)的核心問題之一。其研究關(guān)鍵是在一個(gè)充滿障礙物的工作空間中發(fā)現(xiàn)一條避障的安全路徑,并且要求機(jī)器人行進(jìn)的代價(jià)(通常指路徑長度)最低。該領(lǐng)域已經(jīng)產(chǎn)生很多算法,如:A*算法,人工勢(shì)場(chǎng)算法、Dijkstra算法、Floyed等等。近些年,一些基于群智能思想的路徑規(guī)劃算法相繼被提出,例如:蟻群算法、粒子群算、魚群算法等等。機(jī)器人路徑規(guī)劃領(lǐng)域中,柵格法是一種較為常用的環(huán)境建模方法。通過柵格法,可以把復(fù)雜的空間信息轉(zhuǎn)換為一個(gè)簡(jiǎn)單的柵格地圖,進(jìn)而把路徑規(guī)劃問題轉(zhuǎn)化為圖搜索問題。傳統(tǒng)蟻群算法的提出主要是為了求解圖搜索問題(具體為TSP問題)。據(jù)此,把蟻群算法應(yīng)用到機(jī)器人路徑規(guī)劃問題可以得到很好的效果。蟻群算法主要基于概率搜索,不能保證一定搜索到最優(yōu)路徑,可以以較高概率計(jì)算出最優(yōu)或相對(duì)最優(yōu)路徑,大部分工程應(yīng)用中這樣的計(jì)算結(jié)果是可以接受的。但現(xiàn)有的蟻群算法存在著搜索目標(biāo)單一,信息素存儲(chǔ)、計(jì)算復(fù)雜,搜索路徑不夠平滑等問題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明要解決的技術(shù)問題是:針對(duì)現(xiàn)有技術(shù)采用蟻群算法規(guī)劃路徑時(shí)存在搜索效率低、搜索目標(biāo)單一、信息素存儲(chǔ)和計(jì)算復(fù)雜的不足,設(shè)計(jì)一種基于多目標(biāo)搜索的兩群多向機(jī)器人路徑規(guī)劃方法,該方法使用柵格法進(jìn)行環(huán)境建模,引入多目標(biāo)搜索、多向行進(jìn)、動(dòng)態(tài)信息素生成等策略,提高發(fā)現(xiàn)最優(yōu)解的效率和最終優(yōu)化的路徑的平滑度。本發(fā)明的技術(shù)解決方案是基于多目標(biāo)搜索的兩群多向機(jī)器人路徑規(guī)劃方法包括如下具體步驟:步驟1:以密度為M×N柵格對(duì)工作空間進(jìn)行建模,生成柵格地圖;柵格地圖中障礙物區(qū)域的單元格被標(biāo)記為“0”,稱為“障礙物單元格”;可行區(qū)域單元格被標(biāo)記為“1”稱為“可行單元格”;所有單元格信息素濃度都被初始化為1;步驟2:在柵格地圖中標(biāo)記起點(diǎn)S和終點(diǎn)T,分別以S和T為原點(diǎn),以16向射線方式,向外探測(cè)可行單元格,起點(diǎn)S探測(cè)到的可行單元格標(biāo)記為“起點(diǎn)搜索目標(biāo)”,終點(diǎn)T探測(cè)到的可行單元格標(biāo)記為“終點(diǎn)搜索目標(biāo)”;步驟3:在起點(diǎn)和終點(diǎn)各生成一個(gè)子群,分別稱為起點(diǎn)子群和終點(diǎn)子群;起點(diǎn)子群中第i個(gè)螞蟻個(gè)體用符號(hào)asi表示,終點(diǎn)子群中第j個(gè)螞蟻個(gè)體用atj表示;起點(diǎn)子群個(gè)體依次向終點(diǎn)生成的搜索目標(biāo)和終點(diǎn)單元格T爬行;終點(diǎn)子群個(gè)體依次向起點(diǎn)生成的搜索目標(biāo)和起點(diǎn)單元格S爬行;asi的當(dāng)前移動(dòng)軌跡用禁忌表RSi記錄,atj的當(dāng)前移動(dòng)軌跡用禁忌表RTj記錄;禁忌表中同一單元格不允許重復(fù)出現(xiàn);爬行過程中,螞蟻個(gè)體選擇搜索域內(nèi)的直線可達(dá)單元格建立可行域集合;通過啟發(fā)信息和隨機(jī)策略選擇可行域內(nèi)的一個(gè)單元格作為螞蟻下一步行進(jìn)位置;當(dāng)發(fā)現(xiàn)第一條可行路徑后,步驟3執(zhí)行結(jié)束;步驟4:當(dāng)發(fā)現(xiàn)第一條可行路徑后,可行路徑被Rbest記錄,Rbest路徑上的單元格在柵格地圖中被標(biāo)記,Rbest中所有單元格信息素被動(dòng)態(tài)更新為步驟5:起點(diǎn)子群和終點(diǎn)子群,繼續(xù)相向搜索;搜索過程中每個(gè)螞蟻個(gè)體通過啟發(fā)信息和輪盤賭算法完成可行域內(nèi)的下一步行進(jìn)的單元格選擇;步驟6:當(dāng)發(fā)現(xiàn)更優(yōu)的路徑后,Rbest被更新;Rbest路徑上的單元格在柵格地圖中被重新標(biāo)記并且信息素值被動(dòng)態(tài)賦值為地圖中其他單元格的信息素值被動(dòng)態(tài)設(shè)置為1;步驟7:重復(fù)步驟5和步驟6,最后Rbest中記錄了算法計(jì)算的最后路徑。更具體地,所述步驟1中,用M×N的柵格為工作空間建模生成柵格地圖,還包括:柵格地圖的單元格表示為這里(x,y)表示單元格坐標(biāo),其中x=1,…,M,y=1,…,N;α是一個(gè)二值變量,α=1表示單元格為可行單元格,α=0表示單元格為障礙物單元格;θ記錄了單元格的信息素濃度值,初始值被設(shè)置為θ=1。更具體地,所述步驟3中,將整個(gè)螞蟻種群劃分為兩個(gè)子群,以起點(diǎn)子群為例進(jìn)行描述,終點(diǎn)子群的搜索過程與此類似,還包括:起點(diǎn)中每個(gè)螞蟻體asi向所有終點(diǎn)生成的搜索目標(biāo)進(jìn)行搜索,最后對(duì)目標(biāo)點(diǎn)柵格T進(jìn)行搜索;搜索過程中,asi每一步移動(dòng)前先建立搜索域,搜索域由asi所在單元格的周圍兩層單元格構(gòu)成,每個(gè)asi有16個(gè)行進(jìn)方向;刪除搜索域中的障礙單元格和asi當(dāng)前移動(dòng)路徑RSi所經(jīng)過的單元格,剩下單元格中asi通過直線方式到達(dá)的單元格,構(gòu)成asi的可行域集合;螞蟻個(gè)體選擇下一步單元格的公式為:Min(K)r0≤0.5Rand(K)r0>0.5]]>其中,K表示asi的可行域集合;r0是一個(gè)閾值,具體為一個(gè)隨機(jī)數(shù),且r0~U(0,1),asi每行進(jìn)一步r0都重新被計(jì)算;Min(K)表示可行域集合中距離當(dāng)前搜索目標(biāo)直線距離最短的單元格;Rand(K)表示在可行域集合中以隨機(jī)方式選擇一個(gè)單元格;當(dāng)asi的可行域中,發(fā)現(xiàn)被標(biāo)記為“終點(diǎn)搜索目標(biāo)”的單元格或發(fā)現(xiàn)終點(diǎn)單元格T,則一條可行路徑被建立,發(fā)現(xiàn)的第一條可行路徑由Rbest存儲(chǔ)。更具體地,在步驟4中,柵格地圖中單元格的信息素濃度已經(jīng)發(fā)生變化,Rbest上的單元格擁有較高的信息素濃度。更具體地,所述步驟5中,兩個(gè)子群相向搜索,螞蟻個(gè)體通過啟發(fā)信息和輪盤賭算法的綜合作用完成下一個(gè)單元格選擇;螞蟻個(gè)體選擇下一步單元格的公式為:Min(K)r0≤0.5Roulette(K)r0>0.5]]>其中,K表示asi的可行域集合;r0是一個(gè)閾值,具體為一個(gè)隨機(jī)數(shù),且r0~U(0,1),asi每行進(jìn)一步r0都重新被計(jì)算;Min(K)表示可行域集合中距離終點(diǎn)位置直線距離最短的單元格;Roulette(K)表示以信息素作為賭盤面積,通過輪盤賭的方法選擇下一個(gè)單元格;擁有較大信息素的單元格則容易被螞蟻個(gè)體選中作為下一步的行進(jìn)單元格。本發(fā)明具有以下優(yōu)點(diǎn):1、以起點(diǎn)種群為例,當(dāng)種群個(gè)體搜索域中包含終點(diǎn)生成的搜索目標(biāo)、終點(diǎn)單元柵格T,則本路徑規(guī)劃方法均可建立可行路徑。由于柵格地圖中已經(jīng)被標(biāo)記大量搜索目標(biāo),因此種群個(gè)體一次爬行可以發(fā)現(xiàn)多條可行路徑,提高了種群個(gè)體發(fā)現(xiàn)可行路徑的效率。2、搜索域包括24個(gè)單元格,螞蟻個(gè)體的一步移動(dòng)距離包括1、2、螞蟻個(gè)體搜索范圍增加,一步移動(dòng)距離增大,則最終形成的可行路徑將更加平滑。3、吸引種群個(gè)體行進(jìn)的不止是起點(diǎn)或終點(diǎn)單元格,還包括大量搜索目標(biāo),進(jìn)一步增加了種群個(gè)體發(fā)現(xiàn)可行路徑解的多樣性和效率。4、信息素動(dòng)態(tài)更新策略考慮了當(dāng)前最優(yōu)路勁最短,同時(shí)也兼顧了隨機(jī)性選擇,增加了可行路徑解的多樣性;最優(yōu)路徑上的單元格擁有較大的信息素值,可以吸引大量螞蟻個(gè)體沿其爬行,對(duì)當(dāng)前最優(yōu)路徑的繼續(xù)優(yōu)化。5、本發(fā)明將是蟻群算法進(jìn)行改進(jìn),在繼承了蟻群算法啟發(fā)搜索策略的基礎(chǔ)上,引入了多目標(biāo)搜索策略和多向行進(jìn)策略,特別是改進(jìn)了信息素生成和計(jì)算策略,提高了發(fā)現(xiàn)最優(yōu)解的效率,增加了優(yōu)化路徑的平滑度。附圖說明圖1是柵格地圖建立;圖2是起點(diǎn)單元格生成搜索目標(biāo),并做標(biāo)記;圖3是以16向方式建立搜索域;圖4是螞蟻個(gè)體發(fā)現(xiàn)可行路徑過程;圖5是柵格地圖信息素更新。具體實(shí)施方式下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)地說明,但不應(yīng)理解為是對(duì)技術(shù)方案的限制。圖1至圖5為本發(fā)明的機(jī)器人路徑規(guī)劃過程示意圖;現(xiàn)結(jié)合圖1至圖5所示內(nèi)容,對(duì)本發(fā)明所提供的蟻群算法優(yōu)化機(jī)器人行走路徑的過程進(jìn)行說明,整體來說,包括了如下幾個(gè)步驟:步驟一:如圖1所示,將一個(gè)充滿障礙物的工作空間用柵格建模形成柵格地圖,柵格地圖的左上角為原點(diǎn),這樣每個(gè)單元格都用其右下角的一組坐標(biāo)(x,y)來標(biāo)記;在柵格地圖中用0標(biāo)記出障礙物單元格200、1標(biāo)記出可行單元格300、S為起點(diǎn)單元格100、T為終點(diǎn)單元格400;步驟二:如圖2所示,生成搜索目標(biāo)500,并在柵格地圖中做好標(biāo)記;圖2展示了以起點(diǎn)單元格100為原點(diǎn),以16向射線方式探測(cè)搜索目標(biāo)500;以終點(diǎn)為原點(diǎn)的過程與此相類似;步驟三:在起點(diǎn)和終點(diǎn)單元格各建立一個(gè)子群;以起點(diǎn)子群為例,起點(diǎn)子群中每個(gè)螞蟻個(gè)體向終點(diǎn)搜索目標(biāo)和終點(diǎn)單元格依次爬行完成搜索;如圖3所示,螞蟻個(gè)體600以16向建立搜索域700,搜索域中的可行單元格組成螞蟻個(gè)體當(dāng)前的可行域;如圖4所示,螞蟻個(gè)體通過啟發(fā)信息和隨機(jī)選擇綜合作用對(duì)下一步行進(jìn)柵格進(jìn)行選擇;以起點(diǎn)螞蟻為例,當(dāng)螞蟻可行域中發(fā)現(xiàn)終點(diǎn)或終點(diǎn)搜索目標(biāo)則第一條路徑被發(fā)現(xiàn),被Rbest800記錄;步驟四:如圖5所示,當(dāng)?shù)谝粭l路徑被發(fā)現(xiàn)后,路徑上的單元格信息素值被設(shè)置為而其他單元格信息素值為1;來至兩個(gè)子群的螞蟻繼續(xù)搜索,螞蟻個(gè)體通過啟發(fā)信息和輪盤賭綜合作用選擇下一步行進(jìn)單元格;步驟六:當(dāng)發(fā)現(xiàn)更優(yōu)的路徑后Rbest800被更新,同時(shí)所有單元格的信息素值被更新;保證當(dāng)前Rbest800上的單元格信息素為而其他單元格信息素值為1;步驟七:重復(fù)步驟五和步驟六,Rbest800不斷被更新,最后輸出Rbest800為機(jī)器人最終規(guī)劃路徑。綜上所述,本發(fā)明將多目標(biāo)搜索,兩群搜索、輪盤賭等多種方法合理引入到蟻群算法中,并擴(kuò)大了螞蟻個(gè)體的搜索范圍和方向;動(dòng)態(tài)信息素的生成和存儲(chǔ)方法,使當(dāng)前最優(yōu)路徑保持較高的信息素水平,以吸引部分螞蟻沿最優(yōu)路徑移動(dòng),對(duì)當(dāng)前最優(yōu)路徑不斷優(yōu)化;本發(fā)明綜合考慮了整個(gè)種群中隨機(jī)分流部分螞蟻完成全局隨機(jī)搜索,同時(shí)也考慮了利用蟻群算法的正反饋策略完成對(duì)當(dāng)前最短路徑的局部優(yōu)化,提高了路徑搜索效率和發(fā)現(xiàn)最優(yōu)路徑的概率。當(dāng)前第1頁1 2 3