一种基于集合最大流算法的WSN栅栏修复方法 |
|||||||
申请号 | CN201611080748.2 | 申请日 | 2016-11-30 | 公开(公告)号 | CN106792742A | 公开(公告)日 | 2017-05-31 |
申请人 | 浙江工业大学; | 发明人 | 钱丽萍; 李鹏欢; 黄亮; 吴远; | ||||
摘要 | 一种基于集合最大流 算法 的WSN栅栏修复方法,包括:步骤1,栅栏间隙:根据已知 位置 节点 计算可得到栅栏间隙集合;步骤2,栅栏修复:2.1)确定可修复间隙的数量:以间隙集合为输入,进行分段修复;2.2)算法复杂度较低:采用基于集合的最大流算能够在保证结果准确的条件下大幅度降低算法的复杂度;2.3)间隙修复方法:利用移动节点修复栅栏的间隙,并且使得移动节点的移动距离最小。采用基于集合的最大流算法计算出能修复间隙的数量并且具有较高的效率,然后利用移动节点修复栅栏,修复过程中移动节点的总移动距离最短,大大加强了栅栏的生存能 力 。 | ||||||
权利要求 | 1.一种基于集合最大流算法的WSN栅栏修复方法,其特征在于:包括如下步骤: |
||||||
说明书全文 | 一种基于集合最大流算法的WSN栅栏修复方法技术领域背景技术[0002] 栅栏覆盖是无线传感器网络领域主要的覆盖模型之一,是覆盖控制研究的热点,主要考察监测目标穿越传感器网络时被检测的情况。无线传感器网络栅栏覆盖有着广泛的用途,如在国防应用中栅栏能够有效地检测边境状况,将栅栏部署在边境线可以探测非法越境者并防止入侵;在博物馆构建栅栏能够很好地监测被保护区域;在环保方面,将栅栏部署在污染源周围可检测污染物的扩散情况;在林业保护方面,将栅栏部署在森林火灾现场可检测火灾蔓延情况等。由于在栅栏构建初很可能出现间隙或者随着节点能量的消耗,节点感知半径减小也极易出现间隙而导致栅栏失效。因此,研究如何修复栅栏间隙对于加强栅栏的生存能力延长网络生存能力具有极其重要的意义。 发明内容[0003] 为了克服现有WSN栅栏修复方法的栅栏容易出现间隙、栅栏的生存能力较差的不足,本发明提出了一种基于集合最大流算法的WSN栅栏修复方法,该方法采用基于集合的最大流算法计算出能修复间隙的数量并且具有较高的效率,然后利用移动节点修复栅栏,修复过程中移动节点的总移动距离最短,大大加强了栅栏的生存能力。 [0004] 为了解决上述技术问题提供了如下技术方案: [0005] 一种基于集合最大流算法的WSN栅栏修复方法,包括如下步骤: [0006] 步骤1:栅栏间隙计算; [0007] 步骤1.1:根据已知位置节点计算可得到栅栏间隙集合Gap; [0008] 步骤2:栅栏修复; [0009] 步骤2.1:可修复栅栏间隙的数量统计; [0010] 步骤2.1.1:以步骤1.1得到的栅栏间隙集合Gap为输入,修复间隙所需要的移动节点数量如公式(1)所示: [0011] [0012] 式(1)中L表示间隙长度,R表示传感器节点的感知半径,mnum表示需要的移动节点数量,对间隙均匀分为mnum段,每段中点为移动节点的待修复点,得到整条栅栏待修补点的集合GD; [0013] 步骤2.1.2:以步骤2.1.1得到的待修补点集合GD为输入和移动节点集合为条件,以距离D为阈值建立待修补点的邻居移动节点,可得到各修补点的邻居移动节点集合NG; [0014] 步骤2.1.3:基于移动邻节点集合的最大流算法解决间隙修复问题,具体步骤如下所示: [0015] 步骤2.1.3.1:分别计算出专属于待修补点的邻居移动节点集合,剔除公共集合,可得到对应的所有待补点的移动邻居节点集合NG’; [0016] 步骤2.1.3.2:以步骤2.1.3.1得到的待补点和其对应的集合NG’为输入,集合元素的数量为权重值建立有向图G; [0017] 步骤2.1.3.3:采用最大流算法计算图G的最大流,最大流等于待修复点的数量,栅栏间隙能被全部修复,否则间隙不能被修复; [0018] 步骤2.2:栅栏间隙修复; [0019] 步骤2.2.1,以步骤2.1.3.1得到待补点的移动邻居节点集合NG’为输入,利用移动节点修复栅栏的间隙,并且使得移动节点的移动距离最小,集合NG’中的可移动节点到它的邻居薄弱点的距离集合为MD={md1,md2,md3,…,mdnum|mdi≤md},mdi(i∈{1,2,…,num})为邻节点集合到待修复点的距离,num为所有移动节点的个数,对集合MD升序排序得到集合MD',采用二分查找法搜索mdoptimum,mdmin<mdoptimum<mdmax,mdmin和mdmax为升序得到的最小值和最大值,使得满足集合ED={MD'|mdi≤mdoptimum}的移动节点恰好能强化所有的薄弱点,则此时移动节点移动的距离总和最小,二分法算法具体步骤为: [0020] 步骤2.2.1.1:初始化 L=0, [0021] 步骤2.2.1.2:更新薄弱点的邻居子集合NG’,将距离待修复点大于mdoptimum的节点从邻居集合NG’中移除,并更新有向图G的权重和拓扑; [0022] 步骤2.2.1.3:计算有向图G的最大流,(如果最大流小于n,n为待修补点集合GD元素数量,则 L=optimum, 如果最大流等于n,且|L-optimum|≤ε,输出mdoptimum; [0023] 步骤2.2.1.4,算法结束,否则执行步骤2.2.1.2。 [0024] 本发明的有益效果是: [0025] (1)本发明通过再次部署较少的移动节点将栅栏中薄弱点进行强化,使得栅栏不容易出现间隙,大大加强了栅栏的生存能力; [0027] 图1是本发明的栅栏间隙图。 [0028] 图2是本发明的修复过程图。 [0029] 图3是本发明的集合最大流算法图,其中,(a)是待修补点,(b)是有向图。 [0030] 图4是本发明的传统的有向图。 具体实施方式[0031] 下面结合附图进一步说明本发明。 [0032] 参照图1~图4,基于集合最大流算法的WSN栅栏修复方法,包括如下步骤: [0033] 步骤1:栅栏间隙计算; [0034] 将一定比例的可移动节点和静态节点混合部署在监测区域中,假设本发明中的传感器节点可以通过定位技术获得坐标并且栅栏已经通过文献的栅栏构建方法构建完成。栅栏在工作过程中由于某些原因(故障)导致栅栏出现间隙,可利用移动节点修复栅栏,当移动节点与间隙的距离小于移动节点的可移动距离D时,此时移动节点可用于修复该间隙,如图1所示,栅栏中节点ni和ni+1之间出现了间隙。 [0035] 步骤1.1:查找出栅栏间隙的位置,才能对其进行修复。假设节点的感知半径为R,由于栅栏中节点的位置已知,所以可以根据栅栏中相邻节点的距离判断是否存在间隙,最后得到栅栏间隙集合Gap。 [0036] 步骤2:栅栏修复; [0037] 通过基于集合的最大流算法计算可修复的栅栏间隙数量,然后将可移动节点移动到栅栏中的间隙处修复栅栏并且使得移动节点的总移动距离最小。 [0038] 步骤2.1:可修复栅栏间隙的数量统计; [0039] 采用基于集合的最大流算法,利用集合的数量代替移动节点的数量,使得能够保证移动节点修复所有栅栏间隙的移动距离总和最小,并且可以大大降低算法的复杂度。 [0040] 步骤2.1.1:步骤1.1已经找到了栅栏的间隙并存放在集合Gap中,修补栅栏的过程如图2所示。修补长度为L的间隙至少需要移动节点的数量为mnum,如式(1)所示。将间隙长度L均匀的分为mnum段,每段的中点为待修补点,如图中g所示,将移动节点移动到这些位置即可完成修复。 [0041] [0042] 步骤2.1.2:假设整条栅栏所有待修补点的集合为GD={g1,g2...gn},移动节点集合为M={m1,m2,m3...ms},当移动节点和待修补点的距离小于D时,移动节点称为待修补点的邻居移动节点。建立各个待修补节点的邻居移动节点集合ngi(i∈{1,2,…,num})表示待修补点gi的邻居移动节点集合。 [0043] 步骤2.1.3:相邻的邻居移动节点集合存在重叠元素,以相邻结合ngi、ngi+1、ngi+2为例,介绍本发明提出的基于集合的最大流算法解决间隙修复问题,具体步骤如下: [0044] 步骤2.1.3.1:分别计算出专属于待修补点gi和gi+1的集合a、c,然后计算属于集合gi和gi+1的公共集合b,假设集合d专属于待修补点gi+2,如式(2)、(3)、(4)、(5)和图3(a)所示。 [0045] a=ngi-ngi∩ngi+1 (2) [0046] b=ngi∩ngi+1 (3) [0047] c=ngi+1-ngi∩ngi+1 (4) [0048] d=ngi+2 (5) [0049] 步骤2.1.3.2:以集合a、b、c、d和待修补点gi、gi+1、gi+2作为点,以集合的元素数量Na、Nb、Nc。Nd为权重值,建立有向图G(V,E),如图3(b)所示,图中添加开始节点u和结束节点v,与u连接的权重值为集合元素的数量,与v连接的权重值都为1。V表示有向图的点集合,E表示有向图的边集合,待修复点和其邻居移动节点集合存在一条边,对应的权重值为集合元素的数量,公共的邻居移动节点集合与它对应的多个待修复点分别存在一条边,对应的权重值为集合元素的数量,如集合b与待修复点gi、gi+1都存在一条边,对应的权重值为Nb。 [0050] 步骤2.1.3.3:采用最大流算法计算图G的最大流,当最大流等于待修复点的数量,此时栅栏间隙能被全部修复,否则存在不能被修复的间隙。 [0051] 步骤2.2:栅栏间隙修复; [0052] 步骤2.2.1:本小节利用可移动节点修复栅栏的间隙,并且使得移动节点的移动距离最小。在步骤2.1.3.1得到了待修补点集合GD的所有邻居移动节点集合NG,集合NG中的所有移动节点表示可用于修复栅栏间隙的节点,集合NG有num个元素。集合NG中的可移动节点距离它对应的邻居待修复点的距离集合为MD={md1,md2,md3,...mdnum|mdi≤md},对集合MD非降序排序,得到集合MD',找出集合MD'中的最小元素mdoptimum和最大元素mdmax。假设现在存在一个距离mdoptimum,mdmin<mdoptimum<mdmax,使得集合MD中的元素不大于mdoptimum时,栅栏间隙能被完全修复,则此时移动节点的总移动距离最短,因此寻找合适的mdoptimum是关键。 [0053] 本发明采用二分搜索法查找mdoptimum,ε为一个值很小的阈值,用于结束算法,算法具体操作如下步骤所示: [0054] 步骤2.2.1.1: L=0, [0055] 步骤2.2.1.2:更新待修复点的邻居集合NG,将距离待修复点大于mdoptimum的节点从邻居集合NG中移除,并更新有向图G的权重和拓扑。 [0056] 步骤2.2.1.3:计算有向图G的最大流,如果最大流小于n(待修补点集合GD元素数量),则 L=optimum, 最大流不会大于待修复点的数量;如果最大流等于n,且|L-optimum|≤ε,输出mdoptimum。 [0057] 步骤2.2.1.4:算法结束,否则执行步骤2.2.1.2。 |