譚 龍,王 方
(黑龍江大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,哈爾濱 150080)
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Network,WSN)由大量的傳感器節(jié)點(diǎn)組成,這些節(jié)點(diǎn)密集地部署在一個(gè)特定的區(qū)域用于收集關(guān)于目標(biāo)或事件產(chǎn)生的數(shù)據(jù),并提供各種傳感和監(jiān)測應(yīng)用程序,作為一種很有前途的數(shù)據(jù)采集技術(shù),在物聯(lián)網(wǎng)中得到了廣泛的應(yīng)用,成為重要的基礎(chǔ)網(wǎng)絡(luò)之一[1,2].由于無線業(yè)務(wù)的爆炸式增長使得未授權(quán)的頻譜日益擁擠,導(dǎo)致運(yùn)行在未授權(quán)頻譜上的無線傳感器網(wǎng)絡(luò)受到了嚴(yán)重干擾.認(rèn)知無線電(Cognitive Radio,CR)技術(shù)已經(jīng)發(fā)展成為解決頻譜短缺問題的一種有效方法,它允許對許可頻譜進(jìn)行機(jī)會(huì)性訪問并廣泛應(yīng)用于環(huán)境,軍事,運(yùn)輸?shù)榷鄠€(gè)領(lǐng)域[3].無線傳感器網(wǎng)絡(luò)受益于CR 技術(shù)的這一優(yōu)勢克服了頻譜匱乏的挑戰(zhàn).為此,通過在無線傳感器網(wǎng)絡(luò)中加入動(dòng)態(tài)頻譜接入(Dynamic Spectrum Access,DSA)方案,提出了一種新的無線網(wǎng)絡(luò)模式——認(rèn)知無線傳感器網(wǎng)絡(luò)(Cognitive Radio Sensor Networks,CRSNs)[4].
CRSN 同無線傳感器網(wǎng)絡(luò)中的固定頻譜分配方法不同,節(jié)點(diǎn)通過機(jī)會(huì)主義利用空閑頻譜.頻譜的機(jī)會(huì)使用由認(rèn)知循環(huán)操作完成,包括頻譜感知、頻譜決策、頻譜共享和頻譜遷移.CRSN 節(jié)點(diǎn)通過頻譜感知來確定空閑頻譜,通過頻譜決策來選擇它們要使用的頻譜,根據(jù)主用戶(Primary User,PU)的活動(dòng)進(jìn)行頻譜切換來改變信道[4].盡管CR 技術(shù)使用不同頻段讓無線通信更靈活,但它們也帶來了一些問題.第一,動(dòng)態(tài)無線電環(huán)境中的路由受限于頻譜可用性;第二,認(rèn)知循環(huán)操作會(huì)中斷傳感器節(jié)點(diǎn)之間的傳輸;第三,主用戶的活動(dòng)會(huì)影響數(shù)據(jù)傳輸?shù)某晒β?如果節(jié)點(diǎn)是移動(dòng)的,這些問題會(huì)更復(fù)雜.節(jié)點(diǎn)的移動(dòng)性導(dǎo)致頻繁的拓?fù)渥兓?此外,事件驅(qū)動(dòng)的通信特性會(huì)導(dǎo)致突發(fā)的流量,造成信道沖突和數(shù)據(jù)包丟失.
本文提出了基于事件的移動(dòng)認(rèn)知無線傳感器網(wǎng)的分簇算法(Event based clustering algorithm for Mobile Cognitive radio sensor networks,EMC).該算法在事件發(fā)生后根據(jù)移動(dòng)節(jié)點(diǎn)當(dāng)前位置和在區(qū)域內(nèi)停留時(shí)間來確立合格節(jié)點(diǎn),而后計(jì)算簇頭權(quán)值來選擇簇頭.設(shè)計(jì)了直接分簇模式,并進(jìn)行簇頭與成員節(jié)點(diǎn)間的連接時(shí)間預(yù)估計(jì),簇頭再根據(jù)簇中每個(gè)成員移動(dòng)節(jié)點(diǎn)的預(yù)估計(jì)連接時(shí)間以TDMA 方式進(jìn)行通信,分配給成員節(jié)點(diǎn)時(shí)隙和空閑信道用來數(shù)據(jù)傳輸.這樣確保了簇的穩(wěn)定性,從而提高了數(shù)據(jù)傳輸率,并減少了由于簇成員移動(dòng)變化而帶來的控制開銷和能量消耗.
在現(xiàn)有的移動(dòng)節(jié)點(diǎn)分簇算法中,WSN 中分簇算法是比較多比較成熟,WSN 的分簇算法在提高網(wǎng)絡(luò)性能,延長網(wǎng)絡(luò)生命周期等方面取得了一些成功.WSN 設(shè)計(jì)分簇方案目的是以最小能耗收集信息[5].低能量自適應(yīng)分簇層次移動(dòng)(LEACH-mobile)算法[6],通過在LEACH協(xié)議中加入節(jié)點(diǎn)成員聲明來支持節(jié)點(diǎn)的移動(dòng)性.傳感器在連續(xù)兩幀期間未接收來自其簇頭的請求,就認(rèn)為自己已離開簇,因此它將廣播一個(gè)簇加入請求消息,以便加入新簇并避免丟失更多的數(shù)據(jù)包.因此,LEACHmobile 算法以增加控制開銷為代價(jià),提高了包傳輸?shù)某晒β?文獻(xiàn)[7]中提出了一種基于移動(dòng)性度量的LEACH移動(dòng)增強(qiáng)協(xié)議,該協(xié)議用于簇頭選舉,選擇一個(gè)具有較小移動(dòng)性的節(jié)點(diǎn)成為簇頭.文獻(xiàn)[8]提出兩種基于三層結(jié)構(gòu)的移動(dòng)WSN 分簇算法,最大限度地減少數(shù)據(jù)損失和提高能量效率.然而,所有這些分簇方案都假設(shè)固定信道分配,它們無法處理頻譜感知和信道切換等問題.因此,這些方案不適合CRSNs.
文獻(xiàn)[9]提出了一種基于事件的移動(dòng)認(rèn)知無線傳感網(wǎng)絡(luò)分簇算法,算法分為兩個(gè)階段,首先尋找適合成簇的節(jié)點(diǎn),其次這些節(jié)點(diǎn)利用空閑頻譜分簇,率先把節(jié)點(diǎn)移動(dòng)性應(yīng)用到CRSN 當(dāng)中.文獻(xiàn)[10]研究了多信道CRSNs 的動(dòng)態(tài)頻譜訪問的問題.文中采用了數(shù)據(jù)包大小可變的自適應(yīng)技術(shù),來適應(yīng)可變信道上的傳輸,更充分利用了傳感器的能量.文獻(xiàn)[11]提出了一種新的節(jié)點(diǎn)選擇方案,以提高CRSNs 的協(xié)作頻譜感知能量效率.除此之外,文中所提出的方案可在一定程度上有效平衡不同傳感器之間的能量消耗.文獻(xiàn)[12]中提出了一種基于能量感知分簇的CRSN 路由算法(EACRP),該算法同時(shí)考慮了能量和動(dòng)態(tài)頻譜問題.EACRP 采用自組織分布式成簇,通過產(chǎn)生最佳簇?cái)?shù)來獲得較少的平均節(jié)點(diǎn)功率.為了減輕PUs 的影響,EACRP 形成具有更多共用信道的簇,并在選擇用于簇內(nèi)通信的數(shù)據(jù)信道時(shí)采用協(xié)作感測的概念.文獻(xiàn)[13]提出了一種用于CRSN 的低能量自適應(yīng)不均勻分簇層次結(jié)構(gòu),采用不均勻分簇方法來平衡多跳傳輸方式下簇頭之間的能耗.仿真結(jié)果表明,該算法不僅可以有效地平衡簇頭中的能量消耗和CRSN中的網(wǎng)絡(luò)負(fù)載,還可以顯著延長網(wǎng)絡(luò)生命周期.
傳感器網(wǎng)絡(luò)由分布在監(jiān)測區(qū)域內(nèi)的n個(gè)移動(dòng)傳感器節(jié)點(diǎn)組成,具體信息:
1)用戶:PUs 無限制使用授權(quán)信道,次用戶(Secondary User,SU)在沒有PUs 活動(dòng)的情況下,可以機(jī)會(huì)主義訪問授權(quán)信道;
2)節(jié)點(diǎn):傳感器節(jié)點(diǎn)具有相同的初始能量、傳輸范圍,并且可以實(shí)現(xiàn)空閑頻譜的感知.
3)信道:網(wǎng)絡(luò)中存在M個(gè)具有唯一ID 的非重疊正交信道;兩個(gè)相鄰的CRSN 節(jié)點(diǎn)如果有共同的信道,則它們是互相連接的;存在一個(gè)公共控制信道(Common Control Channel,CCC)用來交換控制信息,并且每個(gè)節(jié)點(diǎn)通過鄰居發(fā)現(xiàn)都獲得一跳鄰居節(jié)點(diǎn)及其空閑信道.
4)定位:每個(gè)傳感器由定位算法計(jì)算出自己的二維坐標(biāo)以及自身速度.
5)移動(dòng):傳感器節(jié)點(diǎn)根據(jù)隨機(jī)航點(diǎn)移動(dòng)模型而移動(dòng)[14].
6)時(shí)鐘:假設(shè)節(jié)點(diǎn)均時(shí)鐘同步,且事件結(jié)束前非簇頭合格節(jié)點(diǎn)在其分配的時(shí)隙中總有數(shù)據(jù)要發(fā)送到簇頭.
通信由事件驅(qū)動(dòng),位于事件區(qū)域內(nèi)的CRSN 節(jié)點(diǎn)檢測事件,這些節(jié)點(diǎn)生成傳遞到sink 的數(shù)據(jù)包.CRSN事件覆蓋范圍用虛線表示,如果PUs 活躍,則SUs 應(yīng)該機(jī)會(huì)主義訪問信道,具體過程如圖1所示.
圖1 航點(diǎn)模型
移動(dòng)節(jié)點(diǎn)隨機(jī)選擇一個(gè)目標(biāo)位置,然后從該位置向目標(biāo)位置移動(dòng),速度介于[vmin,vmax]之 間,其中vmin是節(jié)點(diǎn)的最小速度,vmax是節(jié)點(diǎn)的最大速度.如果節(jié)點(diǎn)移動(dòng)到邊界,它將以相同的速度以邊界為邊進(jìn)行反射,入射角等于反射角.如果節(jié)點(diǎn)移動(dòng)到目標(biāo)位置后,將重新選擇新的目標(biāo)位置進(jìn)行移動(dòng),如圖2所示.
圖2 網(wǎng)絡(luò)模型
移動(dòng)CRSN 節(jié)點(diǎn)的能耗主要包括頻譜感知、頻譜切換、數(shù)據(jù)傳輸、數(shù)據(jù)接收和節(jié)點(diǎn)移動(dòng)的能耗.本文使用eswitch分別表示信道切換的能量消耗,由于信道感知是每個(gè)移動(dòng)節(jié)點(diǎn)常見的周期性過程,所以其能量消耗不予考慮.在模擬中不考慮遮蔽損耗的影響,同時(shí)假設(shè)無線電信道是對稱的,本文采用文獻(xiàn)[12]給出的無線電能量耗散模型.在該模型中,發(fā)射器和接收器之間距離為d的情況下發(fā)送和接收k位消息的能耗表示為:
其中,Etran為傳輸能耗,Erec為接收能耗,eampdε為傳輸放大器的能耗,其中 ε為傳播指數(shù),根據(jù)發(fā)射器和接收器的傳輸條件Edis的取值范圍在2 到4.Edis為運(yùn)行發(fā)射器或接收器中電路的能耗.本文中通訊能量參數(shù)設(shè)置為:Edis=50nJ/bit,eamp=10pJ/bit/m2,ε=2.5和eswitch=40mJ.
事件區(qū)域內(nèi)的移動(dòng)節(jié)點(diǎn)檢測到事件后,自身狀態(tài)由Snone變?yōu)镾eligible,表示該節(jié)點(diǎn)為合格節(jié)點(diǎn),并向周圍一跳鄰居節(jié)點(diǎn)發(fā)送請求消息,鄰居節(jié)點(diǎn)收到請求消息將返回自己的坐標(biāo),事件內(nèi)的節(jié)點(diǎn)選擇一個(gè)橫坐標(biāo)距離自己最遠(yuǎn)的非事件區(qū)域節(jié)點(diǎn),經(jīng)事件區(qū)域內(nèi)節(jié)點(diǎn)協(xié)調(diào),確定一個(gè)區(qū)間作為合格節(jié)點(diǎn)區(qū)域.事件區(qū)域節(jié)點(diǎn)通過公共控制信道將合格節(jié)點(diǎn)信息(Eligible Node Information,ENI)發(fā)送給它們的單跳鄰居節(jié)點(diǎn),ENI 中包含控制字段、節(jié)點(diǎn)id、節(jié)點(diǎn)位置信息和區(qū)域信息.
假設(shè)任意節(jié)點(diǎn)需要n個(gè)時(shí)間片來傳送數(shù)據(jù),且一個(gè)時(shí)間片長為 τ,那么節(jié)點(diǎn)在合格區(qū)域內(nèi)的時(shí)間應(yīng)大于nτ才能保證數(shù)據(jù)的順利傳輸.接收到ENI 的節(jié)點(diǎn)發(fā)現(xiàn)自己位于該區(qū)域內(nèi),且其縱坐標(biāo)比發(fā)送者的縱坐標(biāo)距離sink 更近,并計(jì)算自身在區(qū)域內(nèi)停留時(shí)間,如果停留時(shí)間大于nτ,節(jié)點(diǎn)狀態(tài)變?yōu)镾eligible.新的合格節(jié)點(diǎn)將ENI 發(fā)送到自己的一跳鄰居,同時(shí)區(qū)域內(nèi)的節(jié)點(diǎn)如果有一跳鄰居位于區(qū)域外且正向區(qū)域內(nèi)移動(dòng),則該節(jié)點(diǎn)狀態(tài)設(shè)置為Sstandby,該過程持續(xù)到ENI 到達(dá)sink.不符合條件的移動(dòng)節(jié)點(diǎn)不發(fā)送ENI 消息,為了不朝sink 以外的方向進(jìn)一步擴(kuò)大區(qū)域.
移動(dòng)節(jié)點(diǎn)1,2,3 是位于事件區(qū)域的節(jié)點(diǎn),通過不在事件區(qū)域內(nèi)節(jié)點(diǎn)4 和5 反饋的數(shù)據(jù),節(jié)點(diǎn)1 發(fā)現(xiàn)節(jié)點(diǎn)4 的水平位置距離自己最遠(yuǎn),同理節(jié)點(diǎn)2 發(fā)現(xiàn)節(jié)點(diǎn)6 的水平位置距離自己最遠(yuǎn),由事件區(qū)域內(nèi)節(jié)點(diǎn)協(xié)調(diào),劃分出一個(gè)區(qū)域,該區(qū)域是節(jié)點(diǎn)4 與節(jié)點(diǎn)6 橫坐標(biāo)區(qū)間,如圖3所示.
圖3 合格節(jié)點(diǎn)選擇模型圖
合格節(jié)點(diǎn)確定的EMC 算法以分布式的方式確定合格節(jié)點(diǎn),在此階段,本文假設(shè)傳感器節(jié)點(diǎn)密度足夠大.EMC 算法的步驟如流程圖4所示.
圖4 合格節(jié)點(diǎn)選擇流程圖
算法1.合格節(jié)點(diǎn)選擇1:Consider node where is a set of nodes in the network i V 2:if Node detects event then 3:It is eligible for clustering i 4:State()=“Eligible”i 5:sending inquiry request to one-hop neighbors other than event detecting neighbors(x0,x1)6:calculate and select an interval 7:Start sending ENI to one-hop neighbors other than event Detecting neighbors 8:else 9:if It receives ENI from its neighbor then(x0,x1)10:judge whether it is in the internal or not xi∈(x0,x1)11:if then 12:calculate i residence time t in (x0,x1)
13:compare the distance yi,sink≤yENI?sender,sink∧yi,event≥yENI?sender,event∧t>nτ 14:if 15:then Node i is eligible for clustering 16:State(i)=“Eligible”17:Send ENI to one-hop neighbors 18:end if xi?(x0,x1)∧i(x0,x1)∧i >nτ 19:if direction to residence time then i 20:Node is a candidate for clustering i 21:State()=“Standby”22:else 23:Not eligible 24:end if 25:else 26:Not eligible 27:end if 28:else i 29:Node is not eligible 30:end if 31:end if
本文使用啟發(fā)式算法進(jìn)行簇頭選擇.簇頭選擇時(shí)充分考慮了頻譜可用性、能量損耗、節(jié)點(diǎn)移動(dòng)性等多項(xiàng)因素進(jìn)行權(quán)值處理,最大權(quán)值節(jié)點(diǎn)作為簇頭,選擇的參數(shù)如下:
1)節(jié)點(diǎn)速度(vi?current):選擇速度較低的節(jié)點(diǎn)作為簇的簇頭.在權(quán)重計(jì)算中,本文采用公式來選擇當(dāng)前速度盡可能低的節(jié)點(diǎn).
2)節(jié)點(diǎn)到sink 的距離(di,sink):由于收集的數(shù)據(jù)由簇頭進(jìn)行聚合傳遞,因此更接近sink 的簇頭所消耗的能量越少.
3)剩余能量(Ei):節(jié)點(diǎn)成為簇頭后會(huì)比普通節(jié)點(diǎn)更耗費(fèi)能量,所以要考慮節(jié)點(diǎn)剩余能量.
4)可用信道數(shù)(Ci):可用信道數(shù)多的節(jié)點(diǎn)成為簇頭,會(huì)在形成的簇中擁有更多的空閑頻譜使用機(jī)會(huì).
5)合格節(jié)點(diǎn)度(Dei):具有最多一跳合格節(jié)點(diǎn)鄰居數(shù)的節(jié)點(diǎn)更適合成為簇頭.
6)節(jié)點(diǎn)方向與sink 連線間夾角正切值(A):選擇運(yùn)動(dòng)方向靠近sink 的節(jié)點(diǎn),形成的簇更穩(wěn)定.
根據(jù)這些參數(shù),任意節(jié)點(diǎn)i進(jìn)行簇頭選擇的權(quán)值為:
其中,w1+w2+w3+w4+w5+w6=1.在這個(gè)過程中,鄰域內(nèi)權(quán)值最高的節(jié)點(diǎn)成為簇頭,剩余節(jié)點(diǎn)再次比較權(quán)值,此過程將持續(xù)到所有節(jié)點(diǎn)都成簇頭或者簇成員為止.
每個(gè)簇頭檢查所有符合條件的單跳鄰居中是否存在公共信道.如果存在公共信道,CRSN 中的每個(gè)節(jié)點(diǎn)感知信道并記錄包含每個(gè)信道的PU 出現(xiàn)概率(Ppu)和平均信道空閑時(shí)間(Tidle)的信道狀態(tài)表.簇頭通過比較具有較低Ppu、較高Tidle和較多一跳鄰居節(jié)點(diǎn)的公共信道來形成簇.本文給信道a分配一個(gè)權(quán)值,它有3 個(gè)參數(shù),公式如下:
完成公共信道選擇后,簇頭將向它鄰居節(jié)點(diǎn)發(fā)送成簇請求(Clustering REQuest,C_REQ),然而,一個(gè)節(jié)點(diǎn)可以是兩個(gè)或多個(gè)簇頭的鄰居,但它只能成為一個(gè)簇頭的簇成員節(jié)點(diǎn).因此,節(jié)點(diǎn)只答復(fù)給一個(gè)簇頭.節(jié)點(diǎn)會(huì)計(jì)算與簇頭親密度,該值用于確定節(jié)點(diǎn)是否適合連接這個(gè)簇頭.該值由下面過程得出:
假設(shè)在時(shí)間t節(jié)點(diǎn)i的位置是:
簇頭節(jié)點(diǎn)j的位置是:
本文將節(jié)點(diǎn)接收來自一個(gè)簇頭消息的時(shí)間設(shè)置為t=0,因此有:
其中,Rtran代表節(jié)點(diǎn)的通信范圍.如果節(jié)點(diǎn)i在時(shí)間t仍在簇j中,有:
Δti,j表示節(jié)點(diǎn)i和節(jié)點(diǎn)j的估計(jì)連接時(shí)間,可以由式(8)求出,式(8)的解有兩個(gè)分別為t1、t2,如果max{t1,t2}≤0,則Δti,j=0;否則 Δti,j=max{t1,t2}.
本文在分簇時(shí)采用文獻(xiàn)[15]所提出了直接分簇方式.在無向分簇方式中數(shù)據(jù)傳輸需要先傳給簇頭,簇頭會(huì)聚合數(shù)據(jù)然后發(fā)給下一跳簇頭或網(wǎng)關(guān),如圖5(a)所示,這會(huì)導(dǎo)致節(jié)點(diǎn)通訊開銷大,能耗高,網(wǎng)絡(luò)壽命短.相反,沿著數(shù)據(jù)在事件到sink 的傳播方向上分簇,這樣確保數(shù)據(jù)一直向著sink 方向傳輸而不會(huì)回傳,如圖5(b)所示.
圖5 分簇方式
其中,λ1+λ2=1.
在節(jié)點(diǎn)選擇完簇頭之后,它將發(fā)送一條確認(rèn)信息(ACKnowledgement,ACK)來回復(fù)簇頭.如果一個(gè)非簇節(jié)點(diǎn)沒有收到來自相鄰簇頭的任何請求,它自己成為一個(gè)簇頭.算法2 描述了直接分簇算法,如算法2 所示.
算法2.分簇算法1:if State(j)=“CH” then a∈C j 2:for do Wa 3:calculate 4:end for 5:send C_REQ message to the nodes through channel 6:wait for ACK message from the nodes 7:else 8:if State(j)=“Eligible Node” and it receives C_REQ message then Wij a 9:calculate 10:join the cluster whose is the biggest 11:send ACK message to the selected CH j Wij 12:if State()=“Eligible Node” and it did not receive C_REQ message then j 13:State()=“CH” goto 1 14:end if 15:end if 16:end if
由于傳感器節(jié)點(diǎn)的速度或方向突然變化、傳輸過程中的網(wǎng)絡(luò)擁塞或硬件故障造成的,因此在傳輸過程中需要加入確認(rèn)消息(ACK).
在成功接收到數(shù)據(jù)包后,簇頭將向非簇頭合格節(jié)點(diǎn)發(fā)送ACK 消息.如果合格節(jié)點(diǎn)收到ACK 消息,它將確認(rèn)數(shù)據(jù)包已成功傳輸,如果合格節(jié)點(diǎn)未收到ACK 消息它將廣播簇加入請求消息.收到簇加入聯(lián)合請求消息時(shí),簇頭將像在第二階段那樣向該節(jié)點(diǎn)傳輸簇頭消息.
另外,由于簇頭節(jié)點(diǎn)和簇成員節(jié)點(diǎn)都保留了估計(jì)連接時(shí)間的信息,所以它們都可以檢查簇成員節(jié)點(diǎn)在下一個(gè)時(shí)隙是否會(huì)留在簇中.如果簇成員節(jié)點(diǎn)不打算留在簇中,它將廣播一條請求消息以加入一個(gè)新簇.然后,簇頭將刪除該簇成員節(jié)點(diǎn).
圖6演示了合格節(jié)點(diǎn)離開舊簇并加入新簇的過程.節(jié)點(diǎn)5 加入簇J,而節(jié)點(diǎn)9 離開簇.簇J 的簇頭將節(jié)點(diǎn)9 從TDMA 計(jì)劃中刪除,并將節(jié)點(diǎn)5 添加到TDMA 計(jì)劃中.TDMA 調(diào)度是基于簇成員節(jié)點(diǎn)和簇頭節(jié)點(diǎn)之間的估計(jì)連接時(shí)間 Δt按升序排序的.新的TDMA 時(shí)間表可能具有如圖7所示的形式,節(jié)點(diǎn)9 被節(jié)點(diǎn)5 替代,而不會(huì)影響到數(shù)據(jù)傳輸.
圖6 簇維護(hù)模型圖
圖7 TDMA 時(shí)間片
本文在Matlab 2018b 中建立了一個(gè)仿真環(huán)境來研究EMC 分簇算法性能.本文主要從分簇所需要的時(shí)間,連通性和分簇過程中的能量消耗這3 個(gè)方面對協(xié)議進(jìn)行了仿真測試,實(shí)驗(yàn)中改變的參數(shù)是事件到sink的距離、事件區(qū)域半徑R以及節(jié)點(diǎn)的傳輸半徑r.本文同mESAC[9],MNB[16],EACRP[12]這3 種算法進(jìn)行了比較.在模擬中,權(quán)重系數(shù)取值為w1=0.2,w2=0.1,w3=0.1,w4=0.3,w5=0.2,w6=0.1,λ1=0.8,λ2=0.2,表1為實(shí)驗(yàn)中用到的參數(shù),本次實(shí)驗(yàn)的拓?fù)鋱D如圖8所示,黑點(diǎn)為 簇頭,灰點(diǎn)為簇成員.
表1 模擬參數(shù)
圖8 分簇結(jié)果拓?fù)鋱D
本文定義成功的數(shù)據(jù)包傳遞率為Rpdr,平均控制開銷為Oavg,如下所示:
其中,Nrec為 成功傳遞的數(shù)據(jù)包數(shù)目,Nlost為丟失據(jù)包,Ototal為合格區(qū)域內(nèi)總控制開銷.
建立簇需要一些時(shí)間,時(shí)間長短取決于合格區(qū)域的建立、簇頭的選擇、節(jié)點(diǎn)通訊范圍等.從圖9中可以看出,mESAC,EACRP 與MNB 需要更多的分簇控制包交換,因此它們形成簇需要更多的時(shí)間.分簇所需要的時(shí)間隨著事件半徑的增加而增加,如圖10所示,EMC 分簇需要的時(shí)間相比于mESAC,EACRP 與MNB 分別提升了1.18 倍,2.81 倍和7.18 倍.
圖9 控制包數(shù)目對比圖
圖10 成簇時(shí)間對比圖
圖11表示了在不同傳輸半徑下,4 種算法的連通性.觀察可以看出EMC 的連通性更好,這是由于在EMC 中,采用直接分簇辦法,讓數(shù)據(jù)包沿單向傳輸,避免了數(shù)據(jù)回傳的問題,并且選擇信道數(shù)目多的節(jié)點(diǎn)成為簇頭,同時(shí)考慮了簇成員節(jié)點(diǎn)與簇頭的連接時(shí)間,減少了數(shù)據(jù)包不必要的丟失.而算法MNB、EACRP 和mESAC 沒有考慮節(jié)點(diǎn)連接時(shí)間,在節(jié)點(diǎn)離開后容易造成數(shù)據(jù)包丟失.因此EMC 的連通性相比于mESAC,EACRP 與MNB 分別提升了1.07 倍,1.63 倍和2.09 倍.
CRSN 節(jié)點(diǎn)的電池電量有限,能耗是本文算法重點(diǎn)考慮的因素.通過仿真實(shí)驗(yàn)得到,事件發(fā)生區(qū)域到sink 的距離和節(jié)點(diǎn)傳輸半徑對分簇能量的影響,節(jié)點(diǎn)傳輸半徑增加導(dǎo)致有更多的節(jié)點(diǎn)參與到分簇過程中,因此會(huì)消耗更多的能量.MNB 形成簇需要3 個(gè)步驟,每個(gè)節(jié)點(diǎn)在每一步都會(huì)通知它的鄰居節(jié)點(diǎn),這會(huì)導(dǎo)致額外的能耗.并且MNB 和EACRP 在分簇過程中是所有節(jié)點(diǎn)均參加分簇,這會(huì)導(dǎo)致能耗必然高于EMC 和mESAC.再由圖9可以看出,mESAC 控制包的數(shù)量略高于EMC.如圖11所示,EMC 的分簇能耗同其他算法相比能耗有明顯的優(yōu)勢.圖12為分簇能耗對比圖.圖13為EMC 分簇過程中簇頭能耗與節(jié)點(diǎn)能耗對比,簇頭能耗較高,并且節(jié)點(diǎn)是移動(dòng)的,所以要在每一輪重新進(jìn)行簇頭選擇.
圖11 連通性對比圖
圖12 分簇能耗對比圖
圖13 簇頭與節(jié)點(diǎn)能耗圖
分簇是一種提高動(dòng)態(tài)網(wǎng)絡(luò)拓?fù)浞€(wěn)定性的重要方法.針對認(rèn)知無線傳感器網(wǎng)中移動(dòng)節(jié)點(diǎn)能耗不均,連通性不佳的問題,本文中通過計(jì)算移動(dòng)節(jié)點(diǎn)在合格區(qū)域的逗留時(shí)間以及節(jié)點(diǎn)在簇中的連接預(yù)估計(jì)時(shí)間,并采用直接分簇算法來解決移動(dòng)CRSN 對于事件到sink 協(xié)調(diào)方案的問題.同時(shí)給出分簇的維護(hù)機(jī)制,通過TDMA方式來協(xié)調(diào)事件和sink 之間的通信.仿真結(jié)果表明,EMC 算法在連通性、分簇時(shí)間和分簇能耗方面均有明顯提高,能更好地適應(yīng)移動(dòng)場景.