发明内容
针对现有协议存在的问题,本发明提供一种基于K-means聚类和蚁群算法(antcolonyoptimization,ACO)的多级异构无线传感器网络分簇路由方法(K-meansclusteringandACOoptimalrouting,即KCAOR协议)。
本发明的技术方案如下:
一种基于K-means聚类和蚁群算法的多级异构无线传感器网络分簇路由方法,包括:
基于K-means聚类的无线传感器网络分簇;
基于蚁群算法的无线传感器网络簇间路由选择;
在数据传输阶段,簇首采用单跳和多跳相结合方式传输数据,同时在数据传输的末轮,通过增加节点状态包的方式,基站能够完整掌握全网节点的实时状态信息。
所述的基于K-means聚类的无线传感器网络分簇方案,具体步骤如下:
(1)确定簇域数量:由DEEC协议的最优簇首数量计算公式(1)确定无线传感器网络中簇首的最优个数,作为网络的最优簇域数量K。
其中,N为无线传感器节点个数,M为正方形监测区域的边长,dtoBS为簇首与基站之间的平均距离,εfs和εmp为无线传感器发送数据时的能耗参数;
(2)聚类算法分簇:从全网节点中随机选取K个节点作为每个簇域的初始质心,计算其余节点与各初始质心的距离,将节点划分至最近的簇域中。更新所有簇域的质心,并计算K-means聚类算法的准则函数,若不收敛,则对全网节点重新分簇,更新质心,直至准则函数收敛;
(3)均匀簇域负荷:确定算法的迭代次数NC_max,根据簇域最优成员节点数量公式(2)确定各个簇域的最优成员节点数量Numopt。对成员节点数量小于Numopt的簇域进行拆解,成员节点数量大于Numopt的簇域进行拆分,直到算法的迭代次数达到NC_max;
(4)簇首选择:对每个簇域内的节点剩余能量值进行比较,选择剩余能量值最大的节点作为本簇域的簇首。
所述的基于蚁群算法的无线传感器网络簇间路由选择方案,具体步骤如下:
(1)根据各节点之间的距离长度确定每条路径的启发因子ηij,设置算法的迭代次数NC_max以及其他一些参数;
(2)每个簇首产生k个探测分组,并将这些探测分组随机发送至各个簇首,探测分组每经过一个簇首便将该簇首记录到自己对应的禁忌表中;
(3)每个探测分组依据概率公式(3)确定下一个待访问的簇首,直至探测分组抵达基站;
to_visit=N-Tabuk(4)
其中,N表示节点集合,Tabuk表示第k只蚁群已经过的节点集合即禁忌表,to_visit为待访问的节点集合即候选集;τij(t)表示t时刻路径ij上的信息素量;ηij为路径ij的启发因子,我们取节点i与j之间距离的倒数;α、β分别表示每条路径上信息素和启发因子的相对重要程度;
(4)待所有探测分组到达基站后,分别从每个簇首的探测分组中选出游历路径最短的分组,对这些探测分组所经过的路径上的信息素进行更新;
(5)回到(2)继续进行,直至算法的迭代次数达到NC_max。
所述的在数据传输阶段的步骤:在数据传输阶段,每个簇域内的成员节点按照各自分配到的传输数据的时间点向簇首发送数据;簇首根据与基站的距离确定其数据传输方式(单跳或多跳);在数据传输的末轮,每个节点在发送数据包的同时增加一个包含本节点当前剩余能量、所属簇域、ID号以及位置等信息的节点状态包。
本发明可以获得如下有益效果:
(1)充分考虑各网络节点能量的差异性,均衡网络的能量消耗。
(2)提高能量的使用效率,延长网络的生存时间。
(3)提高网络的稳定性。
具体实施方式
下面参照附图和实施例对本发明做进一步的详细描述。
本发明提出的基于K-means聚类和蚁群算法的多级异构无线传感器网络分簇路由协议采用与DEEC协议相同的网络模型,协议的运行过程分为三个阶段:簇域的创建、簇间路由的选择和数据传输。
1.多级异构网络模型构建
假设N个拥有不同初始能量的传感器节点均匀地部署在边长为M的正方形区域内,传感器节点周期性地采集数据且具有如下性质:
(1)网络中的传感器节点各自具有唯一的标识号(ID),节点不可移动;
(2)基站位置固定,能量不受限制,且无线发射范围覆盖整个网络;
(3)传感器节点的初始能量在闭区间[Eo,Eo(1+αmax)]内随机分布,如图1所示,在协议运行过程中不能补充,各节点能够随时获知自身当前的剩余能量且具备一定的数据处理能力;
(4)网络的通信链路对称。传感器节点可以通过无线信号强弱,计算出与发射节点的近似距离,节点同时可以根据与接收方的距离调节发射功率。
协议的能量模型,假设某个节点发送l比特信息,发送距离为d的过程中,发送端的能量消耗表达式为:
其中,d0为数据通信过程中的距离阈值,当节点的发射距离小于阈值d0时,节点能量消耗采用自由空间模型,反之,则采用多路径衰减模型;Eelec表示接收电路或发射电路运行时消耗的能量;εfsd2和εmpd4为放大器消耗的能量。则单个节点接收l比特信息时消耗的能量表达式为:
ERx(l)=lEelec(2)
2.簇域的创建
2.1聚类算法分簇
最优簇首数计算公式:
其中,N为无线传感器节点个数,M为正方形监测区域的边长,dtoBS为簇首与基站之间的平均距离,εfs和εmp为无线传感器发射能耗的参数。
平方误差函数:
其中,n表示网络中的节点数;k表示网络中的质心数;d(mi,cr)表示网络中的节点i到质心r的距离,由欧式距离函数确定。
本发明中的K-means聚类分簇算法,先由公式(3)计算出簇首的最优数量作为网络的初始节点数K,再从全网节点中随机选取K个节点,作为每个簇域的初始质心;然后对剩余的其它节点,计算其与初始质心的距离,并划分到最近的簇域中,重新计算并更新每个簇域的质心;最后计算准则函数,本发明采用平方误差函数作为K-means算法的准则函数,如公式(4)所示,若准则函数不收敛,则根据新的质心位置重新组建簇域,否则终止算法的迭代并输出簇域的分布情况Clusteri和成员节点数量Numi(i=1,2,…,Kopt)。
2.2簇域均匀策略
定义1:小簇域。本发明将多级异构网络中簇域内成员节点个数Numi<Numopt(Numopt由公式(6)确定)的簇域称为小簇域,记为Cluster_mini(i=1,2...,C_Numchange,其中C_Numchange为小簇域的数量)。
定义2:大簇域。小簇域拆解后,对余下簇域按簇内成员节点个数进行排序,本发明将排序结果中最大的C_Numchange个簇域称为大簇域,记为Cluster_maxi(i=1,2...,C_Numchange)。
通常情况下,一个簇首及若干个成员节点组成一个簇域,则每个簇域内的最优成员节点个数为:
将公式(3)代入(5),可得:
本发明提出的簇域均匀策略,是先由公式(6)计算确定簇域的最优成员节点个数Numopt,与各簇域的成员节点个数Numi进行比较,确定小簇域及其个数C_Numchange。比较小簇域中的每个成员节点与其他非小簇域质心的距离,找到离它最近的簇域,将其划归到最近一个非小簇域中,完成小簇域的拆解。小簇域拆解后,会使某些簇域内的成员节点数过多,所以需要对这些大簇域进行拆分。对剩余簇域按簇内节点个数的大小进行排序,将排序结果中最大的C_Numchange个簇域定为大簇域,对大簇域内的成员节点均匀地分成两组,并移出一组形成新的簇域。不断重复该调整策略,直至网络内簇域的分布趋于均匀,实现簇首个数的稳定和簇域分布最优。簇域均匀策略的具体实现过程为:
输入:最优成员节点个数Numopt,簇域分布Clusteri和成员节点数量Numi(i=1,2,…,Kopt),算法的最大迭代次数NC_max。
第一步:确定小簇域。比较每个簇域的成员节点数Numi与最优成员节点个数Numopt的大小,若Numi<Numopt,则为小簇域Cluster_mini,统计Cluster_mini的个数C_Numchange。
第二步:拆解小簇域。将Cluster_mini中的成员节点重新划归到离其最近的非小簇域中。
第三步:确定大簇域。采用冒泡排序法根据各簇域内的成员节点个数对簇域进行排序,确定排序结果中最大的C_Numchang个簇域为Cluster_maxi。
第四步:拆分大簇域。均分Cluster_maxi中的成员节点为两组并将第二组移除,形成新的簇域。
第五步:终止与返回。当算法的迭代次数到达NC_max,则终止算法并输出结果,否则,返回第一步继续迭代。
输出:新簇域的分布情况Clusteri’和成员节点数量Numi’(i=1,2,…,Kopt)。
2.3簇首的选举
本发明中,基站根据在数据传输阶段收到的各节点状态包中节点剩余能量的信息,确定各个簇域的簇首节点,每个簇域选择剩余能量最大的节点作为本簇域的簇首。
创建簇域阶段的算法在基站上实现,并在簇间路由选择完成后,由基站将运行结果向全网广播。聚类算法分簇和簇域均匀策略只在协议运行的首轮和网络内死亡节点个数增加10%以上时才运行,簇首的选举则在协议的每一轮都会运行。
3.簇间路由的选择
本发明中的簇首与基站之间的最优路由选择由蚁群算法实现。
假定蚂蚁数量为m,dij(i≠j,j=0,1,2,…,n)为节点i与j之间的距离,在t时刻蚂蚁各自选择下一个节点。根据各条路径上的信息素量,蚂蚁在节点i选择节点j的转移概率为:
to_visit=N-Tabuk(8)
其中,N表示节点集合,Tabuk表示第k只蚁群已经过的节点集合即禁忌表,to_visit为待访问的节点集合即候选集;τij(t)表示t时刻路径ij上的信息素量;ηij为路径ij的启发因子,我们取节点i与j之间距离的倒数,如公式(9)所示;α、β分别表示每条路径上信息素和启发因子的相对重要程度。
当所有蚂蚁完成一次遍历后,每条路径上的信息素量将根据公式(10)进行更新。
τij(t+1)=(1-ρ)τij(t)+Δτij(10)
其中,ρ为常数(0<ρ<1),表示路径上信息素的挥发系数,Δτij表示本次遍历完成后路径ij上的信息素增量。表示第k只蚂蚁在本次遍历过程中留在路径ij上的信息素。如果蚂蚁没有经过路径ij,则的值为0。计算公式为:
其中,Q为信息素增强系数,Lk表示第k只蚂蚁在本次遍历过程中经过的路径长度。
具体的实现过程如下:
第一步:参数初始化。设置算法的最大迭代次数为NC_max,初始化每条路径上的信息素含量、启发因子和其他一些参数。
第二步:簇首发送探测分组。每个簇首将k个探测分组随机地发送至其他簇首,探测分组每访问一个簇首,自动将该簇首记录到禁忌表Tabuk中。
第三步:探测分组搜寻基站。每个探测分组依据公式(7)的转移概率发往下一个待访问簇首,重复运行本步骤,直到探测分组抵达基站。
第四步:信息素的更新。待所有探测分组到达基站后,从每个簇首的探测分组中选出路径最短的分组,按照公式(12)更新这些探测分组经过的路径上的信息素。至此,完成一次算法的迭代。
第五步:终止或返回。若算法迭代次数已达到NC_max,则终止蚁群算法并输出最优路径结果,否则,返回第二步继续迭代。
簇间路由选择阶段的算法也是由基站完成。待基站完成了簇域的建立和簇间路由选择,会向全网发送广播包。网络中的所有节点接收广播包,并将与自己相关的配置信息存储下来,在数据传输阶段使用。
4.数据传输
本发明在运行到数据传输的末轮时,采用增加节点状态包的方式,即各节点在发送数据包的同时增发一个状态包,将节点当前的属性通报给基站。状态包中包含了本节点的剩余能量、所属簇域、ID号以及位置等信息。通过节点状态包,基站能够完整地掌握网络中所有节点的实际情况,保证了成簇阶段和簇间路由选择阶段的算法能得出最佳的运行结果。
数据传输阶段的实现过程:首先,各簇域内的簇首采用TDMA方式为成员节点分配发送数据的时间点,成员节点在其时间点内向簇首发送数据包;然后,簇首整合成员节点的数据,再发送至基站;簇首在与基站通信过程中会根据其与基站的距离,决定是否采用多跳的方式向基站发送数据;如果距离大于d0,则按照蚁群算法得出的最优路由向基站发送数据,否则簇首直接与基站通信。
5.性能分析
根据无线传感器网络的特点,先对比较协议性能的参量做一些说明。稳定期是指从协议开始运行到出现第一个节点死亡所经过的时间,不稳定期就是从第一个节点死亡到最后一个节点死亡的这段时间。网络高效期是指协议从开始运行到超过一半的节点死亡所经过的时间。传感器网络在网络高效期内能够保持较好的监测性能,当传感器节点死亡数超过一半时,监测性能就会大幅下降。网络有效期是指网络协议从开始运行到节点死亡率达到90%所经过的时间。当传感器网络中节点死亡率超过90%时,基本可以判定网络失效。
如图2和图3所示,本发明在运行过程中簇域分布均匀,簇间的路由选择合理,能较好地减少节点向基站传输数据过程中的能量消耗。
图4和表1是四种协议的网络生存性能的对比。表1描述了本发明所述的KCAOR协议与LEDACH、SEP和DEEC协议的网络性能的对比:
表1:
在无线传感器网络中,基站需要通过传感器网络获取监测区域的可靠和全面的数据,因此稳定期的长度是无线传感器网络最重要的度量标准。当网络中节点死亡率在50%以内时,传感器网络对监测区域能保持较好的数据采集效果;而当节点死亡率超过90%时,网络已经无法向基站提供监测区域的可靠和全面的数据了,可以判定网络死亡。从对比结果中可以看到,本发明的稳定期、高效期和有效期的持续时间均好于其他协议,较好地延长了传感器网络的生存时间。
图5是四种协议能量消耗的对比。从图中可以看到,DEEC协议的能量消耗要低于LEACH和SEP协议。与DEEC协议相比,KCAOR协议在第400轮、第800轮和第1600轮时的能量消耗分别减少了29.9%、8.1%和0.5%。这是由于本发明的簇域分布更均匀,簇首数量稳定且选取合理,较好地降低和均衡了簇内成员节点的能量消耗;簇间采用了最佳的传输路线,进一步降低了簇首节点的能量消耗,提高了网络能量的使用效率。
图6是四种协议的基站在网络有效期内收到的数据包总数的对比。从图中可以看到,本发明的基站收到的数据包总数远高于其他协议。数据包总数越大说明网络对监测区域的数据采集越全面,基站对监测区域的监测能力越好。