王出航, 沈瑋娜, 胡黃水
(1. 長春師范大學(xué) 計算機科學(xué)與技術(shù)學(xué)院 , 長春 130032; 2. 長春工業(yè)大學(xué) 計算機科學(xué)與工程學(xué)院, 長春 130012)
無線傳感器網(wǎng)絡(luò)廣泛應(yīng)用于環(huán)境監(jiān)測、 應(yīng)急反應(yīng)、 軍事監(jiān)控以及太空探索等領(lǐng)域[1-2]. 有效節(jié)能是無線傳感器網(wǎng)絡(luò)需亟待解決的問題, 而分簇是其有效方法之一[3-4]. 可將無線傳感器網(wǎng)絡(luò)中地理位置相近的節(jié)點分成不同的簇, 每個簇中選出一個簇頭負(fù)責(zé)收集簇內(nèi)成員數(shù)據(jù)進(jìn)行融合, 然后發(fā)送至基站. 分簇算法可提高網(wǎng)絡(luò)的可擴展性和能量效率, 減小路由延遲, 延長網(wǎng)絡(luò)生命周期[2]. LEACH(low energy adaptive clustering hierarchy)[5]是最早被提出的一種經(jīng)典分簇算法, 其通過周期性隨機選擇簇頭節(jié)點, 產(chǎn)生合適比例的簇頭, 從而均衡網(wǎng)絡(luò)能耗. 但LEACH算法中簇頭直接與基站通信, 且低能量的節(jié)點可能被選為簇頭, 導(dǎo)致簇頭尤其是遠(yuǎn)離基站的簇頭能量耗盡很快. 為了解決LEACH算法存在的缺陷, DSBCA算法[6]基于剩余能量、 節(jié)點連通密度和選舉時間參數(shù)計算節(jié)點權(quán)值, 權(quán)值大的節(jié)點被選為簇頭, 然后根據(jù)簇頭與基站的距離及其連通密度計算通信半徑, 組織簇成員, 從而形成更平衡的簇結(jié)構(gòu), 并延長網(wǎng)絡(luò)的生命周期. 但DSBCA算法中簇頭仍直接與基站通信, 導(dǎo)致簇頭能量耗盡很快, 且簇頭的更換僅在簇內(nèi)進(jìn)行, 導(dǎo)致能耗不均衡. 文獻(xiàn)[7]提出了一種LEACH優(yōu)化分簇算法, 在簇頭選舉時考慮節(jié)點的剩余能量, 使剩余能量高的節(jié)點成為簇頭的幾率變大, 并通過直線方程求出簇頭的下一跳路由, 通過多跳的方式與基站進(jìn)行通信, 提高簇頭能量利用效率的同時增強了網(wǎng)絡(luò)可靠性. 但該算法中簇頭間采用多跳方式傳輸數(shù)據(jù), 導(dǎo)致鄰近基站的簇頭承擔(dān)較多數(shù)據(jù)中繼任務(wù)而過早能量耗盡, 產(chǎn)生“熱點”問題. 以上均勻分簇方法通常適于節(jié)點分布均勻的無線傳感器網(wǎng)絡(luò), 而實際部署的無線傳感器網(wǎng)絡(luò)通常節(jié)點分布不均勻.
為了解決均勻分簇算法存在的“熱點”等問題, 文獻(xiàn)[8]根據(jù)節(jié)點剩余能量、 節(jié)點到基站距離、 節(jié)點度和節(jié)點到簇頭距離等因素選擇簇頭, 從而將網(wǎng)絡(luò)劃分為大小不等的簇, 然后簇頭基于剩余能量、 到基站距離構(gòu)造基于最小生成樹的最優(yōu)傳輸路徑, 通過簇內(nèi)單跳、 簇間多跳的通信方式將數(shù)據(jù)傳輸?shù)交? 文獻(xiàn)[3]提出一種改進(jìn)的非均勻分簇路由算法WUCH, 考慮節(jié)點剩余能量和節(jié)點到基站的距離選舉簇頭, 將網(wǎng)絡(luò)分為不同規(guī)模的簇, 在規(guī)模較大的簇內(nèi)選取雙簇頭, 主簇頭負(fù)責(zé)收集簇內(nèi)數(shù)據(jù), 副簇頭負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù), 在數(shù)據(jù)傳輸階段構(gòu)造基于改進(jìn)的最小二叉樹進(jìn)行數(shù)據(jù)多跳傳輸, 減小規(guī)模較大簇的簇頭節(jié)點收集與傳輸數(shù)據(jù)的負(fù)擔(dān), 從而減小節(jié)點能量消耗. 上述算法中采用不同的競爭半徑產(chǎn)生不均勻的簇, 競爭半徑內(nèi)最優(yōu)的節(jié)點稱為簇頭, 但計算競爭半徑時很難確定最優(yōu)參數(shù). 此外, 基于競爭的簇頭選舉會增加網(wǎng)絡(luò)開銷, 而且算法采用的路由方法比傳統(tǒng)的最短路徑多跳方法產(chǎn)生更多的信標(biāo)報文. 為了處理簇頭競爭半徑計算中可能出現(xiàn)的不確定性, 文獻(xiàn)[9]提出了模糊能量感知的非均勻分簇(EAUCF)算法. EAUCF算法將節(jié)點剩余能量和節(jié)點與基站距離輸入模糊推理系統(tǒng), 計算得到節(jié)點的競選半徑, 使競選半徑范圍內(nèi)剩余能量高的節(jié)點成為簇頭, 成簇時非簇頭節(jié)點加入與簇頭距離近的簇, 仿真結(jié)果表明, 該算法具有良好的性能, 能有效延長網(wǎng)絡(luò)生命周期. 但EAUCF算法中, 當(dāng)靠近基站節(jié)點較多時, 將導(dǎo)致靠近基站的簇頭耗能極快. 為了克服該問題, 文獻(xiàn)[10]提出了一種改進(jìn)的EAUCF算法----FBUC算法. 上述算法都是基于通信半徑來約束簇大小, 無法確保最優(yōu)的簇成員數(shù), 從而導(dǎo)致簇內(nèi)通信負(fù)載不均衡. 針對該問題, 文獻(xiàn)[4]提出了一種基于模糊方法的負(fù)載均衡的非均勻分簇算法DUCF. DUCF算法中的模糊推理系統(tǒng)利用剩余能量、 節(jié)點度及節(jié)點與基站距離選舉簇頭, 輸出為節(jié)點成為簇頭的機會和簇大小值, 從而使不同簇具有不同簇大小以保證負(fù)載均衡, 并提高網(wǎng)絡(luò)生命周期.
上述算法都假設(shè)節(jié)點只有在能量耗盡時才死亡. 而實際上, 無論簇頭還是成員節(jié)點由于多種原因(如電源不穩(wěn)、 物理損壞等)均可能失效和工作異常, 而一旦簇頭出現(xiàn)故障, 則其不能正確收集和轉(zhuǎn)發(fā)數(shù)據(jù), 從而極大降低網(wǎng)絡(luò)性能. 文獻(xiàn)[11]采用備份簇頭解決該問題, 一旦簇頭發(fā)現(xiàn)其出現(xiàn)故障或能力低于某個級別, 則由備份簇頭接管其職責(zé), 使成簇更安全. 文獻(xiàn)[12]提出了一種采用備份簇頭列表的方法來容錯, 當(dāng)發(fā)現(xiàn)簇頭發(fā)生故障時, 從備份簇頭列表中選出最優(yōu)的節(jié)點成為簇頭.
本文融合文獻(xiàn)[4]和文獻(xiàn)[12]的思想, 提出一種分布式模糊控制的非均勻容錯分簇(distributed fuzzy controller based unequal clustering algorithm with fault tolerance, DFUC)算法. 考慮節(jié)點的剩余能量、 節(jié)點中心度以及節(jié)點與基站距離, 運用模糊控制器和節(jié)點本地信息計算節(jié)點成為簇頭的機會和簇大小值, 使具有最大機會值的節(jié)點成為簇頭, 并根據(jù)簇大小值決定某成員節(jié)點是否加入, 從而形成大小合適的簇. 在數(shù)據(jù)傳輸階段, 采用TDMA(time division multiple access)方式進(jìn)行簇內(nèi)數(shù)據(jù)的收集, 并容忍簇頭和成員節(jié)點的臨時和永久故障, 簇間采用最短路徑多跳方式進(jìn)行數(shù)據(jù)傳輸, 當(dāng)簇頭出現(xiàn)永久故障時, 最優(yōu)的備份簇頭成為簇頭, 成員節(jié)點出現(xiàn)永久故障時, 將該節(jié)點從網(wǎng)絡(luò)中移除.
DFUC算法通過形成大小合適的簇均衡能量消耗, 通過TMDA機制容錯, 從而延長整個網(wǎng)絡(luò)的生命周期. 為簡化, 假設(shè)無線傳感器網(wǎng)絡(luò)具有如下性質(zhì):
1) 網(wǎng)絡(luò)部署后所有節(jié)點都是靜態(tài)的, 節(jié)點能量受限而基站能量不受限;
2) 網(wǎng)絡(luò)節(jié)點同構(gòu), 即具有相同的初始能量, 相同的處理、 存儲、 發(fā)送和接收能力;
3) 節(jié)點間可通過接收信號強度指示RSSI計算近似距離;
4) 網(wǎng)絡(luò)部署開始時, 基站先向全網(wǎng)節(jié)點發(fā)送HELLO報文, 然后每個節(jié)點以其通信半徑R廣播自己的HELLO報文, 基于這些交互信息, 每個節(jié)點計算得到與基站的距離及節(jié)點中心度;
5) 每個節(jié)點具有唯一的標(biāo)識, 則節(jié)點集可表示為S={s1,s2,…,sn}, 其中si表示第i個節(jié)點.
為便于性能分析和比較, 本文采用文獻(xiàn)[3-4]和文獻(xiàn)[12]中的能量模型, 即
對于分簇?zé)o線傳感器網(wǎng)絡(luò), 在數(shù)據(jù)傳輸階段的能量消耗主要有兩個因素, 即簇內(nèi)傳輸和簇間傳輸. 其中簇內(nèi)傳輸?shù)哪芰肯腅intra由三部分構(gòu)成, 即
Eintra=EMemToCh+EChrx+EDA,
(3)
其中:EMemToCh表示成員節(jié)點與簇頭通信的能量消耗;EChrx表示簇頭從其簇成員節(jié)點接收數(shù)據(jù)消耗的能量;EDA表示數(shù)據(jù)融合的能量消耗. 成員節(jié)點與簇頭通信的能量消耗EMemToCh為
(4)
其中:n表示網(wǎng)絡(luò)的簇頭數(shù);mi表示某簇i內(nèi)的成員節(jié)點數(shù), 每個簇可能都不相等;Etx表示第i個簇內(nèi)節(jié)點j發(fā)送數(shù)據(jù)到其簇頭消耗的能量. 簇頭從其簇成員節(jié)點接收數(shù)據(jù)消耗的能量EChrx為
(5)
其中:mi表示第i個簇內(nèi)成員節(jié)點數(shù);n表示網(wǎng)絡(luò)內(nèi)簇的數(shù)量;Erx表示接收能量. 數(shù)據(jù)融合的能量消耗EDA為
(6)
其中:k表示數(shù)據(jù)位數(shù);EpDb表示單位數(shù)據(jù)融合消耗的能量.
同理, 簇間傳輸?shù)哪芰肯挠嬎阋舶▋煞N情況, 如果簇頭直接與基站通信, 則其能量消耗Esinter為
Esinter=Etx(CH,BS).
(7)
簇頭通過多跳方式與基站通信時的能量消耗Eminter為
(8)
其中:nm表示簇頭到基站的跳數(shù);CH(i)表示從簇頭到基站多跳路徑上的第i個簇頭.
采用Mandani模糊控制器[4,9-10], 結(jié)構(gòu)如圖1所示. 由圖1可見, 清晰輸入值剩余能量、 節(jié)點中心度、 節(jié)點到基站的距離被模糊推理引擎通過給定的隸屬度函數(shù)模糊化為合適的語言變量, 然后模糊輸入變量根據(jù)IF-THEN規(guī)則庫在推理系統(tǒng)中進(jìn)行控制處理. 輸出量為成為簇頭機會(chance)和簇大小(size), 模糊推理引擎的輸出仍然是模糊語言變量, 通過采用質(zhì)心法解模糊, 從而獲得清晰輸出量“機會”和“大小”值.
圖1 模糊控制器結(jié)構(gòu)Fig.1 Structure of fuzzy controller
DFUC算法采用模糊控制器計算節(jié)點成為簇頭的機會和簇大小值, 使具有最大機會值的節(jié)點成為簇頭, 并根據(jù)簇大小值形成所需規(guī)模的簇, 同時按各成員成為簇頭的機會大小值排序, 構(gòu)建備份簇頭列表. 采用TDMA方式進(jìn)行簇內(nèi)數(shù)據(jù)的收集, 當(dāng)簇頭出現(xiàn)永久故障時, 最優(yōu)的備份簇頭成為新的簇頭. 算法分為簇形成階段和數(shù)據(jù)傳輸階段.
在簇形成階段, 網(wǎng)絡(luò)中的所有節(jié)點都有機會成為簇頭, 且每個節(jié)點在該階段都運行如圖1所示的模糊控制器, 得到成為簇頭的機會和簇大小值. 該階段分成兩個子階段: 簇頭選舉子階段和簇建立子階段.
2.1.1 簇頭選舉子階段 網(wǎng)絡(luò)中的所有節(jié)點先被指定為簇成員節(jié)點, 然后為“剩余能量”、 “節(jié)點中心度”、 “節(jié)點到基站距離”這3個輸入變量指定模糊語言變量, 其中剩余能量“Energy”和節(jié)點中心度“centrality”的模糊語言變量為“低”、 “中”、 “高”(low, middle, high); 節(jié)點到基站距離“Distance”的模糊語言變量為“近”、 “中”、 “遠(yuǎn)”(near, middle, far). 且“低”、 “近”、 “高”、 “遠(yuǎn)”采用梯形隸屬函數(shù), 模糊語言“中”采用三角形隸屬函數(shù). 這些隸屬度函數(shù)基于文獻(xiàn)[4,9-10]的實驗結(jié)果及本文的實驗結(jié)果. 模糊輸出變量“成為簇頭的機會”“Chance”采用9個模糊變量, 即“很低”、 “低”、 “較低”、 “低中”、 “中”、 “高中”、 “較高”、 “高”、 “很高”(very low, low, rather low, low middle, middle, high middle, rather high, high, very high). 其中“很低”和“很高”采用梯形隸屬度函數(shù), 其他輸出語言變量采用三角形隸屬度函數(shù). 第二個輸出變量“簇大小”“Size”采用7個模糊語言變量, 分別是“很小”、 “小”、 “較小”、 “中”、 “較大”、 “大”、 “很大”(very small, small, rather small, middle, rather large, large, very large). 其中“很小”和“很大”采用梯形隸屬度函數(shù), 其他均采用三角形隸屬度函數(shù).
清晰輸入值先被模糊推理引擎通過給定的隸屬度函數(shù)模糊化為合適的語言變量, 然后模糊輸入變量通過IF-THEN規(guī)則庫進(jìn)行處理. 共有27條規(guī)則, 表1列出了DFUC算法的模糊IF-THEN規(guī)則. 模糊推理引擎的輸出仍是一個模糊語言變量, 采用質(zhì)心法解模糊, 從而獲得清晰輸出量“機會”和“大小”.
2.1.2 簇建立子階段 DFUC算法執(zhí)行過程中, 節(jié)點可能處于成員、 簇頭和備份簇頭3種狀態(tài)之一. 部署后, 所有節(jié)點處于成員狀態(tài), 并啟動模糊控制器計算其成為簇頭的“機會”和簇“大小”. 之后所有節(jié)點向其通信半徑內(nèi)的鄰居節(jié)點廣播簇頭競爭報文CH_CP, CH_CP報文由報文類型、 節(jié)點ID及“機會”值構(gòu)成, 其中報文類型表明這是一個簇頭競爭報文. 具有比其他節(jié)點更高“機會”值的節(jié)點成為簇頭, 并廣播競爭成功報文CH_SUCCESS, CH_SUCCESS報文由報文類型、 節(jié)點ID構(gòu)成. 節(jié)點收到CH_SUCCESS后, 更新其附近簇頭列表, 并向距其最近的簇頭發(fā)送加入簇報文CH_JOIN, 其由報文類型、 節(jié)點ID及簇頭ID構(gòu)成, 并將該簇頭從簇頭列表中刪除. 接收到CH_JOIN報文的簇頭檢查其“大小”以判斷是否接收新成員. 如果簇成員節(jié)點小于“大小”值, 發(fā)回成功加入報文CH_JOIN_SUCCESS, 其由報文類型、 節(jié)點ID、 成員ID及分配的時隙構(gòu)成, 并將該成員依其機會值大小加入備份簇頭列表. 否則, 發(fā)回加入失敗報文CH_JOIN_FAIL, 包括報文類型、 節(jié)點ID和成員ID構(gòu)成, 表明沒有新成員節(jié)點的空間了. 當(dāng)某個節(jié)點接收到CH_JOIN_FAIL報文時, 如其簇頭列表非空, 則發(fā)送CH_JOIN報文給下一個最近的簇頭, 直至其加入到某個簇. 最差情況下, 簇頭列表空時節(jié)點仍無法加入到某簇, 則其自身選為簇頭. 簇形成后, 根據(jù)模糊控制器輸出每個節(jié)點的機會值大小, 按照機會值由高到低的原則形成備份簇頭列表, 各簇頭向簇內(nèi)廣播備份簇頭列表報文CH_Bch, 該報文包括報文類型、 節(jié)點ID及備份簇頭列表. 接收到CH_Bch的節(jié)點保存?zhèn)浞荽仡^列表, 若節(jié)點ID與列表中第一個備份簇頭ID相同, 則成為備份簇頭, 其他節(jié)點標(biāo)記該節(jié)點為備份簇頭.
表1 模糊規(guī)則
DFUC算法的偽代碼如下.
算法1DFUC算法.
n=網(wǎng)絡(luò)節(jié)點數(shù);
si=第i個傳感器節(jié)點;
si.state=init_state;
fori=1 tondo
si.RE=節(jié)點剩余能量,si.CD=節(jié)點中心度,si.DBS=節(jié)點到基站的距離;
Chance, Size=FuzzyC(si.RE,si.CD,si.RE,si.DBS);
end for
forj=1 tondo
向鄰居節(jié)點發(fā)送簇頭競爭報文CH_CP=[MSG_TYPE,ID,Chance];
根據(jù)競爭報文生成鄰居節(jié)點列表ListN=[IDx,Chancex;IDy,Chancey;…]
if (sj.Chance>Lista>sID.Chance)
向鄰居節(jié)點廣播競爭成功報文CH_SUCCESS=[MSG_TYPE,ID];
sj.state=CH_state;
else
while (sj簇頭列表不為空)
向距離最近的簇頭發(fā)送加入簇報文CH_JOIN=[MSG_TYPE,ID,CH_ID]
if (該簇頭的成員數(shù)>size)
該簇頭返回加入簇失敗報文CH_JOIN_FAIL=[MSG_TYPE,ID,CM_ID];
將該簇頭從sj簇頭列表中刪除;
else
該簇頭返回加入簇成功報文CH_JOIN_SUCCESS=[MSG_TYPE,CM_ID,ID,Slot];
根據(jù)鄰居列表ListN更新備份簇頭列表ListB;
sj.state=CM_state;
end if;
else
該節(jié)點聲明自己成為簇頭;
sj.state=CH_state;
end while;
end if;
end for.
簇一旦建立, 簇成員節(jié)點即可基于分配的時隙開始數(shù)據(jù)傳輸. 在該階段, 所有傳感器節(jié)點都在消耗能量, 因此, 無論是簇頭還是簇成員都可能出現(xiàn)能量耗盡的情形. 一旦有簇成員節(jié)點失效, 則節(jié)點中心度將發(fā)生變化, 從而影響節(jié)點成為簇頭機會和簇大小值, 而如果簇頭節(jié)點死亡, 則整個簇覆蓋區(qū)域都不能被監(jiān)測. 因此, 對失效的簇頭和成員節(jié)點進(jìn)行處理非常必要. 為了維護創(chuàng)建的簇, 簇成員需經(jīng)常計算其模糊控制器輸出, 并將成為簇頭的機會值隨數(shù)據(jù)同時發(fā)送給簇頭. 簇頭基于接收的機會值更新備份簇頭列表, 更新的列表通過一個數(shù)據(jù)請求報文周期性發(fā)送給簇成員, 以確保實時更新最合適的備份簇頭, 從而實現(xiàn)當(dāng)簇頭死亡時其成員能盡快被通知, 以避免網(wǎng)絡(luò)中數(shù)據(jù)的丟失, 且成員死亡時, 簇頭將其從備份簇頭列表中移除. 實現(xiàn)過程如圖2所示, 采用TDMA方式監(jiān)視簇頭和成員.
圖2 數(shù)據(jù)傳輸與容錯Fig.2 Data transmission and fault tolerance
由圖2可見, 成員一旦接收到一個數(shù)據(jù)請求報文則發(fā)送其數(shù)據(jù)包, 如果簇頭在幀尾沒有收到請求的數(shù)據(jù), 則給該成員打上錯誤標(biāo)記. 簇頭在下一個周期時隙發(fā)出另一個請求, 如果還未收到請求的數(shù)據(jù), 則認(rèn)為該成員永久故障, 并將其從備份簇頭列表中移除. 同理, 成員在所分配的時隙等待來自其簇頭的數(shù)據(jù)請求, 如果成員在幀尾沒有接連收到數(shù)據(jù)請求報文, 則認(rèn)為簇頭可能出現(xiàn)臨時故障, 它將等待下一相應(yīng)時隙接收數(shù)據(jù)請求報文, 如果還未接收到數(shù)據(jù)請求報文, 則認(rèn)為簇頭出現(xiàn)永久故障. 于是, 成員檢查其接收的簇頭最近更新的備份簇頭列表, 并將第一個節(jié)點作為簇頭發(fā)出加入簇報文, 等待確認(rèn)報文. 該節(jié)點也可能失效, 一旦未接收到確認(rèn)報文, 則以列表的下一個節(jié)點為簇頭發(fā)出加入簇報文, 直至最后加入到某個簇頭.
下面將本文DFUC算法與LEACH算法[5]、 DUCF算法[4]及WUCH算法[3]進(jìn)行性能比較. LEACH算法是一個標(biāo)準(zhǔn)分簇協(xié)議, WUCH算法是一種新的非均勻分簇協(xié)議, DUCF算法是無線傳感器網(wǎng)絡(luò)分布式基于模糊邏輯的非均勻分簇協(xié)議. 在MATLAB仿真環(huán)境下, 100個節(jié)點隨機分布在面積為(200×200)m2的測試區(qū)域中, 基站坐標(biāo)為(100,100). 仿真參數(shù)為: 數(shù)據(jù)位數(shù)為4 000, 節(jié)點初始能量為1 J,Eelec=50 nJ/bit,εfs=10 pJ/bit,εmp=0.001 3 pJ/bit,d0=87 m, 數(shù)據(jù)包大小為500個字節(jié), 控制包大小為25 個字節(jié).
每個控制包大小為25個字節(jié), 數(shù)據(jù)包大小為500個字節(jié), 比控制報文大很多, 仿真實驗中也包含了這些控制包的通信代價, DFUC算法和DUCF算法中所有節(jié)點上的模糊控制器的運行能耗忽略不計, LEACH算法期望的簇頭百分?jǐn)?shù)為0.1, 傳感器節(jié)點的通信半徑取40 m, 以確保網(wǎng)絡(luò)中的所有節(jié)點都能就近加入一個簇.圖3為存活節(jié)點數(shù)隨運行輪數(shù)的變化曲線,圖4為剩余總能量隨運行輪數(shù)的變化曲線.
圖3 網(wǎng)絡(luò)存活節(jié)點數(shù)對比Fig.3 Comparison of number of network surviving nodes
圖4 剩余總能量對比Fig.4 Comparison of total residual energy
由圖3可見, 隨著網(wǎng)絡(luò)運行輪數(shù)的增加, DFUC算法與其他3種算法相比能很好地均衡網(wǎng)絡(luò)能耗, 從而有效延長網(wǎng)絡(luò)生命周期. 這是因為DFUC算法綜合考慮了節(jié)點剩余能量、 節(jié)點中心度及與基站的距離確定簇頭及簇的大小, 并在數(shù)據(jù)傳輸階段提高了容錯能力, 降低了重新成簇的能耗.圖4對比了4種算法的剩余總能量隨運行輪數(shù)增加的變化情況. 由圖4可見, 由于DFUC算法在簇形成階段和數(shù)據(jù)傳輸階段綜合考慮了多種影響因素, 因此本文算法波動較小、 生存時間更長.
綜上所述, 本文提出了一種基于模糊控制理論的無線傳感器網(wǎng)絡(luò)非均勻分簇算法DFUC, 基于剩余能量、 節(jié)點中心度、 節(jié)點與基站的距離等多個參數(shù), 通過模糊控制器計算輸出成為簇頭機會和簇大小值, 使最優(yōu)節(jié)點成為簇頭并限制簇的大小, 成員節(jié)點構(gòu)成備份簇頭列表. 通過TDMA機制, 實時更新該列表使最合適的節(jié)點成為備份簇頭. 一旦簇頭失效, 則其結(jié)果總能確保一個備份簇頭替代簇頭. 通過算法的網(wǎng)絡(luò)存活節(jié)點數(shù)及網(wǎng)絡(luò)剩余總能量進(jìn)行了仿真測試, 結(jié)果表明, 相對于LEACH算法、 DUCF算法與WUCH算法, DFUC算法可獲得較長的生命周期, 性能優(yōu)于其他算法, 更適于實際應(yīng)用.