本發(fā)明涉及移動(dòng)自組織網(wǎng)絡(luò)領(lǐng)域中,特別是涉及一種移動(dòng)自組織網(wǎng)絡(luò)中基于自適應(yīng)選擇的單播路由方法。
背景技術(shù):
移動(dòng)自組織網(wǎng)絡(luò)是指將各個(gè)孤立的設(shè)備進(jìn)行連接,實(shí)現(xiàn)人與人,人與計(jì)算機(jī),計(jì)算機(jī)與計(jì)算機(jī)之間進(jìn)行信息交換的鏈路,從而達(dá)到資源共享和通信的目的,其中我們可以將移動(dòng)自組織網(wǎng)絡(luò)中的人、計(jì)算機(jī)等稱為節(jié)點(diǎn),那么移動(dòng)自組織網(wǎng)絡(luò)就是實(shí)現(xiàn)節(jié)點(diǎn)之間信息交換的鏈路。節(jié)點(diǎn)可以是固定的,也可以是移動(dòng)的。固定節(jié)點(diǎn)的通信也就是靜態(tài)路由需要由網(wǎng)絡(luò)管理員在系統(tǒng)安裝時(shí)根據(jù)網(wǎng)絡(luò)的配置情況預(yù)先設(shè)定靜態(tài)路由表,網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生變化后由網(wǎng)絡(luò)管理員手動(dòng)修改路由表。移動(dòng)節(jié)點(diǎn)的通信也就是動(dòng)態(tài)路由,其隨網(wǎng)絡(luò)運(yùn)行情況的變化而變化,節(jié)點(diǎn)根據(jù)路由協(xié)議自動(dòng)形成將數(shù)據(jù)包傳輸至目的節(jié)點(diǎn)的路徑。
從以上分析可以得到靜態(tài)路由的缺點(diǎn)是網(wǎng)絡(luò)的靈活性差,配置繁瑣,當(dāng)需要加入或者移除一些節(jié)點(diǎn)時(shí)需要管理員在所有路由器上添加或刪除路由信息。動(dòng)態(tài)路由的難點(diǎn)是節(jié)點(diǎn)需要快速適應(yīng)不斷變化的網(wǎng)絡(luò)結(jié)構(gòu),并找到一條將數(shù)據(jù)包轉(zhuǎn)發(fā)至目的節(jié)點(diǎn)延時(shí)最小,耗能最少的路由路徑。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了解決上述問題,提出一種移動(dòng)自組織網(wǎng)絡(luò)中基于自適應(yīng)吸引子選擇模型的單播路由方法,解決了延時(shí)長(zhǎng),能耗大等問題。
本發(fā)明的一種移動(dòng)自組織網(wǎng)絡(luò)中基于自適應(yīng)吸引子選擇模型的單播路由方法,包括以下步驟:
(1)待發(fā)數(shù)據(jù)節(jié)點(diǎn)確定候選節(jié)點(diǎn)并根據(jù)自適應(yīng)吸引子選擇模型計(jì)算候選節(jié)點(diǎn)被選為下一跳的概率并確定下一跳節(jié)點(diǎn);
(2)數(shù)據(jù)包到達(dá)目的節(jié)點(diǎn)后計(jì)算得出活躍度;
(3)返回?cái)?shù)據(jù)包更新本次路徑上所有組成節(jié)點(diǎn)的活躍度,開始下一次路由。
所述步驟(1)中的確定候選節(jié)點(diǎn)即為從鄰居節(jié)點(diǎn)中選出比本節(jié)點(diǎn)距離目的節(jié)點(diǎn)更近的節(jié)點(diǎn)作為候選節(jié)點(diǎn),若不存在這樣的節(jié)點(diǎn)就令鄰居節(jié)點(diǎn)作為候選節(jié)點(diǎn)。
所述步驟(1)中的自適應(yīng)吸引子選擇模型分為兩部分,即計(jì)算各候選節(jié)點(diǎn)被選為下一跳節(jié)點(diǎn)的概率和確定下一跳節(jié)點(diǎn)。
所述計(jì)算各候選節(jié)點(diǎn)被選為下一跳節(jié)點(diǎn)的概率需使用以下隨機(jī)微分方程:
式中:mn即為候選節(jié)點(diǎn)n被選為下一跳節(jié)點(diǎn)的概率;mmax為所有候選節(jié)點(diǎn)被選為下一跳節(jié)點(diǎn)的概率值中的最大值;s(α)被定義為s(α)=aαn+bα,a,b,n為實(shí)數(shù);d(α)=α;α為活躍度;ηn為白高斯噪聲項(xiàng);
具體使用規(guī)則是:(i)當(dāng)待發(fā)數(shù)據(jù)節(jié)點(diǎn)非上一次路由過程中路徑的組成節(jié)點(diǎn)則其各候選節(jié)點(diǎn)被選為下一跳節(jié)點(diǎn)的概率相同;(ii)當(dāng)待發(fā)數(shù)據(jù)節(jié)點(diǎn)是上一次路由過程中路徑的組成節(jié)點(diǎn)且其候選節(jié)點(diǎn)未改變,則直接使用以上隨機(jī)微分方程;(iii)當(dāng)待發(fā)數(shù)據(jù)節(jié)點(diǎn)是上一次路由過程中路徑的組成節(jié)點(diǎn)但其候選節(jié)點(diǎn)發(fā)生了改變,對(duì)于仍作為待發(fā)數(shù)據(jù)節(jié)點(diǎn)的候選節(jié)點(diǎn)的節(jié)點(diǎn),其概率值由通過下式計(jì)算:
式中:其中Δt為一實(shí)數(shù);node_still為保持不變的候選節(jié)點(diǎn)組成的集合;Nstill為不變的候選節(jié)點(diǎn)的個(gè)數(shù);Nall為所有候選節(jié)點(diǎn)的個(gè)數(shù);mn'為候選節(jié)點(diǎn)n在本次路由過程中被選為下一跳節(jié)點(diǎn)的概率;mn為候選節(jié)點(diǎn)n在上次路由過程中被選為下一跳節(jié)點(diǎn)的概率;對(duì)于在本次路由才成為待發(fā)數(shù)據(jù)節(jié)點(diǎn)的候選節(jié)點(diǎn)的節(jié)點(diǎn),其概率計(jì)算公式為:
mn'=1/N_all mn′=1/Nall
所述確定下一跳節(jié)點(diǎn)的具體規(guī)則是當(dāng)候選集中有目的節(jié)點(diǎn)時(shí)直接選擇目的節(jié)點(diǎn),否則,選出候選節(jié)點(diǎn)中被選為下一跳節(jié)點(diǎn)的概率最大的節(jié)點(diǎn),從中隨機(jī)挑選一個(gè)作為下一跳節(jié)點(diǎn)。所述步驟(2)中的計(jì)算活躍度的公式如下:
式中:B定義為k為本次路由路徑中的所有連邊個(gè)數(shù);
(i)對(duì)于動(dòng)態(tài)網(wǎng)絡(luò),定義ar如下:
式中:E=1/dist(i,j),其中dist(i,j)是待發(fā)數(shù)據(jù)節(jié)點(diǎn)i與候選節(jié)點(diǎn)j之間的距離;Fj=1/v(i,j),其中v(i,j)是待發(fā)數(shù)據(jù)節(jié)點(diǎn)i與候選節(jié)點(diǎn)j之間的相對(duì)速度;C是候選節(jié)點(diǎn)組成的集合;
(ii)對(duì)于靜態(tài)網(wǎng)絡(luò),定義ar如下:
C定義為C=hopmin/hop,其中hopmin為歷次路徑的跳數(shù)中的最小值,hop為本次路徑跳數(shù);
D定義為D=timemin/time,其中timemin為歷次路徑的延時(shí)的最小值,time為本次路徑延時(shí);定義J為歷次路徑構(gòu)成的集合。
所述步驟(3)中返回的數(shù)據(jù)包的信息中包含活躍度α,為了使得活躍度不過時(shí),規(guī)定返回?cái)?shù)據(jù)包發(fā)出后其所攜帶活躍度即隨時(shí)間衰減,衰減按以下公式:
其中,α0為在目的節(jié)點(diǎn)時(shí)系統(tǒng)計(jì)算所得活躍度;t為返回?cái)?shù)據(jù)包發(fā)出后經(jīng)過的時(shí)間;c為實(shí)常數(shù)。
所述步驟(3)中更新本次路徑上所有組成節(jié)點(diǎn)的活躍度的規(guī)則是:(i)當(dāng)節(jié)點(diǎn)接收到數(shù)據(jù)包,其活躍度更新為數(shù)據(jù)包所攜帶的活躍度;(ii)節(jié)點(diǎn)攜帶的活躍度根據(jù)衰減公式隨時(shí)間衰減,其中α0為節(jié)點(diǎn)最近一次更新所得的活躍度,t為距離最近一次更新的時(shí)間;值得指出,第一次路由時(shí)需要給每個(gè)節(jié)點(diǎn)一個(gè)合適的初始活躍度。
所述步驟(3)中的開始下一次路由的條件是(滿足其一即可):(i)源節(jié)點(diǎn)在向目的節(jié)點(diǎn)發(fā)出數(shù)據(jù)包后的等待時(shí)間Twait到達(dá)時(shí);(ii)源節(jié)點(diǎn)在等待時(shí)間Twait內(nèi)接收到返回?cái)?shù)據(jù)包;
而且滿足(i)條件時(shí)源節(jié)點(diǎn)重新發(fā)送本次路由數(shù)據(jù)包,滿足(ii)條件時(shí)發(fā)送下一個(gè)數(shù)據(jù)包;
值得指出,數(shù)據(jù)包都是有生存時(shí)間的,超過生存時(shí)間則數(shù)據(jù)包被銷毀且不再繼續(xù)被轉(zhuǎn)發(fā),同時(shí)對(duì)于返回?cái)?shù)據(jù)包而言,其到達(dá)源節(jié)點(diǎn)后即不再被轉(zhuǎn)發(fā)。
本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明通過活躍度調(diào)控待發(fā)數(shù)據(jù)節(jié)點(diǎn)選擇下一跳節(jié)點(diǎn)的行為,節(jié)點(diǎn)的活躍度越高則其就越明確地選擇下一跳節(jié)點(diǎn),活躍度若比較低則其選擇下一跳節(jié)點(diǎn)的行為就類似于隨機(jī)過程。而活躍度是通過每次路由結(jié)束時(shí)在目的節(jié)點(diǎn)系統(tǒng)根據(jù)本次路由的延時(shí)和能耗計(jì)算得出的,延時(shí)越長(zhǎng),能耗越大則活躍度越低,這代表當(dāng)前路徑不適合當(dāng)前網(wǎng)絡(luò)結(jié)構(gòu),系統(tǒng)做出隨機(jī)改變尋找新的路徑。當(dāng)然較高的活躍度也不會(huì)使得待發(fā)數(shù)據(jù)節(jié)點(diǎn)選擇的下一跳節(jié)點(diǎn)被固定化,系統(tǒng)仍然具有一定的隨機(jī)性,幫助尋找性能更加優(yōu)良的路徑。這樣的方法使得系統(tǒng)能很快自己尋找到最適應(yīng)當(dāng)前網(wǎng)絡(luò)結(jié)構(gòu)的路徑,避免了靜態(tài)網(wǎng)絡(luò)繁瑣的人工操作,對(duì)于動(dòng)態(tài)網(wǎng)絡(luò)頻繁變化的網(wǎng)絡(luò)結(jié)構(gòu)也能快適應(yīng),保證通信質(zhì)量。所以綜合而言,本方法對(duì)于提高移動(dòng)自組織網(wǎng)絡(luò)的路由綜合效果具有極大的意義。
附圖說明
圖1是本發(fā)明的方法流程圖;
圖2是移動(dòng)自組織網(wǎng)絡(luò)拓?fù)鋱D。
具體實(shí)施方式
下面將結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明。
下面結(jié)合具體實(shí)施例,進(jìn)一步闡述本發(fā)明。應(yīng)理解,這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。此外應(yīng)理解,在閱讀了本發(fā)明講授的內(nèi)容之后,本領(lǐng)域技術(shù)人員可以對(duì)本發(fā)明做各種改動(dòng)或修改,這些等價(jià)形式同樣落于本申請(qǐng)所附權(quán)利要求書所限定的范圍。
本發(fā)明的實(shí)施方式涉及一種移動(dòng)自組織網(wǎng)絡(luò)中基于自適應(yīng)吸引子選擇的單播路由方法,如圖1所示,該方法對(duì)于靜態(tài)和動(dòng)態(tài)移動(dòng)自組織網(wǎng)絡(luò)都適用。當(dāng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)建立完成后,為節(jié)點(diǎn)賦予合適的初始活躍度,之后進(jìn)入到數(shù)據(jù)傳輸階段。在每一個(gè)時(shí)間步,網(wǎng)絡(luò)中只有一個(gè)源節(jié)點(diǎn),一個(gè)目的節(jié)點(diǎn),且最多只有一個(gè)數(shù)據(jù)包被發(fā)送?;谧赃m應(yīng)吸引子選擇的單播路由機(jī)制的尋路過程如下:
(1)當(dāng)節(jié)點(diǎn)i有數(shù)據(jù)包要發(fā)送時(shí),首先檢查數(shù)據(jù)包的目的節(jié)點(diǎn)ID。如果目的節(jié)點(diǎn)是自己的鄰居,則直接將數(shù)據(jù)包發(fā)送給目的節(jié)點(diǎn)。
(2)如果數(shù)據(jù)包的目的節(jié)點(diǎn)不是節(jié)點(diǎn)i的鄰居,節(jié)點(diǎn)i選出鄰居節(jié)點(diǎn)中與目的節(jié)點(diǎn)之間的距離比自己與目的節(jié)點(diǎn)之間的距離要小的節(jié)點(diǎn)作為候選節(jié)點(diǎn),若不存在這樣的節(jié)點(diǎn)則讓所有鄰居節(jié)點(diǎn)作為候選節(jié)點(diǎn)。
(3)節(jié)點(diǎn)i根據(jù)以下規(guī)則計(jì)算候選節(jié)點(diǎn)被選為下一跳節(jié)點(diǎn)的概率:
計(jì)算需要運(yùn)用以下隨機(jī)微分方程:
式中:mn即為候選節(jié)點(diǎn)n被選為下一跳節(jié)點(diǎn)的概率;mmax即為所有候選節(jié)點(diǎn)的被選為下一跳節(jié)點(diǎn)的概率值中的最大值;s(α)被定義為s(α)=aαn+bα,a,b,n為實(shí)數(shù);d(α)被定義為d(α)=α;α為活躍度;ηn為白高斯噪聲項(xiàng)。
具體使用規(guī)則是:(i)當(dāng)節(jié)點(diǎn)i非上一次路由過程中路徑的組成節(jié)點(diǎn)則其各候選節(jié)點(diǎn)被選為下一跳節(jié)點(diǎn)的概率相同;(ii)當(dāng)節(jié)點(diǎn)i是上一次路由過程中路徑的組成節(jié)點(diǎn)且其候選節(jié)點(diǎn)未改變,則直接使用以上隨機(jī)微分方程;(iii)當(dāng)節(jié)點(diǎn)i是上一次路由過程中路徑的組成節(jié)點(diǎn)但其候選節(jié)點(diǎn)發(fā)生了改變,對(duì)于仍作為節(jié)點(diǎn)i的候選節(jié)點(diǎn)的節(jié)點(diǎn),其概率值由通過下式計(jì)算:
式中:其中Δt為一實(shí)數(shù);node_still為保持不變的候選節(jié)點(diǎn)組成的集合;N_still Nstill為不變的候選節(jié)點(diǎn)的個(gè)數(shù);N_all Nall為所有候選節(jié)點(diǎn)的個(gè)數(shù);mn'為候選節(jié)點(diǎn)在本次路由過程中被選為下一跳節(jié)點(diǎn)的概率;mn為候選節(jié)點(diǎn)在上次路由過程中被選為下一跳節(jié)點(diǎn)的概率;對(duì)于在本次路由才成為節(jié)點(diǎn)i的候選節(jié)點(diǎn)的節(jié)點(diǎn),其概率計(jì)算公式為:
mn'=1/N_all mn′=1/Nall (3)
(4)節(jié)點(diǎn)i選出候選節(jié)點(diǎn)中被選為下一跳節(jié)點(diǎn)的概率最大的節(jié)點(diǎn),從中隨機(jī)挑選一個(gè)作為下一跳節(jié)點(diǎn)。
(5)在下一個(gè)時(shí)間步,回到第一步,直到數(shù)據(jù)包被發(fā)送至目的節(jié)點(diǎn)。
(6)系統(tǒng)計(jì)算活躍度并返回?cái)?shù)據(jù)包更新沿路節(jié)點(diǎn)活躍度。
活躍度計(jì)算公式如下:
式中:B定義為k為本次路由路徑中的所有連邊個(gè)數(shù);
(i)對(duì)于動(dòng)態(tài)網(wǎng)絡(luò),定義ar如下:
式中:E=1/dist(i,j),其中dist(i,j)是節(jié)點(diǎn)i與候選節(jié)點(diǎn)j之間的距離;F=1/v(i,j),其中v(i,j)是節(jié)點(diǎn)i與候選節(jié)點(diǎn)j之間的相對(duì)速度;C是候選節(jié)點(diǎn)組成的集合;
(ii)對(duì)于靜態(tài)網(wǎng)絡(luò),定義ar如下:
C定義為C=hopmin/hop,其中hopmin為歷次路徑的跳數(shù)中的最小值,hop為本次路徑的跳數(shù);
D定義為D=timemin/time,其中timemin為歷次路徑的延時(shí)的最小值,time為本次路徑延時(shí);定義J為歷次路徑構(gòu)成的集合。
返回?cái)?shù)據(jù)包的信息中包含活躍度,當(dāng)沿路節(jié)點(diǎn)接收到返回?cái)?shù)據(jù)包時(shí)其活躍度更新為數(shù)據(jù)包所攜帶的活躍度,為避免活躍度過時(shí),我們規(guī)定返回?cái)?shù)據(jù)包和節(jié)點(diǎn)上所攜帶的活躍度按以下公式隨時(shí)間衰減:
式中,c實(shí)常數(shù);對(duì)于返回?cái)?shù)據(jù)包,α0為在目的節(jié)點(diǎn)時(shí)系統(tǒng)計(jì)算所得的活躍度,t為返回?cái)?shù)據(jù)包發(fā)出后經(jīng)過的時(shí)間;對(duì)于節(jié)點(diǎn),α0為最近一次更新節(jié)點(diǎn)所得的活躍度,t為距離最近一次更新的時(shí)間。同時(shí)值得指出的是,數(shù)據(jù)包有生存期限,超過生存期限則銷毀此數(shù)據(jù)包停止轉(zhuǎn)發(fā),同時(shí)對(duì)于返回?cái)?shù)據(jù)包而言,其到達(dá)源節(jié)點(diǎn)后即不再被轉(zhuǎn)發(fā)。
(7)源節(jié)點(diǎn)再次發(fā)送數(shù)據(jù)包,開始下一次路由,回到第一步。
再次發(fā)送數(shù)據(jù)包只需要滿足下述條件之一:(i)發(fā)送數(shù)據(jù)包后經(jīng)過時(shí)間Twait;(ii)在Twait內(nèi)接收到返回?cái)?shù)據(jù)包。滿足(i)條件時(shí)源節(jié)點(diǎn)重新發(fā)送本次路由數(shù)據(jù)包,滿足(ii)條件時(shí)發(fā)送下一個(gè)數(shù)據(jù)包。
下面以一個(gè)具體的實(shí)施例進(jìn)一步說明本發(fā)明。
圖2為26節(jié)點(diǎn)的靜態(tài)移動(dòng)自組織網(wǎng)絡(luò)拓?fù)鋱D。該網(wǎng)絡(luò)中的所有節(jié)點(diǎn)的覆蓋范圍和傳輸能力相同。在本實(shí)施例中將采用本發(fā)明提出的基于自適應(yīng)吸引子選擇的單播路由方法,由節(jié)點(diǎn)s向節(jié)點(diǎn)d發(fā)送數(shù)據(jù)。
(1)當(dāng)節(jié)點(diǎn)s有數(shù)據(jù)包要發(fā)送時(shí),首先檢查數(shù)據(jù)包的目的節(jié)點(diǎn)ID。如果目的節(jié)點(diǎn)是a、b、c、e、f、g、h、k其中的任意一個(gè),則直接將數(shù)據(jù)包發(fā)送給目的節(jié)點(diǎn)。
(2)如果數(shù)據(jù)包的目的節(jié)點(diǎn)不是節(jié)點(diǎn)s的鄰居節(jié)點(diǎn),節(jié)點(diǎn)需要選出比自己距離目標(biāo)節(jié)點(diǎn)更近的鄰居節(jié)點(diǎn)作為候選節(jié)點(diǎn),所以候選節(jié)點(diǎn)是a、b、c、f、e。
(3)根據(jù)節(jié)點(diǎn)計(jì)算候選節(jié)點(diǎn)被選為下一跳節(jié)點(diǎn)概率的規(guī)則,由于節(jié)點(diǎn)s符合(i),故節(jié)點(diǎn)a、b、c、f、e被選為下一跳節(jié)點(diǎn)的概率皆為0.2.
(4)由于a、b、c、f、e被選為下一跳的概率相同,所以節(jié)點(diǎn)s隨機(jī)選取其中一個(gè)節(jié)點(diǎn)作為下一跳節(jié)點(diǎn),假設(shè)選擇節(jié)點(diǎn)b作為下一跳節(jié)點(diǎn)。
(5)在下一個(gè)時(shí)間步,回到第一步,直到數(shù)據(jù)包被發(fā)送至目的節(jié)點(diǎn),形成路徑1:s→b→c→n→p→u→y→z→d。
(6)在目的節(jié)點(diǎn)d系統(tǒng)根據(jù)公式(4)計(jì)算得出活躍度α,目的節(jié)點(diǎn)d發(fā)送返回?cái)?shù)據(jù)包反向沿原路徑1更新組成路徑的節(jié)點(diǎn)z、y、u、p、n、c、b、s的活躍度。值得指出,返回?cái)?shù)據(jù)包中所攜帶的活躍度以及節(jié)點(diǎn)所攜帶的活躍度都是會(huì)隨著從其最近一次活躍度更新至今的時(shí)間而衰減,具體根據(jù)公式(7)進(jìn)行衰減。
(7)當(dāng)節(jié)點(diǎn)s發(fā)送數(shù)據(jù)包后經(jīng)過Twait時(shí),或者在Twait時(shí)間內(nèi)接收到返回?cái)?shù)據(jù)包則再次發(fā)送數(shù)據(jù)包,開始新一次路由。假設(shè)節(jié)點(diǎn)s在Twait內(nèi)收到返回?cái)?shù)據(jù)包,則節(jié)點(diǎn)s向節(jié)點(diǎn)d傳輸下一個(gè)數(shù)據(jù)包?;氐降谝徊剑钡剿袛?shù)據(jù)包全部從節(jié)點(diǎn)s傳輸?shù)焦?jié)點(diǎn)d。
(8)第二次路由得到路徑2:s→a→m→q→d??梢钥闯雎窂?比路徑1要好,體現(xiàn)在路徑2的跳數(shù)比路徑1少,還有路徑2的總長(zhǎng)小于路徑1,這些都使得路徑2的延時(shí)、能耗比路徑1小。所以針對(duì)路徑2系統(tǒng)計(jì)算所得的活躍度比路徑1的要高,這就使得系統(tǒng)沿著路徑2的趨勢(shì)不斷進(jìn)化,最終系統(tǒng)得到在此網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中最優(yōu)的路徑并完成剩下所以數(shù)據(jù)包的傳輸。
不難發(fā)現(xiàn),本發(fā)明通過活躍度調(diào)控系統(tǒng)行為,以活躍度為指引,幫助系統(tǒng)尋找到最適應(yīng)當(dāng)前網(wǎng)絡(luò)環(huán)境的狀態(tài)。無論靜態(tài)動(dòng)態(tài)網(wǎng)絡(luò),本發(fā)明都能讓系統(tǒng)快速尋找到一條延時(shí)小、耗能少的路由路徑。