矩阵实验室精英联盟吧 关注:340贴子:2,773
  • 2回复贴,共1

20140619-09_[wsn]算法仿真代做分簇

只看楼主收藏回复

我对一个经典的分簇算法leach进行了改进,提出了自己的一个算法。你们要的工作是仿真证明我的算法比那个优秀。具体算法过程为(很简单):LEACH协议算法描述簇的建立过程可分成4个阶段:簇头节点的选择、簇头节点的广播、簇成员节点的建立和调度机制的生成。
1.簇头结点的选择:簇头节点的选择依据网络中所需要的簇头节点总数和迄今为止每个节点已成为簇头节点的次数来决定。具体的选择办法是:每个传感器节点随机选择0-1之间的一个值。如果选定的值小于某一个阀值T(n),那么这个节点n就成为簇头节点。阈值T(n)计算如下


我的算法流程
本算法以轮数r为单位执行,每轮包括簇建立阶段和簇稳定阶段。在簇建立阶段,为了尽最大可能的延长簇头的生命周期,同时使得簇头的选举更加合理化,保证当选的簇头更适合承担数据融合以及数据转发任务。本算法在选择簇头时综合考虑了节点的剩余能量、节点度以及节点间相对的距离等因素。同时根据节点的剩余能量和能量参数在本簇内进行簇头调整和轮换,提高剩余能量较大的节点成为簇头节点的概率,更好的平衡网络中各节点的能耗。簇拓扑构建完成后,在簇稳定阶段构建簇头节点的路由树完成数据转发,多跳传输最终将数据送到基站。

其中,Dn表示节点的节点度D(n)与理想节点度之差,节点n计算式其到所有邻居的距离总和Pn,除以节点数,求出其到所有邻居节点的平均距离Ad,E是节点最初能量与消耗能量的差
公式(3.5)意味着与越接近理想节点度、距离邻居节点的平均距离越小、消耗能量越小的节点有更大的可能性担任簇头节点。也就是Wch值越小,节点越适合充当簇头节点。
根据实际的网络应用和簇头节点的实际情况,可以将α,β和γ调整到最优值来延长簇头寿命,实现簇头生命周期和网络寿命的最大化。
2. 簇头调整和轮换
在LEACH算法中,每一轮簇头选举后都要在全网范围内进行广播,在全网范围内进行分簇,而且原有簇头消亡时网络就要重建,这势必会产生更多的能量消耗,而且会影响网络的稳定性。因此,本文提出的改进算法,在初始阶段将簇分好后,便不在全网范围内进行分簇,只是在原有簇内进行簇头的更新或者局部调整。这样既能保证减少网络能耗,又能充分调动簇内节点均衡能耗

当通过公式3.5确立簇头之后,会在对簇头节点进行一次审定,主要对其能量因素做出考察,比较簇头节点的x值与Φ,若簇头节点的x值大于等于Φ值,则无需进行调整;若簇头节点的x值小于能量参数Φ,说明簇头节点能量水平较低,不及簇内节点的平均能量水平,我们认为其不再适合担任簇头。依次下去,直到找到一个具有较小的值,同时其x值也满足x大于等于Φ值的节点,则用该节点替换当前簇头,则完成一个簇头的调整和轮换过程。
3. 成簇阶段
首轮担任簇头的节点由自身节点度与理想节点度之差及邻节点平均距离确定。被选为簇头的节点向全网发送广播簇头消息来宣布自己成为一个簇头。每个普通节点根据收到广播信号的强弱
选择要加入的簇并发送加入消息给所在簇的簇头,该消息包括该节点的id和其剩余能量。根据收到的所有的加入消息,每个簇头创建一个调度表,该调度表包括发送给其他成员信息的调度消息,此消息将告诉每个簇成员何时将收集的数据传送给簇头,在其他时间里该簇成员就可以进入休眠阶段来节省能量。
我希望能够得到两个图,一个是关于时间和剩余节点的图,证明我的比leach相同时间死亡的少,第二个消耗的能量的图,证明我的比leach消耗能量少,只要能做仿真正确就可以了。时间2周。


1楼2014-06-19 18:28回复
    请问楼主做出来吗?这是leach-m啊,求一份代码


    IP属地:四川来自Android客户端2楼2020-04-05 22:15
    回复
      同问楼主做出来了么


      来自iPhone客户端3楼2021-01-10 16:40
      回复