转自:http://hi.baidu.com/jerry_916/blog/item/cce9012b6d206e92033bf680.html
References:
http://www-mtl.mit.edu/~anantha/docs/journals/2002_heinzelman_twn.pdf
http://mtlweb.mit.edu/researchgroups/icsystems/uamps/pubs/
LEACH协议之后,很多人进一步提出了改进的LEACH协议,如SEP协议,选择LEACH协议来学习NS2主要是考虑到LEACH协议的经典和有趣, 同时也认为是NS2学习的一个很好很有用的开头,不过,LEACH协议并不是那么容易参透,还有很多迷茫的地方,继续摸索中。。。
LEACH算法中节点以簇的形式来组织自己,每个簇由簇首来管理,当簇首接收到簇内成员发来的数据后,进行一些数据融合,然后再传送给远端基站。所以作为簇首的节点,需要很大的能量,如果簇头是事先固定的,那么簇头的能量将会很快耗尽,那么属于该簇的节点将不能继续通信,所以LEACH算法采用轮换簇首的方案来使通信中的节点轮流来作为簇首,这样就可以避免固定簇首所带来的一些缺点。这就涉及到一个簇首选举方法,在LEACH中算法的实现是分层一个个轮次的,每个轮次又分簇形成阶段和簇稳定阶段,为了减少分簇带来的额外能量消耗,所以簇稳定阶段的时间要远远大于簇形成的时间。在簇形成阶段,算法采用随机分布的算法来决定每轮的簇首,而不需要任何中央的控制。选举过程如下:每个传感器节点先生成0-1之间的随机数,如果生成的随机数小于某一阈值,那么这个节点就当选为簇首。阈值的大小是由下面的公式来决定:
(1)
其中N为整个网络中所有节点的个数,k为网络中簇首的个数,r是选举的轮数,N/k为每大轮中要进行的小轮轮数,Ci(t)是一个标志位,在每一个大轮中,如果在每个小轮中,某传感器节点当选为簇首时,Ci(t)就置为0,这样在每个大轮中已经当选过簇首的节点不能再当选为簇首,这对网络中能量的均衡有一定的作用,在每个大轮结束后,所有节点的标志位都将置为1,又开始新的一轮的循环。当节点被选为簇首后,就向外广播信息,其它节点根据收到的广播信息的能量的大小决定加入哪个簇,并向簇首发送要求加入该簇的请求,簇首收到请求信息后,将节点设置为簇内成员,并为它分配一个TDMA的时隙,再将该时隙表发送给簇内所有成员,进行时间的同步。在簇及其成员形成后,就进入了数据传输阶段,各个节点按照簇首分配的时隙给簇首发送数据,簇首将收到的信息进行融合,然后将信息传递给基站。
在分析LEACH协议之前,我们作如下的假设:
l 基站是固定的而且远离传感器节点
l 网络中的传感器节点都是同型传感器节点而且能量受限的
l 每个节点都有能力和基站通信
l 节点没有位置信息
l 对称二进制信道
l 簇首可以进行数据融合
由于是对称二进制信道,由i节点发送1bit数据到j节点和由j节点发送1bit数据到i节点所消耗的能量是一样的,假设簇首从它的n个簇成员收到 nk bits的信息,则经过数据融合向基站发送 cnk bits的数据,其中c称为压缩因子。利用文献【Energy-Efficient Communication Protocol for Wireless Microsensor Networks】提出的模型,可求得节点的能量消耗。
和平面路由算法相比,LEACH算法可以延长大约30%的 网络生存时间,在这里网络生存时间定义为网络中第一个节点死亡的时间。但是从上面簇首选举方案可以看出,簇首的选举具有很大的随机性,在位置和数量上呈现 不稳定的现象,当簇首太少时失去分层的意义,当簇首太多时,由于簇首要与远端基站直接通信,发射功率比较大,从而导致网络能量的过大消耗,由于簇首位置的 不平衡性,每个簇所负担的节点不同,这样会加重个别节点的负担,导致网络能量的不均衡性,从而影响整个网络的生存时间。