您的位置:首页 > 其它

ns2下leach协议的仿真

2016-07-21 17:49 405 查看
ns2下leach协议的仿真主要从以下三个条件予以评价:存活节点的数量,节点能耗,网络数据总转发量

(1).#计算不同时间存活节点的数量 leach_alive.awk脚本程序

BEGIN {
countcyl=0;
totalleft=0;
lasttime=0;
time[0]=0;
node=0;
total[0]=100;
}
{

simtime              = $1;
nodeid               = $2;
statenode            = $3;

if (simtime>lasttime ) {
countcyl++;
lasttime=simtime;
time[countcyl]=simtime;
totalleft=0;
}

if (statenode==1)
totalleft++;
total[countcyl]=totalleft;
}
END {
for(i=0;i<=countcyl;i++)
printf( "%f %d\n",time[i],total[i]);
}

在mit/leach_sims目录下运行 awk -f leach_alive.awk leach.alive > leach_alive.txt

会在当前目录下生产一个leach_alive.txt,下面对这个文件使用gnuplot画图

./gnuplot

set title "leach -wcdj"]

set xlabel "round"

set ylabel "the num of alive nodes"

set terminal gif

set output "leach_alive.gif"

plot "leach_alive.txt" with linespoints

以下两个评价指标的仿真与此类似,只给出awk源码

(2)节点能耗

#leach_energy.awk
BEGIN {
countcyl=0;
energysum=0;
lasttime=0;
time[0]=0;
sum[0]=0;
}
{
simtime = $1;
nodeid = $2;
nodeenergy = $3;
if(simtime>lasttime ) {
countcyl++;
lasttime=simtime;
time[countcyl]=simtime;
energysum=0;
}
if (simtime==lasttime){
if(nodeenergy<2.0){
energysum=energysum+nodeenergy;
sum[countcyl]=energysum;
}
else if(nodeenergy>=2.0){
energysum=energysum+2.0;
sum[countcyl]=energysum;
}
}
}
END {
for(i=0;i<=countcyl;i++)
printf ( "%f %d\n",time[i],sum[i]);
}

(3)网络数据总转发量

#leach_data.awk
BEGIN {
countcyl=0;
packetsum=0;
lasttime=0;
time[0]=0;
sum[0]=0;
}
{
simtime = $1;
nodeid = $2;
packet = $3;
if(simtime>lasttime ) {
countcyl++;
lasttime=simtime;
time[countcyl]=simtime;
packetsum=0;
}
if (simtime==lasttime){
packetsum=packetsum+packet;
sum[countcyl]=packetsum;
}
}
END {
for(i=0;i<=countcyl;i++)
printf ( "%f %d\n",time[i],sum[i]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: