摘 要:提出了一種實現(xiàn)移動機(jī)器人在復(fù)雜動態(tài)環(huán)境下進(jìn)行實時路徑規(guī)劃的新方法。該方法首先利用模糊邏輯來描述機(jī)器人局部環(huán)境模型;然后采用改進(jìn)的蟻群系統(tǒng)算法快速地搜索出局部最優(yōu)路徑,并在此路徑的引導(dǎo)下,結(jié)合機(jī)器人滾動規(guī)劃方法,實現(xiàn)移動機(jī)器人在復(fù)雜動態(tài)環(huán)境下的實時路徑規(guī)劃。該方法不僅能克服傳感器測量誤差等引起環(huán)境信息的模糊性和不確定性的影響,還可以充分發(fā)揮蟻群算法的群體智能優(yōu)勢來保證系統(tǒng)規(guī)劃的實時性。仿真結(jié)果表明該算法的有效性和可行性。
關(guān)鍵詞:移動機(jī)器人; 路徑規(guī)劃; 蟻群算法; 環(huán)境模糊模型; 動態(tài)環(huán)境
中圖分類號:TP24 文獻(xiàn)標(biāo)志碼:A
文章編號:1001-3695(2010)03-0860-04
doi:10.3969/j.issn.1001-3695.2010.03.014
Method of real-time path planning based on ant colony algorithm indynamic environment
ZENG Bi, YANG Yi-min
(Guangdong University of Technology, Guangzhou 510006, China )
Abstract:This paper proposed a new method which implemented real-time path planning of mobile robot in complex dynamic environment. The method first utilized the fuzzy logistic description to establish the fuzzy environment model of robot in local area, and then adopted the improved ant colony system algorithm to quickly search each local optimal path. With the optimal path leading, the robot achieved real-time path planning in complex dynamic environment combine with the method of rolling path planning. The method not only overcame the influences of fuzziness and uncertainty of environmental information which caused by inferior detection of sensors, but also had fully exploited the ant colony algorithm superiority in the community intelligence. The simulation result indicates the validity and the feasibility of this algorithm.
Key words:mobile robot; path planning; ant colony algorithm(ACS); fuzzy model of environment; dynamic environment
移動機(jī)器人路徑規(guī)劃問題是機(jī)器人導(dǎo)航研究的核心問題。在實際中,機(jī)器人具有的環(huán)境信息往往不完全,并且是動態(tài)變化的,這類路徑規(guī)劃屬于NP-hard問題,也是目前國內(nèi)外的一個研究熱點[1]?,F(xiàn)有的方法主要包括人工勢場法[2]、遺傳算法[3,4]、模糊邏輯算法[5]、神經(jīng)網(wǎng)絡(luò)[6]和蟻群算法等。人工勢場法結(jié)構(gòu)簡單、實時性好,但最大缺點是易陷入局部最優(yōu)解,而且在動態(tài)環(huán)境中難以實現(xiàn),而其余一些智能算法,計算量較大,在復(fù)雜環(huán)境中很難保證實時快速性。蟻群系統(tǒng)算法[7](ACS)具有并行處理、學(xué)習(xí)記憶與群體協(xié)作等特點,近年來已被用于靜態(tài)環(huán)境下的機(jī)器人路徑規(guī)劃,但是在動態(tài)變化的復(fù)雜環(huán)境下,機(jī)器人運動導(dǎo)航或路徑規(guī)劃蟻群算法仍是研究熱點[8]。本文提出一種可在復(fù)雜的動態(tài)環(huán)境下,利用環(huán)境的模糊模型和蟻群導(dǎo)引來實現(xiàn)機(jī)器人實時路徑規(guī)劃的新方法。該方法將改進(jìn)的ACS算法、滾動規(guī)劃法[9]與模糊邏輯法相結(jié)合,整合各自優(yōu)勢來實現(xiàn)移動機(jī)器人在動態(tài)環(huán)境下的實時導(dǎo)航。
1 環(huán)境的模糊模型
在未知的動態(tài)環(huán)境運動的機(jī)器人,只能根據(jù)自身傳感器檢測的信息進(jìn)行局部時間段上的環(huán)境建模。在實際中,由于噪聲干擾和測量系統(tǒng)的精度有限,信息的測量及環(huán)境噪聲引起的誤差都會影響建模速度和精度。本文采用擬人的環(huán)境認(rèn)知思想,運用模糊理論對不精確的環(huán)境信息進(jìn)行模糊描述,建立環(huán)境的模糊模型,用于保證優(yōu)化路徑的實時規(guī)劃。
設(shè)機(jī)器人的二維運動區(qū)域內(nèi)分布了有限個靜態(tài)和動態(tài)的障礙物,為了簡化敘述,假設(shè):a)忽略環(huán)境中障礙物的高度;b)將機(jī)器人模型化為點狀機(jī)器人,同時將其他障礙物根據(jù)機(jī)器人的實際尺寸及安全性要求進(jìn)行了相應(yīng)膨化處理, 并且使得膨化后的障礙物邊界為安全區(qū)域。
1.1 滾動窗口與子目標(biāo)的確定
在機(jī)器人的可視域內(nèi),假設(shè)動態(tài)障礙物的運動速度和方向已知,并且可通過全局先驗知識,知道全局的目標(biāo)點的位置和相對于R的方向。將全局目標(biāo)點映射到各個可視域RV上得出若干個子目標(biāo)。子目標(biāo)確定方法如下:
在任意時刻t,設(shè)機(jī)器人R的當(dāng)前位置為PR(xi,yi),R的可視域RVi的子目標(biāo)點為gi(xi,yi),兩者的距離為D(PR(xi,yi),gj(xj,yj)),且gi必須滿足約束條件:min D(gj(xj,yj),G(xe,ye)),所以,gi必定在過PR與終點G的直線上。
為了節(jié)省搜索時間,對于任意RV(i),沿PRgi方向定義一個近似代表R前方可視域的滾動窗口Wi,Wi定義為以機(jī)器人R為圓點、r為半徑的可視域半圓,R和目標(biāo)G連線PRG與Wi的交點為子目標(biāo)gi,如圖1所示。
1.2 環(huán)境的模糊描述
在可視窗Wi內(nèi),機(jī)器人用局部測距傳感器可檢測到環(huán)境障礙物等信息,為避免檢測噪聲和環(huán)境信息的不確定性影響,將距離信息轉(zhuǎn)換為相應(yīng)位置受障礙物影響的程度,表示為模糊信息μ。為了敘述方便,作出如下的約定和定義:
定義1 obs={o1t,o2t,…,oqt}表示t時刻Wi中所有障礙物的集合,poit表示t時刻第oi(i=1,2,…,q)個障礙物的當(dāng)前位置,pt是t時刻Wi中任意一個環(huán)境位置,D為從poit到pt的矢量,D(pt,poit)是pt與poit之間的幾何距離,因此有
D(pt,poit)=(xt-xoit)2+(yt-yoit)2(1)
定義2 設(shè)障礙物oi的半徑為Roi,最小安全距離為dsc,受oi影響的最大距離為dsa,如圖2(a)所示,則對于Wi內(nèi)的靜態(tài)障礙物,oit∈obs,有μpt(pt,poit)=μpt(pt,poit+1),且有
μpt(pt,poit)=
min1,dsa-[D(pt,poit)-(Roi+dsc)]dsa
若D(pt,poit)≤(Roi+dsa)0其他(2)
圖2(b)給出了靜態(tài)障礙物oit鄰域的隸屬函數(shù)描述,可見在最小安全區(qū)域外隸屬函數(shù)值將隨D的增大而逐漸從1減小為0。
設(shè)Voi是動態(tài)障礙物的速度矢量,且有Voi=常量。對于動態(tài)障礙物鄰域的位置點而言,位于運動障礙物運動方向上的點受影響的程度應(yīng)比其他方向大。
定義3 設(shè)f是隨動態(tài)障礙物運動信息變化的方向因子,符合f>0,且f是Voi與D夾角的減函數(shù),則f的函數(shù)形式為
f(V,D)=1+ξ×cos(α)(3)
其中:ξ是常量,0<ξ<1;α是V與D的夾角。
定義4 對于時刻t,μpt(pt,poit)表示第oi(i=1,2,…,q)個障礙物鄰近的環(huán)境狀態(tài)。對于動態(tài)障礙物有
μpt(pt,poit)≠μpt(pt,poit+1)
且有μ(pt,poit)=
min1,dsa×f(V,D)-[(D(pt,poit)-(Roi+dsc)]dsa×f(V,D)
若D(Pt,poit)≤(Roi+dsa)×f(V,D)0其他(4)
定義5 設(shè)在t時刻,若Pt滿足0≤μpt<ε,ε是接近0的較小的正數(shù),則稱Pt為t時刻的可行點,所有可行點的集合用RE表示,稱為可行域;若Pt滿足ε≤μpt≤1,則稱Pt為t時刻的非可行點,所有非可行點的集合用NRE表示,稱為非可行域。
定義6 對于g(shù)i有μ(xgi,ygi)=0,即子目標(biāo)gi不與障礙物相交,如果初始化得出的gi剛好與障礙物相交,則將gi沿PRgi方向順沿至滿足μ(xgi,ygi)=0的位置上。由于本文的算法為一個動態(tài)規(guī)劃過程,每步規(guī)劃出的局部路徑只是給出機(jī)器人未來行走的一種趨勢,即使gi實際落在障礙物上也不影響規(guī)劃過程。
以上定義的隸屬函數(shù)實際上是反映了環(huán)境中的點受障礙物的影響情況。其中μ(pt,poit)是表示位置點pt隨其與poit的距離增大而減少的函數(shù),其值為1時,表示位置點pt為障礙物區(qū)域;為0,表示機(jī)器人的安全可行域;如在0與1之間,表示處于安全區(qū)與障礙物之間的危險區(qū)域,且越靠近1的區(qū)域點越危險。另外,比較式(2)可知,式(4)給出了運動障礙物位置預(yù)測,與其運動方向相同的位置點的隸屬函數(shù)值比其他方向大,表示它們受運動障礙物的影響程度較大;根據(jù)式(2)和(4)形成的所有靜態(tài)和動態(tài)障礙物的隸屬函數(shù)μoi(pt,poit)構(gòu)成了動態(tài)環(huán)境的模糊模型,據(jù)此本文將可確定路徑尋優(yōu)的蟻群算法的初始信息素分布。
2 基于環(huán)境模糊模型的改進(jìn)ACS算法
本文應(yīng)用改進(jìn)的蟻群系統(tǒng)算法可快速地搜索出Wi窗內(nèi)的優(yōu)化路徑。在具體求解時,機(jī)器人以當(dāng)前位置PR(t)為蟻穴,局部子目標(biāo)點gi為食物源,用m只螞蟻,對應(yīng)虛擬的m個尋徑機(jī)器人,從蟻穴出發(fā)使用改進(jìn)的蟻群系統(tǒng)算法,在蟻穴及局部子目標(biāo)點間尋找一條安全避碰且較短的路徑。算法如下:
a)信息初始化。設(shè)R在ti時刻處于第i個滾動窗口的起點PR,將m只螞蟻都集中在起點PR上,并設(shè)置到禁忌表tabuk中(k=1,2,…,m)。設(shè)螞蟻尋食代數(shù)計數(shù)器n=0,最大代數(shù)為max。根據(jù)前面討論得出的環(huán)境的模糊模型,給出R在Wi中的初始信息素分布,對于Pij,有
τPij(n)=1-maxh[μPh(huán)(n)];h=1,2,…,q
(5)
其中:μPh(huán)(n)為第n代時Pj位置點受障礙物的影響程度,如圖2(b)所示。當(dāng)maxh[μpn(n)]=0,表示Pj為機(jī)器人安全可行點,該邊上的信息素τPij(n)=τmax,表示此區(qū)域?qū)儆谖浵伒目尚杏颡玆E;反之,當(dāng)maxh[μPh(huán)(n)]=1,τPij(n)為0,表示此區(qū)域為非可行區(qū)域NRE。
b)路徑構(gòu)建。對于任意的螞蟻k,以當(dāng)前節(jié)點Pi∈REi為中心,按如下選擇策略并行走到下一個節(jié)點Pj:
j=arg max{τij(n)[ηil(Pi)]β)},l∈|Z|
若q≤q0,μj(t)=0
J若q>q0,μj(t)=0(6)
其中:q0∈[0,1]為初始化時給定的一個閾值;ηij為螞蟻選擇節(jié)點Pj的啟發(fā)函數(shù);β用于調(diào)節(jié)ηil相對于τil的重要程度;J是按照以下概率公式和輪盤選擇法計算出來的點:
Pki,J(n)=[τi,J(n)]α[ηi,J(Pi)]β∑[τi,J(n)]α[ηi,J(Pi)]β(7)
J∈|Z|
其中:Z∈REki,Ztabuk,即螞蟻k在當(dāng)前節(jié)點鄰域內(nèi)的可行點集合;Pkij(n)表示螞蟻k在第n代尋食過程中,由節(jié)點Pi轉(zhuǎn)移到節(jié)點Pj的概率。最后將選出的Pj加入到禁忌表tabuk中。
c)局部信息素更新。當(dāng)一只螞蟻經(jīng)過一條邊Pij后,則按照如下的局部信息素更新規(guī)則更新該邊上的信息素[10]:
τij(n+1)=(1-ρ)τij(n)+ρτ0(8)
其中:0<ρ<1是信息素的揮發(fā)率;τ0為信息素的初始值。可見,局部更新可減少選中邊的信息素,從而增加螞蟻選擇其他邊的概率,避免算法陷入停滯狀態(tài)。不斷重復(fù)b)和c),直至所有的m只螞蟻都到達(dá)gi為止。
d)全局信息素更新。當(dāng)所有的m只螞蟻都到達(dá)gi后,在ACS算法基礎(chǔ)上,采用改進(jìn)的全局信息素更新方法,對本次迭代最優(yōu)和至今為止全局最優(yōu)路徑上的節(jié)點進(jìn)行信息素更新為
τij(n+1)=(1-ρ)τij(t)+ρΔτij(n,n+1),當(dāng)i,j∈lbest或gbest0 其他(9)
Δτij(n,n+1)=C1*Δτ′ij(n,n+1)+C2Δτ″ij(n,n+1)
Δτ′ij(n,n+1)=F/lbest Δτ′ij(n,n+1)=F/gbest(10)
其中:ρ、c1、c2為控制參數(shù),分別控制信息素的揮發(fā)以及局部和全局最優(yōu)路徑對信息素增加的貢獻(xiàn);lbest為本次迭代最優(yōu)路徑的長度;gbest為至今所有螞蟻所經(jīng)過的最優(yōu)路徑的長度。
完成了全局信息素更新后,清空禁忌表tabuk(k=1,2,…,m),令n=n+1,如果n 3 實時路徑規(guī)劃算法 本文應(yīng)用改進(jìn)的ACS算法快速地搜索出W窗內(nèi)的優(yōu)化路徑,并引導(dǎo)機(jī)器人按此路徑以δ為步長前進(jìn)一步,隨即W窗口向前滾動一步,并重復(fù)此過程。算法的具體步驟如下: a)設(shè)定全局目標(biāo)點,并對算法參數(shù)進(jìn)行初始化。 b)判斷機(jī)器人是否在全局目標(biāo)點上,若是,則算法結(jié)束;否則,執(zhí)行c)。 c)在t時刻,搜索全局目標(biāo)點是否處于傳感器范圍之內(nèi),若是,則將全局目標(biāo)點設(shè)置為子目標(biāo)點;否則,將全局目標(biāo)映射到R的可視域RVi上,求取局部子目標(biāo)gi,以機(jī)器人當(dāng)前位置PR作為Wi窗口起點,沿PRgi方向定義一個近似代表R前方可視域的滾動窗口Wi。 d)根據(jù)機(jī)器人傳感器探測的障礙物信息,運用式(2)~(4)建立Wi內(nèi)環(huán)境的模糊模型。 e)以pR(t)作為蟻穴,gi為食物源,根據(jù)Wi內(nèi)環(huán)境的模糊模型構(gòu)建蟻穴與食物源之間的初始信息素模型,用m只螞蟻,對應(yīng)虛擬的m個尋徑機(jī)器人,從蟻穴PR(t)出發(fā),用改進(jìn)的ACS算法,迅速地在Wi內(nèi)規(guī)劃從PR(t)到gi的局部最優(yōu)路徑gjbest(見第2章);若有g(shù)i與G相同,則規(guī)劃結(jié)束,機(jī)器人沿最終gjbest的路徑走向G,完成路徑規(guī)劃任務(wù);否則跳到d)。 f)機(jī)器人沿著Wi內(nèi)規(guī)劃出的局部最優(yōu)路徑向gi前進(jìn)一步至pR(t+1),隨即W窗口也向前移動一步。 g)t=t+1,返回b)進(jìn)行刷新。 4 實驗與分析 4.1 基于改進(jìn)ACS算法的仿真結(jié)果 為了驗證以上方法的有效性,在一臺有1.6 GHz CPU和512 MB RAM的計算機(jī)上進(jìn)行仿真實驗。參數(shù)集設(shè)置為α=1,β=2,q0=0.85,ρ=0.2,全局信息素更新控制參數(shù)c1=0.4,c2=0.6,F(xiàn)=10 ,方向因子的一個參數(shù)ξ=0.8。實驗中蟻群算法使用的啟發(fā)信息定義為 ηij=(ε-|yij-y*ij|)/ε(11) 其中:y*為螞蟻可能選擇的下一列柵格上的任意一點的縱坐標(biāo);y為局部子目標(biāo)點與機(jī)器人之間連線與下一列柵格的交點;ε為可調(diào)參數(shù),根據(jù)實際地圖大小將|yij-y*ij|限制在0~1范圍內(nèi),這里取ε=1.1。該式表明,離當(dāng)前點與子目標(biāo)點連線越近的點具有比其他更高的啟發(fā)信息。 實驗中假設(shè)R的活動區(qū)域為35×35的柵格區(qū)域,一個柵格寬度表示0.2 m,因此機(jī)器人的實際運動區(qū)域為7 m×7 m。其中隨機(jī)地分布著6個靜態(tài)障礙物ot1、ot2、ot3、ot4、ot5、ot6和4個動態(tài)障礙物ot7、ot8、ot9、ot10,如圖3所示。本實驗可以由用戶輸入任意的全局目標(biāo)點坐標(biāo)。通過仿真實驗觀察,當(dāng)螞蟻數(shù)m=10時,得出的不碰撞且最優(yōu)解為12.414 2 m。圖4(a)~(d)為尋找最優(yōu)路徑實驗過程中的若干細(xì)化圖。 其中產(chǎn)生的最優(yōu)路徑與柵格劃分的寬度有關(guān),柵格劃分得越細(xì),就能得到越優(yōu)的解。對以上實驗而言,如果每一條柵格在原來的基礎(chǔ)上劃分多一倍,則由蟻群系統(tǒng)算法得出的不碰撞最優(yōu)路徑為11.102 0 m。另外最優(yōu)路徑還與參數(shù)集有關(guān),通過實驗研究,可得出對于不同的環(huán)境。各參數(shù)集的最優(yōu)集選擇范圍如下:α最優(yōu)值處于1~2附近,本文選擇α=1;β最優(yōu)值處于2~5,本文選擇β=2;ρ最優(yōu)值處于0.2~0.4,本文選擇ρ=0.2;c1最優(yōu)值處于0.3~0.6,c2最優(yōu)值處于0.3~0.8,本文選擇c1= 0.4,c2 =0.6;q0最優(yōu)值處于0.7~0.9,本文選擇q0=0.85;ξ最優(yōu)值處于0.8~0.9,本文選擇ξ=0.8。 由實驗結(jié)果可知,對于不同的環(huán)境,參數(shù)集的設(shè)置是有效的,魯棒性較好。 4.2 算法比較 由于改進(jìn)的ACS算法并行計算和群體協(xié)作等特性,使它在解決路徑規(guī)劃問題的計算效率遠(yuǎn)高于其他進(jìn)化算法。為了作對比,本文中提出的模糊環(huán)境建模、滾動窗口規(guī)劃下的改進(jìn)ACS算法與標(biāo)準(zhǔn)ACS算法以及滾動窗口規(guī)劃結(jié)合實時編碼遺傳算法進(jìn)行比較,主要比較這三者的計算效率和收斂速度。其中實時編碼遺傳算法的參數(shù)設(shè)定為:種群數(shù)量m=30,雜交概率Pc=0.9,突變概率Pm=0.08,指定的最大迭代代數(shù)maxgeneration=200。 表1比較了分別用改進(jìn)ACS算法、標(biāo)準(zhǔn)ACS算法和實時編碼遺傳算法規(guī)劃Wi內(nèi)優(yōu)化路徑時的計算效率。 表1 計算效率比較表 改進(jìn)ACS一般ACSreal-code GA Average CPU time each iteration/s0.001 1500.001 5600.004 366 Average number of iterations needed for convergence2734136 Average CPU time needed for obtaining optional path/s0.023 0000.070 9320.106 122 很明顯,改進(jìn)的ACS算法有很高的收斂速度,平均在27次迭代后可搜索出不碰撞且優(yōu)化的路徑,機(jī)器人計算局部最優(yōu)解所需的平均時間為0.023 0 s,完全可以可以滿足機(jī)器人的在線路徑規(guī)劃的實時性要求。 表2為分別采用改進(jìn)ACS算法、標(biāo)準(zhǔn)ACS算法和實時編碼遺傳算法規(guī)劃一條全局優(yōu)化路徑的收斂速度比較。圖5給出了三者在動態(tài)環(huán)境中實時規(guī)劃路徑的仿真結(jié)果比較。 表2 收斂速度比較表 改進(jìn)ACS一般ACSreal-code GA Average CPU time each process/s1.983 2802.199 54321.152 507 Average length of Robot path eachprocess(mile)12.218 94712.501 45012.555 060 本文的方法是使移動機(jī)器人在運動過程中,逐步地在線規(guī)劃出實時局部最優(yōu)路徑來進(jìn)行導(dǎo)航,因此適用于任何未知的復(fù)雜動態(tài)環(huán)境。 5 結(jié)束語 本文以改進(jìn)的ACS算法為基礎(chǔ),提出了一種適用于未知動態(tài)環(huán)境的移動機(jī)器人實時導(dǎo)航方法。該方法利用模糊描述對環(huán)境進(jìn)行建模,將改進(jìn)ACS算法與機(jī)器人滾動在線路徑規(guī)劃方法相結(jié)合,較好地解決了機(jī)器人對環(huán)境不確定信息的適應(yīng)性,以及在線規(guī)劃的實時性等問題。對未知環(huán)境的模糊建模,不僅減弱環(huán)境檢測誤差對機(jī)器人導(dǎo)航的影響,而且很好地模擬了人對環(huán)境的感知和認(rèn)知;而改進(jìn)的ACS算法由個體的簡單智能,并行地演繹出群體優(yōu)越的智能行為,又很好地滿足了機(jī)器人在線路徑規(guī)劃的實時性要求。因此本方法是解決復(fù)雜動態(tài)環(huán)境下機(jī)器人在線規(guī)劃和導(dǎo)航的有效方法。 參考文獻(xiàn): [1]莊慧忠,杜樹新,吳鐵軍. 機(jī)器人路徑規(guī)劃及相關(guān)算法研究[J]. 科學(xué)通報,2004,20(3): 210-215. [2]莊曉東,孟慶春,高云,等. 復(fù)雜環(huán)境中基于人工勢場優(yōu)化算法的最優(yōu)路徑規(guī)劃[J].機(jī)器人,2003,25(6):531-534. [3]陳剛,沈林成. 復(fù)雜環(huán)境下路徑規(guī)劃問題的遺傳路徑規(guī)劃方法[J].機(jī)器人,2001,23(1):40-44. [4]RAM A, ARLCIN R, BOONE G,et al.Using genetic algorithms to learn reactive control parameters for autonomous robotic navigation[J]. Adaptive Behavior,1994,2(3):277-304. [5]李保國,宗光華. 未知環(huán)境中移動機(jī)器人實時導(dǎo)航與避障的分層模糊控制[J]. 機(jī)器人,2005,27(6):481-485. [6]劉成良,張凱,付莊,等. 神經(jīng)網(wǎng)絡(luò)在機(jī)器人路徑規(guī)劃中的應(yīng)用研究[J].機(jī)器人,2001,23(7):605-608. [7]DORIGO M,GAMBARDELLA L M. Ant colony system: a cooperative learning approach to the traveling salesman problem[J]. IEEE Trans on Evolutionary Computation,1997,1(1):53-66. [8]朱慶保. 全局未知環(huán)境下多機(jī)器人運動螞蟻導(dǎo)航算法[J]. 軟件學(xué)報,2006,17(9):1890-1897. [9]席裕庚,張純剛. 一類動態(tài)不確定環(huán)境下機(jī)器人的滾動路徑規(guī)劃[J]. 自動化學(xué)報,2002,28(2):161-175. [10]DORIGO M. 蟻群優(yōu)化[M]. 羅旭耀,譯. 北京:清華大學(xué)出版社,2007.