尹秋石,姬書(shū)得,宋 崎
(1.沈陽(yáng)航空航天大學(xué)航空宇航學(xué)院,沈陽(yáng) 110136;2.沈陽(yáng)航空航天大學(xué)自動(dòng)化學(xué)院,沈陽(yáng) 110136)
近年來(lái),人們對(duì)能夠自主并能適應(yīng)現(xiàn)代化農(nóng)業(yè)、智慧醫(yī)療等領(lǐng)域的飛行器的需求越來(lái)越強(qiáng)烈[1],兩棲無(wú)人飛行器因其有著能夠跨越各種路況的能力逐漸出現(xiàn)在大眾的視野中,占據(jù)著飛行器行業(yè)的主導(dǎo)地位。路徑規(guī)劃一直是飛行器領(lǐng)域的熱門(mén)話題,也是自主導(dǎo)航的關(guān)鍵所在,其核心要求是按照特定的優(yōu)化準(zhǔn)則如距離最短、時(shí)間最短、能耗最低等搜索出一條從起始點(diǎn)到目標(biāo)點(diǎn)的最優(yōu)安全路徑[2]。目前,國(guó)內(nèi)外已經(jīng)提出了很多用于路徑規(guī)劃的算法,如Dijstra 算法、A*算法、人工勢(shì)場(chǎng)法等[3-5]。隨著研究的深入,智能仿生算法及其改進(jìn)算法逐漸突出,如遺傳算法、神經(jīng)網(wǎng)絡(luò)算法、粒子群算法、蟻群算法等[6-9]。其中蟻群算法由于具有較強(qiáng)的適應(yīng)性和魯棒性,操作簡(jiǎn)單又易與其他方法結(jié)合,在路徑規(guī)劃領(lǐng)域得到了廣泛應(yīng)用。劉雙雙等提出一種新式多策略改進(jìn)的蟻群算法以提高路徑尋優(yōu)性能和搜索效率[10],采用雙層精英蟻策略加大最佳路徑的信息素含量,提高了二維蟻群的尋優(yōu)性;張文強(qiáng)等在蟻群算法中引入了具有人工勢(shì)場(chǎng)思想的引力系數(shù)和避障系數(shù)[11],將路徑的長(zhǎng)度作為優(yōu)化準(zhǔn)則,得到了更優(yōu)良的三維空間路徑規(guī)劃解;宋阿妮等針對(duì)三維無(wú)人機(jī)路徑規(guī)劃問(wèn)題通過(guò)極值限定策略限定信息素濃度的范圍[12],采用精英策略改進(jìn)信息素濃度更新公式,提出了一種精英擴(kuò)散蟻群優(yōu)化算法;王曉燕等將蟻群算法與人工勢(shì)場(chǎng)法結(jié)合給不同的柵格位置賦予不同的初始信息素[13],降低蟻群搜索的盲目性,提高算法在二維環(huán)境中的搜索效率;文獻(xiàn)[14-15]分別將蟻群算法和遺傳算法、粒子群算法相結(jié)合,提高了算法尋優(yōu)能力,具有一定的靈活性。盡管上述文獻(xiàn)已經(jīng)用蟻群算法改進(jìn)了飛行器及移動(dòng)機(jī)器人的路徑規(guī)劃性能,但僅能對(duì)陸地或空中進(jìn)行單一的路徑規(guī)劃,且對(duì)于算法的運(yùn)行時(shí)間和迭代速度的優(yōu)化研究還不夠深入。對(duì)于兩棲無(wú)人飛行器的路徑規(guī)劃而言,要充分發(fā)揮其多種行駛模式的優(yōu)勢(shì),每一個(gè)飛行器所能攜帶的能源是有限的,要在有限的能源范圍內(nèi)使兩棲無(wú)人飛行器行駛更多的路程完成更多的任務(wù),規(guī)劃出一條優(yōu)質(zhì)的陸空混合路徑。
綜合上述分析,本文以能源消耗作為優(yōu)化標(biāo)準(zhǔn),對(duì)蟻群算法進(jìn)行了改進(jìn),使其運(yùn)用在兩棲無(wú)人飛行器的三維空間路徑規(guī)劃上,主要貢獻(xiàn)歸納如下:1)在概率公式中引入前進(jìn)角進(jìn)行約束,使算法對(duì)于最優(yōu)路徑的搜索更具有方向性,使得全局搜索能力得到增強(qiáng)。2)改進(jìn)信息素濃度更新規(guī)則,引入影響因子μ,加快了算法的迭代速度,減少了尋找最優(yōu)路徑的時(shí)間。3)創(chuàng)建一個(gè)以能源消耗為考量的評(píng)價(jià)函數(shù)進(jìn)行適應(yīng)度值的選擇,最終生成一條陸空混合路徑。
兩棲無(wú)人飛行器是指既具備陸地快速行駛能力,又具備空中飛行能力,并可自由切換飛行、地面運(yùn)動(dòng)模式的一類(lèi)飛行器,其作為一種新概念飛行器在國(guó)內(nèi)外形成了研究熱潮。
兩棲無(wú)人飛行器用途十分廣泛,可供商用也可供軍用,尤其在應(yīng)對(duì)緊急情況方面有著它獨(dú)特的優(yōu)勢(shì)。譬如在消防、邊境巡邏、救援和急件投遞方面,兩棲飛行器都有著非常適合的用處:在山地戰(zhàn)爭(zhēng)中情況多變,為節(jié)約能源,遠(yuǎn)距離輸送時(shí)盡可能地進(jìn)行陸地行駛,若遇山路受阻時(shí)便采用飛行行駛越過(guò)受阻路段,這時(shí)一種陸空混合路徑規(guī)劃便尤為重要,既穩(wěn)定安全,又在保證物資按時(shí)送達(dá)的前提下節(jié)約了能源。
現(xiàn)假設(shè)在軍事戰(zhàn)爭(zhēng)中某一山區(qū)由于突發(fā)狀況導(dǎo)致部分山路受阻,無(wú)法通過(guò)陸地運(yùn)輸彈藥物資,此時(shí)派出兩棲無(wú)人飛行器為山區(qū)后的部隊(duì)運(yùn)送必要的用品。該地區(qū)是一個(gè)大小為a×b×c km3的空間(a=b=100,c=80),將山峰等障礙物簡(jiǎn)化為不同高度的單峰指數(shù)函數(shù),如式(1)所示:
其中,n 表示山峰總個(gè)數(shù),(xq,yq)代表第q 個(gè)山峰的中心坐標(biāo);hq為地形參數(shù),控制高度;z(x,y)表示坐標(biāo)為(x,y)時(shí)山體的高度值;xsq和ysq分別是第q個(gè)山峰沿x 軸和y 軸方向的衰減量,控制坡度。將三維空間按照高度進(jìn)行切片,切片數(shù)量可以根據(jù)算法的精度要求和時(shí)間成本等綜合考慮,針對(duì)每一個(gè)切片進(jìn)行柵格化處理,如10×10 個(gè)柵格,柵格劃分如圖1 所示。
圖1 柵格劃分圖Fig.1 Division of grid
兩棲無(wú)人飛行器在陸地遇見(jiàn)無(wú)法逾越的山峰時(shí)選擇飛行模式,在飛行過(guò)程中需要避開(kāi)所有山峰,即兩棲無(wú)人飛行器在點(diǎn)(xq,yq)上的飛行高度要大于山峰在該點(diǎn)的高度,否則會(huì)導(dǎo)致飛行器損傷或墜毀,公式如下所示:
其中,H(xp,yp)表示飛行器在點(diǎn)(xp,yp)時(shí)所處的高度,Sq表示第q 個(gè)山峰以(xq,yq)為中心在xy 平面上所有點(diǎn)的集合。
但在實(shí)際情況中,由于山峰坡度不同且飛行器有一定體積,當(dāng)飛行器中心的飛行高度恰好高過(guò)山峰高度時(shí)仍然會(huì)發(fā)生碰撞。故將飛行器簡(jiǎn)化為一個(gè)長(zhǎng)方體,其平面示意圖如圖2 所示。需留出足夠的安全距離以保證任何時(shí)刻飛行器位置都不與山峰碰撞。
圖2 無(wú)人機(jī)與山峰位置示意圖Fig.2 The position of the drone and the peak of mountain
評(píng)價(jià)函數(shù)是用來(lái)評(píng)判飛行器路徑優(yōu)劣的方式,根據(jù)評(píng)價(jià)函數(shù)及三維地圖,從起始點(diǎn)開(kāi)始搜索,規(guī)劃出可以到達(dá)目標(biāo)點(diǎn)的陸空混合路徑。即在滿足約束條件的前提下,從柵格地圖節(jié)點(diǎn)集合中選擇路徑節(jié)點(diǎn),使兩棲無(wú)人飛行器以較小的路徑代價(jià)沿陸空混合路徑節(jié)點(diǎn)運(yùn)動(dòng),同時(shí)與障礙物保持安全距離。圖3 為在三維空間中的理想陸空混合路徑規(guī)劃示意圖,圖中方塊代表障礙物,實(shí)線代表在陸地時(shí)的行進(jìn),虛線代表在空中時(shí)的飛行,圓圈代表起始點(diǎn),五角星代表目標(biāo)點(diǎn)。
圖3 理想陸空混合路徑規(guī)劃示意圖Fig.3 Schematic diagram of ideal land-air hybrid path planning
蟻群算法模擬了自然界中螞蟻的覓食行為。螞蟻在尋找食物源時(shí),會(huì)在其經(jīng)過(guò)的路徑上釋放一種信息素,并能夠感知其他螞蟻釋放的信息素。信息素濃度的大小表示路徑的遠(yuǎn)近,信息素濃度越高,表示對(duì)應(yīng)的路徑距離越短。通常螞蟻會(huì)以較大的概率優(yōu)先選擇信息素濃度較高的路徑,并釋放一定量的信息素,以增強(qiáng)該條路徑上的信息素濃度,這樣,會(huì)形成一個(gè)正反饋。最終螞蟻能夠找到一條從巢穴到食物源的最佳路徑,即距離最短。用螞蟻的行走路徑表示待優(yōu)化問(wèn)題的可行解,整個(gè)螞蟻群體的所有路徑構(gòu)成待優(yōu)化問(wèn)題的解空間。路徑較短的螞蟻釋放的信息素量較多,隨著時(shí)間的推進(jìn),較短的路徑上累積的信息素濃度逐漸增高,選擇該路徑的螞蟻個(gè)數(shù)也愈來(lái)愈多。最終整個(gè)螞蟻會(huì)在正反饋的作用下集中到最佳的路徑上,此時(shí)對(duì)應(yīng)的便是待優(yōu)化問(wèn)題的最優(yōu)解。
螞蟻l(l=1,2,…,m)在t 時(shí)刻從當(dāng)前節(jié)點(diǎn)i 轉(zhuǎn)移到下一個(gè)節(jié)點(diǎn)j 的轉(zhuǎn)移概率,由路徑上信息素濃度和距離啟發(fā)函數(shù)確定,如式(3)所示:
其中,ij表示路徑(i,j)信息素濃度,ηij是啟發(fā)函數(shù),表示螞蟻從節(jié)點(diǎn)i 到節(jié)點(diǎn)j 的期望程度,如式(4)所示,allowedl為螞蟻l 待訪問(wèn)節(jié)點(diǎn)的集合,α 為信息素啟發(fā)因子,表示信息素濃度對(duì)轉(zhuǎn)移概率影響;β 為期望啟發(fā)因子,表示路徑信息對(duì)轉(zhuǎn)移概率的影響。
其中,dij是當(dāng)前節(jié)點(diǎn)i 到待選節(jié)點(diǎn)j 的歐氏距離。在螞蟻釋放信息素的同時(shí),各個(gè)節(jié)點(diǎn)間連接路徑上的信息素逐漸消失,參數(shù)ρ(0<ρ<1)表示信息素的揮發(fā)程度。因此,當(dāng)所有螞蟻完成一次循環(huán)后,各個(gè)節(jié)點(diǎn)間連接路徑上的信息素濃度需要進(jìn)行實(shí)時(shí)更新,具體公式如下:
δij表示所有螞蟻在節(jié)點(diǎn)i 與節(jié)點(diǎn)j 連接路徑上釋放的信息素濃度之和,δlij表示第l 只螞蟻在節(jié)點(diǎn)i與節(jié)點(diǎn)j 連接路徑上釋放的信息素濃度,公式如下:
Q 為信息素強(qiáng)度常數(shù),Dl表示螞蟻l 在本輪循環(huán)中所走過(guò)的路徑總長(zhǎng)度。
由于基本蟻群算法只能生成單一陸地行駛路徑或單一飛行行駛路徑,本文需注重能源消耗及路徑長(zhǎng)短生成一條陸空三維混合路徑,考慮對(duì)概率公式以及評(píng)價(jià)函數(shù)進(jìn)行改進(jìn);由于基本蟻群算法搜索最優(yōu)路徑的時(shí)間較長(zhǎng),考慮對(duì)節(jié)點(diǎn)方向性選擇以及信息素更新規(guī)則進(jìn)行改進(jìn)。
2.2.1 概率公式的改進(jìn)
螞蟻l(l=1,2,…,m)根據(jù)各個(gè)節(jié)點(diǎn)間連接路徑上的信息素濃度以及啟發(fā)函數(shù)決定其下一個(gè)訪問(wèn)節(jié)點(diǎn),引入影響因子μ,其計(jì)算公式如下:
其中,μ 為影響因子,是一個(gè)動(dòng)態(tài)變量,隨著每一代螞蟻的更替進(jìn)行變化,具體變化形式看式(9)。三維環(huán)境下dij的計(jì)算如式(8):
其中,x、y、z 為節(jié)點(diǎn)i 與節(jié)點(diǎn)j 沿x 軸、y 軸以及z 軸的坐標(biāo)。
選取下一節(jié)點(diǎn)時(shí),設(shè)定參數(shù)k,目的為選擇下一節(jié)點(diǎn)調(diào)用不同參數(shù) 和η,當(dāng)k=1 時(shí)為向上層走,k=2時(shí)為向平層走,k=3 時(shí)為向下層走。本文將信息素濃度 與啟發(fā)函數(shù)η 分為3 類(lèi),如圖4 所示。
圖4 選擇調(diào)用參數(shù)Fig.4 Select call parameters
2.2.2 節(jié)點(diǎn)方向性選擇的改進(jìn)
在選取下一節(jié)點(diǎn)時(shí)考慮到方向性,期望螞蟻向終點(diǎn)靠近,引入了前進(jìn)角的概念,前進(jìn)角代表當(dāng)前點(diǎn)與下一節(jié)點(diǎn)連線同當(dāng)前點(diǎn)與目標(biāo)點(diǎn)連線在XOY平面的投影的兩條線段所成的夾角。對(duì)前進(jìn)角進(jìn)行范圍約束,使其不得大于θ/2,其中,θ 是以當(dāng)前點(diǎn)與目標(biāo)點(diǎn)連線在XOY 平面的投影的線段為角平分線向兩邊所能擴(kuò)張的角度,螞蟻只能在小于這一角度范圍內(nèi)前進(jìn),如圖5 所示。傳統(tǒng)蟻群算法在搜索過(guò)程中行走的隨機(jī)性太強(qiáng),收斂速度太慢,大大增加了算法的空間復(fù)雜度,前進(jìn)角引入進(jìn)行范圍約束之后,使得算法初期搜索效率顯著提高,無(wú)效螞蟻路徑顯著降低。首先由當(dāng)前點(diǎn)、目標(biāo)點(diǎn)和下一節(jié)點(diǎn)向XOY 平面做投影,投影點(diǎn)分別為E、F、G,連接EF 使EF 為∠θ 的角平分線,連接EG。經(jīng)多次∠θ 角度值的實(shí)驗(yàn),發(fā)現(xiàn)當(dāng)∠θ=90°時(shí)生成路徑效果最好,大于90°時(shí)得到最優(yōu)路徑會(huì)耗時(shí)更多,小于90°時(shí)得到的路徑并不十分優(yōu)質(zhì),因此,本文算法將∠θ 的值設(shè)定為一個(gè)常值90°。螞蟻在進(jìn)行下一點(diǎn)的選擇時(shí),由于從起始點(diǎn)便已遵守夾角的準(zhǔn)則,每選一個(gè)節(jié)點(diǎn)始終是向終點(diǎn)靠近的,故可忽視當(dāng)前點(diǎn)的速度與下一選擇點(diǎn)方向所形成的夾角較大的情況。
圖5 夾角示意圖Fig.5 Schematic diagram of included angle
2.2.3 信息素更新規(guī)則的改進(jìn)
當(dāng)一代蟻群完成一次路徑搜索后,各個(gè)節(jié)點(diǎn)間連接路徑上的信息素會(huì)逐漸消失,因此,需要對(duì)信息素濃度進(jìn)行實(shí)時(shí)更新。為了更好地平衡全局尋優(yōu)能力和局部尋優(yōu)能力,加快算法的迭代速度與運(yùn)算能力,本文引入影響因子μ,其作用為在計(jì)算第n 代螞蟻信息素的更新時(shí),不必從第一代一點(diǎn)點(diǎn)地計(jì)算,應(yīng)用式(9)可直接計(jì)算出更新后的信息素。μ 的初始值設(shè)置為1,隨著每一代螞蟻的更替而變化,計(jì)算公式如下:
μn代表第n 代螞蟻的值μ,參數(shù)ρ(0<ρ<1)表示信息素的揮發(fā)程度,改進(jìn)的各個(gè)節(jié)點(diǎn)間連接路徑上的信息素濃度實(shí)時(shí)更新的具體公式如下:
2.2.4 評(píng)價(jià)函數(shù)的改進(jìn)
對(duì)于兩棲無(wú)人飛行器陸空混合路徑規(guī)劃而言,評(píng)價(jià)函數(shù)是以能源消耗量設(shè)定的,消耗量值的大小會(huì)決定螞蟻路徑的選擇。經(jīng)查閱所知,一般兩棲無(wú)人飛行器在飛行時(shí)額定電流是80 A,在行走時(shí)額定電流是8 A,當(dāng)行進(jìn)同等距離時(shí),飛行所消耗的能源大約是行走所消耗能源的10 倍,由此評(píng)價(jià)函數(shù)公式如下:
其中,B 為每飛行1 m 所消耗的能源,C 為每行走1 m所消耗的能源。
改進(jìn)蟻群算法的路徑規(guī)劃流程如圖6 所示:
圖6 改進(jìn)蟻群算法流程圖Fig.6 Flow chart of improved ant colony algorithm
具體步驟如下:
Step 1 已知靜態(tài)三維空間進(jìn)行三維環(huán)境建模,選擇起始點(diǎn)與目標(biāo)點(diǎn)。
Step 2 構(gòu)造三維空間用于路徑規(guī)劃的切片結(jié)構(gòu)體,將三維空間進(jìn)行切片分層處理,結(jié)構(gòu)體中包含每一層切片的允許訪問(wèn)柵格及每一層切片連接下一層切片的參數(shù),參數(shù)包含信息素與啟發(fā)值。
Step 3 初始化信息素和啟發(fā)值及其他參數(shù),設(shè)置螞蟻數(shù)量m,信息素重要程度因子α,啟發(fā)函數(shù)重要程度因子β,信息素?fù)]發(fā)因子ρ,常數(shù)Q,最大迭代次數(shù)iter_max,影響因子μ,初始化每一代的最優(yōu)螞蟻。
Step 4 定義蟻群結(jié)構(gòu)體,逐個(gè)螞蟻進(jìn)行路徑選擇,將起始位置和目標(biāo)位置存放在蟻群結(jié)構(gòu)體中,在選取下一節(jié)點(diǎn)時(shí),考慮到飛行能源消耗大于行走能源消耗,盡量讓飛行器在沒(méi)有障礙的地方采用陸地行走模式。更新螞蟻的當(dāng)前位置和索引,判斷其是否到達(dá)終點(diǎn),若到達(dá)終點(diǎn)則更新單只螞蟻的最優(yōu),判斷本次循環(huán)是否結(jié)束,若結(jié)束則更新信息素直至所有種群循環(huán)結(jié)束。
Step 5 通過(guò)自定義的插值函數(shù),根據(jù)每一個(gè)切片的柵格點(diǎn),利用插值擬合得到三維路徑,計(jì)算種群適應(yīng)度值,選出最優(yōu)種群與路徑。
通過(guò)MATLAB 軟件對(duì)改進(jìn)蟻群算法的路徑規(guī)劃方法進(jìn)行仿真驗(yàn)證,作了兩組具有代表性的實(shí)驗(yàn),具體結(jié)果如下。
規(guī)劃空間為100 km×100 km×80 km,其中,x軸,y 軸方向每個(gè)節(jié)點(diǎn)間距1 km,z 軸方向每個(gè)節(jié)點(diǎn)間距5 km。設(shè)置路徑起點(diǎn)在規(guī)劃空間的坐標(biāo)為(1,1,0),終點(diǎn)坐標(biāo)為(96,96,0),各項(xiàng)參數(shù)值如表1所示。根據(jù)以下參數(shù)分別應(yīng)用本文改進(jìn)蟻群算法與文獻(xiàn)[12]中的蟻群算法進(jìn)行三維路徑規(guī)劃實(shí)驗(yàn),仿真結(jié)果數(shù)據(jù)如表2 所示。
表1 實(shí)驗(yàn)參數(shù)取值Table 1 The value of experimental parameters
表2 運(yùn)行結(jié)果對(duì)比Table 2 Comparison of running results
可以看出應(yīng)用改進(jìn)蟻群算法所得最優(yōu)適應(yīng)度值為1 414,較文獻(xiàn)[12]的1 608 少了接近200 的能源消耗,這說(shuō)明應(yīng)用本文改進(jìn)的蟻群算法比文獻(xiàn)[12]消耗的能源更少,路徑更優(yōu)。之所以會(huì)有較少的能源消耗是因?yàn)閼?yīng)用本文改進(jìn)蟻群算法生成了一條陸空混合路徑,如圖7 所示,而未考慮能源消耗的文獻(xiàn)[12]僅能生成一條較短的無(wú)陸地模式的路徑,如圖8 所示。
圖7 本文算法生成路徑Fig.7 The path generated by the proposed algorithm
圖8 文獻(xiàn)[12]算法生成路徑Fig.8 The path generated by the algorithm in reference[12]
為驗(yàn)證影響因子μ 是否加快算法的收斂速度及減少算法的運(yùn)行時(shí)間,規(guī)劃空間為100 km×100 km×80 km,其中,x 軸、y 軸方向每個(gè)節(jié)點(diǎn)間距1 km,z 軸方向每個(gè)節(jié)點(diǎn)間距5 km。設(shè)置路徑起點(diǎn)在規(guī)劃空間的坐標(biāo)為(1,1,0),終點(diǎn)坐標(biāo)為(96,96,0)。根據(jù)表3的各項(xiàng)參數(shù)值,分別應(yīng)用本文改進(jìn)蟻群算法與基本三維蟻群算法進(jìn)行三維路徑規(guī)劃實(shí)驗(yàn),所消耗的時(shí)間對(duì)比圖如圖9 所示。
圖9 改變終點(diǎn)后三維路徑規(guī)劃圖Fig.9 3D path planning diagram after changing the end point
從圖9 中可以看出,在生成的三維路徑中本文改進(jìn)蟻群算法比起基本三維蟻群算法運(yùn)行時(shí)間更少,迭代速度更快。
本文針對(duì)兩棲無(wú)人飛行器在三維環(huán)境中如何由起始點(diǎn)到目標(biāo)點(diǎn)合理地規(guī)劃路徑避開(kāi)障礙物,并且盡可能地減少能源的消耗對(duì)蟻群算法進(jìn)行了改進(jìn)。在概率選點(diǎn)公式中引入前進(jìn)角進(jìn)行約束,優(yōu)化了螞蟻的搜索方向;引入影響因子μ 加快算法的收斂速度,減少算法的運(yùn)行時(shí)間,優(yōu)化全局信息素的更新方式;創(chuàng)建一個(gè)以能源消耗為考量的評(píng)價(jià)函數(shù)進(jìn)行自適應(yīng)度值的選擇,最終生成陸空混合路徑軌跡,使算法更具備實(shí)際意義。改進(jìn)后的蟻群算法能夠快速有效地實(shí)現(xiàn)兩棲無(wú)人飛行器在三維空間中行走與飛行相結(jié)合的路徑規(guī)劃,相比基本三維蟻群算法只能飛行做出了創(chuàng)新,具有一定的優(yōu)越性。不足之處是算法的運(yùn)行時(shí)間相對(duì)較長(zhǎng),后續(xù)會(huì)對(duì)如何提高算法運(yùn)行速度展開(kāi)進(jìn)一步研究。