基于改進蟻群算法的移動機器人旅行商優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及智能移動機器人技術(shù)領(lǐng)域,具體涉及一種基于改進蟻群算法的移動機 器人旅行商優(yōu)化方法。
【背景技術(shù)】
[0002] "旅行商問題(TSP)"常被稱為"旅行推銷員問題",是指一名推銷員要拜訪多個地 點時,如何找到在拜訪每個地點一次后再回到起點的最短路徑。規(guī)則雖然簡單,但在地點數(shù) 目增多后求解卻極為復(fù)雜。以42個地點為例,如果要列舉所有路徑后再確定最佳行程,那么 總路徑數(shù)量之大,幾乎難以計算出來;例如在物流中的描述是對應(yīng)一個物流配送公司,欲將 n個客戶的訂貨沿最短路線全部送到,如何確定最短路線。旅行商問題(TSP)是典型的NP完 全問題,即其最壞情況下的時間復(fù)雜度隨著問題規(guī)模的增大按指數(shù)方式增長,到目前為止 還未找到一個多項式時間的有效算法。目前研究經(jīng)典TSP常用算法有遺傳算法、粒子群算 法、模擬退火算法、神經(jīng)網(wǎng)絡(luò)算法等。使用遺傳算法前期收斂速度過快,容易陷入局部最優(yōu) 解;使用粒子群算法雖然操作簡單,且能夠快速收斂,但是隨著迭代次數(shù)的不斷增加,在種 群收斂集中的同時,各粒子也越來越相似,可能在局部最優(yōu)解周邊無法跳出;使用模擬退火 算法具有收斂速度慢,執(zhí)行時間長,算法性能與初始值有關(guān)及參數(shù)敏感等缺點;使用神經(jīng)網(wǎng) 絡(luò)算法很難在較復(fù)雜的環(huán)境下實現(xiàn)。
[0003]蟻群算法最早是由意大利學(xué)者Marco Dorigo于1991年在其博士論文中提出,其真 實地模擬了自然界螞蟻群體的覓食行為。蟻群算法是一種自組織的、并行的、正反饋算法, 具有較強的魯棒性。把蟻群算法應(yīng)用于研究TSP問題,能夠有效解決此類問題,雖然許多科 學(xué)家也對傳統(tǒng)的蟻群算法做了許多改進,而且大多是將蟻群算法與其他算法相結(jié)合來解決 前期收斂速度過慢的問題,前期收斂速度慢就必然導(dǎo)致效率非常低。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明要解決的技術(shù)問題是針對現(xiàn)有技術(shù)中的不足,提出了一種基于改進蟻群算 法的移動機器人旅行商優(yōu)化方法,在算法前期具有快速的收斂性,減少迭代次數(shù),提高搜索 效率,縮短路徑長度,符合人工規(guī)劃意圖,適用于移動機器人在靜態(tài)環(huán)境中的自主導(dǎo)航。
[0005] 實現(xiàn)本發(fā)明目的的技術(shù)方案之一是提供一種基于改進蟻群算法的移動機器人旅 行商優(yōu)化方法,包括如下幾個步驟:
[0006] ①利用移動機器人自帶的攝像頭、聲吶環(huán)、紅外傳感器采集移動機器人的工作環(huán) 境信息,包括所有的"城市"坐標信息,并進行地圖建模;
[0007] ②利用各"城市"的坐標信息,計算城市間的相互距離,并根據(jù)距離信息對信息素 濃度進行初始化;
[0008] ③利用改進后的蟻群算法,進行路徑尋優(yōu);其具體過程包括:
[0009] A、對環(huán)境信息進行坐標處理;
[0010] B、設(shè)置初始參數(shù),包括蟻群規(guī)模、信息素重要程度因子、啟發(fā)函數(shù)重要程度因子、 信息素揮發(fā)因子、信息素釋放總量、最大迭代次數(shù)和迭代次數(shù)初值;
[0011] C、將螞蟻隨機置于不同的城市,按照一定的概率隨機選擇下一個待訪問的城市;
[0012] D、對所走路徑進行局部信息素濃度更新;
[0013] E、所有螞蟻完成一次迭代后,對信息素濃度進行全局更新;
[0014] F、若沒有達到最大迭代次數(shù),轉(zhuǎn)至步驟C;否則,終止迭代,輸出最優(yōu)解結(jié)果;
[0015] ④根據(jù)步驟③得到的優(yōu)化結(jié)果輸出最優(yōu)路徑的路線圖。
[0016] 進一步的,步驟①中,地圖建模的要求如下:(a)移動機器人的活動范圍在有限的 二維空間;(b)將移動機器人和各個城市看做質(zhì)點,便于分析研究;(c)將移動機器人和各個 城市按照二維坐標系建模;城市的總數(shù)量為n。
[0017]進一步的,步驟②中,用cUj表示任意城市i和城市j之間的距離,計算公式如下:
,其中城市i在二維坐標系的坐標為(xi, yi),城市j在二維坐標系的坐標為(xj,yj);
[0019]根據(jù)距離信息對信息素濃度進行初始化得到的初始信息素濃度為T〇u,^^ = l/ dij 〇
[0020]進一步的,步驟③的過程B中,信息素揮發(fā)因子的數(shù)值選取為0.1。
[0021 ]進一步的,步驟③的過程C中,螞蟻k在t時刻從城市i轉(zhuǎn)移到城市j的概率<的計算 公式為:
[0023] 式中:allowk(k=l,2,…,m)為螞蟻k待訪問城市的集合,開始時,allowk中有(n-1)個元素,即包括除了螞蟻k出發(fā)城市的其他所有城市,隨著時間的推進,all 〇Wk中的元素 逐漸減少,直至為空,即表示所有的城市均訪問完畢;T^(t)表示在t時刻城市i、j間路徑上 的信息素濃度;a為信息素重要程度因子,其值越大,表示信息素的濃度在轉(zhuǎn)移中起的作用 越大;0為啟發(fā)函數(shù)重要程度因子,其值越大,表示啟發(fā)函數(shù)在轉(zhuǎn)移中的作用越大,即螞蟻會 以較大的概率轉(zhuǎn)移到距離短的城市;陽⑴為啟發(fā)函數(shù),表示t時刻螞蟻從城市i轉(zhuǎn)移到城市 j的期望程度,計算公式如下:
[0024] 進一步的,步驟③的過程D中,局部信息素濃度初次更新規(guī)則如下:
[0025] Tij(t+l) = (l-e)Tij(t)+ex/〇,
[0026] 其中,Tij(t+1)為初次更新后的局部信息素濃度,e是一個參數(shù),££(〇,1),變量1/0 = C/c^,C為不為零的常數(shù)。
[0027] 進一步的,步驟③的過程D中,計算完一次城市間的轉(zhuǎn)移概率后,采用輪盤賭方法 選擇下一個待訪問的城市。
[0028] 進一步的,步驟③的過程E中,對信息素濃度進行全局更新的方式如下:
[0033] 其中,P表示信息素的揮發(fā)程度,I是一個參數(shù),4<表示對最短路徑和最長路徑額 外更新的信息素增量;表示第k只螞蟻在城市i與城市j連接路徑上釋放的局部信息素濃 度;A 表示所有螞蟻在城市i與城市j連接路徑上釋放的局部信息素濃度之和,| e (〇,1), Q為常數(shù),表示螞蟻循環(huán)一次所釋放的局部信息素總量;Lk為螞蟻k經(jīng)過路徑的長度,Lbest為 該次迭代中最短路徑長度,L wcirst為該次迭代中最長路徑長度,n為城市數(shù)目。
[0034] 實現(xiàn)本發(fā)明目的的技術(shù)方案之二是提供一種基于改進蟻群算法的移動機器人路 徑尋優(yōu)方法,包括如下幾個步驟:
[0035] S101:根據(jù)城市間距離信息初始化信息素矩陣;
[0036] S102:初始化其他參數(shù)信息,包括蟻群規(guī)模、信息素重要程度因子、啟發(fā)函數(shù)重要 程度因子、信息素揮發(fā)因子、信息素釋放總量、最大迭代次數(shù)和迭代次數(shù)初值;
[0037] S103:將螞蟻隨機置于不同出發(fā)點,采用輪盤賭法選擇下一個訪問的城市,直至訪 問完所有的城市;
[0038] S104:對所走路徑進行局部信息素更新;
[0039] S105:所有螞蟻完成一次迭代后進行全局信息素更新;
[0040] S106:判斷是否達到最大迭代次數(shù),若達到了,則轉(zhuǎn)S107;否則轉(zhuǎn)S103;
[00411 S107:終止計算,輸出最優(yōu)路線圖。
[0042] 本發(fā)明具有積極的效果:(1)本發(fā)明的優(yōu)點在于它對以往傳統(tǒng)蟻群算法對于初始 化信息素濃度方面做了改進,使得螞蟻一開始就能對螞蟻的尋優(yōu)做出導(dǎo)向,前期收斂速度 明顯加快;同時對初始參數(shù)的合理選擇,例如信息素揮發(fā)因子P的選擇,使得結(jié)果不至于陷 入局部最優(yōu)解或者難以形成最優(yōu)解,以及對信息素更新方式作出合理改進,能有效避免陷 入局部最優(yōu)和提高機器人的工作效率和工作可靠性。
[0043] (2)傳統(tǒng)蟻群算法將初始化信息素濃度設(shè)置為1,這樣就給螞蟻初次搜索路徑帶來 了問題,每條路徑被選中的概率都一樣,這樣就導(dǎo)致了前期搜索較慢,走了過多的彎路,影 響了整個搜索的效率。而本發(fā)明對此問題所做的改進就是根據(jù)計算得到的城市間的距離信 息來確定初始信息素濃度,也就是用距離的倒數(shù)來初始化信息素矩陣,也就是讓螞蟻優(yōu)先 選擇距離較近的城市,這樣就給初次搜索的螞蟻指明了一定的方向,從而不至于去多走一 些沒必要的彎路。
[0044] (3)本發(fā)明只需要迭代傳統(tǒng)蟻群算法的一半次數(shù)就能收斂到最優(yōu)解,效率提升了 一倍多。本發(fā)明對傳統(tǒng)蟻群算法所做改進的優(yōu)勢顯而易見,改進后的蟻群算法讓螞蟻在前 期少走許多彎路,提高了算法前期的收斂性,大大提高了移動機器人的工作效率和工作可 靠性。
【附圖說明】
[0045] 圖1為本發(fā)明的基于改進蟻群算法的移動機器人旅行商優(yōu)化方法的流程圖;
[0046] 圖2為傳統(tǒng)蟻群算法的路徑圖;
[0047]圖3為傳統(tǒng)蟻群算法的各代最短距離與平均距離的對比圖;
[0048]圖4為改進后的蟻群算法的優(yōu)化路徑圖;
[0049]圖5為改進后的蟻群算法的各代最短距離與平均距離的對比圖。
【具體實施方式】
[0050] (實施例1)
[0051] 見圖1,本實施例的基于改進蟻群算法的移動機器人旅行商優(yōu)化方法,具體包括以 下步驟:
[0052] 步驟一、環(huán)境建模:
[0053]利用移動機器人自帶的攝像頭、聲吶環(huán)、紅外傳感器采集移動機器人的工作環(huán)境 信息,包括所有的"城市"坐標信息,并進行地圖建模;建模要求如下:(a)移動機器人的活動 范圍在有限的二維空間;(b)將移動機器人和各個城市看做質(zhì)點,便于分析研究;(c)將移動 機器人和各個城市按照二維坐標系建模。城市的總數(shù)量為n。
[0054]步驟二、初始化信息素矩陣:
[0055]計算各個城市間的相互距離du,并根據(jù)距離信息確定蟻群算法的初始信息素濃度 扣^,其中T(^ = l/d小其中,(^表示城市i和城市j之間的距離,計算公式如下:
,其中城市i在二維坐標系的坐標為(xi, yi),城市j在二維坐標系的坐標為(xj,yj)。
[0057]傳統(tǒng)蟻群算法將初始化信息素濃度設(shè)置為1,這樣就給螞蟻初次搜索路徑帶來了 問題,每條路徑被選中的概率都一樣,這樣就導(dǎo)致了前期搜索較慢,走了過多的彎路,影響 了整個搜索的效率。而本發(fā)明對此問題所做的改進就是根據(jù)計算得到的城市間的距離信息 來確定初始信息素濃度,也就是用距離的倒數(shù)來初始化信息素矩陣,也就是讓螞蟻優(yōu)先選 擇距離較近的城市,這樣就給初次搜索的螞蟻指明了一定的方向,從而不至于去多走一些 沒必要的彎路。
[0058]步驟三、利用改進后的蟻群算法進行路徑尋優(yōu)。具體過程如下:
[0059] (a)對環(huán)境進行坐標處理;
[0060] (b)設(shè)置初始參數(shù),包括蟻群規(guī)模m,信息素重要程度因子a,啟發(fā)函數(shù)重要程度因 子0,信息素揮發(fā)因子P,信息素釋放總量Q,最大迭代次數(shù)iterjnax,迭代次數(shù)初值iter=l; 其中,信息素揮發(fā)因子P的影響在于它體現(xiàn)的是螞蟻留在其通過的路徑上的信息素軌跡的 持久性,若其