发明内容
本发明的主要目的是公开一种兼顾网络节点能量和缓存的节点消息转发方法,克服现有移动群智感知网络中节点路由决策的缺陷,延长网络节点的寿命,提高网络整体性能,实现网络资源的优化配置。
本发明采用的技术方案是:一种兼顾网络节点能量和缓存的节点消息转发方法,在多个节点组成的移动群智感知网络中,通过多个中继节点将源节点生成的消息转发到目的节点,移动群智感知网络中的所有节点分成多个社区,在消息转发过程中优先将消息转发给目的节点所在社区的节点,并且,在目的节点所在社区之外通过对比节点的全局度量,将消息转发给全局度量高的节点,在目的节点所在社区之内通过对比节点的局部度量,将消息转发给局部度量高的节点,每个节点的全局度量均根据该节点的全局中心度、节点剩余能量和剩余缓存得到,每个节点的局部度量均根据该节点的局部中心度、节点剩余能量和剩余缓存得到,发送消息的节点和接收消息的节点在转发消息之后,均根据其节点剩余能量和剩余缓存更新全局度量和局部度量。
较佳的,所述全局度量是,其中,、e、b是调节因子,分别用于调节全局中心度GC、剩余能量E和剩余缓存B在全局度GMet中的比重,所述局部度量是,其中,、e、b是调节因子,分别用于调节局部中心度LC、剩余能量E和剩余缓存B在局部度量LMet中的比重。
较佳的,所述全局中心度是,其中,v是网络的中继节点,S和D分别是源节点和目的节点,M是网络的节点总个数,是源节点S和目的节点D之间的最短路径数量,是源节点S和目的节点D之间包含中继节点v的最短路径数量;局部中心度是,其中,s1和d1分别是在中继节点v所在社区网络中转发消息m的起始节点和结束节点,M1是节点v所在社区网络的节点总个数,是起始节点s1和结束节点d1之间的最短路径数量,是起始节点s1和结束节点d1之间包含中继节点v的最短路径数量。
较佳的,所述剩余能量E包括节点收发数据包造成能量损耗后的剩余能量和待机及邻居节点发现造成能量损耗后的剩余能量,节点以固定时间间隔更新剩余能量并在收发数据包时更新剩余能量,所述剩余能量,剩余能量,其中,是节点上次更新后的能量,是老化因子,,k为时间单位的个数,是节点收发一次数据包所消耗的能量,是节点收发数据包的次数。
较佳的,所述剩余缓存,其中,是节点的初始缓存,是节点接收数据包所占用的缓存,节点丢弃数据包所释放的缓存。
较佳的,网络中的一个中继节点i将其携带的消息m向目的节点D转发的过程中遇到另一个中继节点j时,首先判断j是否是目的节点D,如果是,则直接转发消息m到D,并更新节点i和j的全局度量和局部度量,否则,根据中继节点i是否进入目的节点D所在社区判断是否转发。
较佳的,当节点i没有进入目的节点D所在社区时,如果满足条件a:节点j与目的节点D属于同一社区和/或条件b:节点i的全局度量值小于节点j的全局度量值,则将消息m转发给节点j,并在考虑节点i和j的剩余能量和剩余缓存的基础上,更新节点i和j的全局度量和局部度量,以作为新的转发节点指导下次转发过程,否则,不转发消息m给节点j。
较佳的,当节点i进入目的节点D所在社区时,如果同时满足条件a:节点j与目的节点D属于同一社区和条件c:节点i的局部度量值小于节点j的局部度量值,则将消息m转发给节点j,并在考虑节点i和j的剩余能量和剩余缓存的基础上,更新节点i和j的全局度量和局部度量,以作为新的转发节点指导下次转发过程,否则,不转发消息m给节点j。
较佳的,根据谱聚类方法将网络中的所有节点分成N个社区,提取出每个节点的社区属性,根据节点的社区属性可得到节点的局部中心度。
较佳的,提取节点的社区属性的谱聚类方法是:
步骤1、设定移动群智感知网络中的节点个数是M,初始化社区个数N=1,并标记节点i的社区属性是,1≤≤N,1≤i≤M,定义M个节点组成的一个社区的模块度Qmax=0;
步骤2、由节点v相对全部M个节点的亲密度向量得到相似度矩阵,其中,,是节点i和节点j之间的亲密度;
步骤3、将相似度矩阵Cl的特征值按从大到小排列,取前N个特征值构建特征向量空间,利用K-means方法对所述特征向量空间进行聚类,标记每个节点的社区属性;
步骤4、根据聚类后所有节点的社区属性,代入模块度计算公式Q得到模块度Q的值,其中,是节点j的社区属性,,,,如果Q≥Qmax,则令Qmax=Q,最佳社区分类个数Nop=N,否则,直接进行下一步;
步骤5、令N=N+1;
步骤6、重复步骤3-步骤5,直至N=M,Nop值是最佳社区分类个数,社区中的节点具有最佳的社区属性。
与现有技术相比,本发明至少具有下列优点及有益效果:
1、网络节点转发消息会造成节点能量和缓存的变化,本发明针对现有技术没有充分考虑节点的资源受限问题,在考虑节点转发消息造成的节点能量和缓存变化的基础上,综合节点在移动群智感知网络中的中心度、节点的剩余能量E和剩余缓存B三方面因素,提出节点度量的概念,并由节点的全局中心度和局部中心度将节点度量分为全局度量和局部度量,用节点的全局度量GMet和局部度量LMet替代全局中心度GC和局部中心度LC作为转发判断的依据,一个中继节点i将其携带的消息m转发给下一个中继节点j后,分别对节点i和j的全局度量和局部度量进行更新,以作为新的转发节点指导下次的转发过程,本发明的消息转发方法能够更加合理地指导节点的路由决策,在成功投递率、平均网络代价和节点存活率方面均比现有的协议Epidemic、BubbleRap、EABubble等更胜一筹,解决了移动群智感知网络MCSN中的一大难题;
2、在能量受限的MCSN中,中继节点选择阶段应该综合考虑节点的能量消耗与剩余缓存大小,节点的能量消耗主要与相邻节点发现、发送和接收数据的数量有关,过多的能量消耗会导致节点死亡,从而影响网络的连通度,本发明的剩余能量E主要包括节点收发数据包造成能量损耗后的剩余能量和待机及邻居节点发现造成能量损耗后的剩余能量;节点的剩余缓存大小主要与发送、接收数据包数量以及所采取的缓冲区管理策略有关,本发明的剩余缓存主要考虑了节点接收数据包所占用的缓存和节点丢弃数据包所释放的缓存,转发消息后,只有及时更新两个节点的剩余能量和剩余缓存,设计出的度量函数才更加合理,从而能够更好的指导节点进行消息的转发;
3、本发明提出了一种改进的自适应谱聚类方法,避开常规聚类方法中必须事先给出聚类个数而我们又不可能事先知道聚类个数的这个矛盾,针对社区个数从1到最大节点数的每次谱聚类数据集都进行模块度计算,利用模块度取得最大值的判断准则得到最佳的谱聚类结果,当模块度达到最大值Qmax时,所分成的Nop个社区即是最佳的谱聚类结果,社区中的节点具有最佳的社区属性Cop。本发明的谱聚类方法可以不需要事先设定分类个数即可自动获得最佳的聚类效果,避免了现有谱聚类方法需要设定分类个数的缺陷,提高了分类的准确度,得到的局部中心度和全局中心度的数值更加准确,为后续的网络节点消息转发奠定了坚实的基础。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
在移动群智感知网络中,模型化网络为一个加权图G(V,H),V是网络中所有节点的集合,H是所有节点对的边的集合。源节点S将生成的消息m经过多个中继节点的转发到达目的节点D,将所述移动群智感知网络中的所有节点分成N个社区,提取每个节点的社区属性,每个节点都携带有其所在社区的标签。参考图1,中继节点i将其携带的消息m向目的节点D转发的过程中遇到节点j时,按如下方法进行转发决策:
(1)判断j是否是目的节点D,如果是,则直接转发消息m到D,并更新源节点S、目的节点D的全局度量和局部度量,否则,执行(2)。
(2)判断节点i是否进入目的节点D所在社区,如果节点i没有进入目的节点D所在社区,则执行(3);如果节点i进入目的节点D所在社区,则执行(4)。
(3)条件a:节点j与目的节点D属于同一社区。条件b:节点i的全局度量值小于节点j的全局度量值。如果满足条件a和/或条件b,则将消息m转发给节点j,并在考虑节点i和j的剩余能量和剩余缓存的基础上,更新节点i和j的全局度量和局部度量,以作为新的转发节点指导下次转发过程,否则,不转发消息m给节点j。
(4)条件a:节点j与目的节点D属于同一社区。条件c:节点i的局部度量值小于节点j的局部度量值。如果同时满足条件a和条件c,则将消息m转发给节点j,并在考虑节点i和j的剩余能量和剩余缓存的基础上,更新节点i和j的全局度量和局部度量,以作为新的转发节点指导下次转发过程,否则,不转发消息m给节点j。
现有的转发决策是将节点的全局中心度和局部中心度作为判断的条件,携带消息m的中继节点i遇到目的节点D所在社区的中继节点j时,如果节点i没有进入目的节点D所在的社区,那么当节点i在移动群智感知网络中的全局中心度GC小于节点j的全局中心度GC时,将消息m转发给节点j;如果节点i进入目的节点D所在的社区,那么当节点i在目的节点D所在社区的局部中心度LC小于节点j的局部中心度LC时,将消息m转发给节点j。
然而,网络节点转发消息会造成节点能量和缓存的变化,在能量受限的MCSN中,中继节点选择阶段应该综合考虑节点的能量消耗与剩余缓存大小。本发明在考虑节点转发消息造成的节点能量和缓存变化的基础上,综合节点在移动群智感知网络中的中心度、节点的剩余能量E和剩余缓存B三方面因素,提出节点度量的概念,并由节点的全局中心度和局部中心度将节点度量分为全局度量GMet和局部度量LMet。用节点的全局度量GMet和局部度量LMet替代全局中心度GC和局部中心度LC作为转发判断的依据,指导下次的转发过程。
全局度量GMet可用如下的公式表示:
,
式中,、e、b是调节因子,根据实际网络节点情况,分别用于调节全局中心度GC、剩余能量E和剩余缓存B在全局度量GMet中的比重。
局部度量LMet可用如下的公式表示:
,
式中,、e、b是调节因子,分别用于调节局部中心度LC、剩余能量E和剩余缓存B在局部度量LMet中的比重。
全局中心度和局部中心度都是介数中心度,所谓的介数中心度是:针对特定数据集进行多次复制路由,求得所有源目的节点对之间的最短路径,计算每一节点落在数据集中所有源目的节点对的最短路径上的次数,即为该节点的介数中心度。
某中继节点v的全局中心度的计算公式是:
,
式中,v是网络中的某中继节点,S和D分别是源节点和目的节点,M是网络的节点总个数,是源节点S和目的节点D之间的最短路径数量,是源节点S和目的节点D之间包含中继节点v的最短路径数量。
某中继节点v的局部中心度的计算公式是:
,
式中,s1和d1分别是在中继节点v所在社区网络中转发消息m的起始节点和结束节点,M1是节点v所在社区网络的节点总个数,是起始节点s1和结束节点d1之间的最短路径数量,是起始节点s1和结束节点d1之间包含中继节点v的最短路径数量。
每一个节点的能量和缓存都是有限的,节点的能量消耗主要与接收和发送数据包、待机、邻居节点发现等因素有关。过多的能量消耗会导致节点死亡,从而影响到网络连通度。节点的剩余缓存大小主要与发送和接收数据包以及所采取的缓冲区管理策略有关。因此,在能量受限的MCSN中,中继节点选择阶段应该综合考虑节点的剩余能量和剩余缓存。
剩余能量E主要包括节点收发数据包造成能量损耗后的剩余能量,其计算公式是:
,
式中,是节点的初始能量,是节点收发一次数据包所消耗的能量,是节点收发数据包的次数。
定义节点上次更新后的能量是,那么,节点此次收发一次数据包后的剩余能量是:,
剩余能量E还包括待机及邻居节点发现造成能量损耗后的剩余能量,其计算公式是:
,
式中,是老化因子,,一般取0.98,k是时间单位的个数,例如,定义10s为一个时间单位,则时间过去60s时,计时间单位个数k=6。
剩余缓存B主要是节点接收数据包所占用的缓存和节点丢弃数据包所释放的缓存,其计算公式是:
,
式中,是节点的初始缓存,是节点接收数据包所占用的缓存,节点丢弃数据包所释放的缓存。
转发消息后,只有及时更新两个节点的剩余能量和剩余缓存,设计出的度量函数才更加合理,从而能够更好的指导节点进行消息的转发。
将网络中的全部节点分成N个社区的常用方法是谱聚类方法:定义聚类个数N,这个N即是全部网络节点分成的社区个数,由节点相对全部节点的亲密度向量得到相似度矩阵,将相似度矩阵的特征值按从大到小排列,由前N个特征值构建特征向量空间,利用K-means方法对特征向量空间中的特征向量进行聚类。
上述方法的缺点是:必须事先给出聚类个数N,然而我们不可能事先知道聚类个数,只能根据实际情况和经验进行盲目的设定,这样定义的聚类个数是不准确的。参考图2,本发明在上述聚类方法的基础上,对网络用户节点数据集进行学习,提出一种自适应的谱聚类方法来提取每一个用户节点的社区属性。本发明引入了Newman提出的模块度的概念,非零的模块度代表了分类偏离随机的程度,模块度在0.3或以上代表了比较好的分类。我们设定N分别取为所有可能的分类个数,然后分别对每一个N值进行谱聚类,并对每次的聚类结果进行模块度计算,将获得最大模块度值时的分类个数和聚类结果作为针对本数据集的最佳的聚类结果。参考图2,上述自适应的谱聚类方法具体包括如下步骤:
步骤1、设定移动群智感知网络中的节点个数是M,将M个节点看作是一个社区,即初始化社区个数N=1,并标记节点i的社区属性是,1≤≤N,1≤i≤M,定义M个节点组成的一个社区的模块度Qmax=0;
步骤2、由节点v相对全部M个节点的亲密度向量得到相似度矩阵,其中,,是节点i和节点j之间的亲密度,当节点之间不存在接触时,=0;
步骤3、将相似度矩阵Cl的特征值按从大到小排列,取前N个特征值构建特征向量空间,利用K-means方法对所述特征向量空间进行聚类,标记每个节点的社区属性;
步骤4、根据聚类后所有节点的社区属性,代入模块度计算公式Q得到模块度Q的值,其中,是节点j的社区属性,,,,如果Q≥Qmax,则令Qmax=Q,最佳社区分类个数Nop=N,否则,直接进行下一步;
步骤5、令N=N+1;
步骤6、重复步骤3-步骤5,直至N=M,Nop值是最佳社区分类个数,社区中的节点具有最佳的社区属性Cop。
所述节点i和节点j之间的亲密度=α?N(i,j)+β?AD(i,j),其中,N(i,j)是节点i和节点j的接触次数,AD(i,j)是节点i和节点j的平均接触时长,α和β是调节因子。
本发明的上述自适应谱聚类方法可以不需要事先设定分类个数即可自动获得最佳的聚类结果,避免了现有谱聚类方法需要设定分类个数的缺陷,提高了分类的准确度,准确的节点群聚类为后续的节点消息转发判断奠定了坚实的基础。
下面通过仿真实验验证本发明的效果。
实验样本是Cambridge数据集,该数据集共有36个节点。假设每个节点的初始能量和初始缓存是相同的,并且所有数据包具有相同的大小,这样节点每发送或接收一个数据包需要耗费的能量是相同的,本仿真实验只考虑节点收发数据包造成的能量损耗,这是能量损耗的主要因素,其余的能量损耗较小,在此忽略不计。本仿真实验设定网络中一共产生1000个数据包,初始能量为一个节点最多可发送或接收数据包的个数,设定=150。每个节点的初始缓存为最多可以存放数据包的个数,设定=100,则为接收数据包的个数,为丢弃数据包的个数。
本实验中,针对Cambridge数据集只有36个节点,设定N从1到36变化,计算每一个N值对应的Q,表1是模块度取值表。
表1模块度取值表
从表1中可以看出,在N=3时,模块度取得最大值Qmax=0.4713,因此,取Cambridge的最佳分类个数为3。
在上述相同的实验条件下,将本发明上述实施例的方法与现有技术中基于Epidemic方法的对比例1、基于BubbleRap方法的对比例2和基于EABubble方法的对比例3进行对比,在成功投递率、平均网络代价和仿真结束时的节点存活率这三方面对本发明实施例与对比例1-3进行比较。图3是四种方法的成功投递率趋势比较图。图4是四种方法的平均网络代价趋势比较图。图5是四种方法在仿真结束时的节点存活率趋势比较图。从图3的对比结果来看,本发明一种兼顾网络节点能量和缓存的节点消息转发方法在成功投递率方面要远远优于不考虑能量和缓存的Epidemic和BubbleRap算法,也比仅考虑能量(度量计算也与本文方法不同)的EABubble算法好很多。同时,如图4,本发明的网络平均代价也是四种方法中最低的。从图5我们还可以看出,在不同数据包TTL下,采用本发明的方法能获得较大的节点存活率。由此可以看出,本发明提出的一种兼顾网络节点能量和缓存的节点消息转发方法不仅具有较好的性能,而且耗费的节点资源较少,具有很好的鲁棒性和健壮性。
以上描述仅是本发明的一个较佳实施例,本发明还可以广泛地用在其他实施例中,并且本发明的保护范围并不受实施例的限定,以权利要求的保护范围为准。任何熟悉本专业的技术人员,可以在不偏离本发明技术思想的范围内,进行多样的变更以及修改,仍属于本发明技术方案的保护范围。