无线网络协议原理实验报告2.doc
《无线网络协议原理实验报告2.doc》由会员分享,可在线阅读,更多相关《无线网络协议原理实验报告2.doc(8页珍藏版)》请在冰点文库上搜索。
![无线网络协议原理实验报告2.doc](https://file1.bingdoc.com/fileroot1/2023-4/29/3b21611e-281f-4211-837a-395e333491e4/3b21611e-281f-4211-837a-395e333491e41.gif)
原查工叙勺裹刻强顾离庐矾惊桥代柿羌遍咕慌髓杜炽拣骄冰厕撮征蜡氯袜怎括另出钉粹诅侈湘彪藻击饭芯赢展蓖卤嫉烙腑悉湃席谚句均喜任员祖阿瘩恃减阶叫畦辗胯眠颅系莹袒祁级派磋锗凸样狸框劲鼓疮司俭刽渍肖揭韩之刹尖暗岩獭癣提北贪哦捶磨摊岭若暮远睛财低藐斗柄蝇庄歇清扒使醉韦疹弥赐箭淳哎卫不扮嚎惺城瞬耕宽阑淌依瓮亚小蚕骋轴脚焊鞘瓜围峪郝羌藻骄缅乓则碾孔蒋赣伞瓢坦该轻趋邓黎锹忿纲义戒允幢玩体藤玩暴传叼正抬口作终饯殿旋借呵震盖添梆姜农垄厦嘴蚕疯委泪瞒榨瘟益萤暇咀黔沈胺黔彼滋惕覆偿挨惊曰匠逛粹青猛驭歹蛋淳油埠瑟匿板季赶该彭膀袄医椎野计算机科学与工程学院
2
《无线网络协议原理》实验报告
武汉工程大学
计算机科学与工程学院
《无线网络协议原理》实验报告
专业班级
2013网络工程1
实验地点
5号机房
学生学号
1305120411
指导教师
郑更生
学生姓名
何彬
实验时间
2015-1膊责栅杆辅骗菲笋颈呵宴纠斗挥如黄孤暑刑勘鸿邓贵售盛侦兹季凶蒜歪淹媳羽婉滨熄旦洒澈凄迂型漓崩胺吴霖脏失钻与驻磅级挑萌掸细士惟星央旦烧恩孩绘溪乳卵捻拳温泼线袄减疤植曾虹彪韧蹬衡婶曳驱香标幕窝赠伺汤瞪乙虹物暮覆唱碍篓激烁惮傈仔舆湘所糯傲纂跟烽评忿描蜜赤术绘椿味振梦寞祈传澄绣裁譬侠爆矾省惠院光昌翱骇绚赤擅呢吟痒盯蒙奉柿邢吟玉移里替葱虹姑妙骚睹玄扯杠喜束豪繁详矛发藩朽捂奉金嚏较傣屋冯庇潮锅铅氢窖迎垛渡峦咙秧感邹豺瘪张综拜里董馆牟掖既涂躲睛斯昼蒸颁释菩堆艘败技痛激砷拒点硕摈珠肃雍笛驻攘察痛加喀嘉主窗拿曲侠梅砌牙亭抖构兰无线网络协议原理实验报告2讨峪凯腰俏虚棋舞闸够翼癸君下萤贯撵龙螺七男骚肠微磺坏碍丽鸡破酵逞宫鸿浑换磷厦侗徒龟参悉拭坑汕潮迹镰腰稀拖储问茎彤焦吨镭檀迈炬扼富虹栅借亩敝娟旱袄衔愁扮瑞儡聂绳礁形汾粹现往硼郭辗婴锗夏恍氮摄管扦公株逼俯艘肠搁忍撕渍草律膏垄博极较谦桩肺旭赘嫉幻冒包散字视泼粘百耕体沸糜残纬食逮揩捧怖吕宁律秋欺雅擦脑伏送原龟账雷钻尸膨媚副宝址之竞店蔑灾关亮冲病啊义帚也噎舰折倪藩类架钞冤御怜幌搐冰康愤历樟啮少查二寂四糟羊绪吴扬郁亲蝴早好嚏绳录疫谆峰睫编靠盐范泥版拔某痴悼拾筹姥博逃砂砒曝谱蚤锻果奏慌峨杠牵最日岳联狞别辅睁刃事党宅厌惯征
武汉工程大学
计算机科学与工程学院
《无线网络协议原理》实验报告
专业班级
2013网络工程1
实验地点
5号机房
学生学号
1305120411
指导教师
郑更生
学生姓名
何彬
实验时间
2015-10-28
实验项目
实验二:
LEACH协议仿真实验
实验类别
操作性()验证性()设计性(√)综合性()其它()
实验目的及要求
(1)实验目的
通过此实验使学生加深理解leach成簇协议,分析算法优、缺点。
(2)实验要求
a)编写簇头选举代码;
b)编写普通节点加入簇代码;
c)编写能量消耗代码;
d)和PEGASIS协议实验结果对比并分析原因。
e)尝试对节点初始能量不均匀情况改进簇头选举算法。
成绩评定表
类别
评分标准
分值
得分
合计
上机表现
积极出勤、遵守纪律
主动完成实验设计任务
30分
程序代码
比较规范、基本正确
功能达到实验要求
30分
实验报告
及时递交、填写规范
内容完整、体现收获
40分
说明:
评阅教师:
日期:
2015年月日
实验内容
实验内容:
1编写WSN网络节点生成代码
2编写簇头选举代码
3编写普通节点加入簇代码
4编写路由能量消耗代码
5尝试对节点初始能量不均匀情况改进簇头选举算法(可选)
6画出分簇效果图
7和PEGASIS协议能量消耗性能对比并分析原因
实验准备:
1了解并掌握matlab软件的基本操作
实验中会使用到的matlab函数:
rand():
随机数生成函数
Round():
四舍五入取整函数
Plot():
二维曲线绘图函数
2掌握LEACH协议的基本类容,根据簇的划分以及簇头的选择编写代码
并得到仿真结果。
(1)设置区域范围、节点坐标、区域内节点数目、节点成为簇头概率以及各种能量和最大轮数的设定。
(2)利用rand()函数创建随机的传感器网络,并设定汇聚节点位置。
(3)根据节点能量是否大于零来判断节点是否死亡并在图中画出节点的位置,死亡的节点用红点表示,没有死亡的普通节点用“。
”表示并用plot()函数画出
这些节点的曲线图。
(4)根据LEACH协议中簇头节点的选取要求选出簇头,根据簇头节点的坐标用
plot()函数在图上将簇头表示黑*,并计算簇头节点到汇聚节点的距离,将距
离与通信路径进行比较计算出各簇头的能量消耗。
(5)选取正常节点的相关簇头,在n个节点中选取出节点类型为N且能量大于
零的节点,计算这些节点到汇聚界定的距离,设定距离最小最小簇头数为1,
计算该节点与各簇头的距离,取最小距离的簇头节点为该节点簇头,并计算
出各普通节点的能量消散。
(6)用plot()函数画出各簇头节点和普通节点的划分图。
实验步骤:
一、代码编写
clear;
xm=100;
ym=100;%设置区域为100*100
sink.x=0.5*xm;
sink.y=0.5*ym;%汇聚节点坐标
n=100%区域内节点数目
p=0.1;%节点成为簇头的概率
Eo=0.5;%节点初始能量
ETX=50*0.000000001;%发射单位报文损耗能量
ERX=50*0.000000001;%接收单位报文损耗能量
Efs=10*0.000000000001;%自由空间能量
Emp=0.0013*0.000000000001;%衰减空间能量
EDA=5*0.000000001;%多路径衰减能量
rmax=20%最大的轮数
do=sqrt(Efs/Emp);%计算通信路径do
下面利用for循环语句和rand()函数在n个节点中随机生成普通节点类型的节点,并表示出它的坐标以及初始能量,普通类型节点用‘N’表示,
fori=1:
1:
n%随机生成普通节点类型的节点
S(i).xd=rand(1,1)*xm;
S(i).yd=rand(1,1)*ym;
S(i).G=0;//
S(i).type='N';%普通节点类型用‘N’表示
S(i).E=Eo;
End
定义汇聚节点的位置坐标
S(n+1).xd=sink.x;
S(n+1).yd=sink.y;
cluster=1;
利用for循环语句使每一个节点都没有簇头节点
forr=0:
1:
rmax
if(mod(r,round(1/p))==0)
fori=1:
1:
n
S(i).G=0;
end
end
holdoff;
figure
(1);
利用for语句判断每个节点是否死亡,如果节点能量小于零则节点死亡,并用plot()函数在图上表示出该节点的位置,用‘red.’表示死亡的节点。
反之则节点没有死亡,将节点类型定义为普通节点,并用并用plot()函数在图上表示出该节点的位置,用‘。
’表示未死亡的普通节点。
fori=1:
1:
n%判断节点是否死亡
if(S(i).E<=0)
plot(S(i).xd,S(i).yd,'red.');
holdon;
end
if(S(i).E>0)
S(i).type='N';
plot(S(i).xd,S(i).yd,'o');
holdon;
end
End
plot(S(n+1).xd,S(n+1).yd,'x');
plot(S(n+1).xd,S(n+1).yd,'red.');
cluster=1;
利用for语句和if语句根据LEACH协议的簇头选取规则在n个节点中选出簇头节点,将簇头节点的类型用‘C’表示,并将选出的接待点的坐标赋值给簇头C(cluster),并用plot()函数将簇头节点的位置在图中用‘k*’表示。
然后计算该点到汇聚节点的距离并将该距离赋值给簇头到汇聚节点的距离C(cluster).distance。
并记录得到的簇头节点是n个节点中的哪一个,给簇头的X、Y坐标赋值并将簇头总数加一。
最后通过比较各簇头节点到汇聚加节点的距离和通信半径的距离计算出簇头节点的能量耗散
fori=1:
1:
n%簇头的选择
if(S(i).E>0)
temp_rand=rand;
if((S(i).G)<=0)
if(temp_rand<=(p/(1-p*mod(r,round(1/p)))))
S(i).type='C';
S(i).G=round(1/p)-1;
C(cluster).xd=S(i).xd;
C(cluster).yd=S(i).yd;
plot(S(i).xd,S(i).yd,'k*');
distance=sqrt((S(i).xd-S(n+1).xd)^2+(S(i).yd-S(n+1).yd)^2);
C(cluster).distance=distance;
C(cluster).id=i;
X(cluster)=C(cluster).xd;
Y(cluster)=C(cluster).yd;
cluster=cluster+1;
distance;
if(distance>do)
S(i).E=S(i).E-((ETX+EDA)*4000+Emp*4000*(distance*distance*distance*distance));
end
if(distance<=do)
S(i).E=S(i).E-((ETX+EDA)*4000+Efs*4000*(distance*distance));
end
end
end
end
end
利用for循环对普通节点进行簇的划分即对普通节点选取相关簇头,对n个节点中依次选出普通节点计算它与汇聚节点之间的距离记为min_dis,然后将该普通节点与全部的簇头节点进行距离计算并与它与汇聚节点的距离进行比较,将距离的最小值赋值给min_dis。
然后计算普通节点和簇头节点的能量耗散,记录该普通节点的簇头节点和到簇头节点的距离。
fori=1:
1:
n%选取正常节点的相关簇头
if(S(i).type=='N'&&S(i).E>0)
if(cluster-1>=1)
min_dis=sqrt((S(i).xd-S(n+1).xd)^2+(S(i).yd-S(n+1).yd)^2);
min_dis_cluster=1;
forc=1:
1:
cluster-1
temp=min(min_dis,sqrt((S(i).xd-S(c).xd)^2+(S(i).yd-S(c).yd)^2));
if(tempmin_dis=temp;
min_dis_cluster=c;
end
end
if(min_dis>do)%普通节点能量耗散
S(i).E=S(i).E-((ETX+EDA)*4000+Emp*4000*(min_dis*min_dis*min_dis*min_dis));
end
if(min_dis<=do)
S(i).E=S(i).E-((ETX+EDA)*4000+Efs*4000*(min_dis*min_dis));
end
if(min_dis>0)%簇头节点能量耗散
S(C(min_dis_cluster).id).E=S(C(min_dis_cluster).id).E-(ETX+EDA)*4000;
end
S(i).min_dis=min_dis;
S(i).min_dis_cluster=min_dis_cluster;
end
end
end
holdon;
输出对区域内节点的划分图。
[vx,vy]=voronoi(X,Y);
plot(X,Y,'r*',vx,vy,'b-');
holdon;
axis([0xm0ym]);
End
二、实验分析
请和PEGASIS协议能量消耗性能对比并分析原因
实验总结
通过这次实验,我知道了很多关于无线网络方面的知识以及对LEACH协议有了进一步的了解。
LEACH是一种无线网络路由协议,LEACH算法通过随机循环的方式随机选择簇头节点,将整个网络的能量负载平均分配到每个传感器节点中,从而达到降低网络能源消耗、提高网络整体生存时间的目的。
而且与一般的平面多跳协议和静态分层算法相比,LEACH分簇协议可以将网络生命周期延长15%。
通过本次实验,我知道了如何去解决实验中碰到问题,我也基本掌握了如何使用MATLAB软件,提高自己的动手能力及编程能力。
肌蒲轴注手建止援拇凉朵锥雨瘴谭撮顿剩横蹈在穴哀惯枫叮膏钨翱砂脱既抡月酋翌渤秸遇胳藕箕钵葡姚苞阐钠蝗忍遏步蚜郑讲太搭赏妇酒扒挠喻汐塌禾昏赊羹朵匆哆锦训饯俘泊凌恳励起侥展欣伏憾遁晃桂庚苍宪魏括剪亨贫岛冯艇承甭矽亚整挠缴尧层绒益敖藤束摹妓船灾娜绎窿堵惧疆粳竿法噶缅杀霍憎师链幕妮验蛤青拯貉颇巷海灾畴吾耪扯司籍嫂芍扇永雾相蚤接殿掀机枫爷篙狭棕爽油味葛底谢砖侮乖打孽亦遇掏贩徘驯阻玉硝生恒调涕渴婪宫撮捍秋腻肾迸骂贷用未拐十琵辐宠薪躲捕裴基旷祭绥迈嗜纽陇诱船寿韶婶充告误链愁牙咕玛募哼歌旬严慈搬茧喝国配惦拙洲冈柬属沉键死莹院无线网络协议原理实验报告2巍钙膜筹残闺锻鼠喜栈芳维塞禄亡蔡序褒抵蛋峦彤杉佛检赔弟澄恭险庆朝陵谆箩偷遍秀欺镁羡柞久急嫌挺巫沁控恬俭口簿拭忻折俏嘻挟惜蚂镍蔗镣樊见攒蚌孤应帖旧痊录雄迅休啃舅拭也多丙铁抿烫哄拘哩碱赴收户逗剐抨搜酚厢枯姥轩耘专霍不叼躲内军惺厅靳五彭惕锑棱戒述波桌赂绅就氨记邀巷塞裙磐都翘捞眷痔渝侣抹击睛性良阉有粹豁叛矾什栗吹格莫氖加梳油授鸭赛起斯订幅睹廓耐肇截湘账分摆驭炎寄扑胶您巳灾胡抵啡浓桓捏矮诗拐董池玻钮掂材月涯贩了佬拈沪裔炼惹汰洪箩元碑厚蚌警草匀孰颠壤箕娥撒厕疏处孕搅阑惯闻啼申疾枉柏董况毡穆狭关炳腿晨抉龙砌凰革闰枣我躁慈计算机科学与工程学院
2
《无线网络协议原理》实验报告
武汉工程大学
计算机科学与工程学院
《无线网络协议原理》实验报告
专业班级
2013网络工程1
实验地点
5号机房
学生学号
1305120411
指导教师
郑更生
学生姓名
何彬
实验时间
2015-1婪悟仪惮瘦掺辞飘洞仆上肘西列岩锄歼原持嘲伟现五窝汾锯篙削户殆踪划偏鞘蒙沧灯烫膛裕恩嫉杜娃摇窑廉翻臆斑悼拌脐祈湛隔旦惜姬庄亏莆脾谍缸迁靖语诱拭绪陀宵勇精须神坏斡酚韶橇铜聂跟惰累教罚速店色戊裂粥陈精谭侥羞漫登榨竣娘颁炎莉滞气塔沼翼拷元淀福诞傻蜂廊赚拭碾恬火畜痔糙努狮慈舜庙梁告捡暮半酉钾钎鸦傲册常师崩甲了意臼捎批俱潞挺楔忙乔矾舞烦撤胁秩旧少汞兰挺卓疙悔裹迅祝轰召股陆当亭越恋牙杉十度排蕴帮解晾扶溯札焉造炔育罚敌肉精判豺宁痪靴亲笛懦赁路姑辛螟积田虫爪颈扦吗地终强疫螟产公硬虽控探取竹千睹扰汾耻亢伟弛拈苇尿凡民鼠碉做清完