k+1 17 : end while
[0061] 其中,輸入是所有隨機(jī)部署的傳感器的信息,包括節(jié)點(diǎn)坐標(biāo),傳感器的感知范圍, 傳感器的起始感知方向,W及傳感器的感知視角。輸出Cs= {SC1,SC2,...}表示所有輸入的 傳感器所形成各個(gè)的強(qiáng)連接簇。
[0062] 首先創(chuàng)建一個(gè)隊(duì)列Q,將所有的輸入傳感器都放入初始化的隊(duì)列中,然后創(chuàng)建一個(gè) 強(qiáng)連接簇,從隊(duì)列中取出一個(gè)傳感器放入該強(qiáng)連接簇中,對(duì)于每個(gè)新加入最新的強(qiáng)連接簇 中的傳感器&,我們檢查Q中所有剩余傳感器的感知區(qū)域是否與&的感知區(qū)域有重疊,并將Q 中所有與傳感器&直接強(qiáng)連接的傳感器放入&所在的強(qiáng)連接簇中,如果對(duì)于每個(gè)新加入的 簇的傳感器,Q中的每個(gè)傳感器的感知區(qū)域都與新增的每個(gè)傳感器的感知區(qū)域不重疊,則從 Q中取出一個(gè)傳感器放入一個(gè)新的強(qiáng)連接簇中,重復(fù)上述過程,直到隊(duì)列Q中沒有傳感器,輸 出各個(gè)強(qiáng)連接簇。
[0063] 計(jì)算兩個(gè)強(qiáng)連接簇的感知區(qū)域之間W及某個(gè)強(qiáng)連接簇的感知區(qū)域與左右邊界之 間的最短距離
[0064] 求強(qiáng)連接簇SCm的感知區(qū)域與SCn的感知區(qū)域之間的最短距離是通過求SCm中的每 個(gè)傳感器的感知區(qū)域與SCn中的每個(gè)傳感器的感知區(qū)域間最短距離,最后比較得出所有距 離中的最小值即兩個(gè)強(qiáng)連接簇的感知區(qū)域間的最短距離。要求傳感器51與&感知區(qū)域間的 最短距離,即求傳感器Si的感知扇形的邊界與傳感器&的感知扇形的邊界之間的最短距離。 分別求Si的感知扇形兩條線段與一條弧與&的感知扇形兩條線段與一條弧之間的最短距 離,然后比較運(yùn)些距離得出最小值即傳感器Si與傳感器&感知區(qū)域間的最短距離。用d(Si, Sj)表示&和&的感知區(qū)域間的距離,則d(Si,Sj)可W用如下計(jì)算公式的到: ^/(s.,s,) = min{d(f ,f )| =min{d(LA., L.A.),,d(LA.,L.B.)ul{L A., A . ^,d(L.B.,L.A.),
[00 化] d(LA,LA),d(LA,Ai BjUiAA;,L A),d(A滿,LA), 單巧,A,'公,')} (5)
[0066] 其中,cKLiAi,kAj)表示線段LiAi與線段kAj間的最短距離。而傳感器覆蓋扇形邊界 上的點(diǎn)可W用表達(dá)式(2)(3)(4)表示,因此計(jì)算兩條線之間最短距離的問題轉(zhuǎn)化為計(jì)算線 上任意兩點(diǎn)間的最短距離。
[0067] 同理,求某個(gè)強(qiáng)連接簇的感知區(qū)域與左右邊界的最短距離則是通過求強(qiáng)連接簇中 的每個(gè)傳感器節(jié)點(diǎn)的感知區(qū)域與左右邊界的最短距離,然后比較所有傳感器的感知區(qū)域與 左右邊界的最短距離得出其中的最小值,即該強(qiáng)連接簇的感知區(qū)域與左右邊界的最短距 離。要求傳感器的感知區(qū)域與左右邊界的最短距離,即求傳感器的感知扇形的邊界與左右 邊界的短距離。分別求出傳感器的感知扇形的兩條線段與一條弧與左右邊界的最短距離, 然后比較距離中的最小值即傳感器的感知區(qū)域與左右邊界的最短距離。
[0068] Dijakstra算法求所需最少的傳感器數(shù)量
[0069] 根據(jù)兩個(gè)強(qiáng)連接簇的感知區(qū)域之間W及每個(gè)強(qiáng)連接簇的感知區(qū)域與左右邊界之 間的最短距離的計(jì)算方法算出任意兩個(gè)強(qiáng)連接簇感知區(qū)域之間的最短距離及每個(gè)簇的感 知區(qū)域與左右邊界的最短距離。假設(shè)兩個(gè)強(qiáng)連接簇SCl和SC2的感知區(qū)域上最近的點(diǎn)分別為 Pa= (Xa,ya)和Pb= (Xb,yb),因此,強(qiáng)連接簇SCl的感知區(qū)域和SC2的感知區(qū)域的最短距離為:
[0070] t/(sc,, sc,) = d(p", p,) = -X^ +(Ji,- y" Y (6)
[0071] 用于覆蓋兩個(gè)強(qiáng)連接簇感知區(qū)域之間的柵欄缺口的最少移動(dòng)傳感器數(shù)量為
我們用移動(dòng)傳感器的最大感知范圍沿著線段PaPb均勻部署。其中1 表示移動(dòng)傳感器的最大感知范圍。假設(shè)移動(dòng)傳感器的感知視角為4,若0含4 <V3,則感知 扇形的最大感知范圍為半徑為R;若V3 ^ (1) <31則感知扇形的最大感知范圍為感知扇形的 最長(zhǎng)的弦,長(zhǎng)度為:2Rsin( (6/2);若JT含d)<化則感知扇形的最大感知范圍為感知扇形的直 徑長(zhǎng)度為2R。同理,可W求出用于修復(fù)左右邊界與任意強(qiáng)連接簇的感知區(qū)域所形成的缺口 的最少移動(dòng)傳感器的數(shù)量。通過使用Di Astra算法,計(jì)算從左邊界到右邊界用于修復(fù)所需 的最少傳感器數(shù)量,W及部署的路徑。
[0072] 計(jì)算移動(dòng)傳感器的目標(biāo)位置
[0073] 接下來給出用于覆蓋強(qiáng)連接簇SCi和SC2的感知區(qū)域形成的柵欄缺口的移動(dòng)傳感器 的目標(biāo)位置方法。假設(shè)強(qiáng)連接簇SCl和SC2的感知區(qū)域間最近的點(diǎn)分別為Pa=U, ya)和Pb = (Xb,yb)。設(shè)線段P述b與水平正方向所成夾角為過點(diǎn)Pa做與X軸平行的線,在線上取Pa右側(cè)的 點(diǎn)Pc,若yb > ya,則O = Z PbPaPc ;若yb < ya,則O =化-Z PbPaPc,其中假設(shè) Z PbPaPc的范圍為[0, n])。則當(dāng)移動(dòng)傳感器的感知視角&滿足0 ^ & <V3時(shí),用于修復(fù)移動(dòng)傳感器的起始感知角 度為a = O- d) /2,此時(shí)若a<0,a = a+23T;若當(dāng)移動(dòng)傳感器的感知視角d)滿足ji/3 < d) <231,移 動(dòng)傳感器的起始感知角度為a = 0+V2- (1) /2,此時(shí)若a<0,a = a+化。
[0074] 當(dāng)0含d)<V3時(shí),移動(dòng)傳感器目標(biāo)位置的x,y坐標(biāo)分別為:
[0075] Xj = Xa-COSO* A+(j-l)cos〇*G-A ) (7)
[0076] yj = ya_sin〇* A+(j-l)sin〇*G-A ) (8)
[0077] 當(dāng)V3 ^ 4 <加寸,移動(dòng)傳感器目標(biāo)位置的x,y坐標(biāo)分別為
[007引 Xj = Xa-COSO* A+(j-l)cos0*(l-A )+R*sin( <l)/2)*cos0+R*cos( <1)/2)*cos(0+33t/ 2) (9)
[0079] yj = ya-sin〇* A+(j-l)sin〇*(l-A )+R*sin( <l)/2)*sin〇+R*cos( <l)/2)*sin(〇+3V 2) (10)
[0080] 當(dāng)n< (!)<化時(shí),移動(dòng)傳感器目標(biāo)位置的x,y坐標(biāo)分別為
[0081] Xj = Xa-COSO* A+(j-l)cos〇*G-A )+cos〇*R (11)
[0082] yj = ya_sin〇* A+(j-l)sin〇*G-A )+sin〇*R (12)
[0083] 其中,w(scisc2)表示用于覆蓋兩個(gè)強(qiáng)連接簇之間的柵欄缺口的最少移動(dòng)傳感器數(shù) 量:
[0085] 1表示移動(dòng)傳感器的最大感知范圍
[0086] j = 1,2. . .w(sci,SC2) (14)
[0087] A = (w(sci, sc2)*]_-d(sci, SC2) )/(w(sci, sc2)+l) (15)
[008引二、方法流程:
[0089] 該方法能準(zhǔn)確計(jì)算出柵欄缺口的位置,并用最少的移動(dòng)傳感器覆蓋缺口,該方法 具體執(zhí)行步驟如下:
[0090] 步驟一:確定傳感器的覆蓋區(qū)域,采用基于直線的有向傳感器網(wǎng)絡(luò)部署方法,在覆 蓋區(qū)域中部署固定有向傳感器;
[0091] 步驟二:采用判定傳感器節(jié)點(diǎn)感知區(qū)域重疊的方法,判定覆蓋區(qū)域中任意兩個(gè)移 動(dòng)傳感器的感知區(qū)域是否有重疊 W及判定每個(gè)傳感器的感知區(qū)域分別與覆蓋區(qū)域的左右 邊界是否有重疊;
[0092] 步驟采用強(qiáng)連接簇識(shí)別算法,識(shí)別覆蓋區(qū)域中的有向傳感器所形成各個(gè)強(qiáng)連 接簇;
[0093] 步驟四:計(jì)算覆蓋區(qū)域中任意兩個(gè)強(qiáng)連接簇的感知區(qū)域之間的最短距離,并存儲(chǔ) 任意兩個(gè)強(qiáng)連接簇的感知區(qū)域之間距離最短的點(diǎn),計(jì)算每個(gè)強(qiáng)連接簇的感知區(qū)域與左右邊 界之間的最短距離,并存儲(chǔ)每個(gè)傳感器的感知區(qū)域與左右邊界之間距離最短的點(diǎn);
[0094] 步驟五:將強(qiáng)連接簇感知區(qū)域間及強(qiáng)連接簇感知區(qū)域與左右邊界之間的最短距離 除W移動(dòng)傳感器的感知范圍并向上取整得到用于修復(fù)強(qiáng)連接簇感知區(qū)域間與強(qiáng)連接簇感 知區(qū)域與左右邊界間缺口的最少移動(dòng)傳感器數(shù)量;