本發(fā)明屬于路徑規(guī)劃技術(shù)領(lǐng)域,涉及一種基于模擬退火蟻群算法的路規(guī)劃方法,在傳統(tǒng)的蟻群算法的基礎(chǔ)上引進了模擬退火算法形成模擬退火蟻群算法,再將其運用于路徑規(guī)劃,為進一步確保找到最優(yōu)路徑避免局部最優(yōu),本發(fā)明中又加入了增熵策略,通過多次更新路徑,避免算法早熟,更易找到全局最優(yōu)解。最后,經(jīng)過仿真,也證明了此算法的高效性。
背景技術(shù):
在有障礙物的環(huán)境中,搜尋者(如機器人,無人機等)從出發(fā)點到目標點規(guī)劃出一條路徑,并能夠沿著該路徑在沒有人為干預(yù)的情況下移動到預(yù)設(shè)目標,并完成預(yù)定任務(wù)。通常依據(jù)對環(huán)境信息掌握的程度將路徑規(guī)劃分為2種:
1.環(huán)境信息完全已知的全局路徑規(guī)劃——全局路徑規(guī)劃的任務(wù)是根據(jù)先驗(已知)地理環(huán)境信息找出從起始位置到目標位置的符合一定需求的可行或最優(yōu)路徑。常用方法有:可視圖法,柵格法,自由空間法等。
2.環(huán)境信息不完全已知或未知的基于傳感器的局部路徑規(guī)劃——局部路徑規(guī)劃是指搜尋者在運行過程中,通過自身安裝的傳感器不斷感知探索周圍環(huán)境信息,對路徑進行實時調(diào)整后尋找到一條最優(yōu)路徑。常用方法有:人工勢場法,模糊邏輯算法,神經(jīng)網(wǎng)絡(luò)算法,遺傳算法,蟻群算法等。
我國是一個產(chǎn)煤大國,絕大多數(shù)煤礦地形復(fù)雜,環(huán)境惡劣,煤礦開采的過程中有諸多不安全(例如塌方、透水、瓦斯爆炸等)因素存在,災(zāi)難時有發(fā)生,礦井發(fā)生災(zāi)害時,礦工需要在隨身攜帶的定位導(dǎo)航裝置的引導(dǎo)下快速逃生,應(yīng)急救援過程中,救護隊員、礦用無人機或機器人的導(dǎo)航是保障救援的基礎(chǔ),因此進行煤礦井下導(dǎo)航路徑規(guī)劃具有重要的理論和實用價值,煤礦礦井巷道狹長密閉、隨著開采過程不斷變化,在災(zāi)害發(fā)生時和后續(xù)的救援過程中,礦工的目標終點和救護隊員的相反的,由于巷道中存在有毒有害氣體和巷道的地形結(jié)構(gòu),礦工和救護隊員與機器人和無人機的在井下可行路徑是不同的,機器人和無人機在井下的可行路徑也不同,深入研究在煤礦井下復(fù)雜環(huán)境不同參數(shù)條件下的路徑規(guī)劃對保障煤礦安全生產(chǎn)和提高應(yīng)急救援技術(shù)水平具有重要的意義。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于針對傳統(tǒng)的蟻群算法因為早熟而產(chǎn)生產(chǎn)生局部最優(yōu)路徑問題,為了解決這一問題,提出模擬退火算法與蟻群算法結(jié)合的算法,提高了收斂速度,為了進一步確保找到最優(yōu)路徑,又加入了增熵策略,避免算法早熟,增加迭代次數(shù),從而找到全局最優(yōu)解。
為了更清晰的闡述本發(fā)明的方法,先對蟻群算法做適當說明。
蟻群算法(Ant Colony Algorithm,)是意大利學(xué)者Dorigo M等人于90年代創(chuàng)立的,是一種用來在圖中搜索優(yōu)化路徑的機率型算法,最初是用于解決著名的旅行商問題。它是一種收到自然界真實蟻群啟發(fā)的搜索算法。螞蟻是一種群居昆蟲,他們有組織,有分工,還有通訊系統(tǒng),他們相互協(xié)作,能完成從蟻穴到食物源尋找最短路徑的復(fù)雜任務(wù)。模擬螞蟻群體智能的人工蟻群算法的特點是分布計算、信息正反饋和啟發(fā)式搜索,且易于與其他算法結(jié)合因此被廣泛地應(yīng)用到有約束的優(yōu)化問題中。
用傳統(tǒng)蟻群算法解決路徑規(guī)劃問題,依據(jù)螞蟻在覓食過程中會在走過的路徑上留下信息素,所走的路徑越短,留下的信息素就越多,螞蟻就越傾向于選擇該路徑,所以最優(yōu)路徑上的信息素會越來越多,這樣形成一個正反饋機制,促使整個群體找到最優(yōu)路徑。首先設(shè)m是蟻群中螞蟻的總數(shù)目為m,一個節(jié)點i和另一節(jié)點j之間的距離用dij表示,蟻群算法的迭代次數(shù)為Nc,τij(t)表示t時刻結(jié)點i、j連線上殘留的的信息量。初始時刻t=0時,將m只螞蟻放置到起始位置上,令各條路徑上的信息素量相等,設(shè)τij(0)為常數(shù),螞蟻k(k=1,2,3,…m)在運動過程中根據(jù)各條路徑上的信息素量決定轉(zhuǎn)移方向,將當前走過的節(jié)點記錄在禁忌表(tabu list)中,禁忌表中的集合tabuk隨著螞蟻不斷前進而動態(tài)調(diào)整。在搜索過程中,螞蟻的狀態(tài)轉(zhuǎn)移概率是根據(jù)各條路徑上的信息素濃度及路徑的啟發(fā)信息來計算的。在t時刻,螞蟻k選擇從結(jié)點i到結(jié)點j的轉(zhuǎn)移概率為:
其中,allowedk={C-tabuk}表示螞蟻k下一步允許選擇的結(jié)點,allowedk為空集時表示螞蟻完成了一次循環(huán)。α(0<α<1)為信息啟發(fā)式因子,它的值越大則螞蟻之間的協(xié)作性越強,螞蟻越傾向于選擇其他螞蟻所經(jīng)過的路徑;β(0<β<1)為期望啟發(fā)式因子,它的值越大,則該狀態(tài)轉(zhuǎn)移概率越接近于貪心規(guī)則;ηij(t)為啟發(fā)函數(shù),其表達式如下:
ηij(t)=1/dij (2)
式中,dij是相鄰兩結(jié)點i和j之間的距離??梢钥闯?,dij越小,則ηij(t)越大,也就越大,該啟發(fā)函數(shù)表示螞蟻從結(jié)點i轉(zhuǎn)移到結(jié)點j的期望程度。為了避免殘留信息素過多而淹沒
啟發(fā)信息,當每只螞蟻從起始點到達目標節(jié)點(也即一個循環(huán)結(jié)束)后,要對殘留信息進行更新處理。更新規(guī)則如下:
τij(t+n)=(1-ρ)·τij(t)+Δτij(t) (3)
其中,0≤ρ<1,表示信息素揮發(fā)系數(shù),(1-ρ)表示信息殘留因子,Δτij(t)表示本次循環(huán)路徑(i,j)的信息素的增量,初始時刻Δτij(0)=0,表示第k只螞蟻在本次循環(huán)中留在路徑(i,j)上的信息量,Q表示信息素濃度,Lk表示第k只螞蟻在本次循環(huán)中所走路徑的總長度。
基于蟻群算法的路徑規(guī)劃流程圖如附圖1所示。
模擬退火算法是在本世紀80年代初被提出的,想法來源于固體退火原理,將固體加熱至充分高,再讓其徐徐冷卻,加熱時,固體內(nèi)部粒子隨溫升變?yōu)闊o序狀,內(nèi)能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達到平衡態(tài),最后在常溫時達到基態(tài),內(nèi)能減為最小。根據(jù)Metropolis準則,粒子在溫度T時趨于平衡的概率為e-ΔE/(KT),其中E為溫度T時的內(nèi)能,ΔE為其改變量,K為玻爾茲曼常數(shù)。在蟻群算法中加入模擬退火算法,將內(nèi)能模擬為目標路徑,將溫度演化成一個控制函數(shù)Tc,由初始解和控制函數(shù)數(shù)初始值t0開始,對蟻群算法所得路徑重復(fù)“產(chǎn)生新路徑,計算目標路徑差,接受或舍棄”的更新操作,并逐步衰減Tc的值。
將模擬退火算法與蟻群算法結(jié)合需設(shè)定隨著時刻t而變化的控制函數(shù)Tc的值,Tc的值可根據(jù)需要改變大小來保證整個迭代過程的順利進行。將模擬退火蟻群算法運用于路徑規(guī)劃具體步驟為:系統(tǒng)控制函數(shù)為Tc,初始值記為Tc(0)=0,t時刻Tc(t)=Tt,將m個螞蟻放在起點處,每個螞蟻按照(1)式進行下一步轉(zhuǎn)移,轉(zhuǎn)移過程中根據(jù)傳感器實時探測周圍的環(huán)境而避開障礙物,將其所走過的節(jié)點加入禁忌表,直到到達終點。當m個螞蟻都到達終點時,完成一輪搜索,這一過程可稱為尋優(yōu)過程,在這一過程中Tc的值成線性增長。完成一輪尋優(yōu)之后取得的路徑解集稱為初始解集{uk(ck,lk)1≤k≤m},式中uk(ck,lk)是螞蟻k取得的解,ck是經(jīng)過的路徑;lk是路徑長度。ul_min(cl_min,ll_min)表示初始集中的最優(yōu)的螞蟻個體取得的解,其中,cl_min和ll-min分別初始集中最優(yōu)路徑即局部最優(yōu)路徑的節(jié)點路徑和長度。加入模擬退火算
法后由初始集生成更新集,更新集記作{uk′(ck,lk)|1≤k≤m},根據(jù)(6)、(7)式逐一計算初始集內(nèi)的各個螞蟻的解,決定初始集內(nèi)的解是否加入更新集,即:
Δl=lk-ll-min; (6)
若pt=1,則uk(ck,lk)被接受作為更新集{uk′(ck,lk)}內(nèi)的解;否則產(chǎn)生一個[0,1]區(qū)間的均勻分布的隨機數(shù)ξ,若pt>ξ,則uk進入更新集,否則ul-min進入更新集.對所有初始集內(nèi)的個體進行篩選形成更新集{uk′(ck,lk)|1≤k≤m}。然后按照(8)、(9)式對路徑上的信息素進行更新,
τi,j(t+1)=max{τi,j(t+1)′,τmin} (9)
式中:τi,j′(t+1)表示更新后更新集中最優(yōu)路徑在節(jié)點(i,j)上的信息素,τi,j(t+1)為更新后當前最優(yōu)路徑在節(jié)點(i,j)上的信息素,r為常數(shù),在每一輪信息素更新時,按照設(shè)定的比例加強當前最優(yōu)路徑上的信息素;ρ為信息素揮發(fā)系數(shù);是更新集內(nèi)個體uk′在路徑(i,j)上留下的信息素強度,
Δτmin是當前優(yōu)路徑在節(jié)點(i,j)上留下的信息素強度,
Q為設(shè)定的常數(shù)。
從更新路徑到更新信息素的這一階段可稱為更新過程,這一過程中控制函數(shù)按照公式(12)衰減,
Tc(t+1)=Tc(t)a (12)
式中a為控制系數(shù),且0<a<1。由公式(7)可看出,當Tc較大時,初始集中的較差路徑能以較高的概率被接受進入更新集中,此時各條路徑上的信息素分布更廣。隨著Tc減小,概率變小,信息素趨于集中分布,算法得以快速收斂,為了使算法更快的收斂,可使a取較小值,這樣可以使Tc更快衰減,更快找到更優(yōu)解。完成一輪更新后得到一條最優(yōu)路徑,這一過程可視為在Tc衰減過程中達到基態(tài)。
為了進一步確保找到最優(yōu)路徑,本發(fā)明采用增熵策略,即給Tc設(shè)置一個[Tmax,Tmin]的范圍,當Tc<Tmin時,Tc自動上升至Tmax,重新進行路徑更新,這一過程稱為增熵過程。本發(fā)明中設(shè)定了多次增熵,也就是通過多次更新路徑來避免局部最優(yōu)路徑,增熵次數(shù)記為H,最大增熵次數(shù)記為Hmax,Hmax次增熵后一輪迭代結(jié)束[9],然后進行下一輪迭代,最終計算出最優(yōu)路徑。
基于模擬退火蟻群算法的路徑規(guī)劃可參見附圖2。
本發(fā)明模擬煤礦井下尋優(yōu)時將螞蟻演變?yōu)樗褜ふ?,利用柵格法建立環(huán)境模型來模擬發(fā)生礦難后煤礦井下的工作環(huán)境,井壁或頂板坍塌后散落在礦井中成為搜索者行進路徑上的障礙物[10],下圖模擬礦井中某一段區(qū)域的地形,首先以O(shè)為坐標原點,水平向右為x軸正方向,豎直向上為y軸正方向,建立直角坐標系,以搜尋者的步長δ為單位,建立一個20*20的柵格環(huán)境。其中灰色區(qū)域不屬于巷道中的區(qū)域,在巷道中隨機配置障礙物,若某一柵格內(nèi)沒有障礙物,則此柵格為自由柵格,用白色表示,若該柵格內(nèi)有障礙物,則為障礙柵格,用黑色表示。為了便于標記,在柵格左下方按從左到右,從下到上的順序為每個柵格編號,序號為從g1到g400。設(shè)路徑規(guī)劃的起始位置g1為搜尋者的起始點,目標位置g400為目標點。環(huán)境模型如附圖3所示。由仿真得出基于蟻群算法的路徑規(guī)劃用時10.065334seconds,最優(yōu)路徑長度39.8980,而基于模擬退火蟻群算法的路徑規(guī)劃用時9.093760seconds,最優(yōu)路徑長度為39.3120。由附圖4和附圖5,及兩種算法最終得出的最優(yōu)路徑長度可以看出,蟻群算法陷入了局部最優(yōu)路徑,而模擬退火蟻群算法則避免了局部最優(yōu)路徑,通過模擬退火找到了最優(yōu)路徑,且基于模擬退火蟻群算法的路徑規(guī)與基于蟻群算法的路徑規(guī)劃相比節(jié)省了時間。比較以上附圖6和附圖7,可以得出,模擬退火蟻群算法通過增加迭代次數(shù)以尋找最優(yōu)路徑,避免因蟻群算法早熟而形成局部最優(yōu)路徑。
本發(fā)明的有益效果是:
1.本發(fā)明提出的模擬退火蟻群算法將蟻群算法與模擬退火算法相結(jié)合既適用于環(huán)境信息已知的情況,又適用于環(huán)境信息未知的情況。
2.避免了傳統(tǒng)蟻群算法蟻群算法過早成熟而帶來的局部最優(yōu)值問題,且算法更高效,提高了尋優(yōu)速度,仿真結(jié)果表明模擬退火蟻群算法的優(yōu)越性。
附圖說明
圖1是本發(fā)明所涉及的基于蟻群算法的路徑規(guī)劃的流程圖。
圖2是本發(fā)明所涉及的基于模擬退火蟻群算法的路徑規(guī)劃的流程圖。
圖3是本發(fā)明的仿真模擬環(huán)境。
圖4是本發(fā)明的仿真結(jié)果:基于蟻群算法的路徑規(guī)劃的仿真所得出的最優(yōu)路徑。
圖5是本發(fā)明的仿真結(jié)果:基于模擬退火蟻群算法的路徑規(guī)劃的仿真所得出的最優(yōu)路徑。
圖6是本發(fā)明的仿真結(jié)果:蟻群算法的收斂曲線。
圖7是本發(fā)明的仿真結(jié)果:模擬退火蟻群算法的收斂曲線。