一种基于能耗均衡树的移动Sink数据收集方法与流程

文档序号:15402651发布日期:2018-09-11 17:54阅读:129来源:国知局

本发明涉及一种基于能耗均衡树的移动sink数据收集方法,属于计算机网络与无线通信技术的交叉领域。



背景技术:

作为节点和终端间的桥梁,具备强感知、强计算和强通信能力的sink在无线传感网中的作用不言而喻。长期以来,以静态sink为中心的星型或树形拓扑,是无线传感网数据收集的主要模式。然而,“单跳数据上传易导致高能耗”、“多跳中继交互易造成高延迟”及“多对一模式使得近中心附近节点负载过大并形成能量空洞”等问题却成为其应用的壁垒。

随着大数据和移动交互时代的到来,作为物联网重要感知前端的无线传感节点的数据收集问题,正朝着移动化和空间化的方向发展。近年来,以无人机为主要载体的泛在交互应用,其实质就是一套基于单/多移动sink的空间数据收集系统。同传统的无线传感网类似,能效和时效仍是当前无线传感网移动数据收集领域的研究热点。

然而,感知节点部署的随机性较大,且随着应用类型的日益丰富,不断增大的网络规模与不断提升的数据交互实时性要求间的矛盾也愈发突出。因此,如何在确保能效和代价均衡的同时,进一步优化sink的移动路径,成为提升移动数据收集效率的关键。



技术实现要素:

本发明所要解决的技术问题是克服现有技术的缺陷,提供一种基于能耗均衡树的移动sink数据收集方法,以构建最小代价的全网数据收集树为目标,并在此基础上将其划分为若干规模相近且能耗差异较小的数据收集子树,以子树根作为遍历节点。

为解决上述技术问题,本发明所采取的技术方案是:

一种基于能耗均衡树的移动sink数据收集方法,包括以下步骤:

1)建立最小代价数据收集树;

2)划分数据收集子树;

3)基于sink移动轨迹对划分的数据收集子树进行调整。

前述的步骤1)中,建立最小代价数据收集树包括以下步骤:

1-1)令距离网络几何中心位置最近的节点,为根节点,记为s0,令其为第0层节点;

1-2)所述根节点向其一跳范围内的所有节点发送广播包,令收到该广播包的各节点为根节点的直接子节点,即第1层节点,并向根节点返回确认包,表示其加入数据收集树中;

1-3)令当前数据收集树的高度为k,使位于第k层上的各节点,向其一跳范围内的所有节点发送广播包,使更多的节点加入数据收集树中;

1-4)对于尚未加入数据收集树中的节点sj,若其仅收到了第k层某个节点si的广播包,则sj为si的直接子节点,即数据收集树的第k+1层节点;若sj收到了多个来自第k层节点的广播包,则sj按照公式:w(si,sj)=w'(si)×dis(si,sj),计算出其与这些节点之间的数据传输权重值w(si,sj),选择最小权重值所对应的si作为sj的直接父节点,并向该si返回确认包,表示加入数据收集树中,其中,si是第k层中向sj发送广播包的节点,dis(si,sj)是si与sj的欧氏距离,w'(si)是si节点的“候选权重值”;

1-5)当所有步骤4)中的节点sj均找寻到了其直接父节点并加入数据收集树之后,令k=k+1,此时返回步骤1-3),直到所有节点均已加入数据收集树中为止。

前述的步骤1-1)中,若距离网络几何中心位置最近的节点不止一个,则随机选择其中之一,作为根节点。

前述的步骤2)中,划分数据收集子树包括以下步骤:

2-1)根节点s0广播“划分数据收集子树”的消息包,s0的所有直接子节点均接收到该消息包,并分别根据式(1)计算自身的优先级:

其中,p(si)表示节点si的优先级,num_t(parent(si))表示si的直接父节点所拥有的子孙节点总数,num_t(si)表示节点si在计算优先级的过程中,可能拥有的子孙节点总数,d(s0,...,sk)表示当前已经划分出的各数据收集子树的根节点经过tsp模型求解所得到的路径长度,d(s0,...,sk,si)表示若在此k+1个节点的基础上再增加节点si后,经过tsp模型求解所得到的路径长度;子孙节点为直接父亲点连接的下一层节点;

2-2)将优先级最高的一个节点si作为数据收集子树的根节点;

2-3)当前存在的数据收集子树的所有直接子节点都按照式(1)来计算其自身在下一次划分子树的过程中,成为子树根节点的可能性:

2-4)经过优先级比较后,si成为了数据收集子树的根节点,将全网范围内的节点sj断开与其原直接父节点间的连接,而选择si作为其直接父节点,以sj为根节点的数据收集子树也将作为以si为根节点的数据收集子树的一部分。

前述的步骤2-2)中,num_t(si)的计算如下:

假设在当前的数据收集树中,存在si的某个邻居节点sj同时满足如下两个条件:a、sj并非si的子孙节点,也不是当前正在进行优先级计算的节点;b、sj与si的距离小于与其当前直接父节点的距离;

则临时将sj作为si的直接子节点,并将以sj为根节点的数据收集子树临时加入为以si为根节点的数据收集子树,参与si的优先级计算,即:

num_t(si)=num_t(si)+num_t(sj)

若不存在这样的节点sj,则num_t(si)的值不变,即为si当前实际的子孙节点总数。

前述的步骤3)中,对数据收集子树进行调整包括以下步骤:

3-1)在当前所形成的各数据收集子树中,若存在某数据收集子树的根节点si满足d(si,path)>rt,则说明si已无法向sink上传数据,此时,在以si为根节点的数据收集子树中,找寻d(si,path)值最小的节点sj,若其d(si,path)≦rt,则将sj作为该数据收集子树的根节点,包括si在内剩余所有节点,按照步骤1)重新依次建立与sj间的单跳或多跳连接;其中,d(si,path)为节点si到sink移动轨迹的最短距离,rt为通信半径;

3-2)若数据收集子树中不存在满足d(si,path)≦rt的节点,则在该数据收集子树的各节点中,分别找寻满足条件的邻居节点,并根据下式计算权重w”(sl):

w”(sl)=er(sl)/(dis(sk,sl)+dis(sl,path))

将权重值最大的节点sl作为该子树的新的根节点,其中,sk表示数据收集子树中的节点,sl表示sk的邻居节点,er(sl)为节点sl的初始能量;

若仍不存在满足条件的节点,则称该数据收集子树称为“孤立树”,通过增大该数据收集子树根节点的收发功率或放宽对移动sink的数据收集周期与移动路径长度的约束后,重新返回步骤1);

3-3)将所有满足d(si,path)≦rt的节点si,定义为遍历节点,对于任一遍历节点si:若si已经是当前数据收集子树的根节点,则不做任何操作;若si并非当前任何一棵数据收集子树的根节点,则其断开与其直接父节点的连接,并作为根节点,与其子孙节点构成一棵新的数据收集子树。

本发明的有益效果为:

(1)本发明采用了随机均匀部署策略,且在建立最小代价数据收集树的过程中,树中的各节点都在以最大通信半径来尽可能找寻邻居。故几何上存在于连通图中的节点,在基于能耗均衡树的移动sink数据收集方法中都不会成为孤立节点,从而确保了算法对于实际网络环境的适应性。

(2)在数据包产生速率一定的前提下,本发明方法的网络生命期并不会随着网内节点数的不同而发生明显变化。

(3)本发明采用了能耗均衡策略生成数据收集树,并在此基础上,充分考虑了遍历节点的负载和能耗开销,形成了规模较为一致的数据收集子树,故即使数据包数量较大,其数据传输成功率仍较高。

(4)该方法在移动路径长度、数据传输成功率、网络生命期等方面表现出明显的优势,提升了全网的工作效率。

附图说明

图1为网内节点逐层加入数据收集树的示意图;

图2为构建完成后的最小代价数据收集树示意图;

图3为按照优先级选择数据收集子树根节点的示意图;

图4为num_t(si)的计算示例图;

图5为划分数据收集子树过程中的父节点重选示意图;

图6为调整之前的数据收集子树图(遍历节点未完全确定);

图7为调整之后的数据收集子树图(遍历节点已全部确定)。

具体实施方式

下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

本发明的基于能耗均衡树的移动sink数据收集方法,包括以下步骤:

第一阶段:建立最小代价数据收集树阶段,具体如下:

步骤1:令距离网络几何中心位置最近的节点,为根节点。若满足该条件的节点不止一个,则随机选择其中之一,作为根节点,记为s0,令其为第0层节点。

步骤2:该根节点向其一跳范围内的所有节点发送广播包。令收到该广播包的各节点为根节点的直接子节点,即第1层节点,并向根节点返回确认包,表示其加入数据收集树中。

步骤3:令当前数据收集树的高度为k,则此时,位于第k层(k>0)上的各节点,向其一跳范围内的所有节点发送广播包,以便于使更多的节点加入数据收集树中。

步骤4:对于尚未加入数据收集树中的节点sj而言,若其仅收到了第k层某个节点si的广播包,则sj必将成为si的直接子节点,即数据收集树的第k+1层节点。如图1中的节点s59所示。然而,若sj收到了多个来自第k层节点的广播包(如图1中的节点s58),则sj需按照公式:w(si,sj)=w'(si)×dis(si,sj),计算出其与这些节点之间的数据传输权重值w(si,sj),选择最小权重值所对应的si作为其直接父节点,并向该si返回确认包,表示其加入树中。其中,si是第k层中向sj发送广播包的节点,这里可称为“sj的候选父节点”,dis(si,sj)是si与sj的欧氏距离,w'(si)是si节点的“候选权重值”。

步骤5:当所有符合步骤4中条件的节点sj均找寻到了其直接父节点并加入数据收集树之后,令k=k+1,此时返回步骤3,继续找寻其子节点,直到网络中所有节点均已加入数据收集树中为止,如图2。

第二阶段:基于数据收集子树的遍历节点选择阶段

步骤1:划分数据收集子树的过程从已构建的数据收集树的根节点s0开始。s0首先广播“划分数据收集子树”的消息包,于是,s0的所有直接子节点均接收到该消息包,并分别根据下述公式计算自身的优先级:

其中,p(si)表示节点si的优先级,num_t(parent(si))表示si的直接父节点所拥有的子孙节点总数,num_t(si)表示节点si在计算优先级的过程中,可能拥有的子孙节点总数,d(s0,...,sk)表示当前已经划分出的各数据收集子树的根节点经过tsp模型求解所得到的路径长度,d(s0,...,sk,si)表示若在此k+1个节点的基础上再增加节点si后,经过tsp模型求解所得到的路径长度。优先级最高的一个节点si将不再成为其当前直接父节点(即s0)的子节点(假设为图2中的节点s2),此时,原数据收集树被划分为了分别以s0和s2为根节点的两棵数据收集子树,如图3所示。子孙节点为直接父亲点连接的下一层节点。

num_t(si)的解释如下:假设在当前的数据收集树中,存在si的某个邻居节点sj同时满足如下两个条件:①sj并非si的子孙节点,也不是当前正在进行优先级计算的节点;②sj与si的距离小于与其当前直接父节点的距离。则,临时将sj作为si的直接子节点,并将以sj为根的子树临时加入为以si为根的子树,参与si的优先级计算,即:

num_t(si)=num_t(si)+num_t(sj)(2)

若不存在这样的节点sj,则num_t(si)的值不变,仍为si当前实际的子孙节点总数。

步骤2:如图4所示,当前网络中已存在两棵数据收集子树(其根分别为s0和s2),于是,这两棵数据收集子树的所有直接子节点(即图4中的白色节点)都开始按照下式来计算其自身在下一次划分子树的过程中,成为子树根节点的可能性:

不难看出,图4中,节点s6与s7间的欧式距离d(s6,s7)小于其与节点s1间的欧式距离d(s1,s6),故节点s7在计算其p(s7)时,将以节点s6为根节点的子树临时也作为其子节点,即num_t(s7)=11。上述步骤并不影响num_t(s1)的计算,其值仍为11。

步骤3:经过步骤2后,si成为了数据收集子树的根节点(如图5中的s7),则sj(sj为全网范围内的节点,如果存在的话)将断开与其原直接父节点间的连接,而选择si作为其直接父节点,以sj为根节点的子树也将作为以si为根节点的数据收集子树的一部分。(例如,在图5中,节点s6即断开了与其原先的直接父节点s1的连接,重新选择s7作为了其新的直接父节点)。

第三阶段:基于sink移动轨迹的遍历节点调整阶段

步骤1:在当前所形成的各数据收集子树中,若存在某数据收集子树的根节点si满足d(si,path)>rt,则说明si已无法向sink上传数据,d(si,path)为节点si到sink移动轨迹的最短距离,rt为通信半径。故此时,在以si为根节点的数据收集子树中,找寻d(si,path)值最小的节点sj,若其d(si,path)≦rt,则将sj作为该数据收集子树的根节点,其余节点(包括si),按照第一阶段所述的建树方法,依次建立与sj间的单跳或多跳连接。如图6,对于以s1为根节点的子树,其根节点s1距离拟合后的sink移动路径的最小值已超过rt,故必须对该子树的结构进行调整。而在该子树中,仅有节点s2满足d(s2,path)≦rt,于是以s2为新的子树根节点,重新建立子树,其结果如图7所示。

步骤2:若不存在满足d(si,path)≦rt的节点,则说明当前子树中无任何节点一跳可达sink,于是,该子树中的各节点sk分别找寻其邻居节点(可以确定的是,这些邻居节点当前并不在sk所在的子树中)中,满足d(sl,path)≦rt的每个节点sl,并根据下式计算权重w”(sl):

w”(sl)=er(sl)/(dis(sk,sl)+dis(sl,path))

其中,er(sl)为节点sl的初始能量。

将权重值最大的节点sl作为该子树的新的根节点。同样以图6为例来说明。子树根节点s3距离sink移动路径的最短距离d(s3,path)>rt。而该子树中也并没有其他节点满足d(sk,path)≦rt的条件。于是,在该字数的各节点的邻居节点中寻找满足d(sl,path)≦rt的节点,然后计算这些满足条件的邻居节点的权重,去权重值最大的节点即s6,因此将另一棵子树中的节点s6作为了新的根节点,如图7所示。若仍不存在满足d(sl,path)≦rt的节点sl,则称该数据收集子树称为“孤立树”(如图6中以s7为根节点的子树)。可通过增大该子树根节点的收发功率(即增大其通信半径rt)或放宽对移动sink的数据收集周期与移动路径长度的约束后,重新返回第一阶段开始执行该算法来解决该问题。

步骤3:在个别数据收集子树完成步骤1和2的重建过程后,将网内所有满足d(si,path)≦rt的节点si,定义为遍历节点(如图7中的白色节点所示)。

于是易知,对于任一遍历节点si:①若si已经是当前数据收集子树的根节点,则不做任何操作;②若si并非当前任何一棵数据收集子树的根节点,则其断开与其直接父节点的连接,并作为根节点,与其子孙节点构成一棵新的数据收集子树。该操作的目的在于,充分利用与移动sink一跳可达的节点,尽可能建立更多的数据收集子树,以降低节点负载并均衡它们的能耗。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1