基于二分K-means的无线传感器网络分簇方法
2020-02-24张本宏江贺训
张本宏, 江贺训
(合肥工业大学 计算机与信息学院, 安徽 合肥 230601)
无线传感器网络(wireless sensor network,WSN)是由部署在监测区域内大量的微型传感器节点和基站组成的,通过无线通信方式形成的一个多跳的自组织的网络系统[1]。目的是协作地感知、采集和处理网络覆盖区域中被感知对象的信息,并发送给汇聚节点[2]。由于WSN的能耗低、抗毁坏性强,可以被广泛应用于环境监测、国防军事、安全监测、家居生活等众多领域。因为无线传感器节点通常是投放到人迹罕至的地方,而无线传感网络节点的计算能力、带宽、能量都十分有限[3],所以WSN的路由协议设计的重要目标是降低节点能量损耗,延长整个网络的生命周期[4-5]。分簇算法是有效管理网络能耗从而延长网络整体寿命的方法之一。分簇算法通过将整个网络分成几个较小的簇进行管理,在每个簇中选举簇头对簇内节点采集的数据进行接收并融合再传输给基站,降低了网络整体的通信,较好地提高了网络均衡能耗。文献[6]提出了低功耗自适应集簇分层型协议(low-energy adaptive clustering hierarchy,LEACH)算法,该算法是一种基于层次式路由的分簇方法,采用随机选举簇头的策略,网络中的传感器节点都有一定的几率被选为簇头节点。虽然LEACH分簇算法可以在一定程度上降低网络的能耗提高网络生命周期,但是无法保证选举簇头的数量是否合适,同时也不能保证选举出的簇头在网络中均匀分布。文献[7]对LEACH分簇算法的缺陷进行改进,提出了LEACH-CC算法,传感器节点将自己的剩余能量和位置信息发送给基站,由基站根据信息对网络进行分簇以确定合适的簇头数量;文献[8]提出一种能耗均衡的混合通信算法,由基站通过分析节点剩余能量以及簇头之间的距离选举簇头,并且簇内节点分别以一定的概率通过单跳和多跳混合的方式与簇头通信;文献[9]提出一种基于压缩感知理论的WSN六边形格状优化分簇路由算法,定量分析数据传输次数与分簇多少的关系。虽然能够在一定程度上降低网络的能耗但是不能保证簇头的均匀分布以及合理的簇头数量。
这些分簇算法虽然能在一定程度上提高能量的有效性,但是不能保证各个簇的能量消耗均衡。与非簇头节点相比,由于簇首节点既要负责接收并融合簇内采集的数据又要将数据传送给远端的基站,导致簇头节点能量损耗过快容易过早失效,从而导致网络整体效率降低。因此在选举簇头时需要考虑好节点的剩余能量以及簇头的能量均衡负载。文献[10]提出负载均衡感知的无线传感器网络容错分簇算法,利用遗传因子算法设计了一种自适应的基于离散粒子群算法来优化簇头的选举;文献[11]提出DBCL算法,通过控制每个簇中的成员数量达到各个簇之间能量负载均衡的效果,但是算法仍然采用的是随机选举簇头的方式,没有考虑节点的剩余能量;文献[12]提出EACHS分簇算法先通过LEACH分簇算法分簇,然后调整簇头节点的位置,并且控制每个簇内成员节点的数量从而达到能量负载均衡的目的。以上几种算法都不能保证选出合适的簇头节点,并且不能保证簇头节点均匀分布在无线传感网络中,从而导致网络能量消耗更大,影响网络的整体寿命。
簇头节点的数量对网络能耗很大,簇头数量过多,簇内节点数量就会过少,过量的簇头消耗的能量反而更多;簇头数量太少失去了分簇算法的意义。因此,选出均匀分布于无线传感网络中并具有高效能量的最优簇头集合是一个重要问题。二分K-means[13]是基于传统K-means聚类算法提出的改进型算法,它解决了K-means算法对于初始种子选取过于依赖导致的分簇不均问题,并且运行简单快捷。本文基于二分K-means算法提出了一种优化簇头选举的均匀分簇(uniform clustering optimization algorithm,UCOA)算法,其他分簇算法是先以一定概率选举簇头,再通过簇头广播信息成员节点加入的成簇方式,UCOA分簇算法首先基于对网络能耗的理论分析确定WSN的最佳簇头数目,然后利用二分K-means进行网络均匀分簇。在各个分好的簇中利用改进过后的簇头选举算法选出每个簇中唯一的簇头。这样既能保证成簇的均匀也能保证拥有合适的簇头数目。
1 系统模型
1.1 拓扑模型
假设现有一个用于数据采集的无线传感网络,形状近似为一个边长为M的正方形区域,其中均匀且随机地分布着N个传感器节点。传感器节点的位置固定且具有唯一的网络标识,初始能量相同且有限并能随时感知自己的剩余能量,传感器节点的感知半径相同,能根据自己到簇头之间的距离自适应地调整发射频率。基站位置固定并且离传感网络很远。利用聚类算法将整个无线传感网络均匀分成几个簇,在各个簇内以节点的剩余能量和距离基站的远近作为考量选举簇头。簇内节点与相应的簇头采取单跳通信而簇头与基站之间采取多跳单跳混合通信的设计思想。簇头节点采用TDMA的方式为簇内的节点分配数据传输所需要的时间点,不同的簇采用不同的CDMA代码的方式与簇头节点直接通信,以求避免来自其他簇中节点的干扰。
1.2 能量模型
假设每轮进行数据采集时簇内的节点只会发送一个自己所采集到的数据包给所在簇的簇头节点,并且与任何其他簇中的节点都不会进行通信。每个簇中的传感器节点受到自己所在簇内的簇头管理,将自己所收集到的信息发送给簇头,簇头对簇内节点传输过来的数据包进行必要的融合。在每一轮数据采集的期间每个簇头只会发送一个数据包给基站。为了方便计算,参考文献[14]中的能量损耗模型,如图1所示。
图1 能量损耗模型
图1中,Eelec为无线发射线路节点发送或接收一个数据包所需要的能量消耗;k1为无线发射功率放大器在自由空间时的消耗参数;k2为无线发射功率放大器在多路径传输时的消耗参数。假设所有的簇头在进行路由处理和MAC时不考虑数据包的碰撞和空闲监听的能量损耗。从一个传感器节点发送a个数据包到另一个传感器节点,传输距离为d的能量损耗包括发送a个数据的能耗以及传输过程中放大器的能耗,即
ETX(a,d)=ETX-elec(a)+ETX-amp(a,d)=
(1)
节点接收a个数据包的能耗为:
ERX=ERX-elec(a)=aEelec
(2)
2 分簇策略
WSN的分簇算法中,需要合理的簇数量以及兼顾选举簇头时考虑到簇间能耗负载均衡,因为簇头需要处理簇间的大部分事务,能耗是所有节点中最大的,所以选举簇头时需要考虑的一个重要因素就是节点剩余能量。同时簇头需要直接与基站通信,远距离的通信势必导致能耗的增加,因此在选举簇头时应该考虑到节点与基站距离的远近。本文将簇头数目、节点剩余能量、节点距离因子加入到簇头的优化选举中,并设计出一种用于簇头选举的基于二分K-means的簇头选举算法。
2.1 最优簇头数的计算
根据本文的拓扑模型,设无线传感网络中有Y个簇,则有Y个簇头,每个簇中的非簇头节点平均为N/Y-1个。每个簇头消耗的能量组成为接收簇内成员数据所产生的能耗,融合数据产生的能耗,将融合数据发送到基站所产生的能耗以及功率放大器在多路径传输中产生的能耗为:
(3)
簇内每个非簇头节点的能耗为:
(4)
每个簇的能耗为:
(5)
所有簇的总能耗为:
(6)
由于(6)式中的(1-A/a)KEelec与其他项比较数值太小,忽略不计所有簇的总能耗,(6)式可以简化为:
(7)
(8)
2.2 均匀分簇
无线传感网络的分簇方法一般都是先进行簇头的选举,然后通过簇头广播信息成簇。这样导致的问题就是不能保证簇头的均匀分布,加大无线传感器网络的能量损耗。UCOA分簇算法采用二分K-means对无线传感网络先进行均匀分簇,再在分好的簇内进行簇头选举。通常为了快速均匀分簇会采用K-means算法,K-means算法最关键的步骤是进行初始质心的选择,K-means初始时随机指定若干个节点为质心,可能导致质心在网络中分布不均从而导致聚类效果不佳。为了改善K-means聚类算法对于初始质心的选择过于依赖,采用二分K-means算法进行分簇以保证分簇的均匀。在具体的无线传感器网络可以计算出最优簇头数目,通过设定k值为最优簇头数目保证簇头个数的合理。在无线传感网络节点布置好之后,以基站为原点建立二维坐标系,节点将自己的位置信息发送给基站从而得到所有节点的坐标。分簇步骤如下:
(1) 将无线传感网络中的所有节点初始化为一个簇,利用K-means聚类算法将其分成2个簇。
(2) 分别计算簇的误差平方和(sum of squares for error,SSE),计算公式为:
(9)
其中,ci为质心坐标;x为质心ci的簇内节点;dist为空间2个向量的欧几里得距离。
SSE能够很好地衡量聚类性能,SSE值越小,说明节点越接近于它们的质心,聚类效果越好;反之,SSE值越大,说明该簇聚类的效果越不好,有更大的可能性是将几个簇当成了一个簇。因此需要首先对该簇进行划分。
(3) 利用K-means算法将SSE更大的那个簇分成2个簇。
(4) 重复步骤(2)、步骤(3)直到将网络分成k个簇为止。
2.3 簇头选举
考虑到簇头所承担的簇内簇间事务很多,能量消耗巨大。将剩余能量和节点距离基站距离远近加入到簇头选举的考虑中。UCOA分簇算法只进行一次分簇,而簇头的选举每轮都会进行。将节点剩余能量和节点距离基站距离远近加入对簇头选举阈值公式中,选举簇头的时候每个节点会随机产生一个0~1之间的数,然后与阈值T(n)比较,若这个数比阈值小则当选为簇头。阈值公式为:
(10)
(11)
(12)
其中,P为每一个区域里面簇头个数的百分比,在UCOA分簇算法中要求每个簇内只能有一个簇头节点,因此具体到分好的每个簇内P值就是簇内节点个数的倒数;rmod(1/p)为以1/p轮为周期的循环在当前还剩余的轮数;G为剩余轮数中还没有成为过簇头节点的集合;ω(n)为加入了剩余能量因子和距离远近因子的阈值修正函数;Eini(n)为节点的初始能量;Eres(n)为节点当前的剩余能量;Dmax(n)为每个簇内节点中距离基站最远的距离;Dmin(n)为簇内节点中距离基站最近的距离。网络运行之初所有节点的初始能量都相同,此时主要由节点距离基站距离远近控制簇头的选举,距离基站近的节点当选簇头耗能相对更少。随着网络运行轮数的增加,节点耗能不均衡性开始体现,因此此时应该将剩余能量在阈值修正函数中的权重增加以求更好的网络耗能均衡。若某个簇中选出的簇头不止一个,则优先选择剩余能量大的节点当选簇头。
3 数据传输阶段
无线传感网络中簇头节点与基站,簇内成员节点与簇头节点都是通过单跳方式进行数据传输的,长距离的数据传输会造成能量的过早耗尽,UCOA分簇算法中簇头采用单跳与多跳相结合的数据传输方式进行网络通信。文献[15]分析了单跳路由和多跳路由的能量消耗关系,它将无线传感网络简化为一个简单的线性网络,在线性网络中各节点的距离相等,两点之间的距离为s。当一个节点与汇聚节点距离为ns,这个节点发送kbit数据到汇聚节点时,根据(1)式可以算出直接通信Edirect的值,即
Edirect=ETX(a,d=ns)=
aEelec+k1a(ns)2=
a(Eelec+k1n2s2)
(13)
而在多跳路由中,若每个节点把数据先传送给离自己最近的节点最后到达汇聚节点,则离汇聚节点距离为ns的节点传送abit数据到汇聚节点的过程中需要有n次的数据发送和n-1次的数据接收,根据(1)式、(2)式可以得到多跳通信的能量消耗EMTE为:
EMTE=nETX(a,d=s)+(n-1)ERX(a)=
n(aEelec+k1as2)+a(n-1)Eelec=
a(2n-1)Eelec+k1ns2
(14)