具体实施方式
参见图1所示,本发明的一种基于能耗均衡的无线传感器网络的数据融合树的建树方法,是建立一种基于k叉的能耗均衡融合树,该数据融合树的建树方法包括有基本建树步骤1、基于树的网络信息采集步骤2和树的剪枝与嫁接步骤3。在本发明中,所述网络中节点能量水平的特点是指网络中节点能量值集中在某一个平均水平,但同时也存在少量节点偏离平均水平,体现为能量远远高于以及远远低于平均水平。在本发明中,所述基于树结构的无线传感器网络数据融合过程节点通信的特点是指数据经父亲(Father)节点融合后逐层向根(sink)节点转发,中间节点要和其所有孩子(Children)节点通信。
在本发明中,无线传感器网络所依赖的树结构中除根节点sink以外的节点标记为N,则有第一个节点记为N1、第二个节点记为N2、……、第i个节点记为Ni、……、最后一个节点记为Nm,为了方便说明,Nm也称为树结构中的任意一节点,Ni也称为树结构中的除任意一节点Nm外的其他节点。无线传感器网络中包括有n个节点(也称为节点总数),则n个节点中含有一个根节点sink、多个叶节点Leaf和多个中间节点。
所述基本建树步骤1用于建立无线传感器网络中各节点之间的连接,从而实现网络联通,即构建得到初始树T_in,所述初始树T_in中的各个节点预设有初始能量,初始树T_in的树结构如图2所示。
所述基于树的网络信息采集步骤2第一方面依据所述的初始树T_in并从初始树T_in中提取出节点总数n、树的高度d、初始树T_in中节点平均能量Eavg从而得到初始树T_in中的网络信息net_Info={n,d,Eavg};所述网络信息net_Info={n,d,Eavg}将作为构建能耗均衡的融合树的基础数据。第二方面依据k叉树方法获得所述网络信息net_Info={n,d,Eavg}中树的度
简称为网络树度数
所述树的剪枝与嫁接步骤3采用能耗均衡策略EBS对所述的初始树T_in中的所有节点进行剪枝或者嫁接。
所述的能耗均衡策略EBS第一方面对初始树T_in中的任意一节点N
m依据能量均衡最佳度分配关系
得到任意一节点N
m的最佳度数
(简称为节点度数
);
表示节点N
m的初始能量;第二方面依据节点度数
与孩子个数
的比较,进行剪枝或者嫁接处理;若
则进行嫁接;若
则进行剪枝;若
任意一节点N
m不进行剪枝与嫁接处理。
在本发明中,任意一节点N
m的孩子个数记为
(简称为孩子个数
)。
(一)建立初始树T_in步骤1
参见图4、图5所示,在本发明中,树结构的构建中包括有建树消息msg_BuildID、转发建树消息tra_BuildID和通信信息CMID;ID表示树结构中节点的标识;
建树消息msg_BuildID中包括有广播消息者的身份SenderID,广播消息者在树结构中的层数levelID,广播消息者的父亲节点的标识FatherID;采用集合形式表达为msg_BuildID={SenderID,levelID,FatherID}。
转发建树消息tra_BuildID中包括有转发消息者的身份traID,转发消息者在树结构中的层数tra_levelID,转发消息者的父亲节点的标识tra_FatherID;采用集合形式表达为tra_BuildID={traID,tra_levelID,tra_FatherID}。
根节点sink广播建树消息msg_BuildID,网络中的非sink节点收到建树消息msg_BuildID,将msg_BuildID更新并转发成为转发建树消息tra_BuildID。
通信信息CMID中包括有节点在树结构中的层数depthID、节点的孩子个数num_ChildrenID、节点的孩子队列list_ChildrenID,节点的父节点的标识parentID;采用集合表达形式为CMID={depthID,num_ChildrenID,list_ChildrenID,parentID}。
在本发明中,levelID、tra_levelID和depthID的层数赋值是相同的。FatherID、tra_FatherID和parentID的父亲节点是同一节点。
在本发明中,初始树T_in的建立包括有下列步骤:
步骤10l:根节点sink广播建树消息msg_Buildsink;
所述建树消息msg_Buildsink={Sendersink,levelsink,Fathersink}中Sendersink表示广播消息者是根节点sink,levelsink表示广播消息者在树结构中的层数,Fathersink表示广播消息者的父亲节点的标识。
msg_Buildsink的字段赋值:levelsink赋值为0;Fathersink赋值为空。
步骤102:更新节点的建树消息
步骤102-1:任意一节点N
m第一次侦听到根节点sink广播的建树消息msg_Build
sink后,N
m将更新自身的建树消息,得到N
m的转发建树消息
一方面将
进行广播,另一方面将
和Father
sink置入N
m的通信信息
中;转入步骤103;
中
表示转发建树消息的节点N
m,
表示转发消息者(节点N
m)在树结构中的层数,
表示转发消息者(节点N
m)的父亲节点的标识。
中
表示节点N
m在树结构中的层数、
表示节点N
m的孩子个数、
表示节点N
m的孩子队列,
表示节点N
m的父节点的标识。
的字段赋值:
赋值为level
sink+1(即树结构中的第一层);
赋值为根节点sink。
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为根节点sink。
步骤102-2:任意一节点N
m第一次侦听到其他节点N
i发出的转发建树消息
后,N
m将更新自身的建树消息,得到N
m的转发建树消息
一方面将
进行广播;另一方面将
和
置入N
m的通信信息
中;转入步骤103;
中
表示转发建树消息的节点N
i,
表示转发消息者(节点N
i)在树结构中的层数,
表示转发消息者(节点N
i)的父亲节点的标识。
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为节点
(即节点N
i)。
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为节点
(即节点N
i)。
在本发明中,任意一节点N
m将转发建树消息
进行广播,实现了向树结构中的其他节点发出建树消息的请求。
步骤103:孩子节点的确定
任意一节点N
m在第二次侦听到其他节点N
i发出的转发建树消息
后,进行父子关系的判断,得到N
m的孩子节点;
父子关系判断条件:
中的
是否是节点N
m,若是,则更新
中的
更新
时赋值记录为
更新
时将
中的
加入到
中。
在本发明中,对于任意一节点Nm在确定了父亲节点和孩子节点后,在树结构中则该Nm为节点。
在本发明中,对于任意一节点Nm在只确定了父亲节点,而没有孩子节点时,在树结构中则该Nm为叶节点。
除根节点sink以外的其他节点重复步骤102-1、步骤102-2和步骤103,并确定出自身的父节点Father、和/或孩子节点,从而构建得到初始树T_in。如图2所示,图中节点Nm、节点L1和节点L15能够接收到根节点sink广播的建树消息msg_Buildsink={Sendersink,levelsink,Fathersink},此时,节点Nm、节点L1和节点L15将各自更新转发建树消息;
节点L1转发建树消息格式为:
的字段赋值:
赋值为level
sink+1(即树结构中的第一层);
赋值为根节点sink。
节点L15转发建树消息格式为:
的字段赋值:
赋值为level
sink+1(即树结构中的第一层);
赋值为根节点sink。
节点Nm转发建树消息格式为:
的字段赋值:
赋值为level
sink+1(即树结构中的第一层);
赋值为根节点sink。
节点L
1一方面将
进行广播,另一方面将
和Father
sink置入L
1的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为根节点sink。
节点L
15一方面将
进行广播,另一方面将
和Father
sink置入L
15的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为根节点sink。
节点N
m一方面将
进行广播,另一方面将
和Father
sink置入N
m的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为根节点sink。
节点Nm、节点L1和节点L15有公共的父亲节点,即根节点sink,根节点sink的孩子节点即为节点Nm、节点L1和节点L15。
节点L2、节点L3、节点L4、节点L10、节点N1和节点Ni第一次侦听到Nm发出的转发建树消息 此时,节点L2、节点L3、节点L4、节点L10、节点N1和节点Ni将各自更新转发建树消息;
节点L2转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
m)。
节点L3转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
m)。
节点L4转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
m)。
节点L10转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
m)。
节点N1转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
m)。
节点Ni转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
m)。
节点L
2一方面将
进行广播,另一方面将
和
置入L
2的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
m)。
节点L
3一方面将
进行广播,另一方面将
和
置入L
3的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
m)。
节点L
4一方面将
进行广播,另一方面将
和
置入L
4的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为tra
赋值为0,
赋值为空,
赋值为
(即节点N
m)。
节点L
10一方面将
进行广播,另一方面将
和
置入L
10的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
m)。
节点N
i一方面将
进行广播,另一方面将
和
置入N
i的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
m)。
节点N
1一方面将
进行广播,另一方面将
和
置入N
1的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
m)。
节点L2、节点L3、节点L4、节点L10、节点N1和节点Ni有公共的父亲节点Nm。
节点N
m侦听到节点L
2的转发建树消息
并且
为节点N
m;节点N
m更新通信信息
的字段更新:
赋值为
(即1),
队列加入
(即节点L
2)
节点Nm侦听到节点L3的转发建树消息 并且为节点Nm;
节点Nm更新通信信息
的字段更新:
赋值为
(即2),
队列加入
(即节点L
3)
节点N
m侦听到节点L
4的转发建树消息
并且
为节点N
m;
节点Nm更新通信信息
的字段更新:
赋值为
(即3),
队列加入
(即节点L
4)
节点N
m侦听到节点L
10的转发建树消息
并且
为节点N
m;节点N
m更新通信信息
的字段更新:
赋值为
(即4),
队列分别加入
(即节点L
10)
节点Nm侦听到节点N1的转发建树消息 并且为节点Nm;节点Nm更新通信信息
的字段更新:
赋值为
(即5),
队列分别加入
(即节点N
1)
节点N
m侦听到节点N
i的转发建树消息
并且
为节点N
m;节点N
m更新通信信息
的字段更新:
赋值为
(即6),
队列加入
(即节点N
i)。
节点Nm为分支节点,孩子节点分别为节点L2、节点L3、节点L4、节点L10、节点N1和节点Ni。
节点L
5、节点L
6、节点L
7、节点L
8和节点L
9第一次侦听到其他节点N
1发出的转发建树消息
后,此时,节点L
5、节点L
6、节点L
7、节点L
8和节点L
9将各自更新转发建树消息;
节点L5转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
1)。
节点L6转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
1)。
节点L7转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
1)。
节点L8转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
1)。
节点L9转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
1)。
节点L
5一方面将
进行广播,另一方面将
和
置入L
5的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
1)。
节点L
6一方面将
进行广播,另一方面将
和
置入L
6的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
1)。
节点L
7一方面将
进行广播,另一方面将
和
置入L
7的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
1)。
节点L
8一方面将
进行广播,另一方面将
和
置入L
8的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
1)。
节点L
9一方面将
进行广播,另一方面将
和
置入L
9的通信信息
中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
1)。
节点L5、节点L6、节点L7、节点L8和节点L9有公共的父亲节点N1。
节点L
11、节点L
12、节点L
13和节点L
14第一次侦听到其他节点N
i发出的转发建树消息
后,此时,节点L
11、节点L
12、节点L
13和节点L
14将各自更新转发建树消息;
节点L11转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
i)。
节点L12转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
i)。
节点L13转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
i)。
节点L14转发建树消息格式为:
的字段赋值:
赋值为
(即树结构中的第
层);
赋值为
(即节点N
i)。
节点L
11一方面将
进行广播,另一方面将
和
置入L
11的通信信息中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
i)。
节点L
12一方面将
进行广播,另一方面将
和
置入L
12的通信信息中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
i)。
节点L
13一方面将
进行广播,另一方面将
和
置入L
13的通信信息中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
i)。
节点L
14一方面将
进行广播,另一方面将
和
置入L
14的通信信息中;通信信息
的格式为:
的字段赋值:
赋值为
赋值为0,
赋值为空,
赋值为
(即节点N
i)。
节点L11、节点L12、节点L13和节点L14有公共的父亲节点Ni。
节点N
i侦听到节点L
11的转发建树消息
并且
为节点N
i;节点N
i更新通信信息
的字段更新:
赋值为
(即1),
队列加入
(即节点L
11)
节点N
i侦听到节点L
12的转发建树消息
并且
为节点N
i;节点N
i更新通信信息
的字段更新:
赋值为
(即2),
队列加入
(即节点L
12)
节点N
i侦听到节点L
13的转发建树消息
并且
为节点;节点N
i更新通信信息
节点N
i侦听到节点L
14的转发建树消息
并且
为节点;
节点Ni更新通信信息
的字段更新:
赋值为
(即4),
队列加入
(即节点L
14)。
节点Ni是分支节点,节点L11、节点L12、节点L13和节点L14是节点Ni的孩子节点。
节点N
1侦听到节点L
5的转发建树消息
并且
为节点N
1;节点N
1更新通信信息
的字段更新:
赋值为
(即1),
队列加入
(即节点L
5)
节点N
1侦听到节点L
6的转发建树消息
并且
为节点N
1;
节点N1更新通信信息
的字段更新:
赋值为
(即2),
队列加入
(即节点L
6)
节点N
1侦听到节点L
7的转发建树消息
并且
为节点N
1;节点N
1更新通信信息
的字段更新:
赋值为
(即3),
队列加入
(即节点L
7)
节点N
1侦听到节点L
8的转发建树消息
并且
为节点N
1;
节点N1更新通信信息
的字段更新:
赋值为
(即4),
队列加入
(即节点L
8)
节点N
1侦听到节点L
9的转发建树消息
并且
为节点N
1;
节点N1更新通信信息
的字段更新:
赋值为
(即5),
队列加入
(即节点L
9)
节点N1是分支节点,节点L5、节点L6、节点L7、节点L8、节点L9是节点N1的孩子节点。
节点L1第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L1;
节点L2第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L2;
节点L3第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L3;
节点L4第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L4;
节点L5第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L5;
节点L6第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L6;
节点L7第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L7;
节点L8第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L8;
节点L9第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L9;
节点L10第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L10
节点L11第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L11;
节点L12第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L12;
节点L13第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L13;
节点L14第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L14;
节点L15第二次及以后收到的tra_BuildID={traID,tra_levelID,tra_FatherID}中tra_FatherID不为节点L15;
故节点L1、节点L2、节点L3、节点L4、节点L5、节点L6、节点L7、节点L8、节点L9、节点L10、节点L11、节点L12、节点L13、节点L14和节点L15均为叶节点。
在本发明中,通过构建初始树T_in使无线传感器网络中的所有节点进行互联通信。在建树过程中,应用了谁发起建树、建树者的父亲节点的信息、建树者的孩子节点的信息,通过比对父亲节点和孩子节点,使得初始树T_in具有树形结构的普适意义。
(二)基于树的网络信息采集步骤2
在本发明中,基于树的网络信息采集中包括有查询请求消息msg_AskID、查询结果消息msg_ResultID;
查询请求消息msg_AskID中包括有查询内容Work和广播消息者的身份SenderID;采用集合形式表示为msg_AskID={SenderID,Work};
查询结果消息msg_ResultID中包括有消息发送者的身份SenderID,发送消息者的分支层数level_BranchID、以发送消息者为根的子树能量和energy_BranchID、以发送消息者为根的子树节点个数nodes_BranchID;采用集合形式表示为msg_ResultID={level_BranchID,energy_BranchID,nodes_BranchID,SenderID}
在本发明中,基于树的网络信息采集有下列步骤:
步骤201:根节点sink广播查询请求消息msg_Asksink;
所述查询请求消息msg_Asksink={Sendersink,Work}中Sendersink表示广播消息者是根节点sink.
步骤202:查询消息的转发及查询结果消息的产生
步骤202-1:任意一节点N
m第一次侦听到根节点sink广播的网络信息查询消息msg_Ask
sink={Sender
sink,Work}后,如果节点N
m的父节点不是sink,则丢弃网络信息查询消息msg_Ask
sink,继续侦听;否则,判断
中的
是否为零;
如果不为零则Nm是一个分支节点,并向节点Nm的下游节点转发 转入步骤203;
步骤202-2任意一节点N
m第一次侦听到非sink节点N
i转发的查询消息
后,如果节点N
m的父亲不是
(即节点N
i),继续侦听;否则判断
中的
是否为零;
如果不为零则Nm是一个分支节点,并向节点Nm的下游节点转发 转入步骤203;
在本发明中新产生的查询结果消息
字段初始赋值为:
初始赋值为
初始赋值为1。
初始赋值为N
m的能量。
步骤203:查询结果消息更新
对接收并转发过查询消息的节点N
m侦听到节点N
i的查询结果消息
;若
中的
存在于
中
中,则节点N
m将
保存在本地缓存中;否则丢弃
并持续侦听;
节点N
m继续侦听节点N
i的查询结果消息,直至接收到
个来自N
i的查询结果消息,即得到查询结果消息
并转发出去;
所述查询结果消息
中的
赋值为
赋值为
赋值为
无线传感器网络中的任意一节点重复步骤202至步骤203,直至根节点sink收到来自其孩子队列list_Childrensink中所有节点的查询结果消息
步骤204:根节点sink计算网络相关信息
网络相关信息是指网络信息net_Info={n,d,Eavg}和网络树度数k。
网络信息net_Info赋值:网络节点总数n赋值为 树的高度d赋值为 网络中节点平均能量Eavg赋值为
网络树度数k赋值为
k的赋值计算过程为:如果要建立一棵k叉树,k值的选定依据图论关于k叉树的知识确定:对于一棵k叉树满足:k
d-1-1<n≤k
d-1,对不等式变形开d次方,近似得到
网络信息net_Info={n,d,Eavg}中的网络中节点平均能量Eavg和网络树度数k是剪枝与嫁接步骤3时进行剪枝操作作或嫁接操作的数据基础。
(三)树的剪枝与嫁接步骤3
参见图6所示,在本发明中,树结构的剪枝与嫁接包括有通知消息msg_Modify、剪枝消息msg_CutID、嫁接消息msg_GraftID、下达消息msg_ACKID;ID表示树结构中节点的标识;
通知消息msg_Modify中包括有网络树度数k和网络中节点平均能量Eavg;采用集合形式表示为msg_Modify{Eavg,k};
剪枝消息msg_CutID为单播消息,包括有单播消息者身份SenderID′,接收者身份ReceiverID;采用集合形式表示为msg_CutID{SenderID′,ReceiverID};
嫁接消息msg_GraftID为广播消息者的身份SenderID;
下达消息msg_ACKID为单播消息,包括有单播消息者身份SenderID′,接收者身份ReceiverID,确认种类标识flag(flag=1时,表示剪枝确认;flag=2时,表示嫁接确认);采用集合形式表示为msg_ACKID{SenderID′,ReceiverID,flag};
在本发明中,树的剪枝与嫁接包括有下列步骤:
步骤301:根节点sink广播通知消息msg_Modify
该msg_Modify在网络中广播
步骤302:剪枝嫁接操作判定
任意一节点N
m第一次侦听到通知消息msg_Modify{E
avg,k},一方面根据树结构的通知消息中的网络节点平均能量E
avg、网络树度数k和N
m的初始能量
按能量均衡最佳度分配关系
得到节点和能量相关的最佳度数
另一方面依据最佳度
对建立初始树步骤1的初始树T_in进行剪枝或者是嫁接操作:
若节点Nm的
中
则进行嫁接转入步骤305;若
则进行剪枝转入步骤303;若
任意一节点N
m不进行剪枝与嫁接处理。
步骤303:剪枝操作
任意一节点N
m选择孩子队列
中的待剪技孩子个数
的孩子节点,并发送(单播方式)剪枝消息
步骤304:嫁接请求
任意一节点N
m侦听到N
i单播给N
m的
广播一个嫁接消息
该嫁接消息
仅在节点N
m一跳范围扩散;
步骤305:嫁接操作
任意一结点N
m侦听到N
i广播的嫁接消息
如果N
m处于嫁接状态,则N
m同意节点N
i嫁接到N
m上成为N
m的孩子节点,一方面更新
的字段:
赋值为
将
中的
加入到
中;另一方面,向N
i单播下达消息
如果N
m不处于嫁接状态,则丢弃
继续侦听;
所述的单播下达消息
字段赋值:
为
(即节点N
i);flag赋值为2;
步骤306:嫁接确认
任意一节点Nm侦听到Ni单播给Nm的单播下达消息
如果
中的flag等于2时,一方面N
m更新
并转发;另一方面更新
字段更新是指
赋值为
的
节点;flag字段赋值为1;
字段更新为是指
赋值为
(即节点N
i);
字段更新为:
赋值为
并将
中的
从
中删除;
网络中的任意一节点N
m持续步骤302-步骤306,直到节点N
m的
时结束,或者N
m的等待时间
(
R表示传感器节点的通信半径,v表示传感器的信号传输的速度)到达时结束,生成能耗均衡融合树T_EBS,如图3所示。从图2与图3的对比可以看出,图2中的节点N
m、节点N
i和节点N
1在收到通知消息msg_Modify后,根据能耗均衡策略EBS判断得出节点N
m、节点N
i和节点N
1需要进行剪枝操作:
节点N
m向节点L
2、节点L
3和节点N
i发送剪枝消息
节点N
i向节点L
11发送剪枝消息
节点N
1向节点L
5和节点L
9发送剪枝消息
节点L
2、节点L
3和节点N
i收到剪枝消息
后,节点L
2、节点L
3、节点N
i分别广播嫁接消息
节点L
11收到剪枝消息
后,节点L
11广播嫁接消息
节点L
5和节点L
9收到剪枝消息
后,节点L
5和节点L
9分别广播嫁接消息
和
节点L
1、节点L
4、节点L
10、节点L
15在收到通知消息msg_Modify后,根据能耗均衡策略EBS判断得出节点L
1、节点L
4、节点L
10和节点L
15需要进行嫁接操作:节点L
1侦听到嫁接消息
和
节点L
2和节点L
3选定节点L
1为父亲并向根节点sink单播下达消息;
节点L
15侦听到嫁接消息
节点N
i选定节点L
15为父亲并向根节点sink单播下达消息;
节点L
4侦听到嫁接消息
节点L
5选定节点L
4为父亲并向节点N
1单播下达消息;
节点L10侦听到嫁接消息节点L9选定节点L10为父亲并向节点N1单播下达消息。
节点L
2、节点L
3、节点L
5、节点L
6、节点L
7、节点L
8、节点L
9、节点L
11、节点L
12、节点L
13和节点L
14收到通知消息msg_Modify后,根据能耗均衡策略EBS判断得出节点L
2、节点L
3、节点L
5、节点L
6、节点L
7、节点L
8、节点L
9、节点L
11、节点L
12、节点L
13和节点L
14需进行嫁接操作,在等待时间
和
达到时,未收到msg_Graft
ID消息,则节点L
2、节点L
3、节点L
5、节点L
6、节点L
7、节点L
8、节点L
9、节点L
11、节点L
12、节点L
13和节点L
14嫁接操作结束。