專(zhuān)利名稱(chēng):基于距離完全蟻群算法的多播路由方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)通信中的路由技術(shù),具體涉及一種運(yùn)用蟻群算法的 多播路由方法。 技術(shù)背景隨著計(jì)算機(jī)網(wǎng)絡(luò)和通信技術(shù)的發(fā)展,出現(xiàn)了諸如多媒體會(huì)議、遠(yuǎn)程教學(xué)、 視頻點(diǎn)播、協(xié)同工作等服務(wù)。多播技術(shù)就是一種點(diǎn)到多點(diǎn)的通訊方式。概括來(lái) 說(shuō),多播路由問(wèn)題可以敘述為在一個(gè)特定的網(wǎng)絡(luò)中,根據(jù)某項(xiàng)標(biāo)準(zhǔn)尋找從源節(jié) 點(diǎn)到多個(gè)目標(biāo)節(jié)點(diǎn)的信息傳送路徑。若把網(wǎng)絡(luò)視作連通的帶權(quán)無(wú)向網(wǎng)絡(luò),將網(wǎng) 絡(luò)節(jié)點(diǎn)和相關(guān)鏈接抽象為對(duì)應(yīng)的圖節(jié)點(diǎn)和邊,并根據(jù)網(wǎng)絡(luò)鏈接對(duì)網(wǎng)絡(luò)資源的消 耗定義圖中各邊的權(quán)重。求解多播路由,就是尋找一條涵蓋源節(jié)點(diǎn)和所有目標(biāo) 節(jié)點(diǎn),符合約束條件并且消耗最小的最優(yōu)路徑。事實(shí)上,不帶約束的多播路由 問(wèn)題等價(jià)于在圖中生成Steiner樹(shù)的問(wèn)題,該問(wèn)題已被證明是一個(gè)NP-難問(wèn)題。 解決Steiner樹(shù)問(wèn)題的經(jīng)典算法包括Takahashi和Matsuyama提出的MPH算法 [l], Kou、 Markousky和Berman提出的KMB算法[2], Rayward-Smith提出的 RS算法等C3]。 Leung等人將遺傳算法運(yùn)用到多播路由問(wèn)題的求解中,并得到了 較好的結(jié)果[4]。在自然界中,單個(gè)螞蟻的能力幾乎是可以忽略的,但是作為一個(gè)整體時(shí), 蟻群卻是一個(gè)高度結(jié)構(gòu)化的群體。雖然螞蟻沒(méi)有像視覺(jué)和聽(tīng)覺(jué)一樣的直接的交 流工具,但它們可以釋放一種特殊的分泌物——信息素來(lái)進(jìn)行交流,通過(guò)這種 信息素蟻群可以很快的在蟻巢和食物之間找到一條最短的路徑。由于蟻群算法 本身具有的正反饋性、并行性、強(qiáng)收斂性以及魯棒性,使得其在組合優(yōu)化問(wèn)題 中有很好的表現(xiàn),如旅行商問(wèn)題、調(diào)度問(wèn)題、二次分配問(wèn)題等。與其它的元啟 發(fā)式算法相比,蟻群算法具有較強(qiáng)的全局搜索能力和尋優(yōu)能力,解的質(zhì)量穩(wěn)定 并具有更高的搜索效率。 參考文獻(xiàn)[1] Takahashi H., Matsuyama A.: An approximate solution for the Steiner problem in graphs. Math Japonica, 1980, 24: p. 573-577.[2] Kou L., Markowsky G" Berman L: A fast algorithm for Steiner tress. Acta Information, 1981, 15: p. 141-145.[3] Rayward-Smith V.丄The computation of nearly minimal Steiner tress in graphs. Int. J. Math. Ed. Sci. Technol., 1983, 14(1): p. 15-23.[4] Y. Leung, G. Li, and Z. B. Xu: A genetic algorithm for the multiple destination routing problems. IEEE Trans, on Evolutionary Computation, vol. 2, no. 4, pp. 150-161, November 1998.
發(fā)明內(nèi)容
本發(fā)明運(yùn)用蟻群算法求解無(wú)約束的多播路由問(wèn)題,基于蟻群系統(tǒng)的結(jié)構(gòu)提 出了一種距離完全蟻群算法來(lái)搜索網(wǎng)絡(luò)中最低費(fèi)用的多播樹(shù)。算法的具體步驟 包括(1) 運(yùn)用Floyd算法建立多播路由網(wǎng)絡(luò)的距離完全圖。(2) 初始化算法的各個(gè)參數(shù)。設(shè)定距離完全圖每條邊上的信息素的初始值為其中7;是根據(jù)確定的冗余檢測(cè)修正方法得到的樹(shù)的費(fèi)用。(3) 隨機(jī)選擇一個(gè)目標(biāo)節(jié)點(diǎn)讓螞蟻A:開(kāi)始搜索。螞蟻將會(huì)根據(jù)狀態(tài)轉(zhuǎn)移規(guī)則以一定的概率選擇下一個(gè)節(jié)點(diǎn)y',其公式如下.—Jarg maxre0t{[rO))].|>7( )]},如果《2《07=<U 否則其中,/是螞蟻當(dāng)前所在節(jié)點(diǎn),0,是當(dāng)前螞蟻還未曾訪問(wèn)過(guò)的節(jié)點(diǎn)的集合,《是 均勻分布在區(qū)間[O, l]中的隨機(jī)變量,《。(03dl)是一個(gè)參數(shù)。r(/,"表示連接 節(jié)點(diǎn)/和r的邊上的信息素取值。;/(/,r)表示從節(jié)點(diǎn)/選擇節(jié)點(diǎn)r的啟發(fā)式信息值。 選擇完成后,對(duì)螞蟻經(jīng)過(guò)的邊進(jìn)行局部信息素的更新。局部信息素的更新將會(huì) 分兩步執(zhí)行, 一個(gè)是邏輯邊上的信息素更新,另一個(gè)是真實(shí)邊上的信息素更新。 螞蟻A不斷重復(fù)以上選擇過(guò)程,直到它經(jīng)過(guò)所有所有的目標(biāo)節(jié)點(diǎn),從而得到一棵螞蟻構(gòu)造的多播樹(shù)。(4) 對(duì)螞蟻構(gòu)造的多播樹(shù)執(zhí)行冗余檢測(cè)和修正。首先,對(duì)訪問(wèn)過(guò)的節(jié)點(diǎn)執(zhí) 行Prim算法。如果得到的最小生成樹(shù)的費(fèi)用低于螞蟻構(gòu)造的樹(shù),螞蟻得到的解 就會(huì)被最小生成樹(shù)代替。然后,檢査無(wú)用的中間節(jié)點(diǎn),將那些只有一個(gè)輸出端 的中間節(jié)點(diǎn)刪除。以上兩個(gè)步驟不斷重復(fù),直到生成的樹(shù)不能再優(yōu)化為止。(5) 重復(fù)步驟(3)和(4)直到所有螞蟻都完成解的構(gòu)造。(6) 對(duì)歷史最優(yōu)的多播樹(shù)進(jìn)行全局信息素的更新。在最優(yōu)生成樹(shù)的真實(shí)邊 上的信息素如下更新y') = (1 _ P)+A r其中A2^1/ry, r^,為最優(yōu)生成樹(shù)的總的費(fèi)用。在最優(yōu)生成樹(shù)的邏輯邊上的信息素也同樣需要更新。假設(shè)節(jié)點(diǎn)/和_/之間選 定的真實(shí)路徑為("。,a, "2,..., ),其中"。=/, ^"'。 ^為路徑中邊的數(shù)量。 則,邏輯邊(i,力上新的信息素等于(7) 重復(fù)步驟(3)至(6)直到滿足算法的終止條件。不同于其它用于求解多播路由問(wèn)題的蟻群算法,發(fā)明的方法是是從一個(gè)隨 機(jī)選擇的目標(biāo)節(jié)點(diǎn)開(kāi)始搜索的,并且運(yùn)用的Prim的最小生成樹(shù)算法來(lái)構(gòu)造多播 樹(shù)。螞蟻可以確定地選擇下一個(gè)節(jié)點(diǎn),也可以用一定的概率去選擇。當(dāng)一只螞 蟻完成搜索后,運(yùn)用Prim算法和冗余檢測(cè)修正方法對(duì)螞蟻得到的解進(jìn)行檢驗(yàn)和 修正以求得到更好的結(jié)果。在網(wǎng)絡(luò)中的信息素將通過(guò)局部和全局信息素更新機(jī) 制進(jìn)行更新。本發(fā)明的另一個(gè)創(chuàng)新之處在于,在啟發(fā)式信息中通過(guò)一個(gè)參數(shù)//對(duì) 目標(biāo)節(jié)點(diǎn)的選取賦予一定的傾向性。運(yùn)用適當(dāng)?shù)膯l(fā)式方法和參數(shù)設(shè)定增加了 目標(biāo)節(jié)點(diǎn)(包括源節(jié)點(diǎn))的選擇概率。與同類(lèi)型的算法相比,發(fā)明的算法可以 更加快速地解決多播路由問(wèn)題。
圖l多播路由網(wǎng)絡(luò)示意2多播路由網(wǎng)絡(luò)構(gòu)造距離完全圖的方法示意3邏輯邊的擴(kuò)展示意4距離完全蟻群算法的總體流程圖
具體實(shí)施例方式以下結(jié)合附圖進(jìn)一步對(duì)發(fā)明的方法進(jìn)行描述。一個(gè)網(wǎng)絡(luò)圖可以用G-(^,^,Q)表示,其中^表示網(wǎng)絡(luò)中節(jié)點(diǎn)的集合,£c 表示連接節(jié)點(diǎn)的邊的集合,Q表示約束條件。如果問(wèn)題是不帶約束的,則0 = 0。 在多播路由問(wèn)題中^被分為三個(gè)子集^, ^和^,其中^是源節(jié)點(diǎn)的集合,^ 是目標(biāo)節(jié)點(diǎn)的集合,^是中間節(jié)點(diǎn)的集合。通過(guò)每個(gè)屬于五e(cuò)的邊e都有一個(gè)費(fèi) 用c(O。如果Fo中的節(jié)點(diǎn)沒(méi)有邊連接,則設(shè)定相對(duì)應(yīng)的費(fèi)用為oo。多播路由問(wèn) 題就是要尋找一棵連接^和^中的所有節(jié)點(diǎn),費(fèi)用最少并且符合Q中的約束條 件的樹(shù)。用公式來(lái)表達(dá),就是尋找一棵樹(shù)『=(Fs + ^ + ^, A),其中^f^, ^G&,使min2^c0), r滿足Q中的約束條件圖1為一個(gè)多播路由的例子,在圖中有十二個(gè)節(jié)點(diǎn)和一些邊。灰色實(shí)心的 節(jié)點(diǎn)l是源節(jié)點(diǎn),黑色實(shí)心節(jié)點(diǎn)2, 6,和ll是目標(biāo)節(jié)點(diǎn)。問(wèn)題是要找到一棵連 接所有目標(biāo)節(jié)點(diǎn)和源節(jié)點(diǎn),并且費(fèi)用最小的樹(shù)。圖中連接節(jié)點(diǎn)2, 1, 5, 6, 7, 11的黑色邊就構(gòu)成了問(wèn)題的一個(gè)解。由于本發(fā)明考慮的是不帶約束的多播路由問(wèn)題,所以可以將源節(jié)點(diǎn)和目標(biāo) 節(jié)點(diǎn)統(tǒng)一考慮,因此將^和^合并成為^。多播路由的網(wǎng)絡(luò)并不是一個(gè)完全連接的圖,也就是說(shuō)一些節(jié)點(diǎn)并不是由單 獨(dú)的邊直接連接的。而在一個(gè)網(wǎng)絡(luò)的距離完全圖中,任意兩個(gè)節(jié)點(diǎn)都是邏輯連 接的,并且連接的費(fèi)用是最小的。由于發(fā)明的蟻群算法是基于距離完全圖的, 因此首先必須建立多播路由網(wǎng)絡(luò)的距離完全圖。其中一種生成距離完全圖的經(jīng)典算法是Floyd算法,它的偽代碼如下 輸入C x [^I:多播路由網(wǎng)絡(luò)的費(fèi)用矩陣 輸出D^[^]:距離完全圖的費(fèi)用矩陣0一"[ ]:在距離完全圖中從節(jié)點(diǎn)i到J的下一個(gè)中間節(jié)點(diǎn)偽代碼For f:=0 to w-1Foiv':=0 to "畫(huà)l《= If Ctf = ooOj/:=-l;Else。i/ :=刀End If End For End For〃如果在節(jié)點(diǎn)i和J之間沒(méi)有邊連接〃保存從節(jié)點(diǎn)i開(kāi)始的下一個(gè)中間節(jié)點(diǎn)For A::=0to w誦lFor /:=0 to w-1F017 Oto w-1If / and cf汰+ c4j < A4/d汰+ ^;0"=0&; 〃記錄新的中間節(jié)點(diǎn) End If End For End For End For在輸入的費(fèi)用矩陣C^中,q表示連接節(jié)點(diǎn)/和y(/,戶(hù)0,l,.』-l)的邊的費(fèi)用。 如果邊不存在,則q為oo。輸出包含兩個(gè)矩陣,其一是生成的距離完全圖的費(fèi)用矩陣D"xw,其中 表示從節(jié)點(diǎn)Z'到節(jié)點(diǎn)/的邏輯邊的最低費(fèi)用。另一個(gè)是O"x ,其中^記錄從節(jié)點(diǎn)z'到節(jié)點(diǎn)y的邏輯邊的下一個(gè)中間節(jié)點(diǎn)。圖2為一個(gè)六節(jié)點(diǎn)的拓?fù)浣Y(jié)構(gòu)示例。在圖中的實(shí)線為兩個(gè)節(jié)點(diǎn)間存在的真實(shí)的邊,旁邊的數(shù)字代表著這條邊相對(duì)應(yīng)的費(fèi)用??梢钥吹焦?jié)點(diǎn)a和b并不是直接相連的,但它們 之間可以通過(guò)節(jié)點(diǎn)c和d相連。算法可以將圖2中的左圖轉(zhuǎn)化為右邊的距離完全圖,其中增加了連接a和b的最小費(fèi)用邏輯邊(虛線)。從a到b的最短路徑是經(jīng)過(guò)C的,因此4b的費(fèi)用為2.5, Oab的取值為C。由于網(wǎng)絡(luò)圖是無(wú)向的,因 此Oba的取值也是C。對(duì)于節(jié)點(diǎn)a和d,雖然它們是直接相連的,但卻存在一個(gè)更 短的通過(guò)節(jié)點(diǎn)e和f的路徑,因此《d = dda =1.5, oad = e, oda = f。當(dāng)"-l^l時(shí)Floyd算法的時(shí)間復(fù)雜度為0("3)。實(shí)際上,在一個(gè)真實(shí)的網(wǎng)絡(luò) 中需要基于路由表上所提供的信息來(lái)建立距離完全圖。 一旦距離完全圖建立完 畢,它就不需要改變直到網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)發(fā)生了變化。當(dāng)距離完全圖建立好后, 就可以運(yùn)用蟻群算法建立多播樹(shù)了。發(fā)明的距離完全蟻群算法的結(jié)構(gòu)是基于建立最小生成樹(shù)的Prim算法的。假設(shè)S是空的節(jié)點(diǎn)集合,F(xiàn)是一個(gè)無(wú)向連接圖中的節(jié)點(diǎn)的集合。Prim算法 將節(jié)點(diǎn)/添加到S中,如果^S, 7er-S,而且邊(/,力有最低費(fèi)用。當(dāng)5 =廠時(shí), 算法將終止。在發(fā)明的方法中,選擇下一個(gè)節(jié)點(diǎn)的標(biāo)準(zhǔn)并不是簡(jiǎn)單的基于邊的 費(fèi)用,而是基于信息素和啟發(fā)式信息的乘積。設(shè)邊O',力的信息素和啟發(fā)式信息的乘積表示為力(/,力,其中r(z',力表示 信息素的取值,7a力表示啟發(fā)式信息的取值。在發(fā)明的方法中,啟發(fā)式信息的 設(shè)置為<formula>formula see original document page 9</formula>否則其中A = max(l V1 |VG ,| VD |/| VG I)和a = min(l V1 |VG ,| VD |/| VG I)分別表示目標(biāo) 節(jié)點(diǎn)和中間節(jié)點(diǎn)的加強(qiáng)率,〃 =/iD= max(l F, l V1 |VG ,| VD |/| VG I)|)稱(chēng)為目標(biāo)節(jié)點(diǎn)和 中間節(jié)點(diǎn)的加強(qiáng)比例。4是距離完全圖中連接節(jié)點(diǎn)z'和/的邏輯邊的費(fèi)用。/7是 一個(gè)正常數(shù)。運(yùn)用以上的啟發(fā)式方法使得算法更傾向于選擇目標(biāo)節(jié)點(diǎn)。當(dāng)不同的邊有一 樣的費(fèi)用時(shí),貪婪操作更傾向于選擇^中的節(jié)點(diǎn)?;谝陨纤榻B的Prim算法和啟發(fā)式信息的設(shè)置,運(yùn)用蟻群對(duì)網(wǎng)絡(luò)進(jìn)行搜 索。發(fā)明的距離完全蟻群算法是一種運(yùn)作于距離完全圖上的,基于蟻群算法框 架的帶概率的Prim算法。其包含以下步驟(l)初始化<formula>formula see original document page 10</formula>將螞蟻A放置于隨機(jī)選擇的目標(biāo)節(jié)點(diǎn)/上,讓它開(kāi)始搜索。 (2)路徑的構(gòu)建螞蟻將會(huì)根據(jù)狀態(tài)轉(zhuǎn)移規(guī)則以一定的概率選擇下一個(gè)節(jié)點(diǎn)J,其公式如下arg max,/, 否則其中,/是螞蟻當(dāng)前所在節(jié)點(diǎn),0,是當(dāng)前螞蟻還未曾訪問(wèn)過(guò)的節(jié)點(diǎn)的集合,g是均勻分布在區(qū)間[O, l]中的隨機(jī)變量,《o (O^^l)是一個(gè)參數(shù)。r(z))表示連接 節(jié)點(diǎn)Z和r的邊上的信息素取值。/70))表示從節(jié)點(diǎn)/選擇節(jié)點(diǎn)r的啟發(fā)式信息值。 由于已經(jīng)預(yù)先建立了距離完全圖,因此任意兩個(gè)節(jié)點(diǎn)都是邏輯相連的。如果隨 機(jī)產(chǎn)生的《小于⑨,螞蟻就會(huì)選擇信息素和啟發(fā)式信息乘積最大的未訪問(wèn)節(jié)點(diǎn)。 否則,螞蟻將按照一個(gè)稱(chēng)為隨機(jī)比例規(guī)則的概率行為選擇規(guī)則,來(lái)決定下一個(gè) 節(jié)點(diǎn),螞蟻選擇節(jié)點(diǎn)/的概率為,如果風(fēng)o, 否則(3)邊的擴(kuò)展和局部信息素更新-當(dāng)一只螞蟻完成解的構(gòu)建后,它所訪問(wèn)過(guò)的邊上的信息素將會(huì)被降低。這 是為了防止大量的螞蟻選擇相同的路徑,使得其它螞蟻能夠分散地搜索整個(gè)網(wǎng) 絡(luò)。局部信息素的更新將會(huì)分兩步執(zhí)行, 一個(gè)是邏輯邊上的信息素更新,另一 個(gè)是真實(shí)邊上的信息素更新。邊(/,力上的信息素根據(jù)以下公式進(jìn)行更新力=(1 — P). r(/,力+ p. rmin 其中/ (戶(hù)e(0,l])是信息素的蒸發(fā)率。7^是每個(gè)邊上的信息素的下限。由于 ra_/)2rmin ,更新后的信息素小于或者等于原來(lái)的取值。當(dāng)下一個(gè)節(jié)點(diǎn)j'選擇完成后,螞蟻就會(huì)從節(jié)點(diǎn)z'移動(dòng)到節(jié)點(diǎn)乂。由于螞蟻是 在距離完全圖中移動(dòng)的,因此邏輯邊(/,力可以擴(kuò)展為真實(shí)路徑仏 .,0。",…,力。 例如,如圖3所示需要更新邏輯邊(1,6)的信息素,而邏輯邊(1,6)可以表示為路 徑{1,2,3,4,5,6},所有相關(guān)的邊(1,2), (1,3), (1,4), (1, 5), (1,6), (2,3), (2,4), (2,5), (2, 6), (3, 4), (3,5), (3,6), (4,5), (4,6), (5, 6),以及它們的對(duì)稱(chēng)邊(例如(2, l))上的信息素都會(huì)根據(jù)公式進(jìn)行更新。局部信息素更 新后,在附近區(qū)域的信息素濃度將降低。(4) 檢查螞蟻是否完成構(gòu)建所有螞蟻經(jīng)過(guò)的節(jié)點(diǎn)和邏輯路徑擴(kuò)展后經(jīng)過(guò)的節(jié)點(diǎn)都被當(dāng)作已訪問(wèn)的節(jié) 點(diǎn)。螞蟻完成構(gòu)建的結(jié)束條件為它訪問(wèn)過(guò)所有的源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)。如果結(jié)束 條件未滿足,則回到步驟二繼續(xù)搜索。否則,就認(rèn)為螞蟻完成了多播樹(shù)的構(gòu)造。(5) 冗余檢測(cè)修正當(dāng)螞蟻完成連接源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的多播樹(shù)的構(gòu)造后,必須對(duì)這個(gè)樹(shù)進(jìn)行 冗余檢測(cè)。首先,對(duì)訪問(wèn)過(guò)的節(jié)點(diǎn)執(zhí)行Prim算法。如果得到的最小生成樹(shù)的費(fèi)用低于 螞蟻構(gòu)造的樹(shù),螞蟻得到的解就會(huì)被最小生成樹(shù)代替。然后,檢查無(wú)用的中間節(jié)點(diǎn),將那些只有一個(gè)輸出端的中間節(jié)點(diǎn)刪除。 以上兩個(gè)步驟不斷重復(fù),直到生成的樹(shù)不能再優(yōu)化為止。 冗余的檢測(cè)和修正也可以作為多播路由問(wèn)題的一種確定性算法。將^中的 所有節(jié)點(diǎn)作為輸入,樹(shù)可以逐漸地被修正,得到的結(jié)果仍然是最小生成樹(shù)而且 是問(wèn)題的一個(gè)可行解。雖然這種方法不能夠得到最好的樹(shù),但是卻可以根據(jù)其 結(jié)果來(lái)初始化信息素。于是,在每條邊上的信息素的初始值設(shè)定為其中t;是根據(jù)確定的冗余檢測(cè)修正方法得到的樹(shù)的費(fèi)用。(6) 全局信息素更新當(dāng)m只螞蟻都完成了樹(shù)的構(gòu)造后,對(duì)歷史最優(yōu)的生成樹(shù)執(zhí)行全局信息素的 更新。在最優(yōu)生成樹(shù)的真實(shí)邊上的信息素如下更新r 0', _/ ) = (1 - / ) r(z',力+ . A r 其中At^1/7L,, 7L,為最優(yōu)生成樹(shù)的總的費(fèi)用。在最優(yōu)生成樹(shù)的邏輯邊上的信息素也同樣需要更新。假設(shè)節(jié)點(diǎn)z'和y之間選 定的真實(shí)路徑為("。,A, "2,..., ~),其中"。=/,^為路徑中邊的數(shù)量。 則,邏輯邊(z',力上新的信息素等于<formula>formula see original document page 12</formula>只有最優(yōu)生成樹(shù)中的真實(shí)邊和邏輯邊上的信息素被加強(qiáng),得到信息素加強(qiáng) 的邊會(huì)吸引更多的螞蟻去利用它們。(7)重復(fù)步驟(1)至(6)直到滿足結(jié)束條件。 距離完全蟻群算法的總體流程圖如圖4所示。為了驗(yàn)證算法的有效性,以O(shè)R庫(kù)中b組的Steiner問(wèn)題為例,對(duì)發(fā)明的距 離完全蟻群算法和Leung的遺傳算法進(jìn)行比較。發(fā)明的算法的具體參數(shù)設(shè)置為 《。=0.9, z -O.l, 7min=r。, m = 100, - = 2。 Leung提出的遺傳算法在所有問(wèn) 題上都能100%地求得最優(yōu)解,而本文提出的算法除了 Steinb13問(wèn)題外,對(duì)于其 它問(wèn)題也能100%得到最優(yōu)解。但本文提出的算法在四個(gè)循環(huán)內(nèi)就能解決大部分 的問(wèn)題,因此求解速度優(yōu)于遺傳算法。從測(cè)試結(jié)果中可以看出,發(fā)明的距離完 全蟻群算法可以更加快速地解決多播路由問(wèn)題。
權(quán)利要求
1、一種基于距離完全蟻群算法的多播路由方法,其特征在于,該方法包括以下步驟(1)運(yùn)用Floyd算法建立多播路由網(wǎng)絡(luò)的距離完全圖。(2)初始化算法的各個(gè)參數(shù)。設(shè)定距離完全圖每條邊上的信息素的初始值為 τ0=1/(|VG|·Ts)其中Ts是根據(jù)確定的冗余檢測(cè)修正方法得到的樹(shù)的費(fèi)用。(3)隨機(jī)選擇一個(gè)目標(biāo)節(jié)點(diǎn)讓螞蟻k開(kāi)始搜索。螞蟻將會(huì)根據(jù)狀態(tài)轉(zhuǎn)移規(guī)則以一定的概率選擇下一個(gè)節(jié)點(diǎn)j,其公式如下其中,i是螞蟻當(dāng)前所在節(jié)點(diǎn),Θk是當(dāng)前螞蟻還未曾訪問(wèn)過(guò)的節(jié)點(diǎn)的集合,q是均勻分布在區(qū)間
中的隨機(jī)變量,q0(0≤q0≤1)是一個(gè)參數(shù)。τ(i,r)表示連接節(jié)點(diǎn)i和r的邊上的信息素取值。η(i,r)表示從節(jié)點(diǎn)i選擇節(jié)點(diǎn)r的啟發(fā)式信息值。選擇完成后,對(duì)螞蟻經(jīng)過(guò)的邊進(jìn)行局部信息素的更新。局部信息素的更新將會(huì)分兩步執(zhí)行,一個(gè)是邏輯邊上的信息素更新,另一個(gè)是真實(shí)邊上的信息素更新。螞蟻k不斷重復(fù)以上選擇過(guò)程,直到它經(jīng)過(guò)所有所有的目標(biāo)節(jié)點(diǎn),從而得到一棵螞蟻構(gòu)造的多播樹(shù)。(4)對(duì)螞蟻構(gòu)造的多播樹(shù)執(zhí)行冗余檢測(cè)和修正。首先,對(duì)訪問(wèn)過(guò)的節(jié)點(diǎn)執(zhí)行Prim算法。如果得到的最小生成樹(shù)的費(fèi)用低于螞蟻構(gòu)造的樹(shù),螞蟻得到的解就會(huì)被最小生成樹(shù)代替。然后,檢查無(wú)用的中間節(jié)點(diǎn),將那些只有一個(gè)輸出端的中間節(jié)點(diǎn)刪除。以上兩個(gè)步驟不斷重復(fù),直到生成的樹(shù)不能再優(yōu)化為止。(5)重復(fù)步驟(3)和(4)直到所有螞蟻都完成解的構(gòu)造。(6)對(duì)歷史最優(yōu)的多播樹(shù)進(jìn)行全局信息素的更新。在最優(yōu)生成樹(shù)的真實(shí)邊上的信息素如下更新 τ(i,j)=(1-ρ)·τ(i,j)+ρ·Δτ其中Δτ=1/Tbest,Tbest為最優(yōu)生成樹(shù)的總的費(fèi)用。在最優(yōu)生成樹(shù)的邏輯邊上的信息素也同樣需要更新。假設(shè)節(jié)點(diǎn)i和j之間選定的真實(shí)路徑為(a0,a1,a2,...,aψ),其中a0=i,aψ=j(luò)。ψ為路徑中邊的數(shù)量。則,邏輯邊(i,j)上新的信息素等于
2、 基于權(quán)利要求1所述的一種基于距離完全蟻群算法的多播路由方法,其 特征在于發(fā)明的方法是從一個(gè)隨機(jī)選擇的目標(biāo)節(jié)點(diǎn)開(kāi)始搜索的,并且運(yùn)用的 Prim的最小生成樹(shù)算法來(lái)構(gòu)造多播樹(shù)。
3、 基于權(quán)利要求l所述的一種基于距離完全蟻群算法的多播路由方法,其 特征在于當(dāng)一只螞蟻完成搜索后,運(yùn)用Prim算法和冗余檢測(cè)修正方法對(duì)螞蟻得 到的解進(jìn)行檢驗(yàn)和修正以求得到更好的結(jié)果。
4、 基于權(quán)利要求1所述的一種基于距離完全蟻群算法的多播路由方法,其 特征在于在啟發(fā)式信息中通過(guò)一個(gè)參數(shù)/z對(duì)目標(biāo)節(jié)點(diǎn)的選取賦予一定的傾向 性。
全文摘要
本發(fā)明公開(kāi)了一種基于距離完全蟻群算法的多播路由方法。首先,為多播路由網(wǎng)絡(luò)建立距離完全圖。然后,基于蟻群算法和Prim算法帶隨機(jī)性地構(gòu)造多播樹(shù)。其中,啟發(fā)式信息的設(shè)置使得算法更傾向于選擇目標(biāo)節(jié)點(diǎn)。對(duì)生成的多播樹(shù)進(jìn)行冗余檢測(cè)和修正并執(zhí)行局部信息素的更新。最后,當(dāng)所有螞蟻都完成解的構(gòu)造后,執(zhí)行全局信息素的更新,對(duì)歷史最優(yōu)樹(shù)上的邊進(jìn)行信息素的加強(qiáng)。仿真測(cè)試結(jié)果,以及與同類(lèi)型算法的比較顯示,本發(fā)明的距離完全蟻群算法可以更加快速地解決多播路由問(wèn)題。
文檔編號(hào)H04L12/56GK101237408SQ20081002647
公開(kāi)日2008年8月6日 申請(qǐng)日期2008年2月27日 優(yōu)先權(quán)日2008年2月27日
發(fā)明者軍 張, 胡曉敏, 韜 黃 申請(qǐng)人:中山大學(xué)