LEACH分簇算法实现和能量控制算法实现

上传人:s9****2 文档编号:497690826 上传时间:2023-02-09 格式:DOCX 页数:10 大小:356.50KB
返回 下载 相关 举报
LEACH分簇算法实现和能量控制算法实现_第1页
第1页 / 共10页
LEACH分簇算法实现和能量控制算法实现_第2页
第2页 / 共10页
LEACH分簇算法实现和能量控制算法实现_第3页
第3页 / 共10页
LEACH分簇算法实现和能量控制算法实现_第4页
第4页 / 共10页
LEACH分簇算法实现和能量控制算法实现_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《LEACH分簇算法实现和能量控制算法实现》由会员分享,可在线阅读,更多相关《LEACH分簇算法实现和能量控制算法实现(10页珍藏版)》请在金锄头文库上搜索。

1、一:题目1、在给定WSN的节点数目(100)前提下,节点随机分布,按照LEACH算法,实现每一 轮对WSN的分簇。记录前K轮(k=10)时,网络的分簇情况,即每个节点的角色(簇头或簇 成员)。标记节点之间的关系,标记其所属的簇头。2、在 1 的基础上,增加能量有效性控制:给定的所有节点具有相同的能量,考察第一 个节点能量耗尽出现在第几轮。节点的能量消耗仅考虑关键的几次通信过程,其他能量消耗 不计。通信过程能量消耗规则如下:Set up:簇成元:每次收到候选簇头信息-1,每个候选簇头仅被收集一次;通知簇头成为 其成员,发送信息-2。候选簇头:被簇成元接收信息,即发送信息,能量-2;被通知成为簇

2、头,接收信息能量-1 。Steady:每个簇成员每轮向簇头发送10次数据,每次成员能量-2,簇头能量-1。 二:目的(1)在固定节点个数的前提下,仿真LEACH算法的分簇过程。(2)在上述节点个数和分簇算法的前提下,计算节点的能量消耗,判断能量消耗到 0 的节点出现在第几轮。三:方法描述(1)LEACH 分簇簇头选举初始阶段,每个节点根据所建议网络簇头的百分比(事先确定)和节点已经成 为簇头的次数来确定自己是否当选为簇头。每个节点产生一个0-1 的随机数字,如果该数字 小于阈值 ,节点成为当前轮的簇头。阈值其他其中,P为预期的簇头百分比,r为当前轮数,G是最近1/p轮里没有成为簇头的节点 的集

3、合。首先确定传感器网络中的节点个数为100个,并对所有节点初始化其三个属性,分别有 type(节点类型),selected(是否当选过簇头)和temp_rand(随机数)。设定簇头产生概率 p=0.08。算法步骤如下:Step1:随机生成100个节点位置,并赋值随机数temp_rand,设置type和selected为 N。Step2:将所有selected为N的节点随机值与做比较,若temp_rand小于等于则转向Step3,否则转向Step4。Step3:表明节点当选为簇头节点,将type赋值C , selected赋值0。Step4:表明节点为普通节点,将type扔赋值N , selec

4、ted不改变赋值。Step5:遍历所有节点,若节点type为C,将节点在图上标记*,并标上节点数目。 否则将节点在图上标记为。同时标记上节点数目。Step6: 如果节点为普通节点,则计算其与所有簇头的欧式距离,形成距离矩阵。Step7:利用min函数,找到与普通节点相距最近的簇头,并将其相连接。Step8:轮分簇结束,返回Step1开始下一轮分簇过程。所以在试验中通过计算每个普通节点到所有簇头的距离,并将该普通节点与相距最近的 簇头节点相连,并将簇头节点的 selected 属性标记,保证当过簇头的节点在之后的分簇过1 / 10程中不会再当选为簇头节点。在10 轮的分簇试验中选取5 张分簇网络

5、图,具体分簇情况分 别如下:1009080706033187181522 ,87124611 8994247;品7:列504030&6466945-2751201092656429. I7758302913965 85图 1 第一轮分簇网络拓扑图0102030405060708090100第一轮分簇的簇头和簇成员的分类表如下:簇头簇成员7128611001443933,27,2272,82,40,57,20,28,87,15,48,38,48,2597,55,75,33,78,5,18,9949,83,12,36,89,9,61,52,6298,24,84,17,11,66,69,45,81,

6、96,35,46,84,54,64,54,2113,73,44,47,0116,10,60,74,29,51,19,59,92,5602,58,08,88,67,79,96,33,50,32,53,77,34,39,65,35,37,42,31,70,76,91,30,261009080706050403020107125。一址/4815_ 22-27卞盘4242717it =11471440Q /./282395 5496-Pi Q1 35146185219 590140102030405060701009080371727060-27175040302010990049835: 43906

7、1229894249081g2823953820871/ . 5496111069459265684I 05119 5981 35 4650号2、*2淫汾0、1878-59080481570605450402044-.1732717时一一 2823-9549833641252)293一8*7 & 1005867 86 6379o-皐.3277邂 -;39最门65 |7 沬P7%708 88671090 58679 86 63507683934A 3眄0 91 亠等014-768090100 0102030405060708090100d65 457$55 9761878549836632301

8、007035 4684一05119 5953961 5侖212609955 976农18Q57540 3357-.-?9080504030201716945021319 5987一2298一 2717 942438 204961562刁$ -.2679 86 6350 r53 77 683465 8539浮4念ii7660708090100图 2 第二,三,四,五轮分簇网络拓扑图10丁_46 8412 _41爲為一e/X92 r4316 I 56 I100 58J6 6377豎 65 853951323(2691014760102030405060708090100(2)节点能量消耗试验中通过

9、对能量消耗规律的分析可以得出:假设某轮分簇中第i个簇头的簇成员有a 所以在这一轮中的通信过程中簇头消耗的能量为2+11*a,簇成员消耗的能量为22。所个以增加节点的一个属性为S(i).power,从而到达能量消耗监测的目的。设置标志位,当发 现第一个节点能量耗尽情况出现时,则结束程序,并用黑色标记。而已做过簇头的节点用红 色标记。在一次实验中,第一次能量耗尽出现在第5轮。前5轮的图像如下:4$严7Q402Dde 血 V.I| 巴 I前ib图 4 第五轮 25 节点能量耗尽四:实验结论在本次实验中首先通过对LEACH算法的分析研究,学习了其进行传感器节点网络分簇的 步骤,同时在P=0.08和节点

10、数目为100的前提下通过MATLAB仿真在节点数目不变的情况下 10 轮的分簇结果。在能量的消耗试验中,首先通过对簇头以及簇成员在一轮分簇通信过程 中的能量消耗规律统计,简化了实验步骤。通过仿真,第一个节点能量耗尽的情况出现在第 5轮。通过这次实验,对传感器网络的通信协议以及能量消耗控制有了更加深入的研究和探 讨,收获很多。1、Leach 分簇: close all clear all;pm=100;%概率范围xm=100;%x 轴范围ym=100;%y 轴范围line=10;%连线距离初始值sink.x=0.5*xm;%基站 x 轴 50sink.y=0.5*ym;%基站 y 轴 50n=1

11、00;p=0.08;for i=1:1:n%随机产生 100 个点S(i).xd=rand(1,1)*xm;S(i).yd=rand(1,1)*ym;S(i).temp_rand=rand;S(i).type=N;%进行选举簇头前先将所有节点设为普通节点S(i).selected=N;S(i).power=300;hold on;endnum11=0;num12=0;flag=1;while(flag)for r=1:1:10figure(r);for i=1:1:n%随机产生 100 个点S(i).temp_rand=rand;endfor i=1:1:nif S(i).selected=N

12、%if S(i).type=N%只对普通节点进行选举,即已经当选簇头的节点不进行再选举if ( S(i).temp_rand=(p/(1-p*mod(r,round(1/p)S(i).type=C;%节点类型为蔟头S(i).selected=O;plot(S(i).xd,S(i).yd,*);text(S(i).xd,S(i).yd,num2str(i);num11=num11+1;else S(i).type=N;%节点类型为普通plot(S(i).xd,S(i).yd,o);text(S(i).xd,S(i).yd,num2str(i);num12=num12+1;endendif S(i

13、).type=Cplot(S(i).xd,S(i).yd,*);%蔟头节点以*标记text(S(i).xd,S(i).yd,num2str(i);elseplot(S(i).xd,S(i).yd,o);%普通节点以 o 标记text(S(i).xd,S(i).yd,num2str(i);endhold on;end %判断最近的簇头结点,如何去判断,采用距离矩阵 yy=zeros(n);for a=1:1:nif S(a).type=Nfor b=1:1:nif S(b).type=Clength(a,b)二sqrt( (S(a).xd-S(b).xd)入2+(S(a).yd-S(b).yd)入2); %簇头 与每个普通节点的距离elselength(a,b)=10000;e

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号