薛 亮,王 然
(杭州電子科技大學(xué) 計(jì)算機(jī)學(xué)院,浙江 杭州 310018)
柵欄覆蓋在國防和林業(yè)方面有著重要作用[1]。為了增加?xùn)艡诘目煽啃?,文獻(xiàn)[2]提出了K-柵欄覆蓋的概念,要求監(jiān)測(cè)目標(biāo)在穿越區(qū)域時(shí)至少能被K個(gè)傳感器節(jié)點(diǎn)所感知。
目前大部分研究主要集中在使用靜態(tài)傳感器構(gòu)建K-柵欄覆蓋方面[3-5]。然而,靜態(tài)傳感器并不能覆蓋到區(qū)域中某些特定的位置,從而導(dǎo)致覆蓋漏洞出現(xiàn),影響覆蓋的質(zhì)量。因此,使用移動(dòng)傳感器構(gòu)建柵欄的研究受到了越來越多的關(guān)注。文獻(xiàn)[6]使用移動(dòng)傳感器構(gòu)建1-柵欄覆蓋。文獻(xiàn)[7~10]利用移動(dòng)傳感器構(gòu)造節(jié)能的K-柵欄覆蓋問題,并著重于減少傳感器移動(dòng)的距離。
上述研究都是試圖通過減少傳感器能耗的方式來實(shí)現(xiàn)延長網(wǎng)絡(luò)壽命的目標(biāo)。近年來,能量收集技術(shù)成為了一種新的可供選擇的方案。傳感器配備能量收集模塊[11],可收集環(huán)境中的能量(例如太陽能[12]、風(fēng)能[13]等)來給電池補(bǔ)充能量。文獻(xiàn)[14]將能量收集技術(shù)與K-柵欄覆蓋相結(jié)合,最大化網(wǎng)絡(luò)的壽命,但該研究僅考慮了傳感器的靜態(tài)場(chǎng)景。文獻(xiàn)[15]使用具備能量收集能力的移動(dòng)傳感器和不具備能量收集能力的靜態(tài)傳感器共同構(gòu)建柵欄覆蓋。然而上述研究都沒有考慮到區(qū)域內(nèi)不同位置能量的差異性,例如部署在森林里的傳感器由于存在樹葉遮擋,導(dǎo)致各個(gè)位置接收到的太陽能強(qiáng)度存在差異。
基于能量收集技術(shù),本研究認(rèn)為傳感器能夠收集太陽能,且監(jiān)測(cè)區(qū)域內(nèi)不同位置的太陽能強(qiáng)度不一致。本文使用移動(dòng)傳感器構(gòu)建K-柵欄覆蓋,提出了一種集中式的柵欄構(gòu)建和調(diào)度(Barrier Construction And Scheduling,BCAS)算法,有效地構(gòu)建并調(diào)度柵欄,最大程度地延長了網(wǎng)絡(luò)壽命。
圖1 網(wǎng)絡(luò)示意圖Figure 1. Network diagram
傳感器的監(jiān)測(cè)半徑為R,使用ZigBee技術(shù)直接與基站通信,并且具有移動(dòng)和能量收集能力。電池容量為B,即傳感器的初始能量。傳感器有兩種狀態(tài):活動(dòng)狀態(tài)和睡眠狀態(tài)。傳感器在活動(dòng)狀態(tài)下執(zhí)行監(jiān)測(cè)任務(wù)需要消耗能量,在睡眠狀態(tài)下不執(zhí)行任務(wù),不需要消耗能量。假設(shè)傳感器電池容量存在一個(gè)閾值百分比ε,當(dāng)傳感器的剩余能量小于Bε時(shí),睡眠狀態(tài)的傳感器不能被激活,活動(dòng)狀態(tài)的傳感器在監(jiān)測(cè)任務(wù)執(zhí)行完畢后立即睡眠。不考慮傳感器移動(dòng)的時(shí)間,即傳感器的位置變化是瞬時(shí)完成的,因此可以認(rèn)為傳感器在移動(dòng)時(shí)是不能收集能量的。
傳感器需要不斷監(jiān)測(cè)目標(biāo)區(qū)域以檢測(cè)入侵者,并且還需要與基站通信,將數(shù)據(jù)傳輸?shù)交静⒔邮栈镜恼{(diào)度信息,因此需要考慮傳感器的監(jiān)測(cè)能耗率與通信能耗率。本文將監(jiān)測(cè)能耗率和通信能耗率看作一個(gè)定值,稱為傳感能耗率,記為es(單位為J·s-1)。此外,還需要考慮傳感器的移動(dòng)能耗,將傳感器每米移動(dòng)的能耗記為em(單位為J·m-1)。
區(qū)域Ω內(nèi)不同太陽能區(qū)域中的太陽能強(qiáng)度隨機(jī)分布在[a,b](單位為W)之間。本文用λu代表第u個(gè)太陽能區(qū)域內(nèi)的太陽能強(qiáng)度,用ξ代表太陽能的接收效率。因此第u個(gè)太陽能區(qū)域內(nèi)傳感器si的能量收集率計(jì)算式為
ei(u)=ξλu
(1)
由于在現(xiàn)實(shí)中光照強(qiáng)度都是隨時(shí)間變化的,文獻(xiàn)[17~19]中采用取平均值的方式來表示光照強(qiáng)度,因此本文也采用這種方式。
將網(wǎng)絡(luò)的運(yùn)行時(shí)間離散化為小時(shí)隙,每個(gè)時(shí)隙的長度相等,表示為τt(t=1,2,…,T),其中T為最后一個(gè)時(shí)隙。第t個(gè)時(shí)隙開始時(shí)傳感器si的剩余能量Eit為
(2)
(3)
(4)
其中,t=1,2,…,T;Ei0=B,為傳感器si的初始能量;τt-1代表第t-1個(gè)時(shí)隙的長度;τ0=0;ei(ut-1)代表在第t-1個(gè)時(shí)隙位于ut-1號(hào)太陽能區(qū)域中傳感器si的能量收集率;es代表傳感器傳感的能耗率;lit代表傳感器si在時(shí)隙t開始前移動(dòng)的距離;em代表傳感器每米移動(dòng)的能耗;xit和yit為傳感器si在第t個(gè)時(shí)隙在區(qū)域內(nèi)Ω位置的橫縱坐標(biāo)值。
在每個(gè)時(shí)隙開始前,柵欄中傳感器剩余能量不得低于Bε才能確保節(jié)點(diǎn)能被激活;在時(shí)隙結(jié)束時(shí),剩余能量必須大于0,才能確保節(jié)點(diǎn)在時(shí)隙內(nèi)不會(huì)死去??紤]最極端的情況,時(shí)隙開始時(shí)剩余能量正好為Bε,時(shí)隙結(jié)束時(shí)剩余能量正好為0,因此時(shí)隙的長度τt可以計(jì)算為
(5)
其中,a為監(jiān)測(cè)區(qū)域Ω內(nèi)最小的太陽能強(qiáng)度值;ξ代表太陽能的接收效率。
傳感器的移動(dòng)距離限制如式(6)所示。
(6)
定義1移動(dòng)K-柵欄網(wǎng)絡(luò)的生命周期:給定監(jiān)測(cè)區(qū)域Ω和移動(dòng)傳感器集合S,從形成K-柵欄覆蓋開始到無法調(diào)度移動(dòng)傳感器為形成K-柵欄覆蓋的時(shí)間段,即移動(dòng)K-柵欄網(wǎng)絡(luò)的生命周期。
定義2移動(dòng)K-柵欄網(wǎng)絡(luò)的生命周期最大化問題:給定監(jiān)測(cè)區(qū)域Ω和移動(dòng)傳感器集合S,調(diào)度傳感器移動(dòng)形成K-柵欄,并按時(shí)隙調(diào)度,使K-柵欄的網(wǎng)絡(luò)生命周期最大。
基于以上定義可以將問題形式化
(7)
約束于
(8)
(9)
si∈Ba,?t=1,2,…,T
(10)
式(7)是優(yōu)化目標(biāo),表示最大化K-柵欄的生命周期。式(8)表示時(shí)隙開始前傳感器的剩余能量必須大于等于閾值能量。式(9)表示時(shí)隙結(jié)束后傳感器的剩余能量必須大于0。式(10)中Ba表示構(gòu)成柵欄的傳感器節(jié)點(diǎn)集合。上述約束作用于柵欄中的每個(gè)傳感器和每個(gè)時(shí)隙。
監(jiān)測(cè)區(qū)域Ω內(nèi)的太陽能強(qiáng)度是連續(xù)分布的,但這并不利于處理,因此需要使用離散化的思想,用邊長為2R的小網(wǎng)格離散化區(qū)域Ω。傳感器可以移動(dòng)至網(wǎng)格的中心。傳感器的能量收集率為該網(wǎng)格中心處的太陽能強(qiáng)度乘以太陽能接收效率。
本文提出的柵欄構(gòu)建與調(diào)度算法主要分為構(gòu)建階段與調(diào)度階段。在構(gòu)建階段構(gòu)建出滿足柵欄覆蓋要求的柵欄個(gè)數(shù),在調(diào)度階段選擇柵欄調(diào)度并進(jìn)行節(jié)點(diǎn)移動(dòng)以修補(bǔ)柵欄,延長網(wǎng)絡(luò)的壽命。
定義3基線柵欄位置:能為區(qū)域提供1-柵欄覆蓋的網(wǎng)格位置。
圖2 監(jiān)測(cè)區(qū)域的劃分Figure 2. Division of monitoring area
算法1 基線柵欄位置選擇算法Input: 太陽能強(qiáng)度λu,區(qū)域Ω,監(jiān)測(cè)半徑R,傳感器集合SOutput: 區(qū)域Ω的基線柵欄位置bp1. 用邊長2R的小正方形離散化區(qū)域Ω,得到水平子區(qū)域集合AH2. count=03. for AHz∈AH do:4. 選擇最高平均太陽能強(qiáng)度的一行網(wǎng)格為基線柵欄位置bpz,如果存在多行滿足條件的網(wǎng)格則計(jì)算AHz內(nèi)傳感器縱坐標(biāo)平均值,選擇縱坐標(biāo)值離該平均值最近那行網(wǎng)格作為基線柵欄位置bpz。5. if count>0 do:6. 選擇平均太陽能強(qiáng)度較大的一列網(wǎng)格位置使AHz-1中bpz-1與AHz中bpz相連,形成Ω中完整的基線柵欄位置bp7. end if8. count++9. end for
下一步需要將各個(gè)水平子區(qū)域內(nèi)的基線柵欄位置連接,形成整個(gè)監(jiān)測(cè)區(qū)域Ω內(nèi)完整的基線柵欄位置。對(duì)于相鄰的水平子區(qū)域AHz和AHz+1內(nèi)的子基線柵欄位置bpz和bpz+1有兩種方式可以連接。如圖3所示,分別選擇AHz中的網(wǎng)格sg1、sg2、sg3和AHz+1中的網(wǎng)格sg4、sg5、sg6。選擇的標(biāo)準(zhǔn)為用于連接兩個(gè)子基線柵欄位置的網(wǎng)格的平均太陽能強(qiáng)度最大。假設(shè)sg1、sg2、sg3處的平均太陽能強(qiáng)度大于sg4、sg5、sg6處的平均太陽能強(qiáng)度,此時(shí)會(huì)選擇AHz中的網(wǎng)格sg1、sg2、sg3用于連接。對(duì)每個(gè)水平子區(qū)域都執(zhí)行上述過程,直至形成整個(gè)監(jiān)測(cè)區(qū)域內(nèi)完整的基線柵欄位置。具體過程見算法1。
圖3 連接位置的選擇Figure 3. Choice of connection location
接下來考慮為區(qū)域Ω構(gòu)建K-柵欄覆蓋,考慮柵欄運(yùn)行在能量收集的情況下,并且區(qū)域內(nèi)的傳感器有一定的冗余。因此可以在Ω內(nèi)形成K+1條柵欄,在每個(gè)時(shí)隙開始前選擇其中的K條激活,剩下的一條保持睡眠以補(bǔ)充能量。被選擇激活的柵欄中每個(gè)傳感器的能量不低于Bε,因此需要找出K+1個(gè)基線柵欄位置。
將監(jiān)測(cè)區(qū)域Ω在豎直方向上平均分成K+1個(gè)豎直子區(qū)域。分別在每個(gè)豎直子區(qū)域AVz內(nèi)執(zhí)行算法1找到對(duì)應(yīng)的基線柵欄位置bp。然后,調(diào)度豎直子區(qū)域AVz內(nèi)傳感器,將其移動(dòng)到基線柵欄位置bp處形成柵欄。傳感器的移動(dòng)不能跨越區(qū)域,構(gòu)成柵欄的傳感器集合為baz。本文采用貪心思想調(diào)度傳感器移動(dòng)。對(duì)于基線柵欄位置bp上的每個(gè)網(wǎng)格sgu,遍歷豎直子區(qū)域AVz內(nèi)的傳感器集合Sz,找到與sgu中心距離最短的傳感器sbest,將其移動(dòng)至sgu處,并更新sbest的剩余能量。具體步驟見算法2。
算法2 K+1柵欄構(gòu)建算法Input: 太陽能強(qiáng)度λu,區(qū)域Ω,監(jiān)測(cè)半徑R,傳感器集合S,柵欄數(shù)KOutput: 區(qū)域Ω內(nèi)的柵欄集合Ba1. 將區(qū)域Ω劃分為K+1個(gè)豎直子區(qū)域,得到豎直子區(qū)域集合AV2. 對(duì)AVz∈AV執(zhí)行算法1, 得到基線柵欄位置集合Bp3. for all bp∈Bp do:4. for grid sgu in bp do:5. for si∈Sz do:6. 計(jì)算len(si, sgu) 7. if len(si, sgu) 區(qū)域Ω中能夠形成的柵欄數(shù)是有限制的,與區(qū)域中傳感器的節(jié)點(diǎn)密度有關(guān),下面給出關(guān)于節(jié)點(diǎn)密度的定義。 定義4節(jié)點(diǎn)密度:監(jiān)測(cè)區(qū)域Ω內(nèi)傳感器的數(shù)量與區(qū)域Ω面積的比值。 監(jiān)測(cè)區(qū)域Ω內(nèi)的節(jié)點(diǎn)密度ρ可以表示為 (11) 將監(jiān)測(cè)區(qū)域劃分為K+1個(gè)豎直子區(qū)域,每個(gè)豎直子區(qū)域AVz內(nèi)的節(jié)點(diǎn)數(shù)量為NA。 圖4 構(gòu)成柵欄所需的最少傳感器Figure 4. Minimal sensors required to form a barrier (12) 每個(gè)豎直子區(qū)域AVz內(nèi)形成柵欄覆蓋所需的最少節(jié)點(diǎn)數(shù)為Nmin,如圖4所示。 (13) 要保證豎直子區(qū)域AVz內(nèi)節(jié)點(diǎn)數(shù)大于Nmin才能形成柵欄覆蓋,因此可以推出監(jiān)測(cè)區(qū)域Ω內(nèi)能夠滿足的柵欄數(shù)K的上限。 (14) 圖5 構(gòu)成柵欄所需的最多傳感器Figure 5. The most sensors required to form a barrier 由于實(shí)際應(yīng)用時(shí)并不會(huì)總以最小的節(jié)點(diǎn)數(shù)形成柵欄,因此一般情況下并不能達(dá)到上限條件。由此可知,豎直子區(qū)域AVz內(nèi)形成柵欄所需的最大節(jié)點(diǎn)數(shù)Nmax,如圖5所示。 (15) 只要保證每個(gè)豎直子區(qū)域內(nèi)的節(jié)點(diǎn)數(shù)NA≥Nmax就能在區(qū)域內(nèi)形成柵欄覆蓋??梢酝瞥鲆欢軡M足所需柵欄覆蓋數(shù)的節(jié)點(diǎn)密度ρ。 (16) 在監(jiān)測(cè)區(qū)域Ω內(nèi)生成K+1條柵欄后,需要調(diào)度算法來選擇K條柵欄激活并調(diào)度,以延長網(wǎng)絡(luò)的生命周期。調(diào)度算法分為兩部分:柵欄選擇策略和修補(bǔ)策略。柵欄選擇策略為:在每個(gè)時(shí)隙τt開始時(shí)選擇K條傳感器平均剩余能量最大的柵欄激活執(zhí)行監(jiān)測(cè)任務(wù),剩下的傳感器進(jìn)入睡眠狀態(tài)以補(bǔ)充能量。 在時(shí)隙τt結(jié)束后可能存在一些柵欄中傳感器的剩余能量小于Bε,要在下一個(gè)時(shí)隙τt+1開始前對(duì)柵欄進(jìn)行修補(bǔ),替換掉這些能量小于閾值的傳感器節(jié)點(diǎn)。將豎直區(qū)域AVz中傳感器集合Sz節(jié)點(diǎn)分為兩類:構(gòu)成柵欄的節(jié)點(diǎn)集合baz和其他不是構(gòu)成柵欄的節(jié)點(diǎn)Szno(baz∪Szno=Sz)。定義移動(dòng)權(quán)值ω(si,sj)為 (17) 其中,Ej為傳感器sj的剩余能量;len(si,sj)為傳感器si和傳感器sj之間的距離。 修補(bǔ)策略為:對(duì)于豎直子區(qū)域AVz中構(gòu)成柵欄的傳感器集合baz中能量小于Bε的傳感器si,遍歷Szno節(jié)點(diǎn)集合,選擇移動(dòng)權(quán)重ω最大的節(jié)點(diǎn)sbest移動(dòng)至節(jié)點(diǎn)si處進(jìn)行替換以修補(bǔ)柵欄。更新sbest的剩余能量,對(duì)每個(gè)豎直子區(qū)域AVz都執(zhí)行一次修補(bǔ)策略。 在每個(gè)時(shí)隙開始前都執(zhí)行該調(diào)度算法,直至無法形成滿足區(qū)域所需的K-柵欄覆蓋要求。調(diào)度算法的具體過程見算法3。 算法3 柵欄調(diào)度算法Input: 柵欄集合Ba,柵欄數(shù)K,傳感器集合S,電池容量B,閾值ε1. for baz∈Ba do:2. for si∈baz do:3. if Eiωmaxdo:7. ωmax=ω(si, sj), sbest= sj8. end if9. end for10. 移動(dòng) sbest到si, Ebest= Ebest - em×len(si, sbest) 11. baz= baz∪{sbest}, baz= baz 為了驗(yàn)證所提BCAS算法的性能,本文在IntelliJ IDEA平臺(tái)下使用Java語言進(jìn)行了模擬實(shí)驗(yàn),并且與文獻(xiàn)[8]中提到的MobiBar算法和文獻(xiàn)[9] 中提到的Single Sensor 算法做了對(duì)比。為了保證實(shí)驗(yàn)的穩(wěn)定性和準(zhǔn)確性,每組實(shí)驗(yàn)都進(jìn)行了50次模擬。實(shí)驗(yàn)區(qū)域的大小設(shè)置為400 m×150 m,太陽能區(qū)域大小為40 m×15 m,傳感器節(jié)點(diǎn)均勻分布在區(qū)域Ω內(nèi),傳感器的節(jié)點(diǎn)密度ρ為3,電池容量B為1 100 mAh×4 V,太陽能強(qiáng)度范圍為0.008~0.036 W,監(jiān)測(cè)半徑R為5 m,太陽能接收效率ξ為0.2。將傳感的能耗率es設(shè)置為0.03 J·s-1,傳感器移動(dòng)能耗em為1 J·m-1,傳感器能量閾值百分比ε為3%,柵欄個(gè)數(shù)K為3。 本文使MobiBar算法和Single Sensor算法與BCAS算法運(yùn)行于同樣的能量收集區(qū)域,并且需要形成滿足K-柵欄覆蓋要求的柵欄數(shù)。對(duì)于Single Sensor算法,將整個(gè)監(jiān)測(cè)區(qū)域分為兩塊,分別形成子?xùn)艡诓⑦B接。本文分別從網(wǎng)絡(luò)生命周期和構(gòu)建柵欄平均移動(dòng)距離的角度比較了算法的性能。 圖6 柵欄數(shù)對(duì)生命周期的影響Figure 6. The effect of the number of barriers on lifetime 圖6表明,隨著柵欄數(shù)K的增加,BCAS算法下生命周期依次減小。這因?yàn)楸O(jiān)測(cè)區(qū)域內(nèi)傳感器密度不變,而隨著需要滿足的柵欄數(shù)的增加,監(jiān)測(cè)區(qū)域也會(huì)被劃分成越來越多的子區(qū)域,每個(gè)子區(qū)域內(nèi)的傳感器數(shù)量會(huì)越來越少,因此能夠用來修補(bǔ)柵欄的冗余傳感器也會(huì)減少。然而MobiBar算法和Single Sensor算法的生命周期變化較小。這因?yàn)镸obiBar和Single Sensor算法沒有針對(duì)能量收集的場(chǎng)景進(jìn)行調(diào)度優(yōu)化。在柵欄數(shù)K變化的情況下,與MobiBar算法和Single Sensor算法相比,BCAS算法的生命周期平均提升了大約183%。 圖7 節(jié)點(diǎn)密度對(duì)生命周期的影響Figure 7. The effect of node density on lifetime 圖7顯示,隨著節(jié)點(diǎn)密度ρ的增加,BCAS算法的生命周期也會(huì)增加,而MobiBar和Single Sensor算法的生命周期變化較小。這是因?yàn)殡S著傳感器密度增加,用來修補(bǔ)柵欄的傳感器也會(huì)增加,因此生命周期得以延長,而MobiBar和Single Sensor算法并沒有充分地利用冗余節(jié)點(diǎn)。相比MobiBar和Single Sensor算法,在節(jié)點(diǎn)密度變化的情況下,BCAS算法的生命周期平均提升了168%。 圖8 柵欄數(shù)對(duì)平均移動(dòng)距離的影響Figure 8. The effect of the number of barriers on average moving distance 圖8顯示出隨著柵欄數(shù)K的增加,3種算法的平均移動(dòng)距離都會(huì)增加。這因?yàn)殡S著柵欄數(shù)的增加,監(jiān)測(cè)區(qū)域會(huì)被劃分為越來越多的子區(qū)域,每個(gè)子區(qū)域內(nèi)可供選擇移動(dòng)的傳感器也變少,平均移動(dòng)距離因此變大。在K=1時(shí),MobiBar算法的平均移動(dòng)距離最小,在K>1時(shí),BCAS算法具有較好的性能,而MobiBar算法性能最差。在K變化時(shí),與MobiBar算法和Single Sensor算法相比,BCAS算法平均移動(dòng)距離減少了約20.6%和12%。 圖9 節(jié)點(diǎn)密度對(duì)平均移動(dòng)距離的影響Figure 9. The effect of node density on average moving distance 圖9表明,隨著節(jié)點(diǎn)密度ρ的增加,3種算法的平均移動(dòng)距離都在下降。這因?yàn)殡S著傳感器密度增加,可供選擇的傳感器數(shù)量也會(huì)增加,平均移動(dòng)距離因此下降。在傳感器密度變化的過程中,BCAS算法的平均移動(dòng)距離少于MobiBar算法和Single Sensor算法。在密度小于0.008時(shí),Single Sensor算法的平均移動(dòng)距離要小于MobiBar算法;密度大于0.008時(shí),則相反。隨著傳感器密度的變化,與MobiBar算法和Single Sensor算法相比,BCAS算法的平均移動(dòng)距離分別減少了20.2%和14.2%。 本文在能量收集的移動(dòng)傳感網(wǎng)絡(luò)中構(gòu)建了K-柵欄覆蓋,提出了最大化基于能量收集的移動(dòng)傳感器網(wǎng)絡(luò)中K-柵欄覆蓋的生命周期問題。為了解決該問題,本文使用離散化的思想,將監(jiān)測(cè)區(qū)域劃分為小網(wǎng)格 ,提出BCAS算法來構(gòu)建和調(diào)度柵欄,并進(jìn)行了模擬實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果證明了BCAS算法的有效性。由于本文使用的是集中式算法,需要基站集中計(jì)算,資源消耗較大,因此未來將專注于研究相應(yīng)的分布式算法以降低資源消耗。3.2 網(wǎng)絡(luò)規(guī)模分析
3.3 調(diào)度階段
4 模擬實(shí)驗(yàn)
5 結(jié)束語