转自 王子 空间 http://272387537.qzone.qq.com/
对LEACH及LEACH-C的仿真结果产生的几个文件开始分析,具体的仿真步骤就不介绍了哈。自己看哦! leach.alive, leach.energy, leach.data, leach.err, leach.out我个人觉得有点价值的就是这5个文件。因为我的。TCL脚本文件没有记录.tr和.nam。 1。leach.err里面主要就是提示仿真过程中的一些错误信息,如果在仿真完成后,该文件中的内容是 INITIALIZE THE LIST xListHead 代表一切正常。 2。leach.out我目前觉得没有什么分析的价值,它好象是对整个仿真过程数据的一个记录过程,从初始化节点,创建节点。记录节点的坐标。一些警告信息,在每个时间间隔内,总的能量消耗,总的数据传输量,总的节点存活数。节点什么时候与BS传输信息等等。由于我的该文件有很多警告信息,所以不是很好看。也没分析。以后学习中可能会有个分析出炉。 3。leach.alive的分析。AWK文件在我前面的文章中有,这我就不重复介绍了。.alive 文件第一行是运行时间,第二行就节点ID,第三行记录的是节点状态,如果是1,表示该节点还存活,如果是0,则表示节点死亡 4。leach.energy的分析是我今天介绍的重点之一。因为之前的.awk文件都是在网上搜索的,只知道用该文件以及一定的命令就可以用它来对目标文件进行提取。今天自己看了看分析leach.alive文件的.awk文件。我自己写了个energy.awk文件如下: energy.awk脚本文件 BEGIN { countcyl=0; //计数器,用来记录当前的轮数 或者当前的时段数 lasttime=0; //记录当前最后的时间 simtime = $1; //文件中第一字段的值,当前时间 if (simtime>lasttime ) { //这里就是一个简单的方法来提取每个时间段,节点总共消耗了多少能量 if (simtime==lasttime ) { 这个就是我的分析思路。具体gawk命令我就不再介绍了。 5。接下来的leach.data的分析和上面4。的分析基本上差不多,在这里我要介绍一下的是,.data文件第3个字段的涵义困扰了我很久。今天查了下原始英文资料是这样介绍的: Leach produces many data files that are stored in the directory of leach_sims. In leach.data, the first column denotes the time, more precisly the time at the beginning of every round; the second column denotes the ID of a node; the third column stands for the number of packets that are sent by this node and sucessfully received by the base station. 我的理解是,第3列代表的意思是,节点当前时间内,节点发送且被BS成功接收的数据包的个数。 所以我就写了以下一个data.awk文件来记录每个时间段(可以理解为每轮),协议发包且成功接收的总数。如下: BEGIN { countcyl=0; lasttime=0; simtime = $1; if (simtime>lasttime ) { //具体算法 if (simtime==lasttime ) { 差不多都介绍完了吧!上图!
左上这个图我们已经很熟悉了,之前已经发过。现在我们来看看右上这个图(对.energy的对比分析),很明显可以看到,LEACH和LEACH-C的能量消耗曲线是交替上升,不好分出优劣。而在520秒左右的时候,节点能量先达到了200J(100个节点,每个节点2J)。过了80多秒左右后,LEACH-C的能量曲线才达到200。 下面这个图,是对.data的对比分析。这个图可以很清晰的看到,在一直的过程中,LEACH-C发送的包都是比LEACH要多的,并且在520秒之后,LEACH所有节点全部死亡,LEACH-C仍有发包成功。我可以这样理解吧。相同的能量消耗,在相同特定环境下,最后使用LEACH-C采集到的数据包更多。 最后附上我GNUPLOT的命令吧,如何画多图: gnuplot> set multiplot //设置多图模式
没有迈不过的坎,没有翻不过的山。学如此,人生亦如此!加油,一切都会好起来 |