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)]
At(k)=[Axt(k),Ayt(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按照以下公式计算:
F′kj表示冗余节点sk受到其相邻节点sj的虚拟力,mk表示冗余节点sk的感知面积,mj表示相邻节点sj的感知面积,αkj代表单位向量,指示虚拟力的方向,即由冗余节点sk指向相邻节点sj的方向,Rsk表示冗余节点sk的感知半径,l1为常量,Neig_bor(sk)表示节点sk相邻节点的集合,冗余节点sk受到的虚拟力Fk是其所有相邻节点对其施加虚拟力的合力。
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的值等于该值,并根据公式 计算出监测区域的区域覆盖率。