本發(fā)明屬于數(shù)據(jù)處理技術領域,特別涉及一種群體智能優(yōu)化方法,可用于尋找旅行商的最優(yōu)路徑。
技術背景
近30年來,優(yōu)化領域出現(xiàn)了重大變革,人工智能和人工生命技術為優(yōu)化領域注入了新的活力,一系列基于仿生原理,通過模擬自然現(xiàn)象或過程的現(xiàn)代啟發(fā)式優(yōu)化算法相繼提出。蟻群優(yōu)化算法是一種模擬螞蟻覓食行為的模擬優(yōu)化算法,蟻群算法在解決旅行商TSP問題、交通運輸、指派問題、以及車間調度問題等離散鄰域優(yōu)化問題有著自身的優(yōu)勢,并取得了很大的進展與收獲。
蟻群算法的理論研究和實際應用表明,它是一種很有前途的仿生優(yōu)化算法。隨著人類認識的進步和社會發(fā)展的加速,仿生智能及最優(yōu)化系統(tǒng)理論將越來越成為科學認識和工程實踐的有力工具。在當今社會中,隨著人工智能和網(wǎng)絡技術的飛速發(fā)展,科學技術與其他的多種學科相互交叉,相互滲透和融合,不僅給人們的生活、學習和工作等方面帶了便利,而且也從根本上改變了人類的生活和生產(chǎn)。與此同時,隨著人類生活空間的不斷擴大和對世界認識水平的不斷提高,人們又對科學技術的發(fā)展提出了更高、更多的要求,期待著更多的研究學者對它進行不斷的研究和提高,其中高效的優(yōu)化技術和智能計算的要求也進一步的迫切需求。眾所周知,社會性昆蟲如蜜蜂,螞蟻等,雖然其單個個體的力量很小,行為方式很簡單、隨機,但是它們卻可以憑借集體的力量進行一些復雜的社會性活動,來更好的完成單個個體很難甚至不能完成的行為或活動,如它們可以通過社會分工等方式來更快的找到食物,共同的建造巢穴和防止外敵入侵等等。這種群體所表現(xiàn)出來的“智能”,就可以稱之為群體智能。
群體智能中的群體是指“一組相互之間可以進行間接通信的主體,這組主體能夠合作進行分布式問題求解”。而所謂群體智能是指“無智能的主體通過合作表現(xiàn)出智能行為的特性”。蟻群算法正是群體智能算法中的一個重要分支。在求解離散型組合優(yōu)化的問題上,蟻群算法表現(xiàn)出了其他進化算法無法比擬的優(yōu)越性。蟻群算法不僅具有魯棒性、分布式計算、正反饋性、易于和其他的智能算法相結合的特點,而且還有智能搜索、全局優(yōu)化等優(yōu)勢。該算法已經(jīng)引起了眾多專家和學者的注意,現(xiàn)在正被越來越多的研究者關注和探討,算法的理論得到不斷的完善,應用范圍也普及到許多的科學技術及工程領域,是一種有良好發(fā)展前景的模擬進化算法。
蟻群算法應用在旅行商TSP問題上取得了很好的效果。旅行商TSP問題是組合優(yōu)化中最著名的問題之一,它易于描述而難于求解。旅行商TSP問題問題描述如下:給定n個城市和每兩個城市間的距離(或給定n個城市和各個城市的坐標,這樣同樣可以求的任意兩個城市間的距離)。一個旅行商人自某一個城市出發(fā)巡回售貨,旅行商應該如何選擇路線,使每個城市經(jīng)過一次且僅一次,以完成一個回路,并且路徑最短。
意大利學者Dorigo等人提出的基本蟻群算法,在求解30個城市旅行商TSP問題,得到了非常滿意的結果,并將蟻群算法與其他一些算法,如爬山法、模擬退火算法、禁忌搜索算法、遺傳算法和進行規(guī)劃進行了比較,結果顯示對于多個不同的實例,蟻群算法比這些算法都能收斂到更好的解。這個結果使得許多學者收到了鼓舞,并紛紛加入到蟻群算法的研究中來。但是隨著研究的深入,再將基本蟻群算法應用到更大規(guī)模的旅行商TSP問題上時,計算結果很不理想。這表明基本蟻群算法在求解大規(guī)模復雜問題上能力有限。面對較大規(guī)模的旅行商TSP問題時,存在很多局部極小點,單一的信息素調整方案使得基本蟻群算法較容易陷入這些局部極小點,從而出現(xiàn)停滯現(xiàn)象。同時,算法需要較長的搜索時間。
在Dorigo等人提出基本的蟻群算法后,基于前面發(fā)現(xiàn)的問題,又提出了新的ACS算法,該算法能很好的解決之前基本蟻群算法不能解決大規(guī)模的TSP問題,在該算法中,螞蟻數(shù)為10個,基本蟻群算法的螞蟻數(shù)是等于城市數(shù)的。該算法的收斂速度很高,搜索時間能縮短不少,所求的最優(yōu)解較基本蟻群算法有不少提升,但是這種算法不是很穩(wěn)定,會陷入局部最優(yōu)解,導致程序停滯,最終求得的最優(yōu)路徑不準確。
技術實現(xiàn)要素:
本發(fā)明的目的在于克服已有技術的缺點,提出一種用于尋找旅行商最優(yōu)路徑的方法,避免陷入局部最優(yōu)解,提高最優(yōu)路徑的準確性。
實現(xiàn)上述目的技術思路是:對現(xiàn)有的蟻群算法進行改進,即在剛開始時為各個路徑設置相同的信息素濃度,使螞蟻按照狀態(tài)轉移方程選擇下一條路徑,直到完成一次遍歷;計算出本次的最優(yōu)路徑;然后在螞蟻經(jīng)過的路徑上增加一定量的信息素,并按照信息素新的更新方式進行更新,進入下一次循環(huán),直到循環(huán)結束,輸出最終的最優(yōu)路徑。
根據(jù)上述思路,本發(fā)明的技術方案包括如下:
(1)數(shù)據(jù)預處理步驟:
(1a)輸入旅行商TSPLIB數(shù)據(jù)庫里城市坐標數(shù)據(jù),該城市坐標數(shù)據(jù)表示x個城市的坐標位置,x為大于10的整數(shù),用i、j分別表示n個城市中的兩個不同城市,并將這兩個城市的連線視為一條邊(i,j);
(1b)初始化邊(i,j)上的信息素濃度為τij(0)=0.1,設置軌跡相對重要性參數(shù)α=1,見度的相對重要性參數(shù)β=2;
(2)設置計算全局最優(yōu)路徑的循環(huán)次數(shù)Nmax=1000;
(3)設循環(huán)次數(shù)Nc=1,通過蟻群算法開始第一次循環(huán),計算第一次最優(yōu)路徑長度Cb,完成信息素濃度更新;
(3a)將10個螞蟻隨機分布于10個城市;
(3b)計算第一只螞蟻路徑長度:
(3b1)設螞蟻循環(huán)遍歷次數(shù)N1=x;
(3b2)將第1只螞蟻訪問過的城市集設置為集合U,其他未訪問的城市集設置為集合A,由狀態(tài)轉移概率公式計算出第1只螞蟻從當前城市i到集合A中未訪問城市j的狀態(tài)轉移概率值Sij,
(3b3)對集合A中的n個城市分別計算其狀態(tài)轉移概率值,得到狀態(tài)轉移概率集合:S={Si1,Si2…Sij…Sin},其中Sij表示城市i到城市j的狀態(tài)轉移概率值,j=1,2,…,n,n為集合A中未訪問的城市的數(shù)量,n=1,2,…,x;
(3b4)找出狀態(tài)轉移概率集合S中最大值Sik,k=1,2,…,j,則城市k為螞蟻要移動的一下個城市;
(3b5)將第一只螞蟻移動到城市k,并在集合A中剔除城市k,在集合U中加入城市k,更新集合A和集合U;
(3b6)第1只螞蟻移動到城市k后,螞蟻返回步驟(3b3),繼續(xù)訪問集合A中的第j+1個城市,直到集合A中沒有城市,即N1=x,第1只螞蟻遍歷完成;
(3b7)在第1只螞蟻遍歷完所有城市后,計算第1只螞蟻所訪問城市的路徑總長度:其中dij表示第i個城市與第j個城市之間的距離;
(3c)剩下的9只螞蟻按照(3b)的方法遍歷所有城市,計算9只螞蟻路徑總長度分別為C2,C3,C4,C5,C6,C7,C8,C9,C10,得到路徑總長度集合C={C1,…Ca…C10},其中Ca表示第a個螞蟻的路徑總長度,a=1,2,…,10;
(3d)找出路徑總長度集合C中的最小值Cmin,并將該最小值Cmin賦給最優(yōu)路徑長度Cb
(3e)更新邊(i,j)上的信息素濃度:
τij(t+m)=(1-ρ)·τij(t)+Δτij,
其中,τij(t+m)為t+m時刻邊(i,j)上的信息素濃度,m=1,2,3…1000,ρ表示信息素揮發(fā)系數(shù),1-ρ為信息素殘留因子,ρ=0.01,τij(t)為t時刻邊(i,j)上信息素濃度,表示在本次循環(huán)中邊(i,j)上的信息素濃度增量,其中,ca表示第a只螞蟻路徑總長度,a=1,2,…,10,Q為路徑長度參數(shù),Q=1,Cb表示最優(yōu)路徑長度;
(3f)當完成所有邊上信息素濃度更新之后,記錄τij(t+m)和最優(yōu)路徑長度Cb;
(4)循環(huán)次數(shù)Nc加1,返回步驟(3),本次循環(huán)完成后,記錄本次最優(yōu)路徑長度Cbl,最優(yōu)路徑長度Cbl=min{Cb,Cbl},其中min{Cb,Cbl}表示Cb和Cbl中值較小的一個,Cbl為第Nc次循環(huán)的最優(yōu)路徑長度,l=1,2,…,1000;
(5)判斷循環(huán)次數(shù)Nc,當循環(huán)次數(shù)達到預定的循環(huán)次數(shù)1000時,循環(huán)結束,輸出最終的全局最優(yōu)路徑長度Cb1000。
本發(fā)明與現(xiàn)有技術相比具有如下優(yōu)點:
1.本發(fā)明在更新信息素濃度τij(t)時,引入了新的增量增加了螞蟻選擇其他邊的概率,克服了過早出現(xiàn)停滯現(xiàn)象,避免陷入局部最優(yōu)解。
2.本發(fā)明中采用信息素全局的更新規(guī)則,而不是信息素全局更新,提高了最優(yōu)路徑長度的準確度。
附圖說明
圖1是本發(fā)明的實現(xiàn)總流程圖;
圖2是用現(xiàn)有基本蟻群算法ACO在eil76數(shù)據(jù)庫中找到的最優(yōu)路徑軌跡圖;
圖3是用現(xiàn)有蟻群系統(tǒng)算法ACS在eil76數(shù)據(jù)庫中找到的最優(yōu)路徑軌跡圖;
圖4是用本發(fā)明在eil76數(shù)據(jù)庫中找到的最優(yōu)路徑軌跡圖;
圖5是用現(xiàn)有基本蟻群算法ACO在bier127數(shù)據(jù)庫中找到的最優(yōu)路徑軌跡圖;
圖6是用現(xiàn)有蟻群系統(tǒng)算法ACS在bier127數(shù)據(jù)庫中找到的最優(yōu)路徑軌跡圖;
圖7是用本發(fā)明在bier127數(shù)據(jù)庫中找到的最優(yōu)路徑軌跡圖。
具體實施方式
以下結合附圖本發(fā)明的具體實施和效果作進一步詳細描述。
參照圖1,給出如下兩種實施例:
實施例1:尋找旅行商城市坐標eil76數(shù)據(jù)庫的最優(yōu)路徑
eil76數(shù)據(jù)庫是旅行商TSPLIB數(shù)據(jù)庫中76個城市的坐標數(shù)據(jù)和城市編號,其中包含76行,3列數(shù)據(jù),第1列是城市編號,第2列為城市的橫坐標,第3列為城市的縱坐標,eil76數(shù)據(jù)庫可以從以下地址獲取。
(http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/)
本實例的實現(xiàn)步驟如下:
步驟1.數(shù)據(jù)預處理。
(1a)輸入城市坐標eil76數(shù)據(jù)庫,并用i、j分別表示76個城市中的兩個不同城市,再將這兩個城市的連線視為一條邊(i,j);
(1b)初始化邊(i,j)上的信息素濃度為τij(0)=0.1,設置軌跡相對重要性參數(shù)α=1,見度的相對重要性參數(shù)β=2。
步驟2.設置計算最優(yōu)路徑的循環(huán)次數(shù)Nmax=1000。
循環(huán)次數(shù)的多少直接影響到最優(yōu)路徑長度的效果,循環(huán)次數(shù)越多,則計算最優(yōu)路徑的準確性越高,但是也會降低運算速度,本發(fā)明兼顧最優(yōu)路徑長度效果和運算速度,取循環(huán)次數(shù)Nmax=1000;
步驟3.設循環(huán)次數(shù)Nc=1,通過蟻群算法開始第一次循環(huán)。
蟻群算法由Dorigo等人提出,先將10個螞蟻隨機分布于eil76數(shù)據(jù)庫中的10個城市,使螞蟻按照狀態(tài)轉移方程選擇下一城市,直到完成一次遍歷,計算出本次的最優(yōu)路徑,其步驟如下:
(3a)將10個螞蟻隨機分布于eil76數(shù)據(jù)庫中的10個城市。
在蟻群算法中,根據(jù)eil76數(shù)據(jù)庫可知城市的數(shù)量為76,將螞蟻數(shù)量也設置為76,將76只螞蟻隨機分布在eil76數(shù)據(jù)庫中的76個城市,但是這樣運算速度很低,所以后來又將蟻群算法中的螞蟻數(shù)量設置為10,即先將第1只螞蟻,隨機分布于eil76數(shù)據(jù)庫中的第Z1個城市上,再將第r只螞蟻,隨機分布于eil76數(shù)據(jù)庫中的第Zr個市城上,r=2,…,10;
(3b)計算第一只螞蟻路徑長度:
(3b1)設螞蟻循環(huán)遍歷次數(shù)N1=76,即螞蟻要遍歷的次數(shù)等于城市的數(shù)量76。
(3b2)第一只螞蟻訪問一遍所有的城市:
(3b21)將第1只螞蟻訪問過的城市集設置為集合U,其他未訪問的城市集設置為集合A,由狀態(tài)轉移概率公式計算出第1只螞蟻從當前城市i到集合A中未訪問城市j的狀態(tài)轉移概率值Sij。
其中,表示為的最大值,τij(t)為t時刻邊(i,j)上信息素濃度,參數(shù)α表示軌跡相對重要性,ηij(t)表示螞蟻從城市i到城市j的期望程度,取ηij(t)=1/dij,dij表示城市i和城市j之間的距離,參數(shù)β表示能見度的相對重要性,q為(0,1)內(nèi)服從均勻分布的隨機變量,q0=0.4,s表示集合A中未訪問的城市,τis(t)為t時刻城市i到城市s上信息素濃度,ηis(t)表示螞蟻從城市i到城市s的期望程度;
(3b22)對集合A中的n個城市分別計算其狀態(tài)轉移概率值,得到狀態(tài)轉移概率集合:S={Si1,Si2…Sij…Sin},其中Sij表示城市i到城市j的狀態(tài)轉移概率值,j=1,2,…,n,n為集合A中未訪問的城市的數(shù)量,n=1,2,…,76;
(3b23)找出狀態(tài)轉移概率集合S中最大值Sik,k=1,2,…,j,則城市k為螞蟻要移動的一下個城市;
(3b24)將第一只螞蟻移動到城市k,并在集合A中剔除城市k,在集合U中加入城市k,更新集合A和集合U;
(3b25)第1只螞蟻移動到城市k后,螞蟻返回步驟(3b21),繼續(xù)訪問集合A中的第j+1個城市,直到集合A中沒有城市,即N1=76,第1只螞蟻遍歷完成;
(3b3)在第1只螞蟻遍歷完所有城市后,計算第1只螞蟻所訪問城市的路徑總長度:其中dij表示第i個城市與第j個城市之間的距離;
(3c)剩下的9只螞蟻按照(3b)方法計算,得路徑總長度分別為C2,C3,C4,C5,C6,C7,C8,C9,C10,得到路徑總長度集合C={C1,…Cr…C10},其中Cr表示第r個螞蟻的路徑總長度,r=1,2,…,10;
(3d)找出路徑總長度集合C中的最小值Cmin,并將該最小值Cmin賦給最優(yōu)路徑長度Cb;
(3e)更新邊(i,j)上的信息素濃度。
τij(t+m)=(1-ρ)·τij(t)+Δτij,
其中,τij(t+m)為t+m時刻邊(i,j)上的信息素濃度,m=1,2,3…1000,ρ表示信息素揮發(fā)系數(shù),1-ρ為信息素殘留因子,ρ=0.01,τij(t)為t時刻邊(i,j)上信息素濃度,表示在本次循環(huán)中邊(i,j)上的信息素濃度增量,其中,cr表示第r只螞蟻路徑總長度,r=1,2,…,10,Q為路徑長度參數(shù),Q=1,Cb表示最優(yōu)路徑長度;
(3f)當完成所有邊上信息素濃度更新之后,記錄τij(t+m)和最優(yōu)路徑長度Cb,完成第一次循環(huán)。
步驟4.循環(huán)次數(shù)Nc加1,返回步驟3,本次循環(huán)完成后,記錄本次最優(yōu)路徑長度Cbl,其中Nc=1,2,…,1000,l=1,2,…,1000。
當Nc=1時,計算的最優(yōu)路徑長度為Cb,
當Nc=2,…,1000時,最優(yōu)路徑長度Cbl=min{Cb,Cbl},其中min{Cb,Cbl}表示Cb和Cbl中值較小的一個,Cbl為第Nc次循環(huán)的最優(yōu)路徑長度。
步驟5.完成循環(huán)次數(shù),獲得全局最優(yōu)路徑長度Cb1000。
判斷循環(huán)次數(shù)Nc,若Nc=1000,循環(huán)結束,Cbl000=min{Cb,Cbl000},輸出最終的最優(yōu)路徑長度Cb1000。
實施例2:尋找旅行商城市坐標bier127數(shù)據(jù)庫的最優(yōu)路徑
bier127數(shù)據(jù)庫是旅行商TSPLIB數(shù)據(jù)庫中127個城市的坐標數(shù)據(jù)和城市編號,其中包含127行,3列數(shù)據(jù),第1列是城市編號,第2列為城市的橫坐標,第3列為城市的縱坐標,bier127數(shù)據(jù)庫可以從以下地址獲取。
(http://www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/)
本實例的實現(xiàn)步驟如下:
步驟一.數(shù)據(jù)預處理。
(1.1)輸入城市坐標bier127數(shù)據(jù)庫,并用i、j分別表示127個城市中的兩個不同城市,再將這兩個城市的連線視為一條邊(i,j);
(1.2)初始化邊(i,j)上的信息素濃度為τij(0)=0.1,設置軌跡相對重要性參數(shù)α=1,見度的相對重要性參數(shù)β=2。
步驟二.設置計算最優(yōu)路徑的循環(huán)次數(shù)Nmax=1000。
步驟三.設循環(huán)次數(shù)Nc=1,通過蟻群算法開始第一次循環(huán)。
(3.1)將10個螞蟻隨機分布于bier127數(shù)據(jù)庫中的10個城市,即先將第1只螞蟻,隨機分布于bier127數(shù)據(jù)庫中的第Z1個城市上,再將第r只螞蟻,隨機分布于bier127數(shù)據(jù)庫中的第Zr個市城上,r=2,…,10;
(3.2)計算第一只螞蟻路徑長度:
(3.2a)設螞蟻循環(huán)遍歷次數(shù)N1=127,即螞蟻要遍歷的次數(shù)等于城市的數(shù)量127。
(3.2b)第一只螞蟻訪問一遍所有的城市:
(3.2b1)將第1只螞蟻訪問過的城市集設置為集合U,其他未訪問的城市集設置為集合A,由狀態(tài)轉移概率公式計算出第1只螞蟻從當前城市i到集合A中未訪問城市j的狀態(tài)轉移概率值Sij。
其中,表示為的最大值,τij(t)為t時刻邊(i,j)上信息素濃度,參數(shù)α表示軌跡相對重要性,ηij(t)表示螞蟻從城市i到城市j的期望程度,取ηij(t)=1/dij,dij表示城市i和城市j之間的距離,參數(shù)β表示能見度的相對重要性,q為(0,1)內(nèi)服從均勻分布的隨機變量,q0=0.4,s表示集合A中未訪問的城市,τis(t)為t時刻城市i到城市s上信息素濃度,ηis(t)表示螞蟻從城市i到城市s的期望程度;
(3.2b2)對集合A中的n個城市分別計算其狀態(tài)轉移概率值,得到狀態(tài)轉移概率集合:S={Si1,Si2…Sij…Sin},其中Sij表示城市i到城市j的狀態(tài)轉移概率值,j=1,2,…,n,n為集合A中未訪問的城市的數(shù)量,n=1,2,…,127;
(3.2b3)找出狀態(tài)轉移概率集合S中最大值Sik,k=1,2,…,j,則城市k為螞蟻要移動的一下個城市;
(3.2b4)將第一只螞蟻移動到城市k,并在集合A中剔除城市k,在集合U中加入城市k,更新集合A和集合U;
(3.2b5)第1只螞蟻移動到城市k后,螞蟻返回步驟(3.2b1),繼續(xù)訪問集合A中的第j+1個城市,直到集合A中沒有城市,即N1=127,第1只螞蟻遍歷完成;
(3.2c)在第1只螞蟻遍歷完所有城市后,計算第1只螞蟻所訪問城市的路徑總長度:其中dij表示第i個城市與第j個城市之間的距離;
(3.3)剩下的9只螞蟻按照(3.2)方法計算,得路徑總長度分別為L2,L3,L4,L5,L6,L7,L8,L9,L10,得到路徑總長度集合L={L1,…Lr…L10},其中Lr表示第r個螞蟻的路徑總長度,r=1,2,…,10;
(3.4)找出路徑總長度集合L中的最小值Lmin,并將該最小值Lmin賦給最優(yōu)路徑長度Lb;
(3.5)更新邊(i,j)上的信息素濃度。
τij(t+m)=(1-ρ)·τij(t)+Δτij,
其中,τij(t+m)為t+m時刻邊(i,j)上的信息素濃度,m=1,2,3…1000,ρ表示信息素揮發(fā)系數(shù),1-ρ為信息素殘留因子,ρ=0.01,τij(t)為t時刻邊(i,j)上信息素濃度,表示在本次循環(huán)中邊(i,j)上的信息素濃度增量,其中,Lr表示第r只螞蟻路徑總長度,r=1,2,…,10,Q為路徑長度參數(shù),Q=1,Lb表示最優(yōu)路徑長度;
(3.6)當完成所有邊上信息素濃度更新之后,記錄τij(t+m)和最優(yōu)路徑長度Lb,完成第一次循環(huán)。
步驟四.循環(huán)次數(shù)Nc加1,返回步驟三,本次循環(huán)完成后,記錄本次最優(yōu)路徑長度Lbl,其中Nc=1,2,…,1000,l=1,2,…,1000。
當Nc=1時,計算的最優(yōu)路徑長度為Lb,
當Nc=2,…,1000時,最優(yōu)路徑長度Lbl=min{Lb,Lbl},其中min{Lb,Lbl}表示Lb和Lbl中值較小的一個,Lbl為第Nc次循環(huán)的最優(yōu)路徑長度。
步驟五.完成循環(huán)次數(shù),獲得全局最優(yōu)路徑長度Lb1000。
判斷循環(huán)次數(shù)Nc,若Nc=1000,循環(huán)結束,Lbl000=min{Lb,Lbl000},輸出最終的最優(yōu)路徑長度Lb1000。
本發(fā)明的效果可以通過仿真實驗進一步說明:
仿真實驗1:分別運用現(xiàn)有基本蟻群算法ACO,蟻群系統(tǒng)算法ACS和本發(fā)明方法求解城市坐標數(shù)據(jù)庫eil76的最優(yōu)路徑長度,結果如表1所示。
表1三種方法在城市坐標數(shù)據(jù)庫eil76仿真中得到的最優(yōu)路徑長度
從表1中可以看出,用本發(fā)明的方法相比于其他兩種方法,在求解城市坐標數(shù)據(jù)庫eil76的最優(yōu)路徑長度時,比現(xiàn)有的兩種算法求得的最優(yōu)路徑長度都小,提高了求解的最優(yōu)路徑長度的準確度。
仿真實驗2:分別運用現(xiàn)有基本蟻群算法ACO,蟻群系統(tǒng)算法ACS和本發(fā)明方法求解城市坐標數(shù)據(jù)庫eil76的最優(yōu)路徑軌跡,結果分別如圖2、圖3、圖4所示。
比較圖2、圖3和圖4,圖2所示的基本蟻群算法ACO中獲得的最優(yōu)路徑軌跡出現(xiàn)交叉現(xiàn)象,而圖3和圖4的最優(yōu)路徑軌跡沒有出現(xiàn)交叉,但圖4所示的用本發(fā)明方法獲得的最優(yōu)路徑長度比圖3所示的蟻群系統(tǒng)算法ACS獲得的最優(yōu)路徑長度小,體現(xiàn)了避免陷入局部最優(yōu)解,提高了求解的最優(yōu)路徑長度的準確度。
仿真實驗3:分別運用現(xiàn)有基本蟻群算法ACO,蟻群系統(tǒng)算法ACS和本發(fā)明方法求解城市坐標數(shù)據(jù)庫bier127的最優(yōu)路徑長度,結果如表2所示。
表2三種方法在城市坐標數(shù)據(jù)庫bier127仿真中得到的最優(yōu)路徑長度
從表2中可以看出,用本發(fā)明的方法相比于其他兩種方法,在求解城市坐標數(shù)據(jù)庫bier127的最優(yōu)路徑長度時,比現(xiàn)有的兩種算法求得的最優(yōu)路徑長度都小,提高了求解的最優(yōu)路徑長度的準確度。
仿真實驗4:分別運用現(xiàn)有基本蟻群算法ACO,蟻群系統(tǒng)算法ACS和本發(fā)明方法求解城市坐標數(shù)據(jù)庫bier127的最優(yōu)路徑軌跡,結果如圖5、圖6、圖7所示,其中圖5是用現(xiàn)有基本蟻群算法ACO在bier127數(shù)據(jù)庫中找到的最優(yōu)路徑軌跡圖;圖6是用現(xiàn)有蟻群系統(tǒng)算法ACS在bier127數(shù)據(jù)庫中找到的最優(yōu)路徑軌跡圖;圖7是用本發(fā)明在bier127數(shù)據(jù)庫中找到的最優(yōu)路徑軌跡圖。
比較圖5、圖6和圖7可見,圖5和圖6中最優(yōu)路徑軌跡出現(xiàn)交叉現(xiàn)象,而圖7最優(yōu)路徑軌跡沒有出現(xiàn)交叉,體現(xiàn)了本發(fā)明避免了陷入局部最優(yōu)解。