基于混合策略的异构有向传感器网络动态覆盖方法转让专利

申请号 : CN201610915401.9

文献号 : CN106358210B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李明胡江平

申请人 : 重庆工商大学

摘要 :

本发明公开了一种基于混合策略的异构有向传感器网络动态覆盖方法,根据节点分布情况将节点归为边界节点或非边界节点,然后调整节点的感知方向,减少覆盖冗余;进一步检测是否存在覆盖空洞,若存在的覆盖空洞,则计算节点的最佳位置,最后将节点移动到最佳位置处。有益效果:采用本发明的基于混合策略的异构有向传感器网络动态覆盖方法,减少覆盖冗余,将冗余节点移动至优化位置对覆盖空洞进行修复。结果证明,提出算法较之于比较算法能有效的提高网络覆盖率和降低能量消耗。

权利要求 :

1.一种基于混合策略的异构有向传感器网络动态覆盖方法,其特征在于包括以下步骤:步骤1,将传感器网络的监测区域分为N个面积相同的栅格,并获取每个栅格的覆盖情况;

步骤2,对监测区域内的节点si进行分类,确定节点si是边界节点还是非边界节点,节点si表示监测区域内的第i个传感器,i=1,2,3…H,H为监测区域内的传感器总数;

步骤3,判定节点si是否需要调整方向,若不需要调整,则节点si保持原方向,进入步骤

5;若需要调整,则进入步骤4;

步骤4,判定节点si是否为冗余节点,若不是冗余节点,则将节点si调整到最佳感知方向,之后进入步骤5;若是冗余节点,则进入步骤5;

步骤5,令i=i+1,判定i是否大于H,若i大于H,则进入步骤6,否则,返回步骤2;

步骤6,判定监测区域内是否有栅格未被任何节点感知,若所有栅格均被节点感知,则保持传感网络中所有节点的原位置不变,算法结束;在存在冗余节点的条件下,若有栅格未被任何节点感知,则进入步骤7;

步骤7,调整所有冗余节点的物理位置,选择使区域覆盖率最大的物理位置作为冗余节点的最佳位置。

2.根据权利要求1所述基于混合策略的异构有向传感器网络动态覆盖方法,其特征在于:步骤1中栅格的覆盖情况包括覆盖栅格的节点序号、栅格是否被覆盖、栅格是否被重复覆盖的情况。

3.根据权利要求1所述基于混合策略的异构有向传感器网络动态覆盖方法,其特征在于:步骤2中通过节点si与监测区域边界的最近的欧式距离d来对节点si进行分类,若欧式距离d小于阈值Q,则节点si为边界节点,反之为非边界节点。

4.根据权利要求1所述基于混合策略的异构有向传感器网络动态覆盖方法,其特征在于:步骤3中包括判定边界节点是否需要调整感知方向和判定非边界节点是否需要调整感知方向:

1)判定边界节点进行是否需要调整感知方向:

a,计算边界节点的感知面积ci,通过计算边界节点覆盖范围内的栅格数量得出感知面积ci;

b,按照以下公式判定边界节点是否需要调整感知方向:

其中,p为预设阈值, 为节点si的感知角度, 为节点si的感知半径,Sboundary=1表示节点si需要调整感知方向,Sboundary=0表示不需要调整感知方向;

2)判定非边界节点进行是否需要调整感知方向:

A、统计非边界节点的覆盖范围内重复覆盖的栅格数,即统计非边界节点所覆盖的栅格中,被其他节点重复覆盖的栅格总数;

B、判定重复覆盖的栅格总数是否超过预设值θt,若超过,则非边界节点需要调整感知方向,反之,则不需要调整感知方向。

5.根据权利要求1所述基于混合策略的异构有向传感器网络动态覆盖方法,其特征在于:步骤4中包括判定边界节点是否为冗余节点和判定非边界节点是否为冗余节点的步骤;

第一、判定边界节点是否为冗余节点:

步骤4.1,计算边界节点的边际覆盖效用SA,即只被边界节点感知的栅格数;

步骤4.2,边界节点沿同一旋转方向以固定角度BC旋转A次,并计算每次旋转后的边际覆盖效用Sa,a=1,2,3……A,A=2×π/BC;

步骤4.3,判定每次旋转后的边际覆盖效用Sa是否大于SA,若大于,则选择旋转后所有边际覆盖效用Sa际中值最大所对应感应方向为最佳感知方向;否则,所述边界节点为冗余节点;

第二、判定非边界节点是否为冗余节点:

步骤4.a、计算非边界节点的边际覆盖效用SB,即只被非边界节点自身感知的栅格数;

步骤4.b、非边界节点获取自身的相邻节点数,即在非边界节点的通信半径内的节点的数量;

步骤4.c、所有非边界节点将相邻节点数发送汇聚节点,汇聚节点获取覆盖区域的相邻节点总数;

步骤4.d、汇聚节点根据相邻节点总数得出覆盖区域的平均节点数并发送给每一个非边界节点;

步骤4.e、每个非边界节点判定平均节点数是否大于自身的相邻节点数进行比较;

若相邻节点数大于平均节点数,则该非边界节点处于节点分布密集区域,所述非边界节点沿同一旋转方向以固定角度Small_Angle旋转2×π/Small_Angle次,并计算每次旋转后非边界节点的边际覆盖效用Sb1;

b1=1,2,3……2×π/Small_Angle;

若相邻节点数小于平均节点数,则该非边界节点处于节点分布稀疏区域,所述非边界节点沿同一旋转方向以固定角度Big_Angle旋转2×π/Big_Angle次,并计算每次旋转后非边界节点的边际覆盖效用Sb2,b2=1,2,3……2×π/Big_Angle;

步骤4.f、判定每次旋转后的边际覆盖效用Sb1、Sb2是否大于SB,若大于,则选择旋转后所有边际覆盖效用Sb1、Sb2中最大值所对应感应方向为最佳感知方向;否则所述非边界节点为冗余节点。

6.根据权利要求5所述基于混合策略的异构有向传感器网络动态覆盖方法,其特征在于:判定非边界节点是否为冗余节点中的步骤4.b采用以下方法获取相邻节点数:节点si在其通信半径内发出一条Neighbor_discover消息,消息内包含节点si的唯一ID、物理位置 感知半径 感知角度 和感知方向 收到Neighbor_discover消息的节点sj则回复节点si一个Ack消息,消息内包含节点si的ID和节点sj的ID,节点si通过统计收到的Ack消息得到其邻居节点数。

7.根据权利要求1所述基于混合策略的异构有向传感器网络动态覆盖方法,其特征在于:步骤7采用以下方法确定冗余节点sk的最佳位置,冗余节点sk表示第k个冗余节点:步骤7.1、编码,采用实数编码的方式对所有冗余节点sk的位置坐标进行编码,得到每个冗余节点sk的位置坐标所对应的个体,其中k=1,2,3...,nm,nm为冗余节点的总数;

步骤7.2、建立初始群体,对个体进行随机初始化,建立初始群体,其公式如下:其中, 分别为初始群体中第g个个体的第j维的最大值和最小值, 为初始群体中第g个个体的第j维元素,NP为初始群体中个体的个数,rand为(0,1)之间的随机数;

步骤7.3、变异操作,采用DE/rand-to-best/1变异方法对初始群体进行变异,同时引入虚拟力对初始群体的变异方向进行引导,其公式如下:At=[At(1),...,At(nm)]

t t t

A(k)=[Ax(k),Ay(k)]

其中, 为第t次迭代时种群中最好的区域覆盖率所对应的个体,r1,r2,r3为种群中随机选择的三个个体序号,r1≠r2≠r3, 和 是在种群中随机选择的三个个体在第t次迭代时第j维元素的值,F为缩放因子,AC1和 是控制虚拟力的常数和变量,At表示所有冗余节点在所受的虚拟力情况下位置的改变, 表示冗余节点sk所受到的虚拟力Fk在x轴上的分量, 表示所述冗余节点sk所受到的虚拟力Fk在y轴上的分量,MaxStep为所述冗余节点sk在虚拟力的引导下所移动的最大距离;

步骤7.4、交叉操作,采用以下公式对初始群体进行交叉操作:

其中, 表示交叉操作后初始群体中第g个个体的第j维元素的值,CR是交叉因子,取值为(0,1);rand(g)是1到NP的随机整数;

步骤7.5、根据值 计算监测区域的区域覆盖率

步骤7.6、选择操作,采用以下公式得到迭代次数为t+1时的第g个个体:步骤7.7、判定是否达到最大迭代次数,若没有,则返回步骤7.2,若达到,则选择能使监测区域的区域覆盖率最大个体,每个冗余节点以该个体中与其对应的位置的坐标作为自己的最佳位置。

8.根据权利要求7所述基于混合策略的异构有向传感器网络动态覆盖方法,其特征在于:步骤7.3中虚拟力Fk按照以下公式计算:Fk′j表示冗余节点sk受到其相邻节点sj的虚拟力,mk表示冗余节点sk的感知面积,mj表示相邻节点sj的感知面积,αkj代表单位向量,指示虚拟力的方向,即由冗余节点sk指向相邻节点sj的方向, 表示冗余节点sk的感知半径,l1为常量,Neig_bor(sk)表示节点sk相邻节点的集合,冗余节点sk受到的虚拟力Fk是其所有相邻节点对其施加虚拟力的合力,d(k,j)表示冗余节点sk到相邻节点sj的欧式距离。

9.根据权利要求7所述基于混合策略的异构有向传感器网络动态覆盖方法,其特征在于:步骤7.5中区域覆盖率 按照以下方法计算:步骤7.51,初始化长度为N的一维数组CoverStatus,使其所有元素的值为0,一维数组中的元素与栅格一一对应;初始化迭代指示变量n和k,使n=1,k=1;

步骤7.52,获取栅格的中心点到所述冗余节点sk的距离dn和栅格的中心点与冗余节点sk的位置形成的向量与冗余节点sk的感知方向之间的夹角αn;

步骤7.53,判定距离dn是否小于所述冗余节点sk的感知半径 若不小于感知半径则令n=n+1,也就是对下一个栅格进行判定,并返回步骤7.52;若小于感知半径 则进入步骤7.54;

步骤7.54,判定栅格的中心点与冗余节点sk的位置形成的向量与冗余节点sk的感知方向之间的夹角αn是否小于冗余节点sk的感知角度的一半,若小于,则该栅格在冗余节点sk的感知范围,一维数组CoverStatus中与该栅格对应的元素的值变为1,也就是令CoverStatus(n)=1;否则,该栅格不被冗余节点sk感知;

步骤7.55,判定是否所有栅格均已进行了判定,也就是判断n是否大于N,若没有对所有的栅格进行了判定,即n

步骤7.56,对下一个冗余节点进行判定,也就是令k=k+1,判定k是否大于nm,若k大于nm,则进入步骤7.57;否则,返回步骤7.52;

步骤7.57,统计一维数组CoverStatus中元素值为1的元素总数,并使L的值等于该值,并根据公式 计算出监测区域的区域覆盖率。

说明书 :

基于混合策略的异构有向传感器网络动态覆盖方法

技术领域

[0001] 本发明涉及智能控制领域,特别是涉及一种基于混合策略的异构有向传感器网络动态覆盖方法。

背景技术

[0002] 近年来,随着硬件技术的发展,视频传感器、超声波传感器和红外传感器等传感器价格越来越低廉,使得有向传感器网络的应用越来越广泛,在视频监控、智能家居和环境监测等场合得到广泛应用。
[0003] 覆盖控制作为有向传感器网络的一个基本问题,是反映网络服务质量的重要指标,近年来受到越来越多研究者的重视。不同于传统的全向传感器节点,有向传感器节点的覆盖区域不仅取决于节点的位置,而且还跟节点的感知角度和感知方向有关。
[0004] 有向传感器网络的动态覆盖算法是指通过改变节点的感知方向或者节点的物理位置来达到提高网络覆盖率的目的。近年来,有向传感器网络的动态覆盖算法受到越来越多研究者的重视。虽然对有向传感器网络覆盖问题进行研究,并取得了一定的成果,但现有的研究成果均假定参与覆盖的有向传感器节点类型相同,即节点的感知半径、感知角度、移动能力等参数都完全相同,忽略了节点异构性对有向传感器网络覆盖性能的影响以及具有网络扩展性能差的缺点。
[0005] 同时,现有的动态覆盖算法仅仅单纯依靠感知方向的调整或者节点物理位置的改变进而达到增强网络覆盖性能的目的,未能充分将两者结合起来考虑对覆盖性能的影响。另外,在某些场景中,仅仅依靠节点感知方向的调整可能会造成覆盖“空洞”的现象。

发明内容

[0006] 为解决以上技术问题,本发明提供一种基于混合策略的异构有向传感器网络动态覆盖方法,通过调整节点的感知方向,减少节点在覆盖区域内的重叠面积,通过调整节点的物理位置,减少覆盖区域中未覆盖的区域面积。
[0007] 技术方案如下:
[0008] 一种基于混合策略的异构有向传感器网络动态覆盖方法,其关键在于包括以下步骤:
[0009] 步骤1,将传感器网络的监测区域分为N个面积相同的栅格,并获取每个栅格的覆盖情况;
[0010] 步骤2,对监测区域内的节点si进行分类,确定节点si是边界节点还是非边界节点,节点si表示监测区域内的第i个传感器,i=1,2,3…H,H为监测区域内的传感器总数;
[0011] 步骤3,判定节点si是否需要调整方向,若不需要调整,则节点si保持原方向,进入步骤5;若需要调整,则进入步骤4;
[0012] 步骤4,判定节点si是否为冗余节点,若不是冗余节点,则将节点si调整到最佳感知方向,之后进入步骤5;若是冗余节点,则进入步骤5;
[0013] 步骤5,令i=i+1,判定i是否大于H,若i大于H,则进入步骤6,否则,返回步骤2;
[0014] 步骤6,判定监测区域内是否有栅格未被任何节点感知,若所有栅格均被节点感知,则保持传感网络中所有节点的原位置不变,算法结束;在存在冗余节点的条件下,若有栅格未被任何节点感知,则进入步骤7;
[0015] 步骤7,调整所有冗余节点的物理位置,选择使区域覆盖率最大的物理位置作为冗余节点的最佳位置。
[0016] 采用上述方法,通过将监测区域划分成若干个面积相同的栅格,并根据每个栅格的覆盖情况来确定每个节点的感知方向,充分考虑了节点异构性对网络覆盖性能的影响,使网络的扩展性得到提高。并且将感知方向的调整和节点物理位置调整相结合,增强了网络覆盖性能,避免出现未覆盖的区域。
[0017] 更进一步的,步骤1中栅格的覆盖情况包括覆盖栅格的节点序号、栅格是否被覆盖、栅格是否被重复覆盖的情况。
[0018] 采用上述方法,便于对每个栅格的覆盖情况进行统计。
[0019] 更进一步的,步骤2中通过节点si与监测区域边界的最近的欧式距离d来对节点si进行分类,若欧式距离d小于阈值Q,节点si为边界节点,反之为非边界节点。
[0020] 采用上述方法,能将节点分为边界节点和非边界节点,对两类不同的节点采用不同的方法进行感知方向调整,使节点感知方向调整更加准确。
[0021] 更进一步的,步骤3中包括判定边界节点是否需要调整感知方向和判定非边界节点是否需要调整感知方向:
[0022] 1)判定边界节点进行是否需要调整感知方向:
[0023] a,计算边界节点的感知面积ci,通过计算边界节点覆盖范围内的栅格数量得出感知面积ci;
[0024] b,按照以下公式判定边界节点是否需要调整感知方向:
[0025]
[0026] 其中,p为预设阈值, 为节点si的感知角度, 为节点si的感知半径,Sboundary=1表示节点si需要调整感知方向,Sboundary=0表示不需要调整感知方向;
[0027] 2)判定非边界节点进行是否需要调整感知方向:
[0028] A、统计非边界节点的覆盖范围内重复覆盖的栅格数,即统计非边界节点所覆盖的栅格中,被其他节点重复覆盖的栅格总数;
[0029] B、判定重复覆盖的栅格总数是否超过预设值θt,若超过,则非边界节点需要调整感知方向,反之,则不需要调整感知方向。
[0030] 采用上述方法,对边界节点和非边界节点进行阈值判定,不需要调整感知方向的节点不用进行方向调整,避免做无用功。因为边界节点和非边界节点的覆盖情况不一样,所以采用不同的方法对边界节点和非边界节点进行判定,更加准确。
[0031] 更进一步的,步骤4中包括判定边界节点是否为冗余节点和判定非边界节点是否为冗余节点的步骤;
[0032] 第一、判定边界节点是否为冗余节点:
[0033] 步骤4.1,计算边界节点的边际覆盖效用SA,即只被边界节点感知的栅格数;
[0034] 步骤4.2,边界节点沿同一旋转方向以固定角度BC旋转A次,并计算每次旋转后的边际覆盖效用Sa,a=1,2,3……A,A=2×π/BC;
[0035] 步骤4.3,判定每次旋转后的边际覆盖效用Sa是否大于SA,若大于,则选择旋转后所有边际覆盖效用Sa际中值最大所对应感应方向为最佳感知方向;否则,所述边界节点为冗余节点;
[0036] 第二、判定非边界节点是否为冗余节点:
[0037] 步骤4.1a、计算非边界节点的边际覆盖效用SB,即只被非边界节点自身感知的栅格数;
[0038] 步骤4.1b、非边界节点获取自身的相邻节点数,即在非边界节点的通信半径内的节点的数量;
[0039] 步骤4.1c、所有非边界节点将相邻节点数发送汇聚节点,汇聚节点获取覆盖区域的相邻节点总数;
[0040] 步骤4.1d、汇聚节点根据相邻节点总数得出覆盖区域的平均节点数并发送给每一个非边界节点;
[0041] 步骤4.1e、每个非边界节点判定平均节点数是否大于自身的相邻节点数进行比较;
[0042] 若相邻节点数大于平均节点数,则该非边界节点处于节点分布密集区域,所述非边界节点沿同一旋转方向以固定角度Small_Angle旋转2×π/Small_Angle次,并计算每次旋转后非边界节点的边际覆盖效用Sb1;
[0043] b1=1,2,3……2×π/Small_Angle;
[0044] 若相邻节点数小于平均节点数,则该非边界节点处于节点分布稀疏区域,所述非边界节点沿同一旋转方向以固定角度Big_Angle旋转2×π/Big_Angle次,并计算每次旋转后非边界节点的边际覆盖效用Sb2,b2=1,2,3……2×π/Big_Angle;
[0045] 步骤4.1f、判定每次旋转后的边际覆盖效用Sb1、Sb2是否大于SB,若大于,则选择旋转后所有边际覆盖效用Sb1、Sb2中最大值所对应感应方向为最佳感知方向;否则所述非边界节点为冗余节点。
[0046] 采用上述方法,因为边界节点和非边界节点对栅格的覆盖情况不同,所以采用不同的方法分别对边界节点和非边界节点中的冗余节点进行筛选,并调整节点的感知方向,使调整后的节点的感知方向更加准确,增强网络的覆盖性能。
[0047] 更进一步的,判定非边界节点是否为冗余节点中的步骤4.1b采用以下方法获取相邻节点数:
[0048] 节点si在其通信半径内发出一条Neighbor_discover消息,消息内包含节点si的唯一ID、物理位置 感知半径 感知角度 和感知方向 收到Neighbor_discover消息的节点sj则回复节点si一个Ack消息,消息内包含节点si的ID和节点sj的ID,节点si通过统计收到的Ack消息得到其邻居节点数。
[0049] 采用上述方法,能得到每个非边界节点的相邻节点数,便于后续对网络的平均节点数进行计算。
[0050] 更进一步的,步骤7采用以下方法确定冗余节点sk的最佳位置,冗余节点sk表示第k个冗余节点:
[0051] 步骤7.1、编码,采用实数编码的方式对所有冗余节点sk的位置坐标进行编码,得到每个冗余节点sk的位置坐标所对应的个体,其中k=1,2,3...,nm,nm为冗余节点的总数;
[0052] 步骤7.2、建立初始群体,对个体进行随机初始化,建立初始群体,其公式如下:
[0053]
[0054] 其中, 分别为初始群体中第g个个体的第j维的最大值和最小值, 为初始群体中第g个个体的第j维元素,NP为初始群体中个体的个数,rand为(0,1)之间的随机数;
[0055] 步骤7.3、变异操作,采用DE/rand-to-best/1变异方法对初始群体进行变异,同时引入虚拟力对初始群体的变异方向进行引导,其公式如下:
[0056]
[0057] At=[At(1),...,At(nm)]
[0058] At(k)=[Axt(k),Ayt(k)]
[0059]
[0060]
[0061] 其中, 为第t次迭代时种群中最好的区域覆盖率所对应的个体,r1,r2,r3为种群中随机选择的三个个体序号,r1≠r2≠r3, 和 是在种群中随机选择的三个个体在第t次迭代时第j维元素的值,F为缩放因子,AC1和 是控制虚拟力的常数和变量,At表示所有冗余节点在所受的虚拟力情况下位置的改变, 表示冗余节点sk所受到的虚拟力Fk在x轴上的分量, 表示所述冗余节点sk所受到的虚拟力Fk在y轴上的分量,MaxStep为所述冗余节点sk在虚拟力的引导下所移动的最大距离;
[0062] 步骤7.4、交叉操作,采用以下公式对初始群体进行交叉操作:
[0063]
[0064] 其中, 表示交叉操作后初始群体中第g个个体的第j维元素的值,CR是交叉因子,取值为(0,1);rand(g)是1到NP的随机整数;
[0065] 步骤7.5、根据值 计算监测区域的区域覆盖率
[0066] 步骤7.6、选择操作,采用以下公式得到迭代次数为t+1时的第g个个体:
[0067]
[0068] 步骤7.7、判定是否达到最大迭代次数,若没有,则返回步骤7.2,若达到,则选择能使监测区域的区域覆盖率最大个体,每个冗余节点以该个体中与其对应的位置的坐标作为自己的最佳位置。
[0069] 采用上述方法,能得到更加广泛的位置坐标,再从这些位置坐标中选择出最佳的位置,冗余节点新的位置坐标考虑得更加全面,得到的最佳位置也更加符合实际情况。
[0070] 更进一步的,步骤7.3中虚拟力Fk按照以下公式计算:
[0071]
[0072]
[0073] Fk′j表示冗余节点sk受到其相邻节点sj的虚拟力,mk表示冗余节点sk的感知面积,mj表示相邻节点sj的感知面积,αkj代表单位向量,指示虚拟力的方向,即由冗余节点sk指向相邻节点sj的方向, 表示冗余节点sk的感知半径,l1为常量,Neig_bor(sk)表示节点sk相邻节点的集合,冗余节点sk受到的虚拟力是其所有相邻节点对其施加虚拟力的合力。
[0074] 采用上述方法,采用虚拟力来引导最佳位置的选择方向,减小了数据处理量的情况下,保证了最佳位置选择的准确性。
[0075] 更进一步的,步骤7.5中区域覆盖率 按照以下方法计算:
[0076] 步骤7.51,初始化长度为N的一维数组CoverStatus,使其所有元素的值为0,一维数组中的元素与栅格一一对应;初始化迭代指示变量n和k,使n=1,k=1。
[0077] 步骤7.52,获取栅格的中心点到所述冗余节点sk的距离dn和栅格的中心点与冗余节点sk的位置形成的向量与冗余节点sk的感知方向之间的夹角αn;
[0078] 步骤7.53,判定距离dn是否小于所述冗余节点sk的感知半径 若不小于感知半径 则令n=n+1,也就是对下一个栅格进行判定,并返回步骤7.52;若小于感知半径则进入步骤7.54;
[0079] 步骤7.54,判定栅格的中心点与冗余节点sk的位置形成的向量与冗余节点sk的感知方向之间的夹角αn是否小于冗余节点sk的感知角度的一半,若小于,则该栅格在冗余节点sk的感知范围,一维数组CoverStatus中与该栅格对应的元素的值变为1,也就是令CoverStatus(n)=1;否则,该栅格不被冗余节点sk感知。
[0080] 步骤7.55,判定是否所有栅格均已进行了判定,也就是判断n是否大于N,若没有对所有的栅格进行了判定,即n
[0081] 步骤7.56,对下一个冗余节点进行判定,也就是令k=k+1,判定k是否大于nm,若k大于nm,则进入步骤7.57;否则,返回步骤7.52。
[0082] 步骤7.57,统计一维数组CoverStatus中元素值为1的元素总数,并使L的值等于该值并根据公式 计算出监测区域的区域覆盖率。
[0083] 采用上述方法,能得出每个栅格的覆盖情况,从而计算出每个节点的区域覆盖率,便于对节点的覆盖情况评价。
[0084] 有益效果:采用本发明的基于混合策略的异构有向传感器网络动态覆盖方法,减少覆盖冗余,将冗余节点移动至优化位置对覆盖空洞进行修复。结果证明,提出算法较之于比较算法能有效的提高网络覆盖率和降低能量消耗。

附图说明

[0085] 图1是本发明的方法流程图;
[0086] 图2为图1中确定最佳位置的方法流程图;
[0087] 图3为区域覆盖率的计算方法流程图;
[0088] 图4为传感器感知模型示意图;
[0089] 图5为传感器传输距离示意图;
[0090] 图6为个体编码示意图;
[0091] 图7是感知方向调整后网络覆盖率对比图;
[0092] 图8是最终区域覆盖率对比图;
[0093] 图9是节点覆盖重叠面积变化对比图;
[0094] 图10是节点分布示意图;
[0095] 图11是算法能量消耗情况对比图。

具体实施方式

[0096] 下面结合实施例和附图对本发明作进一步说明。
[0097] 如图1-11所示,首先将H个传感器节点随机部署在监测区域,然后采用以下步骤对监测区域内的传感器节点进行调整:
[0098] 步骤1,将传感器网络的监测区域分为N个面积相同的栅格,并获取每个栅格的覆盖情况。栅格的覆盖情况包括覆盖栅格的节点序号、栅格是否被覆盖、栅格是否被重复覆盖等情况。
[0099] 步骤2,通过节点si与监测区域边界的最近的欧式距离d来对节点si进行分类,若欧式距离d小于阈值Q,节点si为边界节点,反之为非边界节点。节点si表示监测区域内的第i个传感器,i=1,2,3…H,H为监测区域内的传感器总数。
[0100] 步骤3,判定节点si是否需要调整方向,若不需要调整,则节点si保持原方向,进入步骤5;若需要调整,则进入步骤4;
[0101] 判定节点si是否需要调整方向包括判定边界节点是否需要调整感知方向和判定非边界节点是否需要调整感知方向:
[0102] 1)判定边界节点进行是否需要调整感知方向:
[0103] a,计算边界节点的感知面积ci,通过计算边界节点覆盖范围内的栅格数量得出感知面积ci;
[0104] b,按照以下公式判定边界节点是否需要调整感知方向:
[0105]
[0106] 其中,p为预设阈值, 为节点si的感知角度, 为节点si的感知半径,Sboundary=1表示节点si需要调整感知方向,Sboundary=0表示不需要调整感知方向;
[0107] 2)判定非边界节点进行是否需要调整感知方向:
[0108] A、统计非边界节点的覆盖范围内重复覆盖的栅格数,即统计非边界节点所覆盖的栅格中,被其他节点重复覆盖的栅格总数;
[0109] B、判定重复覆盖的栅格总数是否超过预设值θt,若超过,则非边界节点需要调整感知方向,反之,则不需要调整感知方向。
[0110] 步骤4,判定节点si是否为冗余节点,若不是冗余节点,则将节点si调整到最佳感知方向,之后进入步骤5;若是冗余节点,则进入步骤5。
[0111] 判定节点si是否为冗余节点包括判定边界节点是否为冗余节点和判定非边界节点是否为冗余节点的步骤;
[0112] 第一、判定边界节点是否为冗余节点:
[0113] 步骤4.1,计算边界节点的边际覆盖效用SA,即只被边界节点感知的栅格数;
[0114] 步骤4.2,边界节点沿同一旋转方向以固定角度BC旋转A次,并计算每次旋转后的边际覆盖效用Sa,a=1,2,3……A,A=2×π/BC;
[0115] 步骤4.3,判定每次旋转后的边际覆盖效用Sa是否大于SA,若大于,则选择旋转后所有边际覆盖效用Sa际中值最大所对应感应方向为最佳感知方向;否则,所述边界节点为冗余节点;
[0116] 第二、判定非边界节点是否为冗余节点:
[0117] 步骤4.a、计算非边界节点的边际覆盖效用SB,即只被非边界节点自身感知的栅格数;
[0118] 步骤4.b、非边界节点获取自身的相邻节点数,即在非边界节点的通信半径内的节点的数量;
[0119] 步骤4.c、所有非边界节点将相邻节点数发送汇聚节点,汇聚节点获取覆盖区域的相邻节点总数;
[0120] 步骤4.d、汇聚节点根据相邻节点总数得出覆盖区域的平均节点数并发送给每一个非边界节点;
[0121] 步骤4.e、每个非边界节点判定平均节点数是否大于自身的相邻节点数进行比较;
[0122] 若相邻节点数大于平均节点数,则该非边界节点处于节点分布密集区域,所述非边界节点沿同一旋转方向以固定角度Small_Angle旋转2×π/Small_Angle次,并计算每次旋转后非边界节点的边际覆盖效用Sb1,
[0123] b1=1,2,3……2×π/Small_Angle;
[0124] 若相邻节点数小于平均节点数,则该非边界节点处于节点分布稀疏区域,所述非边界节点沿同一旋转方向以固定角度Big_Angle旋转2×π/Big_Angle次,并计算每次旋转后非边界节点的边际覆盖效用Sb2,b2=1,2,3……2×π/Big_Angle。
[0125] 本实施例采用以下方法获取相邻节点数:
[0126] 节点si在其通信半径内发出一条Neighbor_discover消息,消息内包含节点si的唯一ID、物理位置 感知半径 感知角度 和感知方向 收到Neighbor_discover消息的节点sj则回复节点si一个Ack消息,消息内包含节点si的ID和节点sj的ID,节点si通过统计收到的Ack消息得到其邻居节点数。
[0127] 步骤4.f、判定每次旋转后的边际覆盖效用Sb1、Sb2是否大于SB,若大于,则选择旋转后所有边际覆盖效用Sb1、Sb2中最大值所对应感应方向为最佳感知方向;否则所述非边界节点为冗余节点。
[0128] 步骤5,令i=i+1,判定i是否大于H,若i大于H,则进入步骤6,否则,返回步骤2;
[0129] 步骤6,判定监测区域内是否有栅格未被任何节点感知,若所有栅格均被节点感知,则保持传感网络中所有节点的原位置不变,算法结束;在存在冗余节点条件下,若有栅格未被任何节点感知,则进入步骤7;
[0130] 步骤7,调整所有冗余节点的物理位置,选择使区域覆盖率最大的物理位置作为冗余节点的最佳位置。
[0131] 本实施例采用以下方法确定冗余节点sk的最佳位置,冗余节点sk表示第k个冗余节点:
[0132] 步骤7.1、编码,采用实数编码的方式对所有冗余节点sk的位置坐标进行编码,得到每个冗余节点sk的位置坐标所对应的个体,其中k的初始值为1,k=1,2,3...,nm,nm为冗余节点的总数;
[0133] 步骤7.2、建立初始群体,对个体进行随机初始化,建立初始群体,其公式如下:
[0134]
[0135] 其中, 分别为初始群体中第g个个体的第j维的最大值和最小值, 为初始群体中第g个个体的第j维元素,NP为初始群体中个体的个数,rand为(0,1)之间的随机数;
[0136] 步骤7.3、变异操作,采用DE/rand-to-best/1变异方法对初始群体进行变异,同时引入虚拟力对初始群体的变异方向进行引导,其公式如下:
[0137]
[0138] At=[At(1),...,At(nm)]
[0139] At(k)=[Axt(k),Ayt(k)]
[0140]
[0141]
[0142] 其中, 为第t次迭代时种群中最好的区域覆盖率所对应的个体,r1,r2,r3为种群中随机选择的三个个体序号,r1≠r2≠r3, 和 是在种群中随机选择的三个个体在第t次迭代时第j维元素的值,F为缩放因子,AC1和 是控制虚拟力的常数和变量,At表示所有冗余节点在所受的虚拟力情况下位置的改变, 表示冗余节点sk所受到的虚拟力Fk在x轴上的分量, 表示所述冗余节点sk所受到的虚拟力Fk在y轴上的分量,MaxStep为所述冗余节点sk在虚拟力的引导下所移动的最大距离。
[0143] 其中,虚拟力Fg按照以下公式计算:
[0144]
[0145]
[0146] Fk′j表示冗余节点sk受到其相邻节点sj的虚拟力,mk表示冗余节点sk的感知面积,mj表示相邻节点sj的感知面积,αkj代表单位向量,指示虚拟力的方向,即由冗余节点sk指向相邻节点sj的方向, 表示冗余节点sk的感知半径,l1为常量,Neig_bor(sk)表示节点sk相邻节点的集合,冗余节点sk受到的虚拟力是其所有相邻节点对其施加虚拟力的合力。
[0147] 步骤7.4、交叉操作,采用以下公式对初始群体进行交叉操作:
[0148]
[0149] 其中, 表示交叉操作后初始群体中第g个个体的第j维元素的值,CR是交叉因子,取值为(0,1);rand(g)是1到NP的随机整数;
[0150] 步骤7.5、根据值 计算监测区域的区域覆盖率
[0151] 其中,区域覆盖率 按照以下方法计算:
[0152] 步骤7.51,初始化长度为N的一维数组CoverStatus,使其所有元素的值为0,一维数组中的元素与栅格一一对应;初始化迭代指示变量n和k,使n=1,k=1。
[0153] 步骤7.52,获取栅格的中心点到所述冗余节点sk的距离dn和栅格的中心点与冗余节点sk的位置形成的向量与冗余节点sk的感知方向之间的夹角αn。
[0154] 步骤7.53,判定距离dn是否小于所述冗余节点sk的感知半径 若不小于感知半径 则令n=n+1,也就是对下一个栅格进行判定,并返回步骤7.52;若小于感知半径则进入步骤7.54;
[0155] 步骤7.54,判定栅格的中心点与冗余节点sk的位置形成的向量与冗余节点sk的感知方向之间的夹角αn是否小于冗余节点sk的感知角度的一半,若小于,则该栅格在冗余节点sk的感知范围,一维数组CoverStatus中与该栅格对应的元素的值变为1,也就是令CoverStatus(n)=1;否则,该栅格不被冗余节点sk感知。
[0156] 步骤7.55,判定是否所有栅格均已进行了判定,也就是判断n是否大于N,若没有对所有的栅格进行了判定,即n
[0157] 步骤7.56,对下一个冗余节点进行判定,也就是令k=k+1,判定k是否大于nm,若k大于nm,则进入步骤7.57;否则,返回步骤7.52。
[0158] 步骤7.57,统计一维数组CoverStatus中元素值为1的元素总数,并使L的值等于该值并根据公式 计算出监测区域的区域覆盖率。
[0159] 步骤7.6、选择操作,采用以下公式得到迭代次数为t+1时的第g个个体:
[0160]
[0161] 步骤7.7、判定是否达到最大迭代次数,若没有,则返回步骤7.2,若达到,则选择能使监测区域的区域覆盖率最大个体,每个冗余节点sk以该个体中与其对应的位置的坐标作为自己的最佳位置。
[0162] 各种参数进行设置:B_MI=10,BC=π/12,μ=0.5,p=60,p′=0.9,Big_Angle=π/36,Small_Angle=π/180.G=200,NP=30,CR=0.6,AC1=1,F服从N(0,1)正态分布,l1=2,。
[0163] 图5为种群中某个个体编码示意图,其中 和 为第i个需要移动位置的节点的X轴坐标和Y轴坐标。
[0164] 图6为不同节点数量下,感知方向调整后网络覆盖率的情况对比图。从图中可以看出,随着节点部署密度的增加,感知角度调整后网络的覆盖率都有所增加,本文提出的算法覆盖性能优于比较算法,证明了本文提出的节点感知角度的调整的有效性。
[0165] 图7为节点位置改变后,网络的最终覆盖率对比图。从图中可以看出,随着部署节点数目的增加,网络的覆盖率随之增加,本文提出的算法在最终的网络覆盖率方面明显优于比较算法。
[0166] 图8网络中节点覆盖重叠面积的变化情况。从图中可以看出,提出算法较之两种比较算法能够有效减少节点的冗余覆盖。
[0167] 图9为60个异构有向传感器节点在运行本文算法后节点分布示意图。(a)为60个节点,初始分布,覆盖率0.69;(b)为边界节点调整后网络覆盖率0.71;(c)为感知角度调整后网络覆盖率0.80;(d)为节点物理位置变化后网络的覆盖率为0.90。从四个图中可以看出,随着算法的运行,节点之间的分布趋于合理,重叠面积逐步减少,覆盖率逐步提高,证明了算法的有效性。
[0168] 图10算法的能量消耗对比图。采用已有文献的方法记录节点的能量消耗,也就是节点在感知角度调整过程中每旋转180度消耗的能量为1.5J,在物理位置移动过程中,每移动1m能量的消耗为3.6J,结果如图7所示。从图中可以看出,提出的算法在能量消耗方面明显优于比较算法,证明了提出算法是一种能量有效的覆盖算法。
[0169] 最后需要说明的是,上述描述仅仅为本发明的优选实施例,本领域的普通技术人员在本发明的启示下,在不违背本发明宗旨及权利要求的前提下,可以做出多种类似的表示,这样的变换均落入本发明的保护范围之内。