一種基于主動門限設(shè)置的自適應(yīng)分簇方法
【專利摘要】本發(fā)明一種基于主動門限設(shè)置的自適應(yīng)分簇方法,屬于通信領(lǐng)域。具體步驟為:首先,為無線網(wǎng)絡(luò)中的每個節(jié)點尋找鄰居節(jié)點,并按歐式距離從小到大排列;每個節(jié)點計算自身權(quán)值,并發(fā)送給鄰居節(jié)點;然后,每個節(jié)點判斷自身權(quán)值是否大于所有鄰居節(jié)點的權(quán)值,如果是,設(shè)定并根據(jù)鄰居節(jié)點的數(shù)量門限,發(fā)送“簇頭存在”消息或“已分簇”消息,同時對節(jié)點進(jìn)行標(biāo)記;否則,根據(jù)鄰居節(jié)點發(fā)送的“簇頭存在”消息或“已分簇”消息分別對節(jié)點進(jìn)行標(biāo)記;最后,判斷標(biāo)記后的節(jié)點是否為簇頭節(jié)點,如果是執(zhí)行簇頭節(jié)點入簇;否則執(zhí)行成員節(jié)點入簇;優(yōu)點在于:門限機(jī)制預(yù)設(shè)的不是具體值,更為全面和可調(diào),在負(fù)載均衡性上有顯著提高。
【專利說明】
一種基于主動門限設(shè)置的自適應(yīng)分簇方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明屬于通信領(lǐng)域,涉及一種基于主動門限設(shè)置的自適應(yīng)分簇方法。
【背景技術(shù)】
[0002] 通信領(lǐng)域的分簇算法最早出現(xiàn)在無線傳感器網(wǎng)絡(luò)中,后又引入到無定形扁平化自 組織無線網(wǎng)絡(luò)中,無定形扁平化自組織無線網(wǎng)絡(luò)希望將終端、基站和核心網(wǎng)扁平化為單一 的網(wǎng)絡(luò)節(jié)點,所有節(jié)點的地位平等,并具有自組織的能力。
[0003] 現(xiàn)有的分簇算法有最小ID法、最高連接度法、門限法和加權(quán)法等。
[0004] 門限法指:設(shè)置分裂和合并門限,簇內(nèi)節(jié)點數(shù)量大于分裂門限則執(zhí)行簇分裂,小于 合并門限則執(zhí)行簇合并。加權(quán)法指:綜合考慮節(jié)點連接度、節(jié)點剩余能量等多個因數(shù),對每 一個節(jié)點進(jìn)行歸一化并加權(quán)以得到分簇權(quán)值,以權(quán)值為基礎(chǔ)進(jìn)行分簇。相似算法為自適應(yīng) 按需加權(quán)(A0W,Adaptive On-demand Weighting)分簇算法,同樣是針對同質(zhì)節(jié)點組成的無 線網(wǎng)絡(luò)的自適應(yīng)加權(quán)算法。
[0005] 在現(xiàn)有的門限法中,設(shè)置的是單一的節(jié)點數(shù)量的門限。而每一個節(jié)點在一段時間 以后,由于剩余能量等其他因素的不同,所能承受的負(fù)載并非都是一樣的。因此設(shè)置單一的 門限標(biāo)準(zhǔn)不利于網(wǎng)絡(luò)的自適應(yīng)。
[0006] 在非交疊簇模式下,每個成員節(jié)點只屬于一個簇,而在扁平化自組織的前提下,一 個成員節(jié)點可能會收到兩個甚至多個簇頭發(fā)出的分簇消息。針對這種情況,現(xiàn)有通常采用 先到先得的方式選擇入簇,即簇成員在收到第一個符合條件的分簇消息后便入簇。這樣會 與事先的分簇思想沖突:一些簇頭未能聚集預(yù)期數(shù)量的成員,而一些簇頭聚集了過多數(shù)量 的成員。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明結(jié)合現(xiàn)有算法的特點,加入以簇的成員節(jié)點主動選簇頭的新模式,在不明 顯增加通信消耗的前提下顯著提高分簇結(jié)構(gòu)的負(fù)載均衡性,提出了一種基于主動門限設(shè)置 的自適應(yīng)分簇方法。
[0008] 具體步驟如下:
[0009] 步驟一、將無線網(wǎng)絡(luò)中的每個終端作為一個節(jié)點,對每個節(jié)點尋找鄰居節(jié)點,并按 歐式距離從小到大排列;
[0010]步驟二、每個節(jié)點通過加權(quán)法計算自身權(quán)值,并將自身權(quán)值發(fā)送給鄰居節(jié)點;
[0011]步驟三、每個節(jié)點判斷自身權(quán)值是否大于所有鄰居節(jié)點的權(quán)值,如果是,進(jìn)入步驟 五,否則進(jìn)入步驟四;
[0012]步驟四、針對某個節(jié)點i,根據(jù)鄰居節(jié)點發(fā)送的"簇頭存在"消息或"已分簇"消息分 別對節(jié)點i進(jìn)行標(biāo)記;
[0013] 具體步驟如下:
[0014]步驟401、針對節(jié)點i,判斷是否有鄰居節(jié)點發(fā)送"簇頭存在"消息,如果是,進(jìn)入步 驟402;否則,進(jìn)入步驟403;
[0015]步驟402、節(jié)點i向所有鄰居節(jié)點發(fā)送"已分簇"消息,并將節(jié)點i標(biāo)為成員節(jié)點;進(jìn) 入步驟六;
[0016] 步驟403、判斷是否權(quán)值大于自身的全部鄰居節(jié)點均發(fā)送"已分簇"消息,如果是, 進(jìn)入步驟五,否則,返回步驟401;
[0017] 步驟五、針對節(jié)點i,設(shè)定并根據(jù)鄰居節(jié)點的數(shù)量門限,發(fā)送"簇頭存在"消息或"已 分簇"消息,同時對節(jié)點i進(jìn)行標(biāo)記;
[0018] 具體步驟如下:
[0019] 步驟501、各個節(jié)點自適應(yīng)生成三個門限:最小規(guī)模門限minn、最佳規(guī)模門限pren 和最大規(guī)模門限maxn。
[0020] 步驟502、判斷節(jié)點i的鄰居數(shù)量η超出minn,貝lj進(jìn)入步驟503,否則超出maxn進(jìn)入步 驟504;
[0021]步驟503、判斷節(jié)點i的鄰居數(shù)量η是否小于minn,如果是,向鄰居節(jié)點發(fā)送"已分 簇"消息,并將節(jié)點i標(biāo)為成員節(jié)點;否則將節(jié)點i標(biāo)為簇頭節(jié)點;
[0022]步驟504判斷節(jié)點i的鄰居數(shù)量η是否大于maxn,如果是,根據(jù)最佳規(guī)模門限pren數(shù) 量,向歐式距離最近的pren個鄰居節(jié)點發(fā)送"簇頭存在"消息,向其余節(jié)點發(fā)送"已分簇"消 息,將節(jié)點i標(biāo)為簇頭節(jié)點;否則,向所有鄰居節(jié)點發(fā)送"簇頭存在"消息,將節(jié)點i標(biāo)為簇頭 節(jié)點。
[0023]步驟六、判斷標(biāo)記后的節(jié)點i是否為簇頭節(jié)點,如果是進(jìn)入步驟七,否則為成員節(jié) 點進(jìn)入步驟八;
[0024]步驟七、執(zhí)行簇頭節(jié)點i的入簇階段;
[0025] 具體步驟如下:
[0026]步驟701、設(shè)置簇頭節(jié)點i的狀態(tài)81為0,已入簇的鄰居節(jié)點數(shù)量m為0,統(tǒng)計鄰居節(jié) 點中未入簇的成員節(jié)點,數(shù)量為d1;
[0027]步驟702、判斷節(jié)點i未入簇成員節(jié)點數(shù)量cU是否為0或簇頭狀態(tài)Sl是否為3,如果 是,簇頭節(jié)點i的入簇階段結(jié)束;否則進(jìn)入步驟703;
[0028]步驟703、判斷節(jié)點i已入簇節(jié)點數(shù)量m是否大于等于當(dāng)前簇頭狀態(tài)Sl所對應(yīng)的門 限數(shù)量;如果是,則當(dāng)前簇頭狀態(tài)81加1,并向所有鄰居節(jié)點發(fā)送包含當(dāng)前簇頭狀態(tài)信息的 "狀態(tài)改變"消息;返回步驟702;否則,進(jìn)入步驟704;
[0029] 當(dāng)前簇頭狀態(tài)si的值分別為0,1,2和3;簇頭狀態(tài)0對應(yīng)的門限數(shù)量為小于最小規(guī) 模門限minn值;簇頭狀態(tài)1對應(yīng)的門限數(shù)量為大于等于最小規(guī)模門限minn值到小于最佳規(guī) 模門限pren值;簇頭狀態(tài)2對應(yīng)的門限數(shù)量為大于等于最佳規(guī)模門限pren值到小于最大規(guī) 模門限maxn值;簇頭狀態(tài)3對應(yīng)的門限數(shù)量為大于等于最大規(guī)模門限maxn值;
[0030] 步驟704、判斷是否收到簇頭節(jié)點i的鄰居節(jié)點j發(fā)送的"已入簇"消息,如果是,則 未入簇成員節(jié)點個數(shù)cU減1,返回步驟702,否則進(jìn)入步驟705;
[0031] 步驟705、判斷是否收到簇頭節(jié)點i的鄰居節(jié)點j發(fā)送的"請求入簇"消息,如果是, 貝1J已入簇的鄰居節(jié)點數(shù)量m加1,并向鄰居節(jié)點j發(fā)送"允許入簇"消息,返回步驟702;否則 返回步驟704;
[0032]步驟八、執(zhí)行成員節(jié)點i的入簇階段;
[0033] 具體步驟如下:
[0034]步驟801、針對成員節(jié)點i,統(tǒng)計簇頭狀態(tài)si不為3的簇頭節(jié)點數(shù)量為Di;
[0035]根據(jù)收到的"簇頭存在"消息統(tǒng)計鄰居節(jié)點中的簇頭節(jié)點數(shù)量;
[0036]步驟802、針對節(jié)點i,判斷簇頭節(jié)點數(shù)量01是否等于0,如果是,則將節(jié)點i標(biāo)記為 "懸空節(jié)點",節(jié)點i完成入簇階段;否則進(jìn)入步驟803;
[0037]步驟803、針對某個節(jié)點i,根據(jù)收到的"狀態(tài)改變"消息更新鄰居節(jié)點的狀態(tài)表,從 中找出鄰居節(jié)點中簇頭狀態(tài)最小的"簇頭節(jié)點"中歐式距離最近的節(jié)點j,向節(jié)點j發(fā)送"請 求入簇"消息;
[0038]步驟804、針對某個節(jié)點i,判斷是否收到節(jié)點j返回的"允許入簇"消息,如果是,向 所有其它鄰居發(fā)送"已入簇"消息,節(jié)點i完成入簇階段;否則進(jìn)入步驟805;
[0039]步驟805、針對某個節(jié)點i,判斷是否收到節(jié)點j返回的"狀態(tài)改變"消息,如果是,進(jìn) 入步驟806,否則回到步驟804;
[0040] 步驟806、針對某個節(jié)點i,判斷是否收到鄰居節(jié)點發(fā)送的簇頭狀態(tài)更新為3的"狀 態(tài)改變"消息,如果是,簇頭狀態(tài)不為3的"簇頭節(jié)點"個數(shù)0 1減1,返回步驟802,否直接回到 步驟802;
[0041] 本發(fā)明的優(yōu)點在于:
[0042] 1、一種基于主動門限設(shè)置的自適應(yīng)分簇方法,更切合自適應(yīng)的要求:門限機(jī)制預(yù) 設(shè)的不是具體值,在選舉階段和門限機(jī)制中綜合考慮到剩余能量等其他因素,更為全面和 可調(diào)。
[0043] 2、一種基于主動門限設(shè)置的自適應(yīng)分簇方法,相對于A0W算法,在負(fù)載均衡性上有 顯者提尚。
【附圖說明】
[0044] 圖1為本發(fā)明基于主動門限設(shè)置的自適應(yīng)分簇方法流程圖;
[0045] 圖2為本發(fā)明中根據(jù)鄰居節(jié)點的發(fā)送消息對節(jié)點進(jìn)行標(biāo)記的流程圖;
[0046] 圖3為本發(fā)明中根據(jù)鄰居節(jié)點的數(shù)量門限,發(fā)送消息并對節(jié)點進(jìn)行標(biāo)記的流程圖;
[0047] 圖4為本發(fā)明執(zhí)行簇頭節(jié)點的入簇方法流程圖;
[0048] 圖5為本發(fā)明執(zhí)行成員節(jié)點的入簇方法流程圖;
[0049]圖6為本發(fā)明本發(fā)明算法與傳統(tǒng)A0W算法的負(fù)載平衡因子隨通訊距離的變化情況 圖。
【具體實施方式】
[0050]下面將結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)說明。
[005?] 為了保證網(wǎng)絡(luò)的可擴(kuò)展性和服務(wù)質(zhì)量(QoS,Quality of Service),無線移動網(wǎng)絡(luò) 通常采用分級結(jié)構(gòu)。在無定形扁平化自組織無線網(wǎng)絡(luò)中,分級結(jié)構(gòu)通常采用分簇的方式來 構(gòu)造,而分簇算法的好壞將直接影響著無線移動網(wǎng)絡(luò)的性能。
[0052] 一種基于主動門限設(shè)置的自適應(yīng)分簇方法,簡稱ALB算法;通過節(jié)點成員在被選舉 為簇頭后,根據(jù)預(yù)先設(shè)置的算法自適應(yīng)地生成該節(jié)點的門限標(biāo)準(zhǔn),簇成員在獲得所有鄰居 簇頭發(fā)送的信息后,主動判斷應(yīng)該加入哪一個簇;以及從而提高網(wǎng)絡(luò)的負(fù)載均衡性。
[0053] 如圖1所示,具體步驟如下:
[0054]步驟一、將無線網(wǎng)絡(luò)中的每個終端作為一個節(jié)點,對每個節(jié)點尋找自身的鄰居節(jié) 點,并計算自身節(jié)點與鄰居節(jié)點之間的歐氏距離,將歐式距離按從小到大排列;
[0055] 每個節(jié)點周期性地廣播"Hello"消息,"Hello"消息包括了自身編號和發(fā)送時間; 當(dāng)節(jié)點i收到節(jié)點j發(fā)送的"He 11 〇"消息后,節(jié)點i將節(jié)點j標(biāo)記為自身的鄰居節(jié)點,并計算節(jié) 點i與節(jié)點j之間的歐式距離,計算完歐式距離后,將歐式距離按從小到大排列;
[0056] 本實施例中選用15個節(jié)點,分別為節(jié)點1到節(jié)點15;每個節(jié)點的鄰居節(jié)點按歐式距 離從小到大排序后,如表1所示;
[0057] 表 1
[0058]
[0059] 步驟二、每個節(jié)點通過加權(quán)法計算自身權(quán)值,并將自身權(quán)值發(fā)送給鄰居節(jié)點;
[0060] 加權(quán)法在本實施例中采用連通度與節(jié)點編號結(jié)合的方式計算,每個節(jié)點的自身權(quán) 值如表2所示;
[0061] 表 2
[0062]
[0063] 步驟三、每個節(jié)點判斷自身權(quán)值是否大于所有鄰居節(jié)點的權(quán)值,如果是,進(jìn)入步驟 五,否則進(jìn)入步驟四;
[0064] 步驟四、針對某個節(jié)點i,根據(jù)鄰居節(jié)點發(fā)送的"簇頭存在"消息或"已分簇"消息分 別對節(jié)點i進(jìn)行標(biāo)記;
[0065] 如圖2所示,具體步驟如下:
[0066]步驟401、針對節(jié)點i,判斷是否有鄰居節(jié)點發(fā)送"簇頭存在"消息,如果是,進(jìn)入步 驟402;否則,進(jìn)入步驟403;
[0067]步驟402、節(jié)點i向所有鄰居節(jié)點發(fā)送"已分簇"消息,并將節(jié)點i標(biāo)為成員節(jié)點;進(jìn) 入步驟六;
[0068]步驟403、判斷是否權(quán)值大于自身的全部鄰居節(jié)點均發(fā)送"已分簇"消息,如果是, 進(jìn)入步驟五,否則,返回步驟401;
[0069]步驟五、針對節(jié)點i,設(shè)定并根據(jù)鄰居節(jié)點的數(shù)量門限,發(fā)送"簇頭存在"消息或"已 分簇"消息,同時對節(jié)點i進(jìn)行標(biāo)記;
[0070]如圖3所示,具體步驟如下:
[0071 ] 步驟501、各個節(jié)點自適應(yīng)生成三個門限:最小規(guī)模門限minn、最佳規(guī)模門限pren 和最大規(guī)模門限maxn。
[0072] 步驟502、根據(jù)節(jié)點i的鄰居數(shù)量η進(jìn)行劃分,判斷關(guān)于minn的范圍則進(jìn)入步驟503, 否則關(guān)于maxn的范圍進(jìn)入步驟504
[0073]步驟503、判斷節(jié)點i的鄰居數(shù)量η是否小于minn,如果是,向鄰居節(jié)點發(fā)送"已分 簇"消息,并將節(jié)點i標(biāo)為成員節(jié)點;否則將節(jié)點i標(biāo)為簇頭節(jié)點;
[0074]步驟504判斷節(jié)點i的鄰居數(shù)量η是否大于maxn,如果是,根據(jù)最佳規(guī)模門限pren數(shù) 量,向歐式距離最近的pren個鄰居節(jié)點發(fā)送"簇頭存在"消息,向其余節(jié)點發(fā)送"已分簇"消 息,將節(jié)點i標(biāo)為簇頭節(jié)點;否則,向所有鄰居節(jié)點發(fā)送"簇頭存在"消息,將節(jié)點i標(biāo)為簇頭 節(jié)點。
[0075]針對節(jié)點1到節(jié)點15,通過分別比較自身權(quán)值與自身鄰居節(jié)點的權(quán)值,可知,節(jié)點4 的自身權(quán)值大于節(jié)點4的所有鄰居節(jié)點;節(jié)點9的自身權(quán)值大于節(jié)點9的所有鄰居節(jié)點;節(jié)點 4和節(jié)點9分別執(zhí)行步驟五。
[0076] 本實施例為了方便說明,每個節(jié)點生成的門限均設(shè)置為:minn = 2、pren = 3、maxn =4;
[0077]首先,針對節(jié)點4,鄰居數(shù)量為6大于maxn,向歐式距離最近的3個鄰居節(jié)點發(fā)送"簇 頭存在"消息,即向節(jié)點10、節(jié)點8和節(jié)點1分別發(fā)送"簇頭存在"消息;向節(jié)點13、節(jié)點14和節(jié) 點2分別發(fā)送"已分簇"消息。同時節(jié)點4標(biāo)記為簇頭節(jié)點。
[0078]同理,針對節(jié)點9,鄰居數(shù)量為3,選擇向所有鄰居節(jié)點,節(jié)點6,節(jié)點7和節(jié)點1發(fā)送 "簇頭存在"消息,將節(jié)點9標(biāo)為簇頭節(jié)點。
[0079] 下一步,針對節(jié)點1,收到"簇頭存在"消息,則節(jié)點1向所有鄰居節(jié)點(節(jié)點10,節(jié)點 4和節(jié)點9)發(fā)送"已分簇"消息,并將節(jié)點1標(biāo)為成員節(jié)點;
[0080] 針對節(jié)點6和節(jié)點7,分別收到節(jié)點9發(fā)送的"簇頭存在"消息,則向所有鄰居節(jié)點 (均為節(jié)點9)發(fā)送"已分簇"消息,并將節(jié)點6和節(jié)點7分別標(biāo)為成員節(jié)點;
[0081 ]針對節(jié)點2,收到節(jié)點4發(fā)送的"已分簇"消息,但是因為未收到所有權(quán)值大于節(jié)點2 的權(quán)值的鄰居節(jié)點發(fā)送的"已分簇"消息(節(jié)點13的權(quán)值大于節(jié)點2的權(quán)值),所以繼續(xù)等待;
[0082] 針對節(jié)點8,收到節(jié)點4發(fā)送的"簇頭存在"消息,則節(jié)點8向所有鄰居節(jié)點(節(jié)點4和 節(jié)點14)發(fā)送"已分簇"消息,并將節(jié)點8標(biāo)為成員節(jié)點;
[0083] 針對節(jié)點10,收到節(jié)點4發(fā)送的"簇頭存在"消息,則節(jié)點10向所有鄰居節(jié)點(節(jié)點 4,節(jié)點13和節(jié)點1)發(fā)送"已分簇"消息,并將節(jié)點10標(biāo)為成員節(jié)點;
[0084]針對節(jié)點13,收到節(jié)點4發(fā)送的"已分簇"消息,權(quán)值大于節(jié)點13的鄰居節(jié)點只有節(jié) 點4,已收到所有權(quán)值大于自身權(quán)值的鄰居節(jié)點發(fā)送的"已分簇"消息,繼續(xù)判斷節(jié)點13的鄰 居數(shù)量5大于maxn,向歐式距離最近的3個鄰居節(jié)點發(fā)送"簇頭存在"消息,即向節(jié)點15、節(jié)點 10和節(jié)點4分別發(fā)送"簇頭存在"消息;向節(jié)點3和節(jié)點2分別發(fā)送"已分簇"消息。同時節(jié)點13 標(biāo)記為簇頭節(jié)點。
[0085]針對節(jié)點14,收到節(jié)點4發(fā)送的"已分簇"消息,節(jié)點2的權(quán)值也大于節(jié)點14的權(quán)值, 但是未收到節(jié)點2發(fā)送的"已分簇"消息,所以繼續(xù)等待;
[0086]針對節(jié)點2,收到節(jié)點13發(fā)送的"已分簇"消息,之前收到節(jié)點4發(fā)送的"已分簇"消 息,已收到所有權(quán)值大于自身權(quán)值的鄰居節(jié)點發(fā)送的"已分簇"消息,繼續(xù)判斷節(jié)點2的鄰居 數(shù)量5大于maxn,向歐式距離最近的3個鄰居節(jié)點發(fā)送"簇頭存在"消息,即向節(jié)點14、節(jié)點13 和節(jié)點12分別發(fā)送"簇頭存在"消息;向節(jié)點4和節(jié)點11分別發(fā)送"已分簇"消息。同時節(jié)點2 標(biāo)記為簇頭節(jié)點。
[0087]針對節(jié)點3,收到節(jié)點13發(fā)出的"已分簇"消息,節(jié)點11的權(quán)值也大于節(jié)點3的權(quán)值, 但是未收到節(jié)點11發(fā)送的"已分簇"消息,所以繼續(xù)等待;
[0088]針對節(jié)點14,收到節(jié)點8發(fā)送的"已分簇"消息,未收到節(jié)點2發(fā)送的"已分簇"消息, 卻收到節(jié)點2發(fā)送的"簇頭存在"消息;則向所有鄰居節(jié)點(節(jié)點2,節(jié)點8和節(jié)點4)發(fā)送"已分 簇"消息,并將節(jié)點14標(biāo)為成員節(jié)點。
[0089] 針對節(jié)點15,收到節(jié)點13發(fā)出的"簇頭存在"消息;則向所有鄰居節(jié)點(節(jié)點3和節(jié) 點13)發(fā)送"已分簇"消息,并將節(jié)點15標(biāo)為成員節(jié)點;
[0090] 針對節(jié)點3,收到節(jié)點15發(fā)出的"已分簇"消息,但是未收到節(jié)點11發(fā)送的"已分簇" 消息,所以繼續(xù)等待;
[0091] 針對節(jié)點11,收到節(jié)點2發(fā)出的"已分簇"消息,已收到所有權(quán)值大于節(jié)點11權(quán)值的 鄰居節(jié)點發(fā)送的"已分簇"消息,繼續(xù)判斷節(jié)點11的鄰居數(shù)量4不大于maxn,向所有鄰居節(jié)點 節(jié)點12、節(jié)點2和節(jié)點3和節(jié)點5分別發(fā)送"簇頭存在"消息;同時節(jié)點11標(biāo)記為簇頭節(jié)點。
[0092] 針對節(jié)點12,收到節(jié)點2或節(jié)點11發(fā)送的"簇頭存在"消息;則向所有鄰居節(jié)點(節(jié) 點11和節(jié)點2)發(fā)送"已分簇"消息,并將節(jié)點12標(biāo)為成員節(jié)點;
[0093] 針對節(jié)點3,收到節(jié)點11發(fā)出的"簇頭存在"消息;則向所有鄰居節(jié)點(節(jié)點15,節(jié)點 13和節(jié)點11)發(fā)送"已分簇"消息,并將節(jié)點3標(biāo)為成員節(jié)點。
[0094] 針對節(jié)點5,收到節(jié)點11的"簇頭存在"消息;向鄰居節(jié)點11發(fā)送"已分簇"消息,并 將節(jié)點5標(biāo)為成員節(jié)點;
[0095] 步驟六、判斷標(biāo)記后的節(jié)點i是否為簇頭節(jié)點,如果是進(jìn)入步驟七,否則為成員節(jié) 點進(jìn)入步驟八;
[0096] 本實施中,節(jié)點2,節(jié)點4,節(jié)點9,節(jié)點11和節(jié)點13為簇頭節(jié)點;其余均為成員節(jié)點; 節(jié)點在自身和所有鄰居節(jié)點均完成選舉階段后開始進(jìn)入入簇階段。
[0097]步驟七、執(zhí)行簇頭節(jié)點i的入簇階段;
[0098]通過選舉階段已收集到自身和鄰居節(jié)點的信息,設(shè)未入簇鄰居節(jié)點的數(shù)量為d個, 簇頭初始狀態(tài)s為0,已入本簇的成員節(jié)點數(shù)量為η;開始接收消息,若收到已入簇消息則d - 1;若收到請求入簇消息則n+1,且回復(fù)允許入簇消息。直到η值達(dá)到新的門限值,則s+1,且向 所有未入簇鄰居節(jié)點發(fā)送狀態(tài)改變消息;當(dāng)d = 0或s = 3時,即所有鄰居成員節(jié)點完成入簇 或自身負(fù)載飽和時,該簇頭完成入簇階段。
[0099] 如圖4所示,具體步驟如下:
[0100] 步驟701、設(shè)置簇頭節(jié)點i的狀態(tài)81為0,已入簇的鄰居節(jié)點數(shù)量m為0,統(tǒng)計鄰居節(jié) 點中未入簇的成員節(jié)點,數(shù)量為d 1;
[0101] 步驟702、判斷節(jié)點i未入簇成員節(jié)點數(shù)量cU是否為0或簇頭狀態(tài)Sl是否為3,如果 是,簇頭節(jié)點i的入簇階段結(jié)束;否則進(jìn)入步驟703;
[0102] 步驟703、判斷節(jié)點i已入簇節(jié)點數(shù)量m是否大于等于當(dāng)前簇頭狀態(tài)Sl所對應(yīng)的門 限數(shù)量;如果是,則當(dāng)前簇頭狀態(tài) 81加1,并向所有鄰居節(jié)點發(fā)送包含當(dāng)前簇頭狀態(tài)信息的 "狀態(tài)改變"消息;返回步驟702;否則,進(jìn)入步驟704;
[0103] 當(dāng)前簇頭狀態(tài)Si的值分別為0,1,2和3;簇頭狀態(tài)0對應(yīng)的門限數(shù)量為小于最小規(guī) 模門限minn值;簇頭狀態(tài)1對應(yīng)的門限數(shù)量為大于等于最小規(guī)模門限minn值到小于最佳規(guī) 模門限pren值;簇頭狀態(tài)2對應(yīng)的門限數(shù)量為大于等于最佳規(guī)模門限pren值到小于最大規(guī) 模門限maxn值;簇頭狀態(tài)3對應(yīng)的門限數(shù)量為大于等于最大規(guī)模門限maxn值;
[0104]步驟704、判斷是否收到簇頭節(jié)點i的鄰居節(jié)點j發(fā)送的"已入簇"消息,如果是,則 未入簇成員節(jié)點個數(shù)cU減1,返回步驟702,否則進(jìn)入步驟705;
[0105]步驟705、判斷是否收到簇頭節(jié)點i的鄰居節(jié)點j發(fā)送的"請求入簇"消息,如果是, 貝1J已入簇的鄰居節(jié)點數(shù)量m加1,并向鄰居節(jié)點j發(fā)送"允許入簇"消息,返回步驟702;否則 返回步驟704;
[0106]步驟八、執(zhí)行成員節(jié)點i的入簇階段;
[0107]通過選舉階段已收集到自身和鄰居節(jié)點的信息,共有D個負(fù)載未飽和的簇頭;SPs〈 3;若D = 0,即不存在負(fù)載未飽和的簇頭,成員節(jié)點懸空;若D= 1,則直接發(fā)送入簇請求,否則 向s最小的鄰居簇頭中歐式距離最近的一個發(fā)送入簇請求;若收到回復(fù)的允許入簇信息,則 向其余鄰居簇頭發(fā)送已入簇信息,完成入簇;否則若收到狀態(tài)改變信息則更新D再次判斷。
[0108]如圖5所示,具體步驟如下:
[0109]步驟801、針對成員節(jié)點i,統(tǒng)計簇頭狀態(tài)Si不為3的簇頭節(jié)點數(shù)量為Di;
[0110]根據(jù)收到的"簇頭存在"消息統(tǒng)計鄰居節(jié)點中的簇頭節(jié)點數(shù)量;
[0111]步驟802、針對節(jié)點i,判斷簇頭節(jié)點數(shù)量01是否等于0,如果是,則將節(jié)點i標(biāo)記為 "懸空節(jié)點",節(jié)點i完成入簇階段;否則進(jìn)入步驟803;
[0112]步驟803、針對某個節(jié)點i,根據(jù)收到的"狀態(tài)改變"消息更新鄰居節(jié)點的狀態(tài)表,從 中找出鄰居節(jié)點中簇頭狀態(tài)最小的"簇頭節(jié)點"中歐式距離最近的節(jié)點j,向節(jié)點j發(fā)送"請 求入簇"消息;
[0113]步驟804、針對某個節(jié)點i,判斷是否收到節(jié)點j返回的"允許入簇"消息,如果是,向 所有其它鄰居發(fā)送"已入簇"消息,節(jié)點i完成入簇階段;否則進(jìn)入步驟805;
[0114] 步驟805、針對某個節(jié)點i,判斷是否收到節(jié)點j返回的"狀態(tài)改變"消息,如果是,進(jìn) 入步驟806,否則回到步驟804;
[0115] 步驟806、針對某個節(jié)點i,判斷是否收到鄰居節(jié)點發(fā)送的簇頭狀態(tài)更新為3的"狀 態(tài)改變"消息,如果是,簇頭狀態(tài)不為3的"簇頭節(jié)點"個數(shù)0 1減1,返回步驟802,否直接回到 步驟802;
[0116] 針對某個未入簇的成員節(jié)點m有鄰居簇頭節(jié)點η,當(dāng)節(jié)點η的已入簇節(jié)點數(shù)量sn達(dá) 到最大規(guī)模門限maxn值時,節(jié)點η的簇頭狀態(tài)將變?yōu)?,即節(jié)點η所在簇達(dá)到飽和,不再接收 其它節(jié)點的"請求入簇"消息,同時向節(jié)點m發(fā)送簇頭狀態(tài)更新為3的"狀態(tài)改變"消息,節(jié)點m 收到此消息后將簇頭狀態(tài)不為3的"簇頭節(jié)點"個數(shù)0?減1,即不再考慮加入節(jié)點η所在簇。該 情況在本實例中未出現(xiàn)。在實際情況中,因節(jié)點間關(guān)系的變化和門限值的設(shè)定的不確定,有 可能出現(xiàn)該情況。
[0117] 按照節(jié)點自身和所有鄰居節(jié)點完成選舉階段的時間順序,成員節(jié)點1、節(jié)點6、節(jié)點 7、節(jié)點10最先同時申請入簇,簇頭節(jié)點9最先允許入簇;然后成員節(jié)點8、節(jié)點12和節(jié)點14同 時申請入簇,簇頭節(jié)點2和節(jié)點4允許入簇;最后成員節(jié)點3、節(jié)點5和節(jié)點15同時申請入簇, 簇頭節(jié)點11和節(jié)點13允許入簇。
[0118] 具體過程如下:
[0119] 針對節(jié)點1,統(tǒng)計它的簇頭節(jié)點數(shù)量0:為2,分別為節(jié)點4和節(jié)點9;根據(jù)節(jié)點4和節(jié) 點9簇頭狀態(tài)相同,選擇歐式距離最近的節(jié)點4發(fā)送"請求入簇"消息;節(jié)點4未回應(yīng),節(jié)點1等 待;
[0120] 針對節(jié)點6的簇頭節(jié)點數(shù)量D6為1,只有節(jié)點9,發(fā)送"請求入簇"消息;
[0121] 針對節(jié)點7的簇頭節(jié)點數(shù)量D7為1,只有節(jié)點9,發(fā)送"請求入簇"消息;
[0122] 針對節(jié)點10,統(tǒng)計簇頭節(jié)點數(shù)量D1Q為2,分別為節(jié)點4和節(jié)點13;根據(jù)節(jié)點4和節(jié)點 13簇頭狀態(tài)相同,選擇歐式距離最近的節(jié)點4發(fā)送"請求入簇"消息;節(jié)點4未回應(yīng),節(jié)點10等 待;
[0123] 節(jié)點9初始簇頭狀態(tài)S9為0,已入該簇的鄰居節(jié)點數(shù)量n9為0,鄰居節(jié)點中未入簇的 成員節(jié)點d9為3,分別為節(jié)點6,節(jié)點7和節(jié)點1;當(dāng)前簇頭狀態(tài)S9所對應(yīng)的門限值為2,進(jìn)入步 驟705,收到節(jié)點6發(fā)送的"請求入簇"消息,將鄰居節(jié)點數(shù)量n 9加1,并向鄰居節(jié)點6發(fā)送"允 許入簇"消息;節(jié)點6發(fā)送"已入簇"消息給所有鄰居節(jié)點,d9減1,為2;節(jié)點6入簇階段完成; 節(jié)點9繼續(xù)等待下一個請求入簇的節(jié)點;
[0124] 節(jié)點9簇頭狀態(tài)S9為0,已入該簇的鄰居節(jié)點數(shù)量n9為1,鄰居節(jié)點中未入簇的成員 節(jié)點d 9為2,分別為節(jié)點7和節(jié)點1;當(dāng)前簇頭狀態(tài)S9所對應(yīng)的門限數(shù)量為2,進(jìn)入步驟705,收 到節(jié)點7發(fā)送的"請求入簇"消息,將鄰居節(jié)點數(shù)量n 9加1,變?yōu)?;并向鄰居節(jié)點7發(fā)送"允許 入簇"消息;節(jié)點7發(fā)送"已入簇"消息給所有鄰居節(jié)點,d9減1,為1;節(jié)點7入簇階段完成; [0 125]節(jié)點9返回步驟702繼續(xù),目前節(jié)點9已入簇節(jié)點數(shù)量Π 9等于當(dāng)前簇頭狀態(tài)S9所對應(yīng) 的門限值2;則當(dāng)前簇頭狀態(tài)S9加1,并向所有鄰居節(jié)點(節(jié)點6,節(jié)點7和節(jié)點1)發(fā)送包含當(dāng) 前簇頭狀態(tài)信息的"狀態(tài)改變"消息;再次返回步驟702,此時 S9加1后變?yōu)?,目前的n9(2)小 于當(dāng)前簇頭狀態(tài)S9所對應(yīng)的門限值3;節(jié)點9繼續(xù)等待下一個請求入簇的節(jié)點;
[0126] 然后成員節(jié)點8、節(jié)點12和節(jié)點14同時申請入簇,簇頭節(jié)點2和節(jié)點4允許入簇;
[0127] 針對節(jié)點8,統(tǒng)計簇頭節(jié)點數(shù)量D8為1,只有節(jié)點4,發(fā)送"請求入簇"消息;節(jié)點4未 回應(yīng),節(jié)點8等待;
[0128] 針對節(jié)點12,統(tǒng)計簇頭節(jié)點數(shù)量D12為2,分別為節(jié)點2和節(jié)點11;根據(jù)節(jié)點2和節(jié)點 11簇頭狀態(tài)相同,選擇歐式距離最近的節(jié)點11發(fā)送"請求入簇"消息;
[0129 ]針對節(jié)點14,統(tǒng)計簇頭節(jié)點數(shù)量D14為2,分別為節(jié)點2和節(jié)點4;根據(jù)節(jié)點2和節(jié)點4 簇頭狀態(tài)相同,選擇歐式距離最近的節(jié)點2發(fā)送"請求入簇"消息;
[0130]節(jié)點2初始簇頭狀態(tài)82為0,已入該簇的鄰居節(jié)點數(shù)量112為0,鄰居節(jié)點中未入簇的 成員節(jié)點如為2,分別為節(jié)點14和節(jié)點12;當(dāng)前簇頭狀態(tài)s2所對應(yīng)的門限值為2,進(jìn)入步驟 705,收到節(jié)點14發(fā)送的"請求入簇"消息,將鄰居節(jié)點數(shù)量1! 2加1,并向節(jié)點14發(fā)送"允許入 簇"消息給所有鄰居節(jié)點;節(jié)點14發(fā)送"已入簇"消息,辦減1,為1;節(jié)點14入簇階段完成;節(jié) 點2繼續(xù)等待下一個請求入簇的節(jié)點;
[0131]針對節(jié)點4,收到節(jié)點14發(fā)送的"已入簇"消息,d4減1;
[0132] 節(jié)點4初始簇頭狀態(tài)S4為0,已入該簇的鄰居節(jié)點數(shù)量ru為0,鄰居節(jié)點中未入簇的 成員節(jié)點d4為3,分別為節(jié)點10,節(jié)點8和節(jié)點1;因為節(jié)點14已經(jīng)入簇,所以未入簇的成員節(jié) 點就不包括節(jié)點14 了。當(dāng)前簇頭狀態(tài)S4所對應(yīng)的門限值為2,進(jìn)入步驟705,收到節(jié)點10發(fā)送 的"請求入簇"消息,將鄰居節(jié)點數(shù)量n4加1,并向鄰居節(jié)點10發(fā)送"允許入簇"消息;節(jié)點10 發(fā)送"已入簇"消息給所有鄰居節(jié)點,d 4減1,為2;節(jié)點10入簇階段完成;節(jié)點4繼續(xù)等待下一 個請求入簇的節(jié)點;
[0133] 針對節(jié)點13,收到節(jié)點10發(fā)送的"已入簇"消息,d13減1;
[0134] 節(jié)點4簇頭狀態(tài)S4為0,已入該簇的鄰居節(jié)點數(shù)量n4為1,鄰居節(jié)點中未入簇的成員 節(jié)點d 4為2,分別為節(jié)點8和節(jié)點1;當(dāng)前簇頭狀態(tài)S4所對應(yīng)的門限數(shù)量為2,進(jìn)入步驟705,收 到節(jié)點8發(fā)送的"請求入簇"消息,將鄰居節(jié)點數(shù)量n 4加1,變?yōu)?;并向鄰居節(jié)點8發(fā)送"允許 入簇"消息;節(jié)點8發(fā)送"已入簇"消息給所有鄰居節(jié)點,d4減1,為1;節(jié)點8入簇階段完成;節(jié) 點4繼續(xù)返回步驟702,目前節(jié)點4已入簇節(jié)點數(shù)量n 4等于當(dāng)前簇頭狀態(tài)S4所對應(yīng)的門限值2; 則當(dāng)前簇頭狀態(tài)S4加1,并向所有鄰居節(jié)點(節(jié)點10,節(jié)點8、節(jié)點1、節(jié)點13、節(jié)點14、節(jié)點2) 發(fā)送包含當(dāng)前簇頭狀態(tài)信息的"狀態(tài)改變"消息;再次返回步驟702,此時 S4加1后ru(2)小于 當(dāng)前簇頭狀態(tài)S4所對應(yīng)的門限值3;節(jié)點4繼續(xù)等待下一個請求入簇的節(jié)點;
[0135] 針對節(jié)點1,均收到節(jié)點4和節(jié)點9發(fā)送的"狀態(tài)改變"消息;鄰居節(jié)點的簇頭狀態(tài)相 同(均為1 ),選擇向歐式距離較近的節(jié)點4發(fā)送"請求入簇"消息;
[0136] 節(jié)點4簇頭狀態(tài)S4為1,已入該簇的鄰居節(jié)點數(shù)量ru為2,分別為節(jié)點8和節(jié)點10,鄰 居節(jié)點中未入簇的成員節(jié)點d4為1,為節(jié)點1;當(dāng)前簇頭狀態(tài)S4所對應(yīng)的門限數(shù)量為3,進(jìn)入步 驟705,收到節(jié)點1發(fā)送的"請求入簇"消息,將鄰居節(jié)點數(shù)量n 4加1,變?yōu)?;并向鄰居節(jié)點1發(fā) 送"允許入簇"消息;節(jié)點1發(fā)送"已入簇"消息給所有鄰居節(jié)點,d4減1,為0,完成入簇階段;
[0137] 針對節(jié)點9,收到節(jié)點1發(fā)送的"已入簇"消息,d9減1,變?yōu)?,完成入簇階段;
[0138] 最后成員節(jié)點3、節(jié)點5和節(jié)點15同時申請入簇,簇頭節(jié)點11和節(jié)點13允許入簇。
[0139] 針對節(jié)點3,統(tǒng)計簇頭節(jié)點數(shù)量D3為2,分別為節(jié)點11和節(jié)點13;根據(jù)節(jié)點11和節(jié)點 13簇頭狀態(tài)相同,選擇歐式距離最近的節(jié)點13發(fā)送"請求入簇"消息;
[0140] 針對節(jié)點5的簇頭節(jié)點數(shù)量他為1,只有節(jié)點11,發(fā)送"請求入簇"消息;
[0141] 針對節(jié)點15的簇頭節(jié)點數(shù)量D15為1,只有節(jié)點13,發(fā)送"請求入簇"消息;
[0142] 節(jié)點11初始簇頭狀態(tài)sn為0,已入該簇的鄰居節(jié)點數(shù)量nn為0,鄰居節(jié)點中未入簇 的成員節(jié)點dn為3,分別為節(jié)點12,節(jié)點3和節(jié)點5;當(dāng)前簇頭狀態(tài)sn所對應(yīng)的門限值為2,進(jìn) 入步驟705,收到節(jié)點12發(fā)送的"請求入簇"消息,將鄰居節(jié)點數(shù)量nn加1,并向鄰居節(jié)點12發(fā) 送"允許入簇"消息;節(jié)點12發(fā)送"已入簇"消息給所有鄰居節(jié)點,dn減1,為2;節(jié)點12入簇階 段完成;節(jié)點11繼續(xù)等待下一個請求入簇的節(jié)點;
[0143] 針對節(jié)點2,收到節(jié)點12發(fā)送的"已入簇"消息,山減1,變?yōu)?,完成入簇階段;
[0144] 節(jié)點11簇頭狀態(tài)S11為0,已入該簇的鄰居節(jié)點數(shù)量nn為1,鄰居節(jié)點中未入簇的成 員節(jié)點dn為2,分別為節(jié)點3和節(jié)點5;當(dāng)前簇頭狀態(tài)sn所對應(yīng)的門限數(shù)量為2,進(jìn)入步驟 705,收到節(jié)點5發(fā)送的"請求入簇"消息,將鄰居節(jié)點數(shù)量nn加1,變?yōu)?;并向鄰居節(jié)點5發(fā)送 "允許入簇"消息;節(jié)點5發(fā)送"已入簇"消息給所有鄰居節(jié)點,dn減1,為1;節(jié)點5入簇階段完 成;節(jié)點11繼續(xù)返回步驟702,目前節(jié)點11已入簇節(jié)點數(shù)量nil等于當(dāng)前簇頭狀態(tài)S11所對應(yīng) 的門限值2;則當(dāng)前簇頭狀態(tài)sn加1,并向所有鄰居節(jié)點發(fā)送包含當(dāng)前簇頭狀態(tài)信息的"狀態(tài) 改變"消息;再次返回步驟702,此時sn加1后nn(2)小于當(dāng)前簇頭狀態(tài)sn所對應(yīng)的門限值3; 繼續(xù)等待下一個請求入簇的節(jié)點;
[0145] 節(jié)點13初始簇頭狀態(tài)s13為0,已入該簇的鄰居節(jié)點數(shù)量n13為0,鄰居節(jié)點中未入簇 的成員節(jié)點d 13為2,分別為節(jié)點3和節(jié)點15;因為節(jié)點10已經(jīng)入簇,故節(jié)點13的未入簇鄰居不 包括節(jié)點10;當(dāng)前簇頭狀態(tài)s 13所對應(yīng)的門限值為2,進(jìn)入步驟705,收到節(jié)點3發(fā)送的"請求入 簇"消息,將鄰居節(jié)點數(shù)量m3加1,并向鄰居節(jié)點3發(fā)送"允許入簇"消息,節(jié)點3發(fā)送"已入簇" 消息給所有鄰居節(jié)點,di3減1,為1;節(jié)點3入簇階段完成;節(jié)點13繼續(xù)等待下一個請求入簇的 節(jié)點;
[0146] 針對節(jié)點11,收到節(jié)點3發(fā)送的"已入簇"消息,dn減1,變?yōu)?,完成入簇階段;
[0147] 節(jié)點13簇頭狀態(tài)s13為0,已入該簇的鄰居節(jié)點數(shù)量n13為1,鄰居節(jié)點中未入簇的成 員節(jié)點d 13為1,為節(jié)點15;當(dāng)前簇頭狀態(tài)s13所對應(yīng)的門限數(shù)量為2,進(jìn)入步驟705,收到節(jié)點 15發(fā)送的"請求入簇"消息,將鄰居節(jié)點數(shù)量n 13加1,變?yōu)?;并向鄰居節(jié)點15發(fā)送"允許入簇" 消息;節(jié)點15發(fā)送"已入簇"消息給所有鄰居節(jié)點,d13減1,為0,完成入簇階段。
[0148] 最終形成的簇如下:
[0149] 簇頭2的成員為節(jié)點14;簇頭4的成員為節(jié)點10,節(jié)點1和節(jié)點8;簇頭9的成員為節(jié) 點6和節(jié)點7;簇頭11的成員為節(jié)點5和節(jié)點12;簇頭13的成員為節(jié)點3和節(jié)點15。
[0150] 本發(fā)明中的門限不是預(yù)設(shè)值,而是預(yù)設(shè)規(guī)則,具體門限值由每個簇頭根據(jù)規(guī)則自 適應(yīng)生成。成員節(jié)點入簇不是看分簇信息達(dá)到先后,而是根據(jù)所有鄰居簇頭所處狀態(tài)(門限 階段)來選擇。
[0151] 本發(fā)明在門限法和加權(quán)法的基礎(chǔ)上提出,針對無定形扁平化自組織無線網(wǎng)絡(luò)中的 同質(zhì)節(jié)點組成的網(wǎng)絡(luò)結(jié)構(gòu)。如圖6所示,為本發(fā)明ALB算法與A0W算法的負(fù)載平衡因子(LBF, Load Balancing Factor)隨通訊距離的變化情況。實驗環(huán)境為:假設(shè)網(wǎng)絡(luò)中的100個節(jié)點均 勻分布在一個10002單位距離的區(qū)域中,通訊距離從200變化至500,既要保證節(jié)點之間全聯(lián) 通,又要使節(jié)點之間不完全一一互為鄰居節(jié)點。因為LBF值僅反應(yīng)簇頭對成員數(shù)量的負(fù)載情 況,所以實驗中設(shè)置為節(jié)點初始狀態(tài)相同。
[0152] 從圖中可見,兩個算法的LBF都隨著節(jié)點個數(shù)的增多、通訊距離的增大而呈下降趨 勢。這是因為節(jié)點個數(shù)會使簇的數(shù)量增加,而通訊距離的增大雖然會減小簇的數(shù)量,但也會 使各個簇的成員數(shù)差距增大,故而LBF會減小。而ALB算法在各個階段的LBF值都要高于A0W 算法,即負(fù)載均衡性高于A0W算法。
【主權(quán)項】
1. 一種基于主動門限設(shè)置的自適應(yīng)分簇方法,其特征在于,具體步驟如下: 步驟一、將無線網(wǎng)絡(luò)中的每個終端作為一個節(jié)點,對每個節(jié)點尋找鄰居節(jié)點,并按歐式 距離從小到大排列; 步驟二、每個節(jié)點通過加權(quán)法計算自身權(quán)值,并將自身權(quán)值發(fā)送給鄰居節(jié)點; 步驟三、每個節(jié)點判斷自身權(quán)值是否大于所有鄰居節(jié)點的權(quán)值,如果是,進(jìn)入步驟五, 否則進(jìn)入步驟四; 步驟四、針對某個節(jié)點i,根據(jù)鄰居節(jié)點發(fā)送的"簇頭存在"消息或"已分簇"消息分別對 節(jié)點i進(jìn)行標(biāo)記; 步驟五、針對節(jié)點i,設(shè)定并根據(jù)鄰居節(jié)點的數(shù)量門限,發(fā)送"簇頭存在"消息或"已分 簇"消息,同時對節(jié)點i進(jìn)行標(biāo)記; 步驟六、判斷標(biāo)記后的節(jié)點i是否為簇頭節(jié)點,如果是進(jìn)入步驟七,否則為成員節(jié)點進(jìn) 入步驟八; 步驟七、執(zhí)行簇頭節(jié)點的入簇階段; 步驟八、執(zhí)行成員節(jié)點的入簇階段。2. 如權(quán)利要求1所述的一種基于主動門限設(shè)置的自適應(yīng)分簇方法,其特征在于,所述的 步驟四具體為: 步驟401、針對節(jié)點i,判斷是否有鄰居節(jié)點發(fā)送"簇頭存在"消息,如果是,進(jìn)入步驟 402;否則,進(jìn)入步驟403; 步驟402、節(jié)點i向所有鄰居節(jié)點發(fā)送"已分簇"消息,并將節(jié)點i標(biāo)為成員節(jié)點;進(jìn)入步 驟六; 步驟403、判斷是否權(quán)值大于自身的全部鄰居節(jié)點均發(fā)送"已分簇"消息,如果是,進(jìn)入 步驟五,否則,返回步驟401。3. 如權(quán)利要求1所述的一種基于主動門限設(shè)置的自適應(yīng)分簇方法,其特征在于,所述的 步驟五具體為: 步驟501、各個節(jié)點自適應(yīng)生成三個門限:最小規(guī)模門限minn、最佳規(guī)模門限pren和最 大規(guī)模門限maxn; 步驟502、判斷節(jié)點i的鄰居數(shù)量η是否超出minn或者超出maxn,如果超出minn進(jìn)入步驟 503,否則超出maxn進(jìn)入步驟504; 步驟503、判斷節(jié)點i的鄰居數(shù)量η是否小于minn,如果是,向鄰居節(jié)點發(fā)送"已分簇"消 息,并將節(jié)點i標(biāo)為成員節(jié)點;否則將節(jié)點i標(biāo)為簇頭節(jié)點; 步驟504判斷節(jié)點i的鄰居數(shù)量η是否大于maxn,如果是,根據(jù)最佳規(guī)模門限pren數(shù)量, 向歐式距離最近的pren個鄰居節(jié)點發(fā)送"簇頭存在"消息,向其余節(jié)點發(fā)送"已分簇"消息, 將節(jié)點i標(biāo)為簇頭節(jié)點;否則,向所有鄰居節(jié)點發(fā)送"簇頭存在"消息,將節(jié)點i標(biāo)為簇頭節(jié) 點。4. 如權(quán)利要求1所述的一種基于主動門限設(shè)置的自適應(yīng)分簇方法,其特征在于,所述的 步驟七具體為: 步驟701、設(shè)置簇頭節(jié)點i的狀態(tài)81為0,已入簇的鄰居節(jié)點數(shù)量m為0,統(tǒng)計鄰居節(jié)點中 未入簇的成員節(jié)點,數(shù)量為CU; 步驟702、判斷節(jié)點i未入簇成員節(jié)點數(shù)量Cl1是否為0或簇頭狀態(tài)S1是否為3,如果是,簇 頭節(jié)點i的入簇階段結(jié)束;否則進(jìn)入步驟703; 步驟703、判斷節(jié)點i已入簇節(jié)點數(shù)量m是否大于等于當(dāng)前簇頭狀態(tài)Si所對應(yīng)的門限數(shù) 量;如果是,則當(dāng)前簇頭狀態(tài)81加 1,并向所有鄰居節(jié)點發(fā)送包含當(dāng)前簇頭狀態(tài)信息的"狀態(tài) 改變"消息;返回步驟702;否則,進(jìn)入步驟704; 步驟704、判斷是否收到簇頭節(jié)點i的鄰居節(jié)點j發(fā)送的"已入簇"消息,如果是,則未入 簇成員節(jié)點個數(shù)cU減1,返回步驟702,否則進(jìn)入步驟705; 步驟705、判斷是否收到簇頭節(jié)點i的鄰居節(jié)點j發(fā)送的"請求入簇"消息,如果是,則已 入簇的鄰居節(jié)點數(shù)量m加1,并向鄰居節(jié)點j發(fā)送"允許入簇"消息,返回步驟702;否則返回 步驟704。5. 如權(quán)利要求4所述的一種基于主動門限設(shè)置的自適應(yīng)分簇方法,其特征在于,所述的 簇頭狀態(tài)si的值分別為0,1,2和3;簇頭狀態(tài)0對應(yīng)的門限數(shù)量為小于最小規(guī)模門限minn值; 簇頭狀態(tài)1對應(yīng)的門限數(shù)量為大于等于最小規(guī)模門限minn值到小于最佳規(guī)模門限pren值; 簇頭狀態(tài)2對應(yīng)的門限數(shù)量為大于等于最佳規(guī)模門限pren值到小于最大規(guī)模門限maxn值; 簇頭狀態(tài)3對應(yīng)的門限數(shù)量為大于等于最大規(guī)模門限maxn值。6. 如權(quán)利要求1所述的一種基于主動門限設(shè)置的自適應(yīng)分簇方法,其特征在于,所述的 步驟八具體為: 步驟801、針對成員節(jié)點i,統(tǒng)計簇頭狀態(tài)si不為3的簇頭節(jié)點數(shù)量為Di; 步驟802、針對節(jié)點i,判斷簇頭節(jié)點數(shù)量01是否等于0,如果是,則將節(jié)點i標(biāo)記為"懸空 節(jié)點",節(jié)點i完成入簇階段;否則進(jìn)入步驟803; 步驟803、針對某個節(jié)點i,根據(jù)收到的"狀態(tài)改變"消息更新鄰居節(jié)點的狀態(tài)表,從中找 出鄰居節(jié)點中簇頭狀態(tài)最小的"簇頭節(jié)點"中歐式距離最近的節(jié)點j,向節(jié)點j發(fā)送"請求入 簇"消息; 步驟804、針對某個節(jié)點i,判斷是否收到節(jié)點j返回的"允許入簇"消息,如果是,向所有 其它鄰居發(fā)送"已入簇"消息,節(jié)點i完成入簇階段;否則進(jìn)入步驟805; 步驟805、針對某個節(jié)點i,判斷是否收到節(jié)點j返回的"狀態(tài)改變"消息,如果是,進(jìn)入步 驟806,否則回到步驟804; 步驟806、針對某個節(jié)點i,判斷是否收到鄰居節(jié)點發(fā)送的簇頭狀態(tài)更新為3的"狀態(tài)改 變"消息,如果是,簇頭狀態(tài)不為3的"簇頭節(jié)點"個數(shù)01減1,返回步驟802,否直接回到步驟 802〇
【文檔編號】H04L12/721GK105898821SQ201610325841
【公開日】2016年8月24日
【申請日】2016年5月17日
【發(fā)明人】余建國, 丁雅博, 趙倫, 陳雷, 汪鈥柱, 王鵬培
【申請人】北京郵電大學(xué)