靠近基站的候选簇首的竞争半径应该较小。随着候选簇首到基站距离的减小,其竞争半径亦应随之减小。设候选簇首的竞争半径的最大取值为R0c。其中,c用于控制取值范围的参数,在0~1之间取值。候选簇首si确定其竞争半径Rc的计算公式如下:
式中:dmax是距离基站最大的距离;dmin是距离基站最小的距离;d(si,DS)是簇首si到基站DS的距离。
首轮簇首选举相对简单。根据簇首节点比例在网络中选举出簇首,在竞争半径内不允许存在其他簇首,接着竞选产生的簇首向全网广播其竞选获胜的消息CH_ADV_MSG;普通节点选择簇内通信代价最小(即接收信号强度最大)的簇首,发送加入消息JOIN_CLUSTER_MSG通知该簇首。
3.2 簇首生成树的建立及数据传输
本文采用簇首多跳数据传输的方法,如何选举下一跳簇首节点是本部分要重点阐述的问题。首先引入一个阈值TD_MAX,若簇首到汇聚点的距离小于TD_MAX,则直接与汇聚点进行通信;否则,应该尽量使用多跳路由的方式将数据传送给汇聚点。
假设d(A,DS)>TD_MAX,则在簇首A的临近簇首集里计算各个若簇首,带来的链路质量开销指标Erelay=d2(A,X)+d2(X,DS)。其中,d(A,X)是簇首A到簇首X的距离;d(X,DS)是簇首X到基站距离;d(A,DS)是簇首A到基站的距离。在Erelay值小的簇首节点中选择剩余能量最大的节点作为中继转发的簇首节点,将数据按照簇首生成树转发到基站。
3.3 各轮簇首选举
为了延长网络的生命周期,应该尽量选择簇内节点中剩余能量最高的节点为簇首节点,并且让不同的节点轮转当选。本部分采用基于剩余能量的簇首簇内轮换的方法进行簇首选举。其主要思想:簇首在簇内负责收集簇内节点的数据。在节点向簇首发送数据时,在数据位后附加上本节点的剩余能量值位。簇首将数据进行处理转发后,对各节点的能量进行简单的排序,因为不用维持所有节点能量的全排序,只需要知道剩余能量比较高的几个节点,所以采用最大堆的排序方法。在通过数据应答包或者命令包中附加位的方法把这个排序中的前3名节点号及能量值广播到整个簇内,这样做就不会增加广播次数,只是以附带的方式就可以使整个簇内节点都有本簇内剩余能量较高节点的信息。即使簇首节点突然失效或发生异常,其他的节点可以很快根据能量信息选出新簇首。簇内节点保留的都是最近一次的能量信息,由于传感器网络休眠的时同比较长,即使簇首突然失效,信息的变化也不会很大,完全可以根据这次排序来选举出新的簇首。新簇首选出后,负责完成数据收发处理及能量排序等工作。
通过本算法每次都选出剩余能量最多的节点当选簇首,使簇内信息收集和主干网络通信更加稳定,并避免了每轮簇首选举时所有节点相互交换能量信息所需的大量开销。
4 性能分析
本部分比较各种分簇协议对网络存活时间的影响。图3显示了网络中存活节点数目的各轮变化情况。从图中可以看出,无论是第一个节点死亡的时间还是最后一个节点死亡的时间,本文算法均优于其他3种协议。节点死亡时间的跨度可以反映出网络中节点的能量均衡情况,时间跨度短说明网络的能量使用高效。本文算法不仅显著地延长了网络的生存时间,而且时间跨度也小于其他3种协议,这说明该算法很好地均衡了网络中所有节点的能量消耗。
通过试验结果可以看出,本文提出的算法具有如下优点:分簇算法稳定,所生成簇的簇个数不变,能量消耗低,且有效平衡了簇首能量消耗,显著延长路网络的生存时间。总之,用网络的生存时间这一重要指标来衡量,其性能显著优于其他3种分簇协议。
5 总 结
本文算法在初始化簇结构时,采用非均匀分簇的方法,避免了由于数据沿簇首生成树多跳传输而导致近基站簇首多余能量的消耗,解决了簇首能量不均衡的问题;采用基于剩余能量的簇首簇内选举的方法,避免了所有节点参与每轮的簇首选举过程带来的不必要的能量消耗,保证了剩余能量最多的节点担任下一任簇首;用簇首建立主干网络进行数据多跳传输,合理选择下一跳簇首节点,减少了簇头长距离传输数据的能量消耗。