本科毕业设计 - 无线传感器网络分簇算法研究

更新时间:2023-10-17 02:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科生毕业论文(设计)

装 订

题目:无线传感器网络分簇算法研究

系 部 计算机科学与技术 学科门类 工 科 专 业 计算机科学与技术 学 号 0810110013 姓 名 梁 勇 指导教师 季龙、程敏

2012 年 5 月 15 日

合肥师范学院2012届本科生毕业论文(设计)

无线传感器网络分簇算法研究

摘 要

无线传感器网络是大量传感器节点以自组织和多跳的方式构成的无线网络。传感器节点一般都被安置在野外甚至是人们无法到达的地方,只能靠自带的电池供电,网络节点的能量极其有限,因此所有的信息处理策略都必须考虑到尽可能地降低节点能耗。分簇算法是将无线传感器网络分成若干个簇,每个簇选出一个簇头,簇头作为本地基站将簇内节点传给它的数据进行融合后再传给基站,因而大大降低了节点消耗的能量,延长了网络寿命。

本文阐述典型的无线传感器网络,着重对LEACH算法进行分析。在windows系统中搭建NS2无线传感器网络模拟平台,并对LEACH算法进行仿真模拟,观察此算法的运行过程,分析LEACH算法的优缺点,论证了LEACH算法的可行性与高效性。

关键词:无线传感器网络 LEACH算法 NS2 分簇

合肥师范学院2012届本科生毕业论文(设计)

ABSTRACT

The wireless sensor network consists of a large number of sensor nodes in the way of self-organizing and multi-hop. Sensor nodes are generally placed in the wild, or even in the place where people cannot reach. It can only rely on the built-in battery-powered. Network node energy is extremely limited, so all of the information processing strategies must take reducing node power consumption into account as much as possible. Clustering algorithm is to divide wireless sensor network into several clusters, then elect a cluster head from each cluster. The cluster head functions as a local base station, integrating the data which the cluster node has passed to it and then pass the result to the base station. Thus, the node energy consumption is reduced greatly, this can help to prolong the lifetime of the network.

This paper elaborates a typical wireless sensor network, it focuses on analyzing the LEACH algorithm. Setting up a NS2 wireless sensor network simulation platform in the windows system and doing the LEACH algorithm simulation to observe the running of this algorithm; besides, analyzing the advantages and disadvantages of LEACH algorithm and demonstrating the feasibility and efficiency of the LEACH algorithm.

Key words: wireless sensor networks LEACH algorithm NS2 clustering

合肥师范学院2012届本科生毕业论文(设计)

目 录

第1章 绪论 ............................................................................... 1

1.1 课题研究背景与意义 ............................................................. 1 1.2 国内外研究现状 ..................................................................... 1 1.3 本文研究内容 ......................................................................... 2 1.4 本文组织结构 ......................................................................... 2

第2章 无线传感器网络概述 ................................................... 3

2.1 无线传感器网络基本概念 ..................................................... 3

2.1.1 无线传感器网络体系结构 ............................................ 3 2.1.2 传感器网络的特征 ........................................................ 3 2.2 无线传感器网络的应用 ......................................................... 3 2.3 无线传感器的关键技术 ......................................................... 4

第3章 无线传感器网络拓扑控制........................................... 6

3.1 拓扑控制概述 ......................................................................... 6 3.2 功率控制 ................................................................................. 7

3.2.1 概述 ................................................................................ 7 3.2.2 基于节点度的算法 ........................................................ 7 3.2.3 基于邻近图的算法 ........................................................ 8 3.3 层次型拓扑结构控制 ........................................................... 10

3.3.1 LEACH算法 ................................................................ 10 3.3.2 GAF算法 ...................................................................... 10

合肥师范学院2012届本科生毕业论文(设计)

第4章 LEACH算法协议 ...................................................... 12

4.1 LEACH算法原理 ................................................................. 12 4.2 LEACH算法的分析与实现 ................................................. 12 4.3 LEACH算法的特点 ............................................................. 13 4.4 算法中存在的问题分析及改进 ........................................... 13

4.4.1 算法中的问题 .............................................................. 13 4.4.2 LEACH算法的改进 .................................................... 13

第5章 LEACH算法仿真 ...................................................... 16

5.1 NS2仿真软件 ........................................................................ 16

5.1.1 NS2仿真软件概述 ....................................................... 16 5.1.2 NS2扩展功能 ............................................................... 17 5.1.3 NS2软件构成 ............................................................... 17 5.1.4 使用方法 ...................................................................... 18 5.2 LEACH算法仿真 ................................................................. 19

5.2.1 LEACH算法实现 ........................................................ 19 5.2.2 核心代码分析 .............................................................. 25 5.2.3 NSG2可视化工具介绍 ................................................ 30 5.2.4 LEACH算法仿真结果分析 ........................................ 31

第6章 结论 ............................................................................. 34 致 谢 ......................................................................................... 35 参考文献 ..................................................................................... 36 附 录 ......................................................................................... 37

合肥师范学院2012届本科生毕业论文(设计)

法把监测区域划分成虚拟单元格,将节点按照位置信息划入相应的单元格;在每个单元格中定期选举产生一个簇头节点,只有簇头节点保持活动,其他节点进入休眠状态。GAF是ad hoc网络中提出的一种路由算法,将其引入传感器网络,是因为它的虚拟单元格思想为分簇机制提供了新思路。

GAF算法的执行过程包括两个阶段。第一阶段是虚拟单元格的划分。根据节点的位置信息和通信半径,将网络区域划分成若干虚拟单元格,保证相邻单元格中的任意两个节点都能够直接通信。假设节点已知整个检测区域的位置信息和本身的位置信息,节点可以通过计算得知自己属于哪个单元格。假设所有节点的通信半径为R,网络区域划分为边长为r的正方形虚拟单元格,为了保证相邻两个单元格内的任意两个节点能够直接通信,需要满足如下关系式:

r2?(2r)*2?R2?r?R5 (3-2)

所以从分组转发的角度来看,属于同一单元格的节点可以认为是等价的,每个单元格只需要选出一个节点保持活动状态。

GAF算法的第二阶段是虚拟单元格中簇头节点的选择。节点周期性地进入睡眠和工作状态,从睡眠状态唤醒之后与本单元内其他节点交换信息,以确定自己是否需要成为簇头节点。每个节点可以处于发现、活动以及睡眠三种状态,如图所示:

图3-3 GAF算法状态转换图

11

合肥师范学院2012届本科生毕业论文(设计)

第4章 LEACH算法协议

4.1 LEACH算法原理

LEACH来源于Wendi Rabiner Heinzelman, Anantha Chandrakasan, 和Hari Balakrishnan三人在2000年Proceedings of the 33rd Hawaii International Conference on System Sciences上的一篇文章Energy-Efficient Communication Protocol forWireless Microsensor Networks。 LEACH全称是“低功耗自适应集簇分层型协议” (Low Energy Adaptive Clustering Hierarchy)。

该算法基本思想是:以循环的方式随机选择簇头节点,将整个网络的能量负载平均分配到每个传感器节点中,从而达到降低网络能源消耗、提高网络整体生存时间的目的。仿真表明,与一般的平面多跳路由协议和静态分层算法相比,LEACH可以将网络生命周期延长15%。

4.2 LEACH算法的分析与实现

LEACH在运行过程中不断的循环执行簇的重构过程,每个簇重构过程可以用回合的概念来描述。每个回合可以分成两个阶段:簇的建立阶段和传输数据的稳定阶段。为了节省资源开销,稳定阶段的持续时间要大于建立阶段的持续时间。簇的建立过程可分成4个阶段:簇头节点的选择、簇头节点的广播、簇头节点的建立和调度机制的生成。

簇头节点的选择依据网络中所需要的簇头节点总数和迄今为止每个节点已成为簇头节点的次数来决定。具体的选择办法是:每个传感器节点随机选择0-1之间的一个值。如果选定的值小于某一个阀值,那么这个节点成为簇头节点。

选定簇头节点后,通过广播告知整个网络。网络中的其他节点根据接收信息的信号强度决定从属的簇,并通知相应的簇头节点,完成簇的建立。最后,簇头节点采用TDMA方式为簇中每个节点分配向其传递数据的时间点。

稳定阶段中,传感器节点将采集的数据传送到簇头节点。簇头节点对簇中所有节点所采集的数据进行信息融合后再传送给汇聚节点,这是一种叫少通信业务量的合理工作模型。稳定阶段持续一段时间后,网络重新进入簇的建立阶段,进行下一回合的簇重构,不断循环,每个簇采用不同的CDMA代码进行通信来减少其他簇内节点的干扰。

其中阀值,T(n)按照下列公式计算:

p??1?p(n)??1?p(rmod)p??0?n?G (4-1)

othersise式中:P为节点成为簇头节点的百分数,r为当前轮数,G为在最近的1/p轮中未当选簇头的节点集合。簇头节点选定后,广播自己成为簇头的消息,节点根据接收到的消息的强度决定加入哪个簇,并告知相应的簇头,完成簇的建立过程。然后,簇头节点采用TDMA

12

合肥师范学院2012届本科生毕业论文(设计)

的方式,为簇内成员分配传送数据的时隙。

在稳定阶段,传感器节点将采集的数据传送到簇头节点。簇头节点对采集的数据进行数据融合后再将信息传送给汇聚节点,汇聚节点将数据传送给监控中心来进行数据的处理。稳定阶段持续一段时间后,网络重新进入簇的建立阶段,进行下一轮的簇重建,不断循环。

4.3 LEACH算法的特点

(1)为了减少传送到汇聚节点的信息数量,簇首节点负责融合来自蔟内不同源节点所产生的数据,并将融合后的数据发送到汇聚点。

(2)LEACH采用基于TDMA/CDMA的MAC层机制来减少蔟内和蔟间的冲突。 (3)由于数据采集是集中的和周期性的,因此该协议非常适合于要求连续监控的应用系统。

(4)对于终端使用者来说,由于它并不需要立即得到所有的数据,因此协议不需要周期性的传输数据,这样可以达到限制传感器节点能量消耗的目的。

(5)在给定的时间间隔后,协议重新选举簇首节点,以保证无线传感器网络获取同意的能量分布[11]。

4.4 算法中存在的问题分析及改进 4.4.1 算法中的问题

(1)刚开始假设每个节点能量相同,在现实环境中很难做到;

(2)每个节点成为簇首节点的概率相同,这样可能导致一些高能量节点没机会成为簇首节点,而一些低能量节点成为簇首节点。一旦这些低能量节点成为簇首节点,将会很快耗尽其能量;

(3)LEACH协议不能保证簇头在每个区域都分布均匀,虽然统计上面是均匀的,但是由于簇头产生带有极大的随机性,有些区域可能簇头数会较多;

(4)簇首节点在通信过程中采用单跳与基站通信,这样就会导致较远的簇首节点能量消耗过大,而过早死亡,影响整个网络的性能;

(5)整个网络节点在两跳范围内,这样不符合大规模网络需求[12]。

4.4.2 LEACH算法的改进

(1)根据节点初始能量不同改进:根据整个网络中节点能量的初始不同,Georgios Smaragdakis等人提出了一种改进行分簇算法——SEP算法(a Stable Election Proto-col for clustered heterogeneous),先把整个网络分成两类节点,能量较高的节点称为高能量节点,能量低的称为正常节点。可以看出,高能量节点成为簇首节点的机会大于低能量节点。相对于LEACH算法,充分利用了整个网络的功耗。为整个网络簇首节点的概率,Pnrm为正常节点成为簇首节点的概率,Padv为高能量节点成为簇首节点的概率。r为当前循环次数,

13

合肥师范学院2012届本科生毕业论文(设计)

G1是在前1/p轮中正常节点未充当过簇头节点的集合。G2是在前1/p轮中高能量节点未充当过簇头节点的集合。m为网络中高能量节点的比例。a为高能量节点高于正常节点能量部分。

在参考文献中,作者对SEp算法进行再次改进,利用整个网络节点的平均能量与节点当前能量的比值来限制节点成为簇首节点的概率,两类节点成为簇首节点概率如下式所示。

?PoptEi(r)??1?amE(r)pi??Popt(1?a)Ei(r) (4-2) ???1?amE(r)

可以看出进一步限制的低能量节点成为簇首节点的概率[13]。

(2)根据节点剩余能量的不同而改进:M.J.Handy等人提出了DCHS(Deterministic Clus-ter-Head Selection)算法,根据LEACH算法中的T(n)计算不足之处,对其进行改进,如下式所示。

T(n)?pEn_current1En_max (4-3) 1?p(rmod)p

式中En_current表示节点当前的能量,En_max表示节点初始的能量。

由改进后的算法可以看出,当前节点能量比较高的节点成为簇首节点的概率变大,从而降低了低能量节点成为簇首节点的概率,提高了整个网络的性能。然而根据上式可以看出,当整个网络运行到一定的时间后,大部分节点的能量都将剩余不多,相应的T(n)就会变小,那么整个网络中节点成为簇首的概率变小,从而影响到整个网络的性能。M.J.Handy等人对上式进一步改进,得到下式,从而有效解决了上式的不足之处:

T(n)?p11?p(rmod)p[En_currentEn_maxEn_current1?(rsdiv)(1?)] (4-4)

pEn_max

在上式中rs表示节点连续未当选过簇头的轮次。一旦节点当选为簇首节点,则rs置零。 (3)根据簇首节点随机分布不均而改进:LEACH-C算法是LEACH算法的集中式控制版本,采用模拟退火算法获得更优的簇头选举策略,克服了LEACH算法中每轮产生的簇头数与位置的随机性。

LEACH-C算法可以把每个节点的地理位置以及节点当前的能量报告给基站。基站把所有节点的能量取平均,当网络中某些节点的能量低于平均值时,将不能成为候选簇头节

14

合肥师范学院2012届本科生毕业论文(设计)

点,从而更加有效地解决了低能量节点成为簇头节点的概率。

(4)根据LEACH实时性不强而改进:根据LEACH算法实时性不强的问题,Manjeshwar A等人提出了TEEN算法,TEEN算法与LEACH算法较大的不同点是,在簇首节点的选举过程中,协议设置了两个阈值,分别为硬阈值、软阈值两个参数。硬阈值是被检测数据不能超过的数值,而且软阈值决定了被测数据的波动范围。只有当被监测数据超过硬阈值且被监测数据的变化幅度大于软阈值时,节点才会传送最新的监测数据,并设置为新的硬阈值。相对于LEACH算法,TEEN算法能够较大地减少节点之间数据传送的次数,从而有效减少了整个网络的功耗,延长了整个网络的寿命。APTEEN算法则结合了LEACH与TEEN两种算法,是一种主动型与响应型混合的数据传输模式。但网络中有突发事件时,数据传输模式将会采用与TEEN相同的模式(响应型模式),只不过AFTEEN算法多了一个计数器,节点每传送一次数据,对应的计数器将清零。当计数器的时间到达的时候,将采取主动发送这个数据,不再判断软、硬门限值[14]。

(5)根据网络节点分布密度不均而改进:在LEACH算法中并未考虑节点分布密度对网络的影响,在分布密度大的区域,相对簇首节点的负担也较重,能量也容易耗尽,因此应该增加该区域簇首节点的个数。参考文献中根据无线网络中周围节点存活个数不同,来改变该区域内节点成为簇首节点的概率。为了在节点密集区域增加簇头的个数,只需要增大对应节点成为簇头的概率,对于节点稀疏区域则降低其中节点成为簇头的概率即可。因此将簇头选举的阈值修改为:

?Neighbor(n)_alive?1pp?(1?)?Network_alive (4-5) T(n)??1?p(rmod1)?p?0?

上式中Neighbor(n)_alive与Network_alive分别表示表示节点n邻居集中以及整个网络中存活节点的数目,1/p表示平均每簇中节点的个数,从上式可以看出当节点周围存活个数大于平均值时,该区域节点成为簇首节点的概率将增大,反之则降低。

(6)根据大规模多跳网络而改进:根据LEACH算法跳距的局限性,在LEACH算法中,整个网络最大跳距为两跳,这样就会导致远离基站的簇首节点,能量消耗太大而过早死亡,影响到整个网络的性能,Siva D.Muruganathan等人提出了BCDCP多跳分簇算法,簇首节点的选择由基站来控制,基站首先将每个节点的当前能量取平均,只有大于平均值的节点才有机会成为簇首节点,这样就避开了低能量节点成为簇首节点的可能。当簇首节点与基站的距离超过一定时,不直接与基站通信,而是借助其他簇首节点转发到基站,选择其他簇首节点是采用的是最小生成树算法,这样就减轻了远离基站簇首节点的负担,也扩展了整个网络的规模。

15

合肥师范学院2012届本科生毕业论文(设计)

第5章 LEACH算法仿真

5.1 NS2仿真软件 5.1.1 NS2仿真软件概述

NS2是指 Network Simulator version 2,NS(Network Simulator) 是一种针对网络技术的、源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。

然而,对初学者来说,NS是非常难于掌握的,一般人从学习NS到上手至少需要半年多时间。原因是多方面的:一方面,NS内容庞杂,随软件所提供的手册更新不够快,初学者阅读起来非常困难;另一方面,使用NS还要掌握其它很多必备的相关知识以及相关工具,这会使初学者感到无从入手;有的使用者可能还不了解网络模拟的过程或是对NS软件的机制缺乏理解,这也影响了对NS的掌握。另外,不论在国外还是国内,还没有一本书能集中回答和解决这些问题,这也是NS难于被掌握的一个重要原因。

NS2使用C++和Otcl作为开发语言。NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。NS是用Otcl和C++编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++写出并编译的,这些对象通过映射对Otcl解释器可见。当仿真完成以后,NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用于下一步的分析处理,也可以使用NAM将整个仿真过程展示出来。从用户的角度来看,两种结构的类之间有一一对应的。用户通过解释器创立新的仿真对象之后,解释器对它进行初始化,与编译类结构中相应的对象建立映射[15]。

16

合肥师范学院2012届本科生毕业论文(设计)

图5-1 NS2软件组成

5.1.2 NS2扩展功能

NS是一个面向对象的模拟器,用C++编写,且前端使用OTCL 解释器。存在有两个类框架:

(1)C++类框架:文档中称为编译的类编译框架; (2)OTcl 类框架:文档中称为解释的类框架。

两个类彼此紧密相关。从用户的观点,在两类中是一一对应的关系。在解释类中的基本父类是TclObject,用户通过解释器来建立一个模拟对象;对象在解释器中创建并映射到编译类中去。通过在TclClass 中定义的方法建立了解释类的框架,在类TclObject 中定义的方法来映射用户的使用对象。

图5-2 NS2组建结构图

5.1.3 NS2软件构成

TclO bject在类层次结构中处于最高层, 所有其他主要的类都从它派生而来。它有一个静态链表记录了用户创建的所有对象,每一个对象都有一个唯一的标识,记录了每个对象所属的类名。使用这种公共基类的好处是各种对象可以存储在同一个链表中。使用对象的函数知道如何处理对象和简单地进行强制类型转换以满足自己的需要。

(1)调度器(Scheduler)

调度器是仿真器的心脏,它记录当前时间,调度网络事件链表中的事件。它有一个静态成员变量instance_ ,供所有的类访问同一个调度器。提供函数产生新事件,指定事件发生的时间。

17

合肥师范学院2012届本科生毕业论文(设计)

(2)事件和TCP分组(Even t & TCP Packet)

事件表示仿真器产生的实际事件,包括事件产生的时间,处理事件的事件处理器。派生了两个类: Packet和A tHandler。使用这种方法的好处是无论哪个处理器要处理事件,都可以把事件的类型转换成它所需要的,然后相应地处理。

(3)事件处理器(Handler)

Handler是所有处理事件类的基类,它只是一个虚拟函数,每个继承类实现自己的功能。 (4)匹配器类(Matcher)

匹配器类用来标识有实例对象生成的类,用户给出标识匹配类的关键字,匹配类返回相应的新建对象。匹配器类被定义成静态的,只允许一个实例对象。

(5)变量(Var)

用来存放系统变量和缺省变量。每当新建对象后,通过搜索适当的变量和类名可以得到参数的缺省值。

(6)NS对象(NsObject)

N so bject是所有网络实体的基类,包括节点、链路、代理,业务记录(T race)和数据源等。节点、链路、代理同时继承了N sO bject和事件处理器类,因为这三种对象要处理多种事件,其他对象则不需要。

(7)节点(Node)

节点类表示网络中实际的节点和路由器。它有一个静态变量cnt_ 用来记录当前网络中节点总数。多个业务源可以连接到一个节点的不同端口,但一个节点的端口数是有限制的。节点有一个路由表,路由算法,基于目的地址转发数据包,节点本身并不产生分组,而是由代理来产生和消费分组。

(8)代理(Agent)

代理是实际产生和消费分组的对象,它们属于传输层实体,运行在端主机(模拟),节点的每一个代理自动被赋与一个唯一的端口号(模拟tcp/udp端口),代理知道与它相连的节点,以便把分组转发给节点,它也知道分组大小,业务类型,目的地址。A gent类是各种TCP实现类的基类,如Reno,N ew reno,sack1及TCP吸收端(sink s) ,如elACKSink,SACK1TCPSink,SACK1DelACKTcpSink。代理被保存在一个称为demux_ 的链表中。

(9)链路(Link)

链路用来连接节点和路由器。一个节点可以有一条或多条输出链路(如路由器)。所有的链路都以队列的形式来管理分组到达、离开或丢弃,统计并保存字节数和分组数。另外还有一个独立的对象来记录(T racing) 队列日志。

5.1.4 使用方法

使用NS进行网络仿真的方法和一般过程。进行网络仿真前,首先分析仿真涉及哪个层次,NS仿真分两个层次:一个是基于OTcl编程的层次。利用NS已有的网络元素实现仿真,无需修改NS本身,只需编写OTcl脚本。另一个是基于C++和OTcl编程的层次。

18

合肥师范学院2012届本科生毕业论文(设计)

如果NS中没有所需的网络元素,则需要对NS进行扩展,添加所需网络元素,即添加新的C++和OTcl类,编写新的OTcl脚本。假设用户已经完成了对NS的扩展,或者NS所包含的构件已经满足了要求,那么进行一次仿真的步骤大致如下:

(1)开始编写OTcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等;

(2)建立协议代理,包括端设备的协议绑定和通信业务量模型的建立; (3)配置业务量模型的参数,从而确定网络上的业务量分布;

(4)设置Trace对象。NS通过Trace文件来保存整个模拟过程。仿真完后,用户可以对Trace文件进行分析研究;

(5)编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成; (6)用NS解释执行刚才编写的OTcl脚本; (7)对Trace文件进行分析,得出有用的数据;

(8)调整配置拓扑结构和业务量模型,重新进行上述模拟过程;

NS2采用两级体系结构,为了提高代码的执行效率,NS2 将数据操作与控制部分的实现相分离,事件调度器和大部分基本的网络组件对象后台使用C++实现和编译,称为编译层,主要功能是实现对数据包的处理;NS2的前端是一个OTcl 解释器,称为解释层,主要功能是对模拟环境的配置、建立。从用户角度看,NS2 是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的OTcl脚本解释器。NS2中编译类对象通过OTcl连接建立了与之对应的解释类对象,这样用户间能够方便地对C++对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。

5.2 LEACH算法仿真 5.2.1 LEACH算法实现

①安装cygwin

19

合肥师范学院2012届本科生毕业论文(设计)

图5-3 NS2安装欢迎界面

在Root Directory中,可以选择安装的目录,不过在这里建议大家使用内定的路径 c:\\cygwin。

其它另外两个选项也使用内定值即可。按“下一步”。

图5-4 NS2安装路径选择界面

按“下一步”。

20

合肥师范学院2012届本科生毕业论文(设计)

图5-5 NS2插件安装选择界面

选择要安装的软件套件。在这边可以先点选View,使得旁边的Category变成Full,这样就可以对于细部的选项做选择。

图5-6 NS2插件安装选择

要选择的有XFree86-base、 XFree86-bin、XFree86-prog、XFree86-lib、XFree86-etc、make、patch、perl、gcc、gcc-g++、gawk、gnuplot、tar和gzip。

21

合肥师范学院2012届本科生毕业论文(设计)

图5-7 插件安装效果图

按“下一步”。开始下载并安装。

图5-8 安装完成界面

完成后,会询问使用者是否想要产生小图示于桌面和开始选单。按完成以结束安装程序。若是还有需要安装其它的软件套件需要安装,可以重新执行setup安装即可。

②安装ns2

点选桌面上的cygwin小图示。

22

合肥师范学院2012届本科生毕业论文(设计)

图5-9 生成家目录

第一次执行的时候,会根据目前计算机的使用者和计算机的名称等信息,在 cygwin的home的目录下产一个使用者的数据夹,并放入环境变量设定等相关档案(.bashrc、.bashrc_profile和.inputrc)。使用tar xvfz ns-allinone-2.29.tar.gz解开所下载的压缩档。进入ns-allinone-2.29的目录,并开始安装ns2。

图5-10 开始安装

在安装的过程中,由于我们没有安装diff,所以安装程序会问使用者要不要继续,选择y继续安装。

23

合肥师范学院2012届本科生毕业论文(设计)

图5-11 安装过程界面

在安装的过程中,需要花一些时间,所以请使用者耐心的等待安装完成。

图5-12 安装成功

完成ns2的编译后,要开始设定环境变量。

请编辑家目录下的.bashrc,把ns2相关的路径加入PATH中。 export NS_HOME=`pwd`/ns-allinone-2.29 export

PATH=$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$NS_HOME/bin:$PATH

export

LD_LIBRARY_PATH=$NS_HOME/tcl8.4.5/unix:$NS_HOME/tk8.4.5/unix:$NS_HOME/otcl-1.8:$NS_HOME/lib:$LD_LIBRARY_PATH

export TCL_LIBRARY=$NS_HOME/tcl8.4.5/library

24

合肥师范学院2012届本科生毕业论文(设计)

③配置LEACH协议

首先我们先找个目录把mit.tar.gz文件解压开来,使的gunzip mit.tar.gz和tar –xvf mit.tar解压,但是不直接解压到目录/ns-allinone-2.29/ns-2.29下。将解压出来的文件A一一的对应我们/ns-allinone-2.29/ns-2.29目录下的文件B进行修改,将A中与B内容不同的地方,添加进B去,切记,不是完全复制,是添加进去,而B中多出来的内容,也许是你以前添加进去的协议,不要删掉。注意一点,添加的过程中,声明变量的地方,有时会是两种声明方式,其中一种被注释掉了,这时,如果需要更改声明另一种方式时,一定要把第一种注释掉,避免重复声明的错误产生。强调一点,mac/channel.cc文件中: distCST_ = TwoRayGetDist(wifp->getCSThresh(), wifp->getPt(), 1.0, 1.0, highestZ , highestZ);改成distCST_ = wifp->getDist(wifp->getCSThresh(), wifp->getPt(), 1.0, 1.0,highestZ , highestZ, wifp->getL(),wifp->getLambda());(注:2.29里面的channel.cc不用修改)。mac/wireless-phy.cc文件中的(node*)改成(MobileNode*)(注:2.29里面的channel.cc不用修改) 。修改MakeFile文件,按照下面三步来进行:

(1)将DMIT_uAMPS添加到DEFINE行的最后,即为 DEFINE

= -DTCP_DELAY_BIND_ALL …… -Drng_test -DMIT_uAMPS

(2)将I./mit/rca I./mit/uAMPS 添加到 INCLUDE列的后面,即为 : INCLUDES = \\ ……

-I./diffusion3/lib/main -I./diffusion3/lib \\ -I./diffusion3/lib/nr -I./diffusion3/ns \\ -I./diffusion3/filter_core -I./asim/ -I./qs \\ -I./mit/rca -I./mit/uAMPS \\

…… 将代码

mit/rca/energy.o mit/rca/rcagent.o \\ mit/rca/rca-ll.o mit/rca/resource.o \\

mac/mac-sensor-timers.o mac/mac-sensor.o mit/uAMPS/bsagent.o \\ 添加到代码gaf/gaf.o \\之前

将MakeFile文件中的mit/mit.o mit/mit注销掉。

这样,文件我们就都修改完了,下面就是编译了,即需要make了。进入到/ns-allinone-2.29/ns-2.29目录下,输入make clean。如果没有出错,输入make,这时就需要很长时间的等待了。如果你改的文件是makefile.in,那么应该有提示说你的makefile.in文件比make文件新,需要重新configure,这时输入./configure即可。

5.2.2 核心代码分析

NS2软件可以对.tcl文件进行编译,生成.nam文件,NS2的图形仿真器便可执行所生

25

合肥师范学院2012届本科生毕业论文(设计)

ApplicationCBR, FTP ...ApplicationAgentTCP, UDP ...AgentNodeLinkComplex, DuplexNode 图5-14 NSG2模块图

5.2.4 LEACH算法仿真结果分析

为了充分观察LEACH协议运行过程的特点,本次设计设定了100个节点,每个节点向相邻节点发送数据的时候,我们可以清楚地从图形化仿真软件中观察到,包括数据的大小、发送时间等。下图是各个节点初试时候的位置:

图5-15 初试时候节点分布图

从图中我们可以看到,总共有100个节点随机分布。

当仿真开始的时候,各个节点安装LEACH协议开始运行,发送数据:

31

合肥师范学院2012届本科生毕业论文(设计)

图5-16仿真过程中节点工作图

通过仿真软件,我们可以很直观地看出数据传送的整个过程。同时,系统会在ns-allinone-2.29\\ns-2.29\\mit\\leach_sim路径下记录各个节点的运行情况,LEACH协议的仿真运行过程会在leach.err和leach.out文件中有详细的记录。leach.err文件记录的是仿真过程的错误信息和提示;leach.out文件记录了数据的收发、簇首的变化以及节点能量消耗等信息。

图5-17 leach.err文件

从leach.err文件中,我们可以看出仿真过程没有错误,正在顺利执行。

图5-18 leach.out文件

32

合肥师范学院2012届本科生毕业论文(设计)

对leach.out文件中节点能量损耗的分析,我们可以看出,与一般的平面多跳路由协议和静态分层算法相比,LEACH协议可以将网络生命周期延长15%。如下图,表示节点能量随时间推移而产生的变化,绿色曲线代表没有使用LEACH协议的节点的能量随时间变化而变化的关系,红色曲线代表使用了LEACH协议的节点的能量随时间变化而变化的关系:

图5-19 使用了LEACH协议和没有使用LEACH协议的节点能量随时间的变化图

从上图中我们可以很容易地看到LEACH协议能够很好地达到节约节点能量的目的。

33

合肥师范学院2012届本科生毕业论文(设计)

第6章 结论

无线传感器网络是大量静止或移动的传感器以自组织和多跳的方式构成的无线网络,其目的是协作地感知、采集、处理和传输网络覆盖地区内感知对象的检测信息并报告给用户。传感器网络节点的能量极其有限,所有的信息处理策略都必须考虑到尽可能地降低节点能耗,以便延长网络和整个系统的寿命。将传感器节点组织成簇的形式能有效减少网络的能量消耗,许多能量有效的路由协议都是在簇结构的基础上进行设计的。LEACH算法就是其中一例,为了提高整个网络的的生存时间,将功耗均衡的分配到网络中的每个节点,麻省理工学院的Wendi Rabiner Heinzelman等人提出了一种低功耗的自适应路由协议——LEACH协议(Low-Energy Adaptive ClusteriingHierarchy)。该算法基本思想是:以循环的方式随机选择簇头节点,将整个网络的能量负载平均分配到每个传感器节点中,从而达到降低网络能源消耗、提高网络整体生存时间的目的。仿真表明,与一般的平面多跳路由协议和静态分层算法相比,LEACH可以将网络生命周期延长15%。

本次设计是在NS2平台上构造LEACH协议,运用图形化的方式演示算法的运行过程,对得出的数据进行采集和分析,计算该算法对延长网络生命周期产生了怎样的影响。本设计主要研究一下几个方面:

(1)功率控制对网络能量有效性的影响; (2)功率控制对网络连通性和拓扑结构的影响; (3)功率控制对网络平均竞争强度的影响; (4)功率控制对网络容量的影响; (5)功率控制对网络实时性的影响 ;

通过对仿真结果的分析,能清晰地看出LEACH算法对延长网络生命周期产生了积极作用。

34

合肥师范学院2012届本科生毕业论文(设计)

致 谢

非常感谢程敏老师、季龙老师在我大学的最后阶段——毕业设计阶段给我的指导,从最初的设计论述、资料的收集到写作、修改再到最后的定稿,他们给了我耐心的指导和无私的帮助。为了指导我们的毕业论文,他们放弃了自己的休息时间,他们这种无私奉献的敬业精神令人钦佩。

向在这四年中给予了我帮助和指导的所有老师表示由衷的谢意,感谢各位任课老师认真负责的教导,在他们的悉心帮助和支持下,我能够很好的掌握和运用专业知识,并在论文中得以体现,顺利完成毕业论文。同时,在论文写作过程中,我还参考了有关书籍和论文,在这里一并向有关作者表示谢意。

光阴似箭,四年的时间在我的漫长人生旅途中是多么的短暂,但是这短短的四年是最真诚的青春、是最纯真的岁月、是最美丽的大学生活。离开母校后,我将铭记我的母校——合肥师范学院,感谢学校领导和各位老师,在他们的辛勤培养下,我得以迅速成长。

35

本文来源:https://www.bwwdw.com/article/kf2f.html

Top