專利名稱:一種基于螞蟻算法的分布式自組網(wǎng)動態(tài)路由方法
技術(shù)領(lǐng)域:
本發(fā)明屬于使用自組網(wǎng)技術(shù)的領(lǐng)域,如無線自組網(wǎng)絡(luò)、傳感器網(wǎng)絡(luò)、無線局域網(wǎng)、無線接入等,特別是涉及到無線自組織互連網(wǎng)的路由技術(shù)。
背景技術(shù):
自組網(wǎng)是一種移動通信和計算機網(wǎng)絡(luò)相結(jié)合的網(wǎng)絡(luò),網(wǎng)絡(luò)中的終端節(jié)點在網(wǎng)絡(luò)中可任意移動,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)變化頻繁。便攜式移動節(jié)點通常依靠電池提供能量,發(fā)射功率有限,有時需要多跳轉(zhuǎn)發(fā)實現(xiàn)通信,每個用戶節(jié)點都兼有路由器和終端兩種功能。節(jié)點需要運行各種面向用戶的應(yīng)用程序和相應(yīng)的路由協(xié)議,并根據(jù)路由策略和路由表完成數(shù)據(jù)分組的轉(zhuǎn)發(fā)和路由維護(hù)工作,故要求節(jié)點采用合適的路由協(xié)議。自組網(wǎng)路由算法的設(shè)計需要考慮網(wǎng)絡(luò)的移動性、能量受限、帶寬有限和較高的誤比特率等特征,在處理網(wǎng)絡(luò)的快速變化帶來的影響的同時對網(wǎng)絡(luò)的多個服務(wù)質(zhì)量(QoS)參數(shù)進(jìn)行優(yōu)化。
現(xiàn)有的表驅(qū)動和源發(fā)起按需路由協(xié)議在解決路由問題時都將產(chǎn)生大量難以控制的開銷,需要消耗大量的無線帶寬和節(jié)點能量,影響了網(wǎng)絡(luò)的可擴展性和網(wǎng)絡(luò)的性能。另外,大多數(shù)現(xiàn)有的路由算法只對某一個QoS參數(shù)進(jìn)行優(yōu)化,通常主要是針對跳數(shù)最優(yōu)?;谖浵伒淖越M網(wǎng)路由算法由于其優(yōu)良的分布式特性,能自動配置、自動適應(yīng)自組網(wǎng)的動態(tài)變化,為網(wǎng)絡(luò)提供大量的路由和可靠連接,可同時對多個QoS參數(shù)進(jìn)行優(yōu)化。
現(xiàn)有基于螞蟻的自組網(wǎng)路由方法有(1)ARA采用概率選路的方式改善負(fù)載平衡問題和減少路由開銷,沒有考慮如何實現(xiàn)擁塞控制以及對不同業(yè)務(wù)流的適應(yīng),算法沒有解決收斂速度問題。參見文獻(xiàn)Gunes M,Sorges U,Bouazizi I.ARA-the ant-colony based routing algorithm forMANETs.International Conference on Parallel Processing Workshops.18-21 Aug.2002pp.79-85所述。
(2)MABR協(xié)議利用螞蟻算法尋找目的節(jié)點,該算法由于需要確定所有節(jié)點的位置并將位置信息傳輸給網(wǎng)絡(luò)中的所有節(jié)點而過于復(fù)雜,難以真正實現(xiàn)。參見文獻(xiàn)Heissenbuttel M,Braun T.Ants-based Routing in Large Scale Mobile ad-hocNetworks.Kommunikation in verteilten System(KiVS03),March 2003pp.281-190所述。
(3)ARAMA對路由的跳數(shù)和節(jié)點電池使用的公平性進(jìn)行了優(yōu)化,目的節(jié)點根據(jù)前向螞蟻收集到的路徑信息進(jìn)行路由選擇,該算法中采用前向螞蟻只轉(zhuǎn)發(fā)給一個鄰居節(jié)點的方式對路由發(fā)現(xiàn)開銷進(jìn)行控制將造成網(wǎng)絡(luò)中負(fù)載分布不均衡,導(dǎo)致?lián)砣推款i,而算法也沒有相應(yīng)的解決擁塞問題和捷徑問題的機制。參見文獻(xiàn)Hussein O,Saadawi T.Ant routing algorithm for mobile ad-hoc networks(ARAMA).Performance,Computing,and Communications Conference,2003.ConferenceProceedings of the 2003 IEEE International,9-11 April 2003 pp.281-290所述。
現(xiàn)有的基于螞蟻的自組網(wǎng)路由方法存在算法收斂時間較長的問題,對于堵塞問題和捷徑問題沒有有效的解決方法,而且算法在路由建立時需要大量人工螞蟻將帶來大量的附加通信開銷。相關(guān)問題參見文獻(xiàn)SCHOONER WOERD R,HOLLAND O,et al.Ant-Based LoadBalancing in Telecommunications Networks.Adaptive Behavior,1996,5(2)pp.169-207所述。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于螞蟻算法的分布式自組網(wǎng)動態(tài)路由方法,采用本發(fā)明的方法可以改善自組網(wǎng)中基于螞蟻算法的路由方法的收斂速度問題,減少算法中需要大量螞蟻造成的附加開銷,解決自組網(wǎng)中基于螞蟻算法的路由方法中存在的捷徑問題和擁塞問題,使網(wǎng)絡(luò)負(fù)載趨于平衡,減少分組傳輸?shù)亩说蕉藭r延。
為使描述方便,本發(fā)明方法做如下定義定義1路由發(fā)現(xiàn)過程中使用的螞蟻分組格式定義如下
其中,ant.ID為螞蟻分組標(biāo)識,用以區(qū)別于數(shù)據(jù)分組,ant.type為路由發(fā)現(xiàn)螞蟻分組的類型,用于區(qū)別是前向螞蟻分組還是后向螞蟻分組,ant.hop為路由發(fā)現(xiàn)螞蟻分組所歷經(jīng)節(jié)點的跳數(shù);ant.node為路由發(fā)現(xiàn)螞蟻分組所經(jīng)歷路徑中的節(jié)點列表;ant.destination為路由發(fā)現(xiàn)螞蟻分組的目的節(jié)點。
定義2路由發(fā)現(xiàn)過程是指當(dāng)源節(jié)點s有數(shù)據(jù)分組要發(fā)送而又沒有到目的節(jié)點d的路由時,源節(jié)點發(fā)起路由發(fā)現(xiàn)過程。
需要說明的是,在本發(fā)明方案的具體實施步驟中所述的路由發(fā)現(xiàn)和路由維護(hù)過程中各節(jié)點對信息素表中各個表項的信息素概率值的刷新方法,是用下面公式實現(xiàn)的
Pi,j(d)=ψi,j(d)Σk∈Siψi,k(d),j∈Si]]>其中Pi,j(d)表示節(jié)點i到目的節(jié)點d的信息素表中,以j為下一跳節(jié)點的信息素概率值,Si為節(jié)點i的所有一跳鄰居節(jié)點構(gòu)成的集合,且Σj∈SiPi,j(d)=1;]]>ψi,j(d)表示節(jié)點i以j為下一跳節(jié)點到目的節(jié)點d的信息素濃度,在路由發(fā)現(xiàn)和路由維護(hù)過程中ψi,j(d)先于Pi,j(d)進(jìn)行刷新,其刷新方式按如下公式表示的方式進(jìn)行ψi,j(d)←(1-ρ)ψi,j(d)+Δψi,j(d),其中ρ∈(0,1)為信息素?fù)]發(fā)強度參數(shù),Δψi,j(d)是節(jié)點i收到來自節(jié)點n的刷新觸發(fā)分組時(刷新觸發(fā)分組包括路由發(fā)現(xiàn)的前向和后向螞蟻分組、路由維護(hù)的擁塞控制和捷徑增強螞蟻分組)為ψi,j(d)帶來的增量值,按以下公式進(jìn)行刷新Δψi,j(d)=0(j≠n)Δψi,n(d)=(1+ψi,n)-1k×(v+q+h)-m×(1-r)+(r-2p)cr+1n(cl+l),]]>其中對于路由發(fā)現(xiàn)的前向和后向螞蟻分組r=0,對于擁塞控制和捷徑增強螞蟻分組有r=1,對于擁塞控制螞蟻分組有p=1,捷徑增強螞蟻有p=0,k,m∈N,ν為節(jié)點運動速度,q為節(jié)點排隊產(chǎn)生的時延,h為后向螞蟻分組從源節(jié)點到當(dāng)前節(jié)點所經(jīng)過的節(jié)點跳數(shù),cl和c均為大于0的常數(shù),l∈
,反映節(jié)點i與節(jié)點n之間的鏈路li,n鏈路質(zhì)量,ln(cl+l)為鏈路質(zhì)量對ψi,n(d)增量的影響。
本發(fā)明提供一種基于螞蟻算法的分布式自組網(wǎng)動態(tài)路由方法,包括路由發(fā)現(xiàn)和路由維護(hù)兩過程,所述的路由發(fā)現(xiàn)的步驟如下步驟1 源節(jié)點s廣播一個尋找目的節(jié)點d的前向螞蟻分組,類型域ant.type=前向螞蟻、跳數(shù)域ant.hop=0、節(jié)點集合域ant.node={s}、目的節(jié)點標(biāo)識域ant.destination=d。
步驟2 中間節(jié)點i在擁塞情況下將收到的來自節(jié)點i-1的前向螞蟻分組丟棄,在可以接納新路由建立的情況下根據(jù)前向螞蟻分組攜帶的節(jié)點列表ant.node判斷是否出現(xiàn)環(huán)路,將出現(xiàn)環(huán)路的螞蟻分組丟棄,對于沒有出現(xiàn)環(huán)路的前向螞蟻分組將根據(jù)該中間節(jié)點的信息素表中是否已經(jīng)有目的節(jié)點為s、下一跳節(jié)點為i-1的表項決定是否為該前向螞蟻分組創(chuàng)建記錄如果該中間節(jié)點的信息素表中沒有目的節(jié)點為s、下一跳節(jié)點為i-1的信息素表項,則在該中間節(jié)點的信息素表中增加一個信息素表項,該表項包括目的節(jié)點s的標(biāo)識、下一跳節(jié)點i-1的標(biāo)識、節(jié)點i通過節(jié)點i-1到源節(jié)點s的信息素概率值。并對目的節(jié)點為s、下一跳節(jié)點為節(jié)點i的鄰居節(jié)點的所有信息素表項的信息素概率值進(jìn)行刷新;如果該中間節(jié)點的信息素表中有目的節(jié)點為s、下一跳節(jié)點為i-1的信息素表項,則直接刷新信息素表中目的節(jié)點為s、下一跳節(jié)點為節(jié)點i的鄰居節(jié)點的所有信息素表項的信息素概率值;之后,節(jié)點在更新前向螞蟻分組的跳數(shù)域ant.hop←ant.hop+1和節(jié)點列表域ant.node←ant.node∪{i}后對該前向螞蟻分組進(jìn)行轉(zhuǎn)發(fā)。中間節(jié)點i對信息素表中各個表項的信息素概率值按照信息素概率值刷新方法進(jìn)行(此時目的節(jié)點d此處為s);步驟3 前向螞蟻分組到達(dá)目的節(jié)點后,目的節(jié)點根據(jù)收到的前向螞蟻分組所包含的整個路由發(fā)現(xiàn)信息創(chuàng)建后向螞蟻分組類型域ant.type=后向螞蟻、跳數(shù)域ant.hop=0,順序提取前向螞蟻分組的節(jié)點列表域ant.node中的所有節(jié)點,得到前向螞蟻分組所經(jīng)過的路徑s→,……,→d并將其逆序后插入后向螞蟻分組的節(jié)點列表域ant.node中。后向螞蟻分組根據(jù)節(jié)點列表域按照源路由的方式選擇下一跳節(jié)點向源節(jié)點進(jìn)行轉(zhuǎn)發(fā),前向螞蟻分組死亡;步驟4 中間節(jié)點i收到來自節(jié)點i+1的后向螞蟻分組后對信息素表中各個表項的信息素概率值按照信息素概率值刷新方法進(jìn)行刷新,之后中間節(jié)點i再對后向螞蟻分組中跳數(shù)域的值進(jìn)行修改ant.hop←ant.hop+1,并以此為指針選擇后向螞蟻分組的節(jié)點列表域ant.node中的相應(yīng)節(jié)點作為下一跳對該后向螞蟻分組進(jìn)行轉(zhuǎn)發(fā);步驟5 源節(jié)點收到第一個后向螞蟻分組后即建立了到目的節(jié)點的路徑,該路徑中各節(jié)點通過在信息素表中選擇具有到目的節(jié)點最大信息素概率值的表項對應(yīng)的鄰居節(jié)點作為到達(dá)目的節(jié)點的下一跳節(jié)點(如果存在多個最大濃度可選擇,就在其中隨機地選取)的方式逐跳選路,最終到達(dá)目的節(jié)點,路由發(fā)現(xiàn)工作完成。
步驟6 源節(jié)點根據(jù)其節(jié)點信息素表中最大信息素概率值對應(yīng)的路徑進(jìn)行數(shù)據(jù)分組傳送,各中間節(jié)點依次按照其最大信息素概率值逐跳選路,最終將數(shù)據(jù)分組送到目的節(jié)點。
所述的路由維護(hù)過程包括擁塞問題、斷鏈問題和捷徑問題處理三部分,所述的路由維護(hù)中對擁塞問題的處理步驟如下步驟1當(dāng)中間節(jié)點負(fù)載超過設(shè)定的擁塞門限時,該中間節(jié)點主動向其上游節(jié)點發(fā)送擁塞控制螞蟻分組,該擁塞控制螞蟻分組的生存時間根據(jù)擁塞程度設(shè)置,擁塞越嚴(yán)重,其生存時間越長。如果該擁塞節(jié)點中存在重疊路由,可選擇向重疊路由對應(yīng)的多個上游節(jié)點中的任意上游節(jié)點發(fā)送擁塞控制螞蟻分組。
步驟2收到來自節(jié)點i+1的擁塞控制螞蟻分組的上游節(jié)點i降低相應(yīng)路由的信息素濃度,對信息素表中各個表項的信息素概率值按照信息素概率值刷新方法進(jìn)行刷新,并在后續(xù)的分組轉(zhuǎn)發(fā)中選擇其他信息素概率值較大的到同一目的節(jié)點的路徑進(jìn)行分組轉(zhuǎn)發(fā)。如果擁塞控制螞蟻分組的生存時間減1以后仍然大于0,則修改其生存時間值以后繼續(xù)向上游節(jié)點轉(zhuǎn)發(fā)該控制螞蟻分組。當(dāng)生存時間等于0但節(jié)點沒有其他冗余路由時,該上游節(jié)點仍然需要繼續(xù)向上游節(jié)點轉(zhuǎn)發(fā)該控制螞蟻分組。當(dāng)生存時間等于0且節(jié)點有其他冗余路由時,該上游節(jié)點丟棄該擁塞控制螞蟻分組。
步驟3 源節(jié)點收到擁塞控制螞蟻分組且沒有其他冗余路由可選用時,則采用本發(fā)明所述的路由發(fā)現(xiàn)方法重新進(jìn)行新的路由發(fā)現(xiàn)過程以獲得新的路由,完成后續(xù)數(shù)據(jù)的傳輸。
所述的路由維護(hù)階段對斷鏈問題的處理步驟如下步驟1 當(dāng)中間節(jié)點i發(fā)現(xiàn)到下游節(jié)點i+1斷鏈或收到斷鏈消息時,首先刪除出現(xiàn)斷鏈的路徑對應(yīng)的信息素濃度表項,再查找本節(jié)點是否還記錄有到目的節(jié)點的另一信息素表項對應(yīng)的冗余路由。如果有其他冗余路由,則將選擇信息素濃度最大的路徑作為后續(xù)分組轉(zhuǎn)發(fā)的路徑,并對本節(jié)點的信息素表中各個表項的信息素概率值按照信息素概率值刷新方法進(jìn)行刷新,此時ψi,j(d)←(1-ρ)ψi,j(d),其中ρ∈(0,1)為信息素?fù)]發(fā)強度參數(shù),j≠i+1(信息素表中ψi,i+1(d)項已經(jīng)被刪除)。如果本節(jié)點沒有其他冗余路由,則繼續(xù)向本節(jié)點的上游節(jié)點發(fā)送斷鏈信息。
步驟2 源節(jié)點收到斷鏈消息,或在數(shù)據(jù)傳輸完成前發(fā)現(xiàn)了斷鏈且沒有其他冗余路由可選用時,則采用所述的路由發(fā)現(xiàn)方法重新進(jìn)行新的路由發(fā)現(xiàn)過程以獲得新的路由,完成后續(xù)數(shù)據(jù)的傳輸。
所述的路由維護(hù)中對捷徑問題的處理步驟如下步驟1各個有數(shù)據(jù)需要發(fā)送的節(jié)點以設(shè)定的概率讓新加入的鄰居節(jié)點和信息素表中信息素概率值較低的鄰居節(jié)點對數(shù)據(jù)分組進(jìn)行轉(zhuǎn)發(fā)。
步驟2中間節(jié)點i收到來自上一跳節(jié)點i-1轉(zhuǎn)發(fā)來的源節(jié)點s發(fā)送到目的節(jié)點d的數(shù)據(jù)分組時,該中間節(jié)點對本節(jié)點至源節(jié)點s的反向鏈路li,i-1進(jìn)行記錄并對該記錄設(shè)定一個的生存時間,并將數(shù)據(jù)分組轉(zhuǎn)發(fā)到本節(jié)點信息素表中到目的節(jié)點d的信息素概率值最大的表項對應(yīng)的下一跳節(jié)點。
步驟3如果中間節(jié)點i在收到來自相同源節(jié)點s但上一跳節(jié)點i-1不同的數(shù)據(jù)分組時發(fā)現(xiàn)該數(shù)據(jù)分組從源節(jié)點到本節(jié)點所經(jīng)歷的跳數(shù)或時延更小,表明此時發(fā)現(xiàn)捷徑,則該中間節(jié)點i將數(shù)據(jù)分組轉(zhuǎn)發(fā)到本節(jié)點信息素表中到目的節(jié)點d信息素概率值最大的表項對應(yīng)的下一跳節(jié)點,同時沿步驟2建立的反向鏈路li,i-1發(fā)送捷徑增強螞蟻分組。
步驟4收到來自節(jié)點i+1的捷徑增強螞蟻分組的節(jié)點i對信息素表中各個表項的信息素概率值按照信息素概率值刷新方法進(jìn)行刷新;步驟5在捷徑增強螞蟻分組的作用下若節(jié)點i發(fā)現(xiàn)信息素表中Δψi,i+1(d)和Pi,i+1(d)項出現(xiàn)較大幅度增長,則可通過直接選擇(而不是通過概率選擇)Δψi,i+1(d)和Pi,i+1(d)大幅度增長的表項對應(yīng)的下一跳路徑轉(zhuǎn)發(fā)后續(xù)分組,實現(xiàn)后續(xù)分組按捷徑轉(zhuǎn)發(fā)。
綜上所述,本發(fā)明路由發(fā)現(xiàn)過程由前向螞蟻分組和后向螞蟻分組這兩種路由發(fā)現(xiàn)螞蟻分組共同完成,前向螞蟻分組負(fù)責(zé)建立返回源節(jié)點的路徑,后向螞蟻分組負(fù)責(zé)建立到目的節(jié)點的路徑;各中間節(jié)點在路由維護(hù)階段的數(shù)據(jù)傳輸過程中,通過對自身的擁塞和鏈路狀態(tài)進(jìn)行監(jiān)視,實現(xiàn)擁塞問題、斷鏈問題和捷徑問題的分布式處理。
本發(fā)明方案中路由發(fā)現(xiàn)的創(chuàng)新之處在于現(xiàn)有的基于螞蟻的自組網(wǎng)路由方法中路由發(fā)現(xiàn)時需要源節(jié)點發(fā)送大量前向螞蟻分組實現(xiàn)路由的收斂,如ARA、MABR和ARAMA等。本發(fā)明中源節(jié)點只需發(fā)送一個前向螞蟻分組即可完成路由選擇?,F(xiàn)有的基于螞蟻的自組網(wǎng)路由方法中對于同一序列號的螞蟻分組采用簡單的丟棄處理,難以在開銷增加不大的情況下提供足夠的冗余路由。本發(fā)明則在不出現(xiàn)環(huán)路的情況下可以提供更多的冗余路由,降低路由重選的開銷和時延,并且由于本發(fā)明將經(jīng)過擁塞節(jié)點的前向螞蟻分組進(jìn)行丟棄,可以使產(chǎn)生的路由在避開擁塞節(jié)點的同時減少擁塞節(jié)點對前向螞蟻分組轉(zhuǎn)發(fā)帶來的附加控制開銷?,F(xiàn)有的基于螞蟻的自組網(wǎng)路由方法由目的節(jié)點選擇路由,再通過后向螞蟻分組單向更新信息素表,效率較低。本發(fā)明中由中間節(jié)點在保證不出現(xiàn)環(huán)路的情況下通過前向和后向螞蟻分組實現(xiàn)雙向信息素濃度的更新,而且對信息素表的更新主要依靠節(jié)點的本地信息做分布式處理,具有更低的傳輸開銷和更高的更新效率。
本發(fā)明方案中路由維護(hù)的創(chuàng)新之處在于路由維護(hù)階段引入節(jié)點負(fù)載對信息素濃度貢獻(xiàn)的低獎高懲制度,通過相應(yīng)的QoS參數(shù)對信息素濃度的控制實現(xiàn)在擁塞出現(xiàn)前對可能的擁塞進(jìn)行適當(dāng)?shù)姆至骺刂?,實現(xiàn)網(wǎng)絡(luò)業(yè)務(wù)流的均衡,通過捷徑增強螞蟻分組和擁塞抑制螞蟻分組對信息素濃度的不同影響權(quán)值加快解決擁塞控制和捷徑問題的收斂速度。
本發(fā)明的實質(zhì)是利用多個不同QoS參數(shù)對信息素濃度和信息素概率值的不同影響權(quán)值,實現(xiàn)中間節(jié)點對路由的分布式優(yōu)化選擇、對路由的快速分布式優(yōu)化重選和業(yè)務(wù)流均衡。
本發(fā)明與其他自組網(wǎng)路由方法相比,具有以下優(yōu)點1.通過概率選路能提供到目的節(jié)點的大量冗余路由,是一種可靠性和頑存性非常好的路由算法。大多數(shù)路由分組都集中在最優(yōu)路徑附近,當(dāng)最優(yōu)路徑失效時,算法可以立即使用次優(yōu)的路徑完成后續(xù)數(shù)據(jù)分組的傳輸。
2.結(jié)合了表驅(qū)動和按需方法的優(yōu)點,克服了兩者的不足,對路由進(jìn)行按需發(fā)現(xiàn),減少了路由發(fā)現(xiàn)開銷,對附加開銷的控制有利于增加算法的可擴展性。
3.能對路徑跳數(shù)、信道質(zhì)量、節(jié)點負(fù)載等多個QoS參數(shù)進(jìn)行優(yōu)化。
4.通過反向抑制的擁塞控制螞蟻分組和捷徑增強螞蟻分組進(jìn)行主動控制,可以有效解決擁塞問題和捷徑問題,算法的收斂速度快。
5.數(shù)據(jù)傳輸期間通過數(shù)據(jù)本身攜帶的信息實現(xiàn)對捷徑問題的發(fā)現(xiàn),無需額外引入路由維護(hù)分組進(jìn)行網(wǎng)絡(luò)負(fù)載信息的統(tǒng)計。
與傳統(tǒng)的多跳無線自組網(wǎng)路由方式相比,本發(fā)明的路由技術(shù)更簡單有效,能提供到目的節(jié)點的大量冗余路由而具有更好的可靠性和頑存性,結(jié)合了表驅(qū)動和按需方法的優(yōu)點,克服了兩者的不足,對路由進(jìn)行按需發(fā)現(xiàn),減少了路由發(fā)現(xiàn)開銷,對附加開銷的控制有利于增加算法的可擴展性,能對路徑跳數(shù)、信道質(zhì)量、節(jié)點負(fù)載等多個QoS參數(shù)進(jìn)行優(yōu)化,可以有效解決擁塞問題和捷徑問題,算法的收斂速度快,具有較高的通信能力,網(wǎng)絡(luò)算法的實現(xiàn)難度低,具有較高的實用價值等優(yōu)點。
圖1本發(fā)明的路由發(fā)現(xiàn)過程的流程示意2是本發(fā)明的路由維護(hù)過程中對捷徑問題的處理流程示意圖
具體實施例方式下面給出一個具體的無線自組網(wǎng)中本專利的實施方法。
無線自組網(wǎng)中每一個節(jié)點的路由表均采用信息素表,信息素中各項均為信息素概率值。每個節(jié)點的信息素表中均有一個表項與每一個可能的目的節(jié)點相對應(yīng)。一個有30個節(jié)點的無線自組網(wǎng)中,每個節(jié)點的信息素表都有29個表項,每個表項的元素個數(shù)與該節(jié)點的鄰居節(jié)點個數(shù)相等。如果一個節(jié)點有4個鄰居節(jié)點,則此節(jié)點將的29個信息素表項中每項都有4個元素。按照本發(fā)明的方法對信息素表項中的各元素值進(jìn)行刷新及路由發(fā)現(xiàn)和維護(hù),本發(fā)明方法中所述步驟,可以通過編程來實現(xiàn)。網(wǎng)絡(luò)中數(shù)據(jù)的傳輸根據(jù)信息素表中各元素值選擇相應(yīng)的路由從源節(jié)點到達(dá)目的節(jié)點。
計算機仿真結(jié)果表明,采用本發(fā)明的路由方法能提供從源節(jié)點到目的節(jié)點的大量冗余路由,路由發(fā)現(xiàn)開銷少,能對路徑跳數(shù)、信道質(zhì)量、節(jié)點負(fù)載等多個QoS參數(shù)進(jìn)行優(yōu)化,能有效地解決擁塞問題和捷徑問題,算法具有良好的可擴展性和收斂速度快等優(yōu)點。
權(quán)利要求
1.一種基于螞蟻算法的分布式自組網(wǎng)動態(tài)路由方法,包括路由發(fā)現(xiàn)和路由維護(hù)兩過程,其特征是所述的路由發(fā)現(xiàn)的步驟如下步驟1源節(jié)點s廣播一個尋找目的節(jié)點d的前向螞蟻分組,類型域ant.type=前向螞蟻、跳數(shù)域ant.hop=0、節(jié)點集合域ant.node={s}、目的節(jié)點標(biāo)識域ant.destination=d步驟2中間節(jié)點i在擁塞情況下將收到的來自節(jié)點i-1的前向螞蟻分組丟棄,在可以接納新路由建立的情況下根據(jù)前向螞蟻分組攜帶的節(jié)點列表ant.node判斷是否出現(xiàn)環(huán)路,將出現(xiàn)環(huán)路的螞蟻分組丟棄,對于沒有出現(xiàn)環(huán)路的前向螞蟻分組將根據(jù)該中間節(jié)點的信息素表中是否已經(jīng)有目的節(jié)點為s、下一跳節(jié)點為i-1的表項決定是否為該前向螞蟻分組創(chuàng)建記錄如果該中間節(jié)點的信息素表中沒有目的節(jié)點為s、下一跳節(jié)點為i-1的信息素表項,則在該中間節(jié)點的信息素表中增加一個信息素表項,該表項包括目的節(jié)點s的標(biāo)識、下一跳節(jié)點i-1的標(biāo)識、節(jié)點i通過節(jié)點i-1到源節(jié)點s的信息素概率值;并對目的節(jié)點為s、下一跳節(jié)點為節(jié)點i的鄰居節(jié)點的所有信息素表項的信息素概率值進(jìn)行刷新;如果該中間節(jié)點的信息素表中有目的節(jié)點為s、下一跳節(jié)點為i-1的信息素表項,則直接刷新信息素表中目的節(jié)點為s、下一跳節(jié)點為節(jié)點i的鄰居節(jié)點的所有信息素表項的信息素概率值;之后,節(jié)點在更新前向螞蟻分組的跳數(shù)域ant.hop←ant.hop+1和節(jié)點列表域ant.node←ant.node U{i}后對該前向螞蟻分組進(jìn)行轉(zhuǎn)發(fā);中間節(jié)點i對信息素表中各個表項的信息素概率值按照信息素概率值刷新方法進(jìn)行(此時目的節(jié)點d此處為s);步驟3前向螞蟻分組到達(dá)目的節(jié)點后,目的節(jié)點根據(jù)收到的前向螞蟻分組所包含的整個路由發(fā)現(xiàn)信息創(chuàng)建后向螞蟻分組類型域ant.type=后向螞蟻、跳數(shù)域ant.hop=0,順序提取前向螞蟻分組的節(jié)點列表域ant.node中的所有節(jié)點,得到前向螞蟻分組所經(jīng)過的路徑s→,……,→d并將其逆序后插入后向螞蟻分組的節(jié)點列表域ant.node中;后向螞蟻分組根據(jù)節(jié)點列表域按照源路由的方式選擇下一跳節(jié)點向源節(jié)點進(jìn)行轉(zhuǎn)發(fā),前向螞蟻分組死亡;步驟4中間節(jié)點i收到來自節(jié)點i+1的后向螞蟻分組后對信息素表中各個表項的信息素概率值按照信息素概率值刷新方法進(jìn)行刷新,之后中間節(jié)點i再對后向螞蟻分組中跳數(shù)域的值進(jìn)行修改ant.hop←ant.hop+1,并以此為指針選擇后向螞蟻分組的節(jié)點列表域ant.node中的相應(yīng)節(jié)點作為下一跳對該后向螞蟻分組進(jìn)行轉(zhuǎn)發(fā);步驟5源節(jié)點收到第一個后向螞蟻分組后即建立了到目的節(jié)點的路徑,該路徑中各節(jié)點通過在信息素表中選擇具有到目的節(jié)點最大信息素概率值的表項對應(yīng)的鄰居節(jié)點作為到達(dá)目的節(jié)點的下一跳節(jié)點(如果存在多個最大濃度可選擇,就在其中隨機地選取)的方式逐跳選路,最終到達(dá)目的節(jié)點,路由發(fā)現(xiàn)工作完成;步驟6源節(jié)點根據(jù)其節(jié)點信息素表中最大信息素概率值對應(yīng)的路徑進(jìn)行數(shù)據(jù)分組傳送,各中間節(jié)點依次按照其最大信息素概率值逐跳選路,最終將數(shù)據(jù)分組送到目的節(jié)點;所述的路由維護(hù)過程包括擁塞問題、斷鏈問題和捷徑問題處理三部分,所述的路由維護(hù)中對擁塞問題的處理步驟如下步驟1當(dāng)中間節(jié)點負(fù)載超過設(shè)定的擁塞門限時,該中間節(jié)點主動向其上游節(jié)點發(fā)送擁塞控制螞蟻分組,該擁塞控制螞蟻分組的生存時間根據(jù)擁塞程度設(shè)置,擁塞越嚴(yán)重,其生存時間越長;如果該擁塞節(jié)點中存在重疊路由,可選擇向重疊路由對應(yīng)的多個上游節(jié)點中的任意上游節(jié)點發(fā)送擁塞控制螞蟻分組;步驟2收到來自節(jié)點i+1的擁塞控制螞蟻分組的上游節(jié)點i降低相應(yīng)路由的信息素濃度,對信息素表中各個表項的信息素概率值按照信息素概率值刷新方法進(jìn)行刷新,并在后續(xù)的分組轉(zhuǎn)發(fā)中選擇其他信息素概率值較大的到同一目的節(jié)點的路徑進(jìn)行分組轉(zhuǎn)發(fā);如果擁塞控制螞蟻分組的生存時間減1以后仍然大于0,則修改其生存時間值以后繼續(xù)向上游節(jié)點轉(zhuǎn)發(fā)該控制螞蟻分組;當(dāng)生存時間等于0但節(jié)點沒有其他冗余路由時,該上游節(jié)點仍然需要繼續(xù)向上游節(jié)點轉(zhuǎn)發(fā)該控制螞蟻分組;當(dāng)生存時間等于0且節(jié)點有其他冗余路由時,該上游節(jié)點丟棄該擁塞控制螞蟻分組;步驟3源節(jié)點收到擁塞控制螞蟻分組且沒有其他冗余路由可選用時,則采用本發(fā)明所述的路由發(fā)現(xiàn)方法重新進(jìn)行新的路由發(fā)現(xiàn)過程以獲得新的路由,完成后續(xù)數(shù)據(jù)的傳輸;所述的路由維護(hù)階段對斷鏈問題的處理步驟如下步驟1當(dāng)中間節(jié)點i發(fā)現(xiàn)到下游節(jié)點i+1斷鏈或收到斷鏈消息時,首先刪除出現(xiàn)斷鏈的路徑對應(yīng)的信息素濃度表項,再查找本節(jié)點是否還記錄有到目的節(jié)點的另一信息素表項對應(yīng)的冗余路由;如果有其他冗余路由,則將選擇信息素濃度最大的路徑作為后續(xù)分組轉(zhuǎn)發(fā)的路徑,并對本節(jié)點的信息素表中各個表項的信息素概率值按照信息素概率值刷新方法進(jìn)行刷新,此時ψi,j(d)←(1-ρ)ψi,j(d),其中ρ∈(0,1)為信息素?fù)]發(fā)強度參數(shù),j≠i+1(信息素表中ψi,i+1(d)項已經(jīng)被刪除);如果本節(jié)點沒有其他冗余路由,則繼續(xù)向本節(jié)點的上游節(jié)點發(fā)送斷鏈信息;步驟2源節(jié)點收到斷鏈消息,或在數(shù)據(jù)傳輸完成前發(fā)現(xiàn)了斷鏈且沒有其他冗余路由可選用時,則采用所述的路由發(fā)現(xiàn)方法重新進(jìn)行新的路由發(fā)現(xiàn)過程以獲得新的路由,完成后續(xù)數(shù)據(jù)的傳輸;所述的路由維護(hù)中對捷徑問題的處理步驟如下步驟1各個有數(shù)據(jù)需要發(fā)送的節(jié)點以設(shè)定的概率讓新加入的鄰居節(jié)點和信息素表中信息素概率值較低的鄰居節(jié)點對數(shù)據(jù)分組進(jìn)行轉(zhuǎn)發(fā);步驟2中間節(jié)點i收到來自上一跳節(jié)點i-1轉(zhuǎn)發(fā)來的源節(jié)點s發(fā)送到目的節(jié)點d的數(shù)據(jù)分組時,該中間節(jié)點對本節(jié)點至源節(jié)點s的反向鏈路li,i-1進(jìn)行記錄并對該記錄設(shè)定一個的生存時間,并將數(shù)據(jù)分組轉(zhuǎn)發(fā)到本節(jié)點信息素表中到目的節(jié)點d的信息素概率值最大的表項對應(yīng)的下一跳節(jié)點;步驟3如果中間節(jié)點i在收到來自相同源節(jié)點s但上一跳節(jié)點i-1不同的數(shù)據(jù)分組時發(fā)現(xiàn)該數(shù)據(jù)分組從源節(jié)點到本節(jié)點所經(jīng)歷的跳數(shù)或時延更小,表明此時發(fā)現(xiàn)捷徑,則該中間節(jié)點i將數(shù)據(jù)分組轉(zhuǎn)發(fā)到本節(jié)點信息素表中到目的節(jié)點d信息素概率值最大的表項對應(yīng)的下一跳節(jié)點,同時沿步驟2建立的反向鏈路li,i-1發(fā)送捷徑增強螞蟻分組;步驟4收到來自節(jié)點i+1的捷徑增強螞蟻分組的節(jié)點i對信息素表中各個表項的信息素概率值按照信息素概率值刷新方法進(jìn)行刷新;步驟5在捷徑增強螞蟻分組的作用下若節(jié)點i發(fā)現(xiàn)信息素表中Δψi,i+1(d)和Pi,i+1(d)項出現(xiàn)較大幅度增長,則可通過直接選擇(而不是通過概率選擇)Δψi,i+1(d)和Pi,i+1(d)大幅度增長的表項對應(yīng)的下一跳路徑轉(zhuǎn)發(fā)后續(xù)分組,實現(xiàn)后續(xù)分組按捷徑轉(zhuǎn)發(fā);
2.根據(jù)權(quán)利要求1所述的一種基于螞蟻算法的分布式自組網(wǎng)動態(tài)路由方法,其特征是所述的信息素概率值的刷新方法,是采用下面公式實現(xiàn)的Pi,j(d)=ψi,j(d)Σk∈Siψi,k(d),j∈Si]]>其中Pi,j(d)表示節(jié)點i到目的節(jié)點d的信息素表中,以j為下一跳節(jié)點的信息素概率值,Si為節(jié)點i的所有一跳鄰居節(jié)點構(gòu)成的集合,且Σj∈SiPi,j(d)=1;]]>ψi,j(d)表示節(jié)點i以j為下一跳節(jié)點到目的節(jié)點d的信息素濃度,在路由發(fā)現(xiàn)和路由維護(hù)過程中ψi,j(d)先于Pi,j(d)進(jìn)行刷新,其刷新方式按如下公式表示的方式進(jìn)行ψi,j(d)←(1-ρ)ψi,j(d)+Δψi,j(d),其中ρ∈(0,1)為信息素?fù)]發(fā)強度參數(shù),Δψi,j(d)是節(jié)點i收到來自節(jié)點n的刷新觸發(fā)分組時(刷新觸發(fā)分組包括路由發(fā)現(xiàn)的前向和后向螞蟻分組、路由維護(hù)的擁塞控制和捷徑增強螞蟻分組)為ψi,j(d)帶來的增量值,按以下公式進(jìn)行刷新Δψi,j(d)=0(j≠n)Δψi,n(d)=(1+ψi,n)-1k×(v+q+h)-m×(1-r)+(1-2p)cr+ln(cl+l),]]>其中對于路由發(fā)現(xiàn)的前向和后向螞蟻分組r=0,對于擁塞控制和捷徑增強螞蟻分組有r=1,對于擁塞控制螞蟻分組有p=1,捷徑增強螞蟻有p=0,k,m∈N,v為節(jié)點運動速度,q為節(jié)點排隊產(chǎn)生的時延,h為后向螞蟻分組從源節(jié)點到當(dāng)前節(jié)點所經(jīng)過的節(jié)點跳數(shù),cl和c均為大于0的常數(shù),l∈
,反映節(jié)點i與節(jié)點n之間的鏈路li,n鏈路質(zhì)量,ln(cl+l)為鏈路質(zhì)量對ψi,n(d)增量的影響。
全文摘要
本發(fā)明公開了一種基于螞蟻算法的分布式自組網(wǎng)動態(tài)路由方法,它是由路由發(fā)現(xiàn)和路由維護(hù)兩部分構(gòu)成。本發(fā)明的路由發(fā)現(xiàn)過程由前向螞蟻分組和后向螞蟻分組這兩種路由發(fā)現(xiàn)螞蟻分組共同完成,前向螞蟻分組負(fù)責(zé)建立返回源節(jié)點的路徑,后向螞蟻分組負(fù)責(zé)建立到目的節(jié)點的路徑;各中間節(jié)點在路由維護(hù)階段的數(shù)據(jù)傳輸過程中,實現(xiàn)擁塞問題、斷鏈問題和捷徑問題的分布式處理。采用本發(fā)明的方法可以減少算法中需要大量螞蟻造成的附加開銷,解決自組網(wǎng)中存在的捷徑問題和擁塞問題,使網(wǎng)絡(luò)負(fù)載趨于平衡,減少分組傳輸?shù)亩说蕉藭r延。
文檔編號H04L12/54GK1642131SQ20041002162
公開日2005年7月20日 申請日期2004年1月8日 優(yōu)先權(quán)日2004年1月8日
發(fā)明者鄭相全, 郭偉, 毛玉明, 余敬東, 蘇儉 申請人:電子科技大學(xué)