文档库 最新最全的文档下载
当前位置:文档库 › LEACH与LEACH-C、LEACH-E、LEACH-ED的仿真与比较

LEACH与LEACH-C、LEACH-E、LEACH-ED的仿真与比较

LEACH与LEACH-C、LEACH-E、LEACH-ED的仿真与比较
LEACH与LEACH-C、LEACH-E、LEACH-ED的仿真与比较

AAC解码算法原理详解

AAC解码算法原理详解 原作者:龙帅 (loppp138@https://www.wendangku.net/doc/d59239550.html,) 此文章为便携式多媒体技术中心提供,未经站长授权,严禁转载,但欢迎链接到此地址。 本文详细介绍了符合ISO/IEC 13818-7(MPEG2 AAC audio codec) , ISO/IEC 14496-3(MPEG4 Audio Codec AAC Low Complexity)进行压缩的的AAC音频的解码算法。 1、程序系统结构 下面是AAC解码流程图: AAC解码流程图 在主控模块开始运行后,主控模块将AAC比特流的一部分放入输入缓冲区,通过查找同步字得到一帧的起始,找到后,根据ISO/IEC 13818-7所述的语法开始进行Noisless Decoding(无噪解码),无噪解码实际上就是哈夫曼解码,通过反量化(Dequantize)、联合立体声(Joint Stereo),知觉噪声替换(PNS),瞬时噪声整形(TNS),反离散余弦变换(IMDCT),频段复制(SBR)这几个模块之后,得出左右声道的PCM码流,再由主控模块将其放入输出缓冲区输出到声音播放设备。

2. 主控模块 主控模块的主要任务是操作输入输出缓冲区,调用其它各模块协同工作。其中,输入输出缓冲区均由DSP控制模块提供接口。输出缓冲区中将存放的数据为解码出来的PCM数据,代表了声音的振幅。它由一块固定长度的缓冲区构成,通过调用DSP控制模块的接口函数,得到头指针,在完成输出缓冲区的填充后,调用中断处理输出至I2S接口所连接的音频ADC芯片(立体声音频DAC和DirectDrive 耳机放大器)输出模拟声音。 3. 同步及元素解码 同步及元素解码模块主要用于找出格式信息,并进行头信息解码,以及对元素信息进行解码。这些解码的结果用于后续的无噪解码和尺度因子解码模块。 AAC的音频文件格式有以下两种: ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。 ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于mp3数据流格式。 AAC的ADIF格式见下图: 3.1 ADIF的组织结构 AAC的ADTS的一般格式见下图: 3.2 ADTS的组织结构 图中表示出了ADTS一帧的简明结构,其两边的空白矩形表示一帧前后的数据。ADIF和ADTS的header是不同的。它们分别如下所示:

LEACH算法仿真结果

仿真一:在100*100的区域内随机生成100个节点 (matlab仿真代码: clear; xm=100;%x轴范围 ym=100;%y轴范围 sink.x=0.5*xm;%基站x轴 50 sink.y=0.5*ym;%基站y轴 50 n=100; E0=0.02; for i=1:1:n S(i).xd=rand(1,1)*xm; S(i).yd=rand(1,1)*ym; S(i).G=0;%每一周期结束此变量为0 S(i).E=E0;%设置初始能量为E0 S(i).type='N';%节点类型为普通 plot(S(i).xd,S(i).yd,'o'); hold on; end %设置SINK节点的坐标 S(n+1).xd=sink.x; S(n+1).yd=sink.y; plot(S(n+1).xd,S(n+1).yd,'*');%绘制基站节点仿真结果图片:(‘O’代表随机散布的节点,‘*’代表SINK节点)

仿真二:LEACH 分簇效果图(matlab 代码见附件) 仿真结果:(p=0.1) 1、簇头个数14. 0102030405060708090100

2、簇头个数:11 3、簇头个数:12 0102030405060708090100 4、簇头个数:10

10 20 30 40 50 60 70 80 90 100 (p=0.05) 1、簇头=6 10 20 30 40 50 60 70 80 90 100 2、簇头=7

3、簇头=12 4、簇头=8

10 20 30 40 50 60 70 80 90 100 5 、 010203040 5060708090 100 102030405060708090100x y LEACH 分簇算法成簇效果图

Ns2.34上leach协议的完美移植

Ns2.34上leach协议的完美移植 经过几天的不断实验,以及网上各位前辈的帮助,终于成功将leach协议完美移植到ns2.34上,下面是我的安装笔记。 Step1 在ns-2.34的目录下新建一个leach文件夹,将leach.tar.gz放入这个文件夹 Step2 在终端中进入这个目录下,键入tar zxf leach.tar.gz Step3 ①将leach/mit整个目录复制到ns-allinone-2.34/ns-2.34中 ②将leach/mac目录下的https://www.wendangku.net/doc/d59239550.html,, mac-sensor.h, https://www.wendangku.net/doc/d59239550.html,, mac-sensor-timers.h四个文件复制到ns-allinone-2.34/ns-2.34/mac中 ③将leach/tcl/mobility目录下的四个文件复制到ns-allinone-2.34/ns-2.34/tcl/mobility中 ④将ns-allinone-2.34/ns-2.34/tcl/ex目录下的wireless.tcl重命名为wireless_1.tcl,再将leach/tcl/ex目录下的wireless.tcl复制到ns-allinone-2.34/ns-2.34/tcl/ex中⑤将leach目录下的test,leach_test,package_up三个文件复制到ns-allinone-2.34/ ns-2.34中 Step3 修改文件 ①需要修改的文件有: ns-allinone-2.34/ns-2.34/apps/https://www.wendangku.net/doc/d59239550.html,,app.h ns-allinone-2.34/ns-2.34/trace/https://www.wendangku.net/doc/d59239550.html,,cmu-trace.h ns-allinone-2.34/ns-2.34/common/https://www.wendangku.net/doc/d59239550.html,,https://www.wendangku.net/doc/d59239550.html,,packet.h ns-allinone-2.34/ns-2.34/mac/https://www.wendangku.net/doc/d59239550.html,,ll.h,https://www.wendangku.net/doc/d59239550.html,,https://www.wendangku.net/doc/d59239550.html,,phy.h,wireless-phy.c c,wireless-phy.h ②修改方法: 对于leach目录下相应的文件(即刚才未复制的文件),将代码中以“#ifdef MIT_uAMPS”开始,并以“#endif”结束的部分复制到以上文件对应的位置 这个过此要小心核对修改,否则前功尽弃 ③特殊情况 <1> ns-allinone-2.34/ns-2.34/common/packet.h中大约185行,根据其他变量的格式将代码更改为 #ifdef MIT_uAMPS static const packet_t PT_RCA = 61; #endif 并将最后一个枚举值改为62 这个过程可以随情况改变,还要注意的是packet.h文件并不是只改这一部分,前面的修改依然要。 <2> ns-allinone-2.34/ns-2.34/mac/wireless-phy.h,给类WirelessPhy添加public变量,大约105行 #ifdef MIT_uAMPS MobileNode * node_;

LEACH算法的学习摘要

LEACH算法的学习摘要 一、LEACH的定义 LEACH:低功耗自适应路由算法 二、LEACH算法的工作流程 1.总述 LEACH路由协议主要分为两个阶段:即簇建立阶段(setup phase)和稳定运行阶段(ready phase)。簇建立阶段和稳定运行阶段所持续的时间总和为一轮(round)。为减少协议开销,稳定运行阶段的持续时间要长于簇建立阶段。 2.簇建立阶段

在簇建立阶段,传感器节点随机生成一个0,1之间的随机数,并且与阈值T(n)做比较,如果小于该阈值,则该节点就会当选为簇头。T(n)按照下列公式计算: 式中:P为节点成为簇头节点的百分数,r为当前轮数,G为在最近的1/p 轮中未当选簇头的节点集合。簇头节点选定后,广播自己成为簇头的消息,节点根据接收到的消息的强度决定加入哪个簇,并告知相应的簇头,完成簇的建立过程。然后,簇头节点采用TDMA的方式,为簇内成员分配传送数据的时隙。 3.稳定阶段 在稳定阶段,传感器节点将采集的数据传送到簇头节点。簇头节点对采集的数据进行数据融合后再将信息传送给汇聚节点,汇聚节点将数据传送给监控中心来进行数据的处理。稳定阶段持续一段时间后,网络重新进入簇的建立阶段,进行下一轮的簇重建,不断循环。 三、LEACH算法的优点 1.LEACH算法属于分层路由协议,节点之间反应速度快,簇头进行轮转性选举,能够保证无线传感器网络中各个节点能量均衡的消耗,从而有效地延长无线传感网络的生命周期,低功耗的目的。 2.各个节点之间不再是无序的建立通信路由,数据信息的传递具有一定的规则,普通节点只能向上一级簇头传送数据信息,一级粗托只能向二级簇头传送数据信息。很大程度上节省了能量,减少了能量的浪费。 3.相近的节点之间接收到的数据信息有可能相同或相近,这就需要簇头进行必要的数据融合。更好的提升了能量的利用率。 4.每个簇头都要进行数据融合,因为每个簇头接收到的都是局部数据信息,所以数据信息都是比较相关,给数据的融合带来了较快的速度。 5.LEACH路由算法采用TDMA和CDMA的MAC层机制进行各个节点间的数据信息的传递,保证了簇内各个节点有序的跟簇头节点的传递数据,也保证了簇头Sink节点进行有序的信息传递,从而避免了簇内和簇间的相互通信冲突。 6.LEACH路由协议感应外界的环境信息,是周期性的进行检测,各个周期之间不间断地进行。LEACH协议非常适合长期、连续性的进行环境的检测。为野外长时间、不间断地检测提供了保证。 7.有些检测不需要随时获取检测的数据信息,只是当环境中有意外、异常情况发生时,才进行必要的检测盒数据信息的传递。这种不需要周期性的信息传递,减少了无线传感器网络的能量消耗,提高了网络的生命周期。 8.每进行完一轮数据信息的传送,网络进行重新的簇头选举,保证了各个节点之间能量的均衡消耗,提高了能量的利用率。 四、LEACH算法的缺点 1.LEACH路由协议算法中没有说明簇头节点如何进行选举分配,才能保证网络数

LEACH协议的算法结构及最新研究进展

LEACH协议的算法结构及最新研究进展 1 LEACH协议算法结构 LEACH这个协议的解释是:低功耗自适应集簇分层型协议。通过名字,我们就能想到这个协议的大概作用了。那么在这之中,我们先来研究一下它的算法。 该算法基本思想是:以循环的方式随机选择蔟首节点,将整个网络的能量负载平均分配到每个传感器节点中,从而达到降低网络能源消耗、提高网络整体生存时间的目的。仿真表明,与一般的平面多跳路由协议和静态分层算法相比,LEACH协议可以将网络生命周期延长15%。LEACH在运行过程中不断的循环执行蔟的重构过程,每个蔟重构过程可以用回合的概念来描述。每个回合可以分成两个阶段:蔟的建立阶段和传输数据的稳定阶段。为了节省资源开销,稳定阶段的持续时间要大于建立阶段的持续时间。蔟的建立过程可分成4个阶段:蔟首节点的选择、蔟首节点的广播、蔟首节点的建立和调度机制的生成。 蔟首节点的选择依据网络中所需要的蔟首节点总数和迄今为止每个节点已成为蔟首节点的次数来决定。具体的选择办法是:每个传感器节点随机选择0-1之间的一个值。如果选定的值小于某一个阀值,那么这个节点成为蔟首节点。 选定蔟首节点后,通过广播告知整个网络。网络中的其他节点根据接收信息的信号强度决定从属的蔟,并通知相应的蔟首节点,完成蔟的建立。最后,蔟首节点采用TDMA方式为蔟中每个节点分配向其传递数据的时间点。 稳定阶段中,传感器节点将采集的数据传送到蔟首节点。蔟首节点对蔟中所有节点所采集的数据进行信息融合后再传送给汇聚节点,这是一种叫少通信业务量的合理工作模型。稳定阶段持续一段时间后,网络重新进入蔟的建立阶段,进行下一回合的蔟重构,不断循环,每个蔟采用不同的CDMA代码进行通信来减少其他蔟内节点的干扰。 LEACH协议主要分为两个阶段:即簇建立阶段(setup phase)和稳定运行阶段(ready phase)。簇建立阶段和稳定运行阶段所持续的时间总和为一轮(round)。为减少协议开销,稳定运行阶段的持续时间要长于簇建立阶段。 在簇建立阶段,传感器节点随机生成一个0,1之间的随机数,并且与阈值T(n)做比较,如果小于该阈值,则该节点就会当选为簇头。在稳定阶段,传感器节点将采集的数据传送到簇首节点。簇首节点对采集的数据进行数据融合后再将信息传送给汇聚中心,汇聚中心将数据传送给监控中心来进行数据的处理。稳定阶段持续一段时间后,网络重新进行簇的建立阶段,进行下一轮的簇重建,不断循环。 2 LEACH协议的特点 1 为了减少传送到汇聚节点的信息数量,蔟首节点负责融合来自蔟内不同源节点所产生的数据,并将融合后的数据发送到汇聚点。 2 LEACH采用基于TDMA/CDMA的MAC层机制来减少蔟内和蔟间的冲突。 3 由于数据采集是集中的和周期性的,因此该协议非常适合于要求连续监控的应用系统。 4 对于终端使用者来说,由于它并不需要立即得到所有的数据,因此协议不需要周期性的传输数据,这样可以达到限制传感器节点能量消耗的目的。 5 在给定的时间间隔后,协议重新选举蔟首节点,以保证无线传感器网络获取同意的能量分布。

智能车PID 算法实现原理讲解

智能车P I D算法实现 原理讲解

为了实现PID控制所需要的等间隔采样,我们使用了一个定时中断,每2ms进行一次数据采样和PID计算。与此并行,系统中还设计了一个转速脉冲检测中断,从而实现了转速检测。为了调试的需要,程序中还在main{}函数中加入了相关的调试代码,这部分代码有最低的优先级,可以在保证不影响控制策略的情况下实现发送调试数据等功能。检测环节对整个控制系统的质量起到至关重要的作用 4.3.2 PID控制调整速度 本系统采用的是增量式数字PID控制,通过每一控制周期(10ms)读入脉冲数间接测得小车当前转速vi_FeedBack,将vi_FeedBack与模糊推理得到的小车期望速度vi_Ref比较,由以下公式求得速度偏差error1与速度偏差率d_error。 error1 = vi_Ref– vi_FeedBack; (公式3) d_error = error1 –vi_PreError; (公式4)公式4中, vi_PreError为上次的速度偏差。考虑到控制周期较长,假设按2.5m/s的平均速度计算,则一个控制周期小车大概可以跑过2.5cm,如果按这种周期用上述PID调节速度,则会导致加速减速均过长的后果,严重的影响小车的快速性和稳定性。为了解决这个问题,可以在PID调速控制中加入BANG-BANG控制思想:根据error1的大小,如果正大,则正转给全额占空比;如果负大,则自由停车或给一个反转占空比;否则就采用PID计算的占空比。

PID控制算法 为了使赛车平滑得保持在黑线中央,即使赛车的偏移量平滑地保持在0,实用了PID控制算法。 P为比例参数,D为微分参数。基准值为0,PID输入为水平偏移量X0,PID输出为转角,转角方向:向左转为正,向右转为负。 P参数在智能车控制器中表示水平偏差量的权,D参数在智能车控制器中表示水平偏差速度的权。 水平偏差量直接反映了赛车偏离黑线的程度,例如赛车偏向黑线的左边越厉害,则赛车的右转角度将越大。水平偏差量,是PID控制器的P部分。 水平偏差速度则直接反映了赛车的运动倾向,因为有了赛车的水平偏差速度,对赛车的掌握,将更加精确。例如赛车偏向黑线左边,然而它的运动方向是向右的,那么,他的转角将比向左运动时的转角要小,因为,我知道赛车已经开始朝正确的方向调整了。水平偏差速度,是PID控制器的D部分。 通过两个相隔一定采样时间的水平偏差量的差,来得到赛车的水平偏差速度。然而,这个时间间隔多少比较合适呢?

无线传感器网络LEACH算法的综合改进

无线传感器网络LEACH算法的综合改进 陈楠,徐塞虹 北京邮电大学计算机科学与技术学院,北京(100876) E-mail:chennan6062@https://www.wendangku.net/doc/d59239550.html, 摘要:本文通过研究无线传感器网络的层次型路由协议LEACH算法,指出了其存在的一些缺点,并对其某些改进算法进行深入研究,在此基础上进一步改进,吸取已有算法的优点,弥补其中的不足,提出了一种新的分簇算法及簇的维护算法。 关键词:无线传感器网络,层次型路由协议,LEACH算法,改进 中图分类号:TP393 1.引言 传感器技术、通信技术和计算机技术是现代信息技术的三大支柱,它们分别完成对被 测量对象的信息提取、信息传输及信息处理。将这三种技术融合在一起的无线传感器网络技术给人们生活的各个领域带来了极大的影响。作为一种全新的技术,无线传感器网络给科技工作者提出了很多具有挑战性的课题,其中路由协议就是热点之一,传统网络的路由协议远远不能满足无线传感器网络的特点和要求,因此,该领域具有很大的研究价值[1]。本论文在已经提出来的分层次路由协议的基础上进行进一步改进,从而使网络性能又进一步的提升。 2.研究背景 无线传感器网络是由大量功率低、体积小、价格便宜的传感器节点组成的,这些节点实时监测、感知和采集网络分布区域内的各种环境或者被监测对象等诸多用户所感兴趣的信息,并对这些信息进行分布式处理,随后传递给用户,使用户随时随地都可以获取所需的信息。由于传感器网络所具有的特点,其应用前景十分广泛。 但是由于无线传感器网络这些特点的存在,导致节点能量资源、计算能力和带宽等资源都非常有限,尤其是其有限的能量直接影响传感器网络的生命周期以及网络的信息质量。因此,设计有效的策略,降低节点能源损耗,提高网络生命周期成为无线传感器网络的核心问题。 影响节点能源损耗的因素有很多,其中最重要的就是路由协议以,但是传统的那些路由协议应用于无线传感器网络中在某些方面存在一定的缺陷,所以基于传统路由协议,W.R Heinzelman等人提出了低功耗自适应集群型分层路由协议(Low Energy Adaptive Clustering Hierarchy Protocol),LEACH协议[2]是第一个在无线传感器网络中提出的层次式路由协议,其后的大部分层次式路由协议都是在它的基础上发展而来的。该算法主要是通过随机选择簇头,平均分担中继通信业务来实现能量消耗的减少,与一般的平面多跳路由协议和静态成簇算法相比,LEACH可以将网络的生命周期延长15%。 3.LEACH算法概述 LEACH(Low energy adaptive clustering hierarchy)是一种以最小化传感器网络能量损耗为目标的分层式协议,它既可以作为一种传感器网络的基本路由协议,也可以作为传感器网络的拓扑控制算法,因为协议在形成分层式拓扑结构的同时,也确定了簇首,决定了网络的路由。

Leach算法分析

leach_mit结构图 从wireless.tcl文件中分析leach的具体流程 在wireless.tcl文件中首先初始化了很多无限仿真的配置。引用了一些外部脚本——source tcl/lib/ns-mobilenode.tcl(主要是包含移动节点类Node/MobileNode的一些otcl类函数的定义)、source tcl/lib/ns-cmutrace.tcl(trace文件的tcl脚本)、 source tcl/mobility/$opt(rp).tcl(将几种不同的协议的具体应用的外部脚本引用,$opt(rp)是协议名称)。当一些变量初始化过后,通过 elseif { [string compare $opt(rp) "leach"] == 0} { for {set i 0} {$i < $opt(nn) } {incr i} { leach-create-mobile-node $i 建立我们仿真的节点,最主要的函数是leach-create-mobile-node(这个函数的定义在uamps.tcl中) 分析uamps.tcl中是如何定义节点的??? 在uamps.tcl中初始化了bsnode的应用类型(Application/BSApp)、定义了二个能量传输模型(自由信道和多径衰落、Efriss_amp和Etwo_ray_amp)和很多参数。而真正创建节点是在函数leach-create-mobile-node中。而这个函数中调用了uamps.tcl中的sens_init,这个函数的功能是清除上一次模拟时留下的trace文件。在创建节点时候,sens_init函数调用一次。leach-create-mobile-node函数解释如下: 1、节点定义: if {$id != $opt(nn_)} { puts -nonewline "$id " set node_($id) [new MobileNode/ResourceAwareNode] #将前opt(nn_)-1个点定义为一般节点 } else { puts "($opt(nn_) == BS)" set node_($id) [new MobileNode/ResourceAwareNode $BS_NODE] #将第 opt(nn_)个节点定义为最终的sink节点

WSN中LEACH协议源码分析报告

WSN中LEACH协议源码分析 分析(一) 首先对wireless.tcl进行分析,先对默认的脚本选项进行初始化: set opt(chan)Channel/\VirelessChannel set opt(prop) Propagatioii/TwoRayGround set opt(netif)PhyAVirelessPhy set opt(mac) Mac/802_l 1 set opt(ifq) Qucuc/DropTail/PriQueue set opt(ll) LL set opt(ant) Antenna/OmniAntenna set opt(x) 0 。# X dimension of the topography set opt(y) 0。# Y dimension of the topography set opt(cp),H, set opt(sc) N../mobility/scene/scen-670x670-50-600-20-2u。# scenario file set opt(ifqlen)50o # max packet in if set opt(nn) 51。# number of nodes set opt(secd) 0.0 set opt(stop) 10.0 o # simulation time set opt(tr) out.tr。# trace file set opt(rp) dsdv 。 # routing protocol script set opt(lm) M on H。# log movement 在这个wireless.tcl中设置了一些全局变呈:: # #Initialize Global Variables # set ns_ [new Simulator] set chan [new $opt(chan)] set prop [new $opt(prop)] set topo [newTopography] set tracefd [open Sopt(tr) w] Stopo Ioad_flatgrid $opt(x) $opt(y) Sprop topography Stopo 这些初始化将在后而的使用中用到,该文件最重要的是创建leach 17点:创建方法如下: } elseif { [string compare Sopt(rp) M leach,,]==0} { for {set i 0} {$i < $opt(nn) } {incr i} { leach-create-mobile-node $i } 如果路由协议是leach协议,则在Uamps.tcl中调用leach-create-mobile-node方法创建leach节点。将在第二小节讲如何创建leach节点。 for {set i 0} {$i < $opt(nn) } {incr i} { $ns_ at $opt(stop).000000001 M Snode_($i) reset”。〃完成后,重宜右点的应用

算法理论详细讲解

《算法与程序设计》导学 一、编程的步骤: 启动VB——标准EXE——对象——属性——代码——调试——保存——生成EXE 1、VB窗口组成:控件工具箱、对象窗口、工程窗口、属性窗口、代码窗口 2、对象:标签(Label)、文本框(text)、命令按钮(command) 计时器(timer)、简单图形(shape) 3、属性:caption(标题) 4、保存:窗体文件(.frm)、工程文件(.vbp) 二、算法的特征: 1、有穷性 2、确定性 3、能行性 4、有0个或多个输入 5、有1个或多个输出 三、算法的表示: 1、自然语言 2、流程图 (1)标准:GB1526—89、ISO5807-1985 (2)常用符号: 3、计算机语言(伪代码) 四、算法的三种基本结构: 1、顺序模式: 2、选择模式: 3、循环模式: 五、四种基本算法: 1、枚举算法:(循环模式的应用) (1)、把问题所有可能的解全部列举出来,在列举的过程式中根据条件进行判断,满足条件的则是问题真正的解,不满足的去掉。

(2)、包装问题的分析及流程图: 2、解析算法:(公式求解的过程) 3、排序: (1)、冒泡排序:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名。 (2)、选择排序:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。 冒泡排序、选择排序都是比较排序。 4、查找: (1)、顺序查找:序列的最头走到最尾,挨个和目标进行比较,如果找到了,就停止遍历,如果走完了,还没找到,那么表示失败了 (2)、对分查找:对分查找是效率很高的查找方法,但被查找的数据必须是有序的。A,首先将查找的数与有序数组内处于中间位置的数据比较,如果中间位置上的数与查找的数不同,根据有序性,就可确定应该在数组的前半部分还是后半部分继续查找。B,在新确定的范围内,继续按上述方法进行查找,直到获得最终结果 六、VB基本数据类型:

LEACH算法源代码

* https://www.wendangku.net/doc/d59239550.html, * * Created on: 2011-4-17 * Author: syj */ #include #include #include #include "bs.h" #include "node.h" #include "c l_msg_m.h" #include "leach.h" Define_Module( BS);//定义简单模块(1) 直接或间接定义一个CSimpleModule 的子类; ///(2) 以define_Module() 或define_Module_Like()宏注册之; /******************第一个执行的函数***********************/ void BS::initialize() { int i; cModule* parent = getParentModule();//消息参数的访问调用cModule 的par()成员函数可以访问模块指针: //cPar& delayPar = par("delay");cPar类是一个存储值的对象,//它支持数据类型,指针值可以这样读: ///周围的复合模块可以通过parentModule()成员函数访问: cModule *parent = parentModule(); //例如,父模块的参数像这样被访问: double timeout = parentModule()->par( "t this->myId = par("id"); this->xpos = par("xpos"); this->ypos = par("ypos"); this->nrNodes = parent->par("numNodes");//////////???????????????????????????????????????? this->nrGates = parent->par("numNodes");//////???????????????????????????????????????????? this->nrRounds = parent->par("rounds"); this->deadNodes = 0; this->roundsDone = 0; this->oldDeadNodes = 0; this->nrStatusRec = 0;//????????????????????????????????? this->halfDeadCtr = 0;//????????????????????????????????? this->halfDead = 0;//???????????????????????????????????? this->calledEnd = 0;//?????????????????????????????????? this->P = 0.05;//?????????????????????????????????????? this->cHeadsRound = 0;////每一轮簇头的个数 this->roundEnergyLoss = 80001.0;//?????????????????????

无线传感器网络LEACH协议研究

无线传感器网络LEACH协议的研究 摘要:无线传感器网络因其在军事、经济、民生等方面广阔的应用前景成为21世纪的前沿热点研究领域[1]。在传感器节点能量有限的情况下,提高路由效率,延长网络寿命成为无线传感器网络需考虑的问题。由于采取分簇,数据融合的思想,LEACH协议有着较高的路由效率,但在实际应用,尤其是大规模网络中,仍存在负载不均衡等问题。本文主要分析了LEACH协议的基本思想及优缺点,随后针对大规模的网络环境对其分簇算法进行改进。前人提出一种有效的方法计算最优簇首个数,本文推算出适合本文中网络环境的公式并加以应用。本文用NS2进行仿真,仿真后的结果表明,改进后的分簇算法更为有效,延长了网络寿命,增大了网络传送数据量。 关键词:无线传感器网络;路由协议;LEACH;分簇思想 Research on Routing Protocol of LEACH in WSN Shen Y uanyi Dept. of Information and Telecommunication,NUPT ABSTRACT:Nowadays, wireless sensor network has become a hot spot of 21st century because of its wide application on military, economy and human life. On the condition that the energy of a sensor node is limited, how to improve the routing efficiency and expand the network’s lifespan has been an important issue to consider. LEACH maintains quite high routing efficiency for its idea of clustering and data gathering. But in practical, it still has problems such as load unbalance especially in large scale network. The article mainly analyses the basic idea of LEACH, the benefits and drawbacks of it and later introduce an improvement on clustering algorithm according to large scale network. Key words:WSN;routing protocol; LEACH; clustering 1LEACH协议介绍与分析 1.1 LEACH算法思想 算法基本思想[2]是:以循环的方式随机选择簇头节点,将整个网络的能量负载平均分配到每个传感器节点中,从而达到降低网络能源消耗、提高网络整体生存时间的目的。LEACH在运行过程中不断的循环执行簇的重构过程,每个簇重构过程可以用回合的概念来描述[3]。每个回合可以分成两个阶段:簇的建立阶段和传输数据的稳定阶段。 1.2 LEACH算法的分析 LEACH协议的优点[4]有: (1)LEACH 通过减少参与路由计算的节点数目,减少了路由表尺寸。(2)LEACH协议是一种分簇路由协议,降低了非簇首节点的任务复杂度,不必对通信路由进行维护。(3)协议不需要周期性的传输数据。(4)在给定的时间间隔后,协议重新选举簇首节点,以保证无线传感器网络获取同意的能量分布。 由于LEACH算法是建立在一些假设上,所以在实际应用中LEACH协议存在一些问题:(1)在LEACH协议中,簇头的选举是随机产生的,这样的随机性可能会导致簇头

Dijkstra算法原理详细讲解

Dijkstra算法原理详细讲解 如下图,设A为源点,求A到其他各顶点(B、C、D、E、F)的最短路径。线上所标注为相邻线段之间的距离,即权值。(注:此图为随意所画,其相邻顶点间的距离与图中的目视长度不能一一对等) 算法执行步骤如下表:

Dijkstra算法的完整实现版本之算法的源代码 样例图: 输入格式: 输出格式:

输入时,将s,t,x,y,z五个点按照1,2,3,4,5起别名,输入格式按照下图例所示当提示Please enter the vertex where Dijkstra algorithm starts:时输入算法的起 始点 比如计算结果v1v4v2表示从点1到点2经过1,4,2为最短路径 Dijkstra算法的完整实现版本,算法的源代码 /* Dijkstra.c Copyright (c) 2002, 2006 by ctu_85 All Rights Reserved. */ #include "stdio.h" #include "malloc.h" #define maxium 32767 #define maxver 9 /*defines the max number of vertexs which the programm can handle*/ #define OK 1 struct Point { char vertex[3]; struct Link *work; struct Point *next; }; struct Link { char vertex[3]; int value; struct Link *next; }; struct Table /*the workbannch of the algorithm*/ { int cost; int Known; char vertex[3];

Leach代码分析

目录 一、Leach协议与NS的关系 (2) 二、算法设计思想 (3) 三、簇头建立算法流程图 (5) 四、难点解决 (6) 五、算法运行结果分析 (9) 参考文献 (9)

一、Leach协议与NS的关系 为了实现leach 协议,对ns进行扩展。在ns中增加了一个事件驱动模拟器支持模拟无线传感器网络协议。这些扩展包括MAC协议,用于计算和交互的能量分配模型和leach协议的体系结构。 网络拓扑结构可以通过简单的Nodes, Links, Agents和Applications 描述。Nodes相当于网络中的终端主机,Links 是用于Nodes交互的连接器, Agent 用来实现不同网络协议,是支持分组产生和丢弃的节点。Applications用来产生数据和实现不同的应用函数。一旦网络拓扑结构建立起来后,模拟通过启动节点上的Applications运行。 为了在ns中支持无线传感器网络,在ns中增加了mobile nodes, MAC协议和信道传播模型Channel 。 Applications类的头文件用Tcl语言写的,节点中的其他函数功能用C++语言写成的。 数据包的发送过程: Applications创建数据包(data packets),然后发送给Agent. Agent执行协议栈中运输层和网络层的功能,将数据包发送给CMUTrace,。CMUTrace将packets 的统计数据写到trace 文件,然后将packets发至Connector。Connector将数据包传送给用于数据链路处理的链路层(LL).经过一小段时间的延迟后,数据包由LL 发送给Queue缓冲队列。如果是还没有传送过的数据包,Queue将以队列进行存储。然后Queue将数据包出队列,发送到MAC层。然后开始运行MAC(媒体访问控制)协议。最终,packets被发送到网络接口层(Network Interface),网络接口层将packets加上正确的传输能量,然后将packets发送到Channel. Channel将packets进行拷贝,并发往连接信道的每一个节点。 发送过程可参考如下图1 数据包的接收过程: 数据包被节点的网络接口接收,并被向上传送至MAC层,Link-Layer,

LEACH协议簇头

《单片机原理与接口技术》期中论文 论文题目 LEACH协议簇头 选择算法的改进 姓名 学号 学院电气工程学院 专业班级 2008级通信工程

目录 引言................................. 错误!未定义书签。 1 LEACH协议 .......................... 错误!未定义书签。 LEACH 协议介绍.................... 错误!未定义书签。 LEACH 协议的能量损耗模型.......... 错误!未定义书签。 LEACH 的不足在于:................ 错误!未定义书签。 LEACH 协议的优化.................. 错误!未定义书签。 基本思想....................... 错误!未定义书签。 改进细节........................ 错误!未定义书签。 2 簇头选择算法的改进LEACH-H ........... 错误!未定义书签。 簇头初选........................... 错误!未定义书签。 簇头调整过程....................... 错误!未定义书签。 3仿真结果 ............................ 错误!未定义书签。 4仿真分析 ............................ 错误!未定义书签。 5结束语 .............................. 错误!未定义书签。参考文献 ............................. 错误!未定义书签。

LEACH算法的改进

LEACH协议的改进算法 夏北浩 (湖南大学信息科学与工程学院长沙410082) 摘要:首先介绍了LEACH协议的工作原理,性能分析以及不足。之后介绍了LEACH的改进算法。 关键词:无线传感器网络,LEACH协议,改进算法,能量消耗 Improved algorithm of LEACH Xia Beihao (The College of Information Science and Engineering, Hunan University 410082) Abstract: This paper firstly introduce the content of the working principle of LEACH , the analysis of performance and discourages,following the introduction of the improved algorithm LEACH . Key: wireless sensor networks, LEACH protocol,Improved Algorithm,Energy consumption 1 引言 近年来,由于无线技术、计算机技术与传感器技术的迅猛发展和快速融合,无线传感器网络应运而生。无线传感器网络技术作为一种新型网络技术受到研究者的普遍重视和广泛研究。但传感器网络也有一些固定的缺点:能量利用率低、生存周期短、抗干扰能力差。通过良好的算法不仅可以减少传感器节点的能耗,还可以降低通信干扰,提高mac协议和路由协议的效率。因此,提出一个高效稳定合理的算法便成为迫切需要解决的问题。 2 LEACH协议的介绍 2.1 LEACH协议 LEACH是WSN中第一个基于分簇的路由算法,它将网络中的节点分为簇头节点和簇内节点。由于簇头节点需要协调簇内节点的工作,负责数据的融合和转发,能量消耗相对较大,所以LEACH采用周期性地随机选择簇头节点以均衡网络中节点能量消耗。从而达到延长网络生命周期目的。LEACH协议以“轮”作为运

知识讲解_算法案例_基础

算法案例 【学习目标】 1.理解辗转相除法与更相减损术中蕴含的数学原理,并能根据这些原理进行算法分析; 2.基本能根据算法语句与程序框图的知识设计完整的程序框图并写出算法程序; 3.了解秦九韶算法的计算过程,并理解利用秦九韶算法可以减少计算次数提高计算效率的实质; 4.了解各种进位制与十进制之间转换的规律,会利用各种进位制与十进制之间的联系进行各种进位制之间的转换. 【要点梳理】 要点一、辗转相除法 也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的.利用辗转相除法求最大公约数的步骤如下: 第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0; 第二步:若r0=0,则n为m,n的最大公约数;若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1; 第三步:若r1=0,则r0为m,n的最大公约数;若r1≠0,则用除数r0除以余数r1得到一个商q2和一个余数r2; …… 依次计算直至r n=0,此时所得到的r n-1即为所求的最大公约数. 用辗转相除法求最大公约数的程序框图为: 程序:

INPUT “m=”;m INPUT “n=”;n IF m0 r=m MOD n m=n n=r WEND PRINT n END 要点诠释: 辗转相除法的基本步骤是用较大的数除以较小的数,考虑到算法中的赋值语句可以对同一变量多次赋值,我们可以把较大的数用变量m 表示,把较小的数用变量n 表示,这样式子)0(n r r q n m <≤+?=就是一个反复执行的步骤,因此可以用循环结构实现算法. 要点二、更相减损术 我国早期也有解决求最大公约数问题的算法,就是更相减损术. 更相减损术求最大公约数的步骤如下:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也.以等数约之. 翻译出来为: 第一步:任意给出两个正整数;判断它们是否都是偶数.若是,用2约简;若不是,执行第二步. 第二步:以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数.继续这个操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数. 理论依据: 由r b a r b a +=→=-,得b a ,与r b ,有相同的公约数 更相减损术一般算法: 第一步,输入两个正整数)(,b a b a >; 第二步,如果b a ≠,则执行3S ,否则转到5S ; 第三步,将b a -的值赋予r ; 第四步,若r b >,则把b 赋予a ,把r 赋予b ,否则把r 赋予a ,重新执行2S ; 第五步,输出最大公约数b . 程序: INPUT “a=”,a INPUT “b=”,b WHILE a<>b IF a>=b a=a-b;

相关文档
相关文档 最新文档