網(wǎng),BLACK表示節(jié)點(diǎn)已經(jīng)連接到網(wǎng)絡(luò)并且所有的相鄰節(jié)點(diǎn)都已經(jīng)連接到網(wǎng)絡(luò)。
[0045] 如圖3所示,傳統(tǒng)無線傳感網(wǎng)樹狀拓?fù)渖傻牧鞒倘缦拢?br>[0046] 對(duì)于任意傳感器節(jié)點(diǎn)v,執(zhí)行下面⑴~(8);
[0047] ⑴初始化,將父節(jié)點(diǎn)P[v]設(shè)置為空(EMPTY),將顏色標(biāo)記C[v]設(shè)置為WHITE;
[0048] (2)判斷自己是否為網(wǎng)絡(luò)的匯聚節(jié)點(diǎn),如果是匯聚節(jié)點(diǎn),則將父節(jié)點(diǎn)P[v]設(shè)置為 EMPTY,并且將顏色標(biāo)記C[v]設(shè)置為GRAY;
[0049] (3)判斷自己的顏色標(biāo)記C[v]是否為GRAY,如果C[v]不是GRAY,則跳轉(zhuǎn)到步驟 (4);如果C[v]為GRAY,則跳轉(zhuǎn)到步驟(5);
[0050] (4)判斷自己的顏色標(biāo)記C[V]是否為WHITE,如果C[V]為WHITE,則V保持監(jiān)聽狀 態(tài),監(jiān)聽鄰居節(jié)點(diǎn)發(fā)來的消息,并根據(jù)消息包的要求更新自己的父節(jié)點(diǎn)P[v]以及顏色標(biāo)記 C[v],完成更新后,跳轉(zhuǎn)到步驟(3);如果C[v]不為WHITE,則跳轉(zhuǎn)到步驟(8);
[0051] (5)廣播消息包給相鄰節(jié)點(diǎn),獲得鄰居節(jié)點(diǎn)信息,將所有鄰居節(jié)點(diǎn)ID加入到相鄰 節(jié)點(diǎn)集合N[v];
[0052] (6)判斷N[v]是否為空集,如果N[v]是空集,則將自己的顏色標(biāo)記更新為BLACK, 再跳轉(zhuǎn)到步驟(8);如果N[v]不是空集,則從V的相鄰節(jié)點(diǎn)集合中取出一個(gè)節(jié)點(diǎn),記作u;
[0053] (7)判斷u的顏色標(biāo)記C[u]是否為WHITE,如果C[u]為WHITE,則通知節(jié)點(diǎn)u將其 顏色標(biāo)記C[u]以及父節(jié)點(diǎn)P[u]分別更新為GRAY以及V。下一步,跳轉(zhuǎn)到步驟(6);
[0054] (8)結(jié)束。
[0055] 如上述所示,在步驟(5)中,對(duì)于網(wǎng)絡(luò)中任意一個(gè)傳感器節(jié)點(diǎn)V,只要其顏色標(biāo)記 為GRAY,便廣播消息給處于監(jiān)聽狀態(tài)的其他相鄰節(jié)點(diǎn),周圍顏色標(biāo)記為WHITE的其他節(jié)點(diǎn) 收到V的廣播消息之后便以V為父節(jié)點(diǎn)連接到傳感網(wǎng),不可避免地,當(dāng)V相鄰節(jié)點(diǎn)數(shù)目過大 時(shí),以V為父節(jié)點(diǎn)的傳感器節(jié)點(diǎn)數(shù)目也就相應(yīng)地比較大,從而使V承擔(dān)過重的數(shù)據(jù)轉(zhuǎn)發(fā)任 務(wù),導(dǎo)致V過早耗盡能量,影響網(wǎng)絡(luò)的生存時(shí)間。另外,傳統(tǒng)基于廣度優(yōu)先搜索的無線傳感 網(wǎng)樹狀拓?fù)渖煞椒ú⑽纯紤]傳感器節(jié)點(diǎn)的剩余能量。對(duì)于剩余能量少的傳感器節(jié)點(diǎn),其 所擁有的子節(jié)點(diǎn)數(shù)目應(yīng)該也相應(yīng)的減少。
[0056] 針對(duì)上述問題,本發(fā)明在傳統(tǒng)廣度優(yōu)先搜索策略的基礎(chǔ)上綜合考慮傳感器節(jié)點(diǎn)剩 余能量、節(jié)點(diǎn)負(fù)載估計(jì)模型、傳感器節(jié)點(diǎn)子節(jié)點(diǎn)數(shù)目,提供了一種基于改進(jìn)廣度優(yōu)先搜索的 無線傳感網(wǎng)樹狀拓?fù)渖煞椒ā?br>[0057] 具體地,本發(fā)明方法中進(jìn)行了下面方面的改進(jìn)。
[0058] (1)首先,限制網(wǎng)絡(luò)中各個(gè)傳感器節(jié)點(diǎn)最大子節(jié)點(diǎn)數(shù)目。
[0059] (2)其次,引入節(jié)點(diǎn)負(fù)載估計(jì)模型。
[0060] 本發(fā)明采用自由空間電磁波傳播模型,傳感器節(jié)點(diǎn)數(shù)據(jù)傳輸/接收能耗分別表示 如下。
[0061] 數(shù)據(jù)傳輸能耗Etx (d,k)表不為:
[0062] Etx (d,k) =EelecXk+EafflpXkXd2 (1)
[0063] 數(shù)據(jù)接收能耗Ekx (d,k)表示為:
[0064] Eex (d,k) =EelecXk(2)
[0065] 其中,Eejlej。表示傳感器節(jié)點(diǎn)的電路能耗,k表示數(shù)據(jù)量的大小,e_表示功放能耗, d表示節(jié)點(diǎn)間距離。
[0066] 對(duì)于網(wǎng)絡(luò)中的任意傳感器節(jié)點(diǎn)i,定義Ii(T)為在當(dāng)前網(wǎng)絡(luò)拓?fù)銽中節(jié)點(diǎn)i的負(fù)載 估計(jì)值,Li(T)為節(jié)點(diǎn)i的估計(jì)生存時(shí)間,如公式(3)所示,1^為1 ^勺倒數(shù)。在計(jì)算負(fù)載過 程中,可將下面公式(2)~(5)中的網(wǎng)絡(luò)拓?fù)銽省略,例如Ii(T)簡(jiǎn)寫為IiAi(T)簡(jiǎn)寫為Q。
[0067]
[0068]其中,示節(jié)點(diǎn)i的初始能量,設(shè)節(jié)點(diǎn)i的父節(jié)點(diǎn)為pi,.表示節(jié)點(diǎn)i與父節(jié)點(diǎn) Pi的距離,盡'(D及分別指節(jié)點(diǎn)i的估計(jì)傳輸數(shù)據(jù)量與估計(jì)接收數(shù)據(jù)量,二者分別為:
[0069] .W' (.廠)=5 ? (W1 . /V,1 (r).+W2 ? /V,2 (:廠)+ …H',/V/ (T)) (4 )
[0070] DlllCn^B-XVit +D11^(T)(5)
[0071] 其中,及Wm(m = 1,2,…q)分別表示節(jié)點(diǎn)i的m跳距離的子節(jié)點(diǎn)個(gè)數(shù)及其相 應(yīng)的權(quán)重,B表示傳感器節(jié)點(diǎn)單位時(shí)間感知數(shù)據(jù)量,q指節(jié)點(diǎn)負(fù)載估計(jì)參數(shù),可以根據(jù)實(shí)際 情況設(shè)置,本發(fā)明通過大量實(shí)驗(yàn),確定在不同q值情況下節(jié)點(diǎn)負(fù)載估計(jì)值的表現(xiàn),一般設(shè)置 為3~5時(shí)節(jié)點(diǎn)負(fù)載估計(jì)模型表現(xiàn)比較好。針對(duì)不同的數(shù)據(jù)融合模型取不同Wm分布,一般 權(quán)重Wci,W1,…,Wq的取值范圍均為[0, 1),且w(!彡W1多…Wq,若各級(jí)節(jié)點(diǎn)能對(duì)接收數(shù)據(jù)進(jìn)行 線性數(shù)據(jù)壓縮,壓縮率re(0,1),則&=1^。
[0072] 本發(fā)明在生成傳感網(wǎng)樹狀拓?fù)溥^程中,各個(gè)傳感器節(jié)點(diǎn)動(dòng)態(tài)地更新其m(m= 1,2, 3…q)跳子節(jié)點(diǎn)數(shù)量信息AHD,通過聯(lián)立公式(1)~(5)可動(dòng)態(tài)地估計(jì)節(jié)點(diǎn)的負(fù)載情 況。
[0073] 對(duì)于匯聚節(jié)點(diǎn),因?yàn)閭鞲芯W(wǎng)中,一般能對(duì)匯聚節(jié)點(diǎn)供電,可將其估計(jì)生存時(shí)間視為 無窮大,所以它的負(fù)載估計(jì)值記作常數(shù)〇。
[0074] (3)引入隨機(jī)化的父節(jié)點(diǎn)選擇模型。本發(fā)明的網(wǎng)絡(luò)拓?fù)渖L(zhǎng)過程中,新加入到網(wǎng)絡(luò) 的傳感器節(jié)點(diǎn)可能有多個(gè)候選父節(jié)點(diǎn),新加入節(jié)點(diǎn)依概率優(yōu)先選擇負(fù)載估計(jì)值低的節(jié)點(diǎn)作 為父節(jié)點(diǎn),以此均衡節(jié)點(diǎn)能耗延長(zhǎng)網(wǎng)絡(luò)生存時(shí)間。
[0075] 同樣,本發(fā)明方法中定義三種顏色(WHITE,GRAY,BLACK)表示傳感器節(jié)點(diǎn)狀態(tài), WHITE表示節(jié)點(diǎn)尚未連接到網(wǎng)絡(luò),GRAY表示節(jié)點(diǎn)已連接到網(wǎng)絡(luò)但其子節(jié)點(diǎn)集合還未確定, BLACK表示節(jié)點(diǎn)已經(jīng)連接到網(wǎng)絡(luò)并且其子節(jié)點(diǎn)集合已經(jīng)確定。下面結(jié)合圖4來說明本發(fā)明 基于改進(jìn)廣度優(yōu)先搜索的無線傳感網(wǎng)樹狀拓?fù)渖煞椒ǖ木唧w實(shí)現(xiàn)步驟。首先,設(shè)置節(jié)點(diǎn) 負(fù)載估計(jì)參數(shù)q和最大子節(jié)點(diǎn)數(shù)目c,然后對(duì)網(wǎng)絡(luò)中的任意一個(gè)傳感器節(jié)點(diǎn)V,進(jìn)行下面步 驟1~步驟16。
[0076] 步驟1,初始化。將節(jié)點(diǎn)V的父節(jié)點(diǎn)P[v]設(shè)置為空(EMPTY),節(jié)點(diǎn)V的顏色標(biāo)記 C[v]設(shè)置為WHITE,子節(jié)點(diǎn)更新完成標(biāo)記FINISHED設(shè)置為F,子節(jié)點(diǎn)數(shù)量CN設(shè)置為0。子 節(jié)點(diǎn)更新完成標(biāo)記包含兩個(gè)取值F和T,F(xiàn)表示未完成,T表示完成。
[0077] 步驟2,判斷節(jié)點(diǎn)v是否為網(wǎng)絡(luò)的匯聚節(jié)點(diǎn),如果是匯聚節(jié)點(diǎn),則將父節(jié)點(diǎn)P[v]設(shè) 置為其自身V,并且將顏色標(biāo)記C[v]設(shè)置為GRAY,然后執(zhí)行步驟3 ;如果否,直接執(zhí)行步驟 3〇
[0078] 步驟3,判斷節(jié)點(diǎn)V的顏色標(biāo)記C[v]是否為GRAY,如果C[v]不是GRAY,則執(zhí)行步 驟4 ;如果C[v]是GRAY,則跳轉(zhuǎn)到步驟10執(zhí)行。
[0079] 步驟4,判斷C[v]是否為WHITE,如果C[v]是WHITE,執(zhí)行步驟5 ;如果C[v]不是 WHITE,那么此時(shí)節(jié)點(diǎn)V的顏色標(biāo)記應(yīng)為BLACK,此時(shí)結(jié)束對(duì)節(jié)點(diǎn)V的執(zhí)行過程。
[0080] 步驟5,等待t秒,監(jiān)聽相鄰節(jié)點(diǎn)的加入請(qǐng)求消息,將這些發(fā)出加入請(qǐng)求消息的節(jié) 點(diǎn)加入到自己的候選父節(jié)點(diǎn)集合CP[v]中。設(shè)CP[v]中包含n個(gè)候選父節(jié)點(diǎn),n為正整數(shù)。 t表示時(shí)間,為正數(shù)。此處的加入請(qǐng)求消息是指相鄰節(jié)點(diǎn)請(qǐng)求節(jié)點(diǎn)V作為子節(jié)點(diǎn)的消息。
[0081] 步驟6,獲得候選父節(jié)點(diǎn)P1,P2-負(fù)載估計(jì)值和估計(jì)生存時(shí)間,設(shè)P 估計(jì)生存時(shí)間分別為L(zhǎng)1,LfLn;劃分n個(gè)取值區(qū)間SS2,…Sn。
[0082] 對(duì)于CP[v]中的節(jié)點(diǎn)Pi(i= 1,2,…,n),利用公式⑴~(5)來計(jì)算節(jié)點(diǎn)卩4的 負(fù)載估計(jì)值和估計(jì)生存時(shí)間。首先根據(jù)公式(4)和(5)確定該節(jié)點(diǎn)Pi的估計(jì)接收數(shù)據(jù)量 與估計(jì)傳輸數(shù)據(jù)量Df(T),然后根據(jù)公式(1)和(2)確定該節(jié)點(diǎn)Pi的數(shù)據(jù)傳輸能耗和 數(shù)據(jù)接收能耗,最后根據(jù)公式(3)來確定節(jié)點(diǎn)負(fù)載估計(jì)值和估計(jì)生存時(shí)間。設(shè)節(jié)點(diǎn)P1, 己…Pn的負(fù)載估計(jì)值分別為Ii,Ifln,P1,己…Pn的估計(jì)生存時(shí)間LpLfLn。
[0083]
[0084] 步驟7,按照均勻分布生成[0,LJLfLn)之間的隨機(jī)數(shù),記作R。
[0085] 步驟8,確定R所在取值區(qū)間Sy,y的取值范圍為[1,2,…,n],將節(jié)點(diǎn)V的父節(jié)點(diǎn) P[v]更新為節(jié)點(diǎn)Py,并向Py發(fā)送父節(jié)點(diǎn)請(qǐng)求消息;確認(rèn)后,將顏色標(biāo)記C[v]更新為GRAY。
[0086] 步驟9,跳轉(zhuǎn)到步驟3執(zhí)行。
[0087] 步驟10,找到節(jié)點(diǎn)V的所有相鄰節(jié)點(diǎn),將其加入節(jié)點(diǎn)集N[v]。
[0088] 步驟11,判斷N[v]是否為空集及CN是否小于c,若N[v]為空集或CN不小于c,則 跳轉(zhuǎn)到步驟12 ;否則,跳轉(zhuǎn)到步驟14執(zhí)行。
[0089] 步驟12,判斷節(jié)點(diǎn)V的子節(jié)點(diǎn)更新完成標(biāo)記FINISHED是否為T,若FINISHED為T, 則將C[v]更新為BLACK,然后結(jié)束對(duì)節(jié)點(diǎn)V的執(zhí)行過程;如果FINISHED為F,則執(zhí)行步驟 13。
[0090] 步驟13,更新節(jié)點(diǎn)V的子節(jié)點(diǎn)信息以及負(fù)載估計(jì)值,再跳轉(zhuǎn)到步驟12執(zhí)行。
[0091] 步驟14,從N[v]中取出一節(jié)點(diǎn),標(biāo)記為節(jié)點(diǎn)u。
[0092] 步驟15,判斷節(jié)點(diǎn)u的顏色標(biāo)記C[u]是否為WHITE,如果C[u]是WHITE,則跳轉(zhuǎn)到 步驟16執(zhí)行;如果C[u]不為WHIT