现在跟着导师做无线传感器网络方向,由于刚开始接触这一方面,打算记录一下自己的学习过程,看书过程中做了一些笔记,如果哪里有错误或者描述不准确的地方欢迎大家在评论区批评指正,大家一起学习进步~~~
1、leach算法
它是一个高效自治的分簇算法,在leach算法中,只有节点与簇头结点通信的时候才被唤醒,其它时间处于睡眠状态节省能量。而簇头节点需要完成数据融合、与汇聚结点通信等工作必须一直保持活跃状态,能量消耗大。为了使网络中的结点均衡的能量消耗,leach算法采用循环选举的算法,使各个节点等概率的担任簇头节点。过程如下:
1、每个节点在第r+1轮选举簇头开始时产生一个0~1的随机数,如果这个数小于这个节点的阈值,则当选簇头。在一个选举周期中,如果一个结点已经当选过簇头,则将其阈值设置为0,他在本轮不会再次当选簇头。对于未当选过簇头的结点,随着选举轮数的增大,它的阈值也随之增大,则它当选簇头结点的概率增大,直至所有结点都当选过一次簇头节点则进行下一轮。
2、结点在确定自己当选簇头节点后采用CSMA的MAC协议向邻居节点广播一个通告消息;非簇头节点接收到CHA消息后,选择接收信号强度最大的簇头加入。
LEACH采用分布式的机制实现分簇,所有结点等概率的实现分簇,在网络生存时间,吞吐量和延时等性能上都有良好的表现;但是他的选举机制没有考虑结点的具体物理位置,不能保证簇头均匀的分布在网络中,簇的大小也可能差异很大。
2、GAF算法
它采用虚拟单元格划分为传感器网络的分簇提供了新的思路,GAF将整个网络区域划分为多个虚拟单元格,结点根据自己的地理位置信息划入相应的单元格中,每个单元格定期选举出一个簇头节点。GAF包括两个阶段:
1、虚拟单元格划分,根据结点的位置信息和通信半径,将网络区域划分成多个虚拟单元格,并保证相邻单元格任意两个节点可以通信。
2、虚拟单元格选举簇头,由于相邻的单元格任意两个节点都是可以通信的,所以同一单元格所有结点都是等价的,GAF中的结点可以处于发现,活跃或者睡眠三种状态。。
网络初始化时,所有结点处于发现状态,每个节点都发送消息来通告自己的位置、ID等信息,此时结点可以得知同一单元格中其他结点的信息。每个节点将自身定时器设置为某个区间的随机值T,一旦定时器超时,节点发送的消息声明它进入活跃状态,成为簇头节点。结点如果在定时器超时之前收到来自同一单元格其它节点成为簇头节点的声明,说明这次簇头节点竞争失败,进入睡眠状态。成为簇头的结点设置定时器Ta,代表它处于活跃状态以抑制其它节点进入活跃状态,Ta超时后,簇头重新回到发现状态。
GAF采用基于单元格簇划分的思想,网络中分簇均匀,拓扑结构稳定。GAF是基于地理位置的分簇算法,需要结点地理位置,对传感器提出了更高的要求。但是GAF算法随机选择簇头,没有考虑能量剩余问题;可能导致网络中结点能量消耗不均匀。
3、HEED算法
它是一个分布式的分簇算法,它的首要考虑因素是节点的剩余能量,簇内的通信代价作为次要因素来进行簇头的选择和分簇,使网络中的能耗更加均匀。
HEED算法按轮周期性的执行,每轮包括分簇阶段和网络运行阶段。分簇阶段是根据网络节点的剩余能量选择簇头,其它节点根据通信代价选择加入各个簇。
节点成为簇头的初始概率由式CH(prob)计算得出,节点剩余能量越多,当选簇头节点的概率越大。当某个节点被选举为簇头节点时相应的簇内通信代价平均最小可达功率用AMRP表示。
簇头选举采用多次迭代的方选举概率法实现:(1)初始时节点计算出CH(prob),并向邻居节点广播通信代价AMRP;(2)每次迭代开始时,节点以概率CH(prob)竞争簇头,若竞争成功,就向邻居节点广播消息,告知自己成为临时簇头。(3)如果节点收到多个广播信息则选一个AMRP最小的加入;如果节点未收到信息,则推荐自己成为簇头。(4)每次迭代结束,节点的选举概率值都乘2,以新的概率竞争簇头;(5)当节点的选举概率值大于或等于1时,迭代结束。
HEED算法在分簇时综合考虑结点的剩余能量和簇内通信代价,尽可能使得簇头分布均匀,延长网络生存时间;在HEED算法的迭代过程中,每一步迭代时间要足够长,使得节点可以收到来自邻居节点的通告信息。
几种无线传感器分簇算法
最新推荐文章于 2024-03-25 19:46:04 发布