http://blog.csdn.net/codingkid/article/details/7215216

1.复制leach_test为leach-c_test,修改里面的文件夹和输出文件名。并且手动建立相应的文件夹。

很多教程说只修改文件名,没提到修改文件夹,如果同时运行两个协议会覆盖一部分实验结果的,而且是并行的就更难分解出是哪个协议的实验数据了。所以还是分开较好。

2.添加到test文件最后,后台运行的,需要等待。

3.写脚本分析实验数据。

  1. #计算不同时间剩余节点的数量
  2. BEGIN {
  3. countcyl=0;
  4. totalleft=0;
  5. lasttime=0;
  6. time[0]=0;
  7. node=0;
  8. total[0]=100;
  9. }
  10. {
  11. simtime              = $1;
  12. nodeid               = $2;
  13. statenode            = $3;
  14. if (simtime>lasttime ) {
  15. countcyl++;
  16. lasttime=simtime;
  17. time[countcyl]=simtime;
  18. totalleft=0;
  19. }
  20. if (statenode==1)
  21. totalleft++;
  22. total[countcyl]=totalleft;
  23. }
  24. END {
  25. for(i=0;i<=countcyl;i++)
  26. printf( "%f %d\n",time[i],total[i]);
  27. }
  1. BEGIN {
  2. countcyl=0;
  3. packetsum=0;                       #当前时间发包且接收的总数
  4. lasttime=0;
  5. time[0]=0;
  6. sum[0]=0;
  7. }
  8. {
  9. simtime              = $1;
  10. nodeid               = $2;
  11. packet               = $3;             #读取当前时间,当前节点的发包且被成功接收的数目
  12. if (simtime>lasttime ) {                                #具体算法
  13. packtsum=0;
  14. countcyl++;
  15. lasttime=simtime;
  16. time[countcyl]=simtime;
  17. }
  18. if (simtime==lasttime ) {
  19. packetsum=packetsum+packet;
  20. sum[countcyl]=packetsum;
  21. }
  22. }
  23. END {                                                        #对应时段,打印发包总量。
  24. for(i=0;i<=countcyl;i++)
  25. printf ( "%f %f\n",time[i],sum[i]);
  26. }
  1. BEGIN {
  2. countcyl=0;                           #计数器,用来记录当前的轮数 或者当前的时段数
  3. energysum=0;                      #用来暂时储存当前时段的节点消耗能量总和
  4. lasttime=0;                           #记录当前最后的时间
  5. time[0]=0;                             #存储各(轮)分段的时间
  6. sum[0]=0;                             #存储各分段时间对应的消耗的能量
  7. }
  8. {
  9. simtime              = $1;                      #文件中第一字段的值,当前时间
  10. nodeid               = $2;                      #。。。第二字段的值,节点ID
  11. nodeenergy            = $3;               #。。。第三字段的值,当前节点使用的能量
  12. if (simtime>lasttime ) {     #这里就是一个简单的方法来提取每个时间段,节点总共消耗了多少能量
  13. energysum=0;
  14. countcyl++;
  15. lasttime=simtime;
  16. time[countcyl]=simtime;
  17. }
  18. if (simtime==lasttime ) {
  19. if (nodeenergy<2.0) {
  20. energysum=energysum+nodeenergy;
  21. sum[countcyl]=energysum;
  22. }
  23. else if (nodeenergy>=2.0) {         #节点初始的总能量为2
  24. energysum=energysum+2.0;
  25. sum[countcyl]=energysum;
  26. }
  27. }
  28. }
  29. END {                                          #对应时间段,得出能量消耗量并打印
  30. for(i=0;i<=countcyl;i++)
  31. printf ( "%f %f\n",time[i],sum[i]);
  32. }

4.gnuplot来画图

  1. set multiplot
  2. set origin 0.0,0.5
  3. set size 0.5,0.5
  4. plot 'leach.alive.rst' with linespoint,'leach-c.alive.rst' with linespoint
  5. set origin 0.5,0.5
  6. set size 0.5,0.5
  7. plot 'leach.data.rst' with linespoint,'leach-c.data.rst' with linespoint
  8. set origin 0.33,0.0
  9. set size 0.5,0.5
  10. plot 'leach.energy.rst' with linespoint,'leach-c.energy.rst' with linespoint

得到如下图:

明显实验结果说明leach-c死亡节点比较早,虽然bs收到数据量大,但是能量消耗是leach协议更关心的问题。

修改bs坐标为(0,0),再次计算得到如下结果:

从各方面来说c都比leach更优,有人说若bs在节点区域内部,则leach更优,若在外部则leach-c更优!

想知道为什么还需要看懂这两个协议喽。

接下来代码和理论分析。

 
0

leach和leach-c协议仿真的更多相关文章

  1. 基于eNSP的NAT/NAPT协议仿真实践

    一. 基本原理 eNSP(Enterprise Network Simulation Platform)是一款由华为提供的.可扩展的.图形化 操作的网络仿真工具平台,主要对企业网络路由器.交换机进行软 ...

  2. ICMP 协议仿真及ping命令用途

    1.实验目的 加深对 IPv4 协议首部各定义域的理解,掌握路由表的结构和基本配置命令,熟悉 ICMP 的调试操作. 2.实验原理 IPv4 协议定义,网络层协议的相关 RFC 定义和描述. 3.实验 ...

  3. 工业以太网EtherNet/IP协议安全分析整理

    1.     EtherNet/IP : 设备可以用户数据报协议(UDP)的隐式报文传送基于IO的资料 ,用户传输控制协议(TCP)显示报文上传和下参数,设定值,程式 ,用户主站的轮询 从站周期性的更 ...

  4. ns2.34 移植MFLOOD协议时出现的问题

    安全按照<NS网络模拟核协议仿真>第11章的步骤进行修改,但是make的时候出现了一下错误: make[1]: 正在进入目录 `/home/wang/ns/ns-allinone-2.34 ...

  5. MLD协议测试——网络测试仪实操

    一.简介 1. MLD简介 MLD · Multicast Listener Discovery Protocol · 组播侦听者发现协议 功能 · 在终端主机和与其直接相邻的组播路由器之间建立/维护 ...

  6. PPPoE协议测试——网络测试仪实操

    前言: 与传统的接入方式相比,PPPoE具有较高的性能价格比,它在包括小区组网建设等一系列应用中被广泛采用,目前流行的宽带接入方式 ADSL 就使用了PPPoE协议. 随着低成本的宽带技术变得日益流行 ...

  7. BGP协议测试—信而泰网络测试仪实操

    关键词  BGP; 协议仿真; 测试原理. 前言:当前信息化时代之下,数据传输已经成为了日常工作和生活必不可少的重要组成部分,网络服务的易得性和可靠性也因此得到广泛关注.这其中负责网络正常工作的诸多协 ...

  8. leach协议matlab仿真代码

    http://www.ilovematlab.cn/thread-177006-1-1.html LEACH協議clear;%清除內存變量 xm=100;%x軸範圍ym=100;%y軸範圍 sink. ...

  9. 前端MVVM框架avalon揭秘 - HTML编译器

    MVVM试图更加清晰的讲用户界面(UI)开发从应用程序的业务逻辑与行为中心分离,因为,很多这样的模式的实现都需要利用声明式数据绑定来实现讲View(视图)工作从其他层分离 所以出现了一大堆自定义的声明 ...

随机推荐

  1. The Geometry has no Z values 解决办法

    from:http://dufan20086.blog.163.com/blog/static/6616452320145269343675/ 我们在创建要素时,简单的IFeatureClass.Cr ...

  2. iOS获取窗口当前显示的控制器

    解决类似网易新闻客户端收到新闻推送后,弹出一个UIAlert,然后跳转到新闻详情页面这种需求 1.提供一个UIView的分类方法,这个方法通过响应者链条获取view所在的控制器 - (UIViewCo ...

  3. sp_executesql介绍和使用

    原文:http://www.cnblogs.com/wanyuan8/archive/2011/11/09/2243483.html execute相信大家都用的用熟了,简写为exec,除了用来执行存 ...

  4. 【WIN10】基本控件

    先發個下載地址: http://yunpan.cn/cHuCqYzvsWFAL  访问密码 3470 說明一下.這個示例只是最簡單的演示,並不能提供太大的實用價值. 後面會介紹 Bing & ...

  5. C语言 原码--反码--补码

    //原码,反码,补码 #include<stdio.h> #include<stdlib.h> //数值的表示方法——原码.反码和补码 //原码:最高位为符号位,其余各位为数值 ...

  6. StringBuffer类 和 StringBuilder类

    上一篇中讲解了String类的用法.那么String有什么特点呢? 字符串特点:字符串是常量,其值在创建后就不能被修改.字符串的内容一旦发生变化,就会创建一个新的对象. 代码验证字符串特点: publ ...

  7. Caffe学习系列(4):激活层(Activiation Layers)及参数

    在激活层中,对输入数据进行激活操作(实际上就是一种函数变换),是逐元素进行运算的.从bottom得到一个blob数据输入,运算后,从top输入一个blob数据.在运算过程中,没有改变数据的大小,即输入 ...

  8. LeetCode:Text Justification

    题目链接 Given an array of words and a length L, format the text such that each line has exactly L chara ...

  9. Audrion小车实验过程

    Audrion小车实验过程 一.实验过程 拷贝光盘文件,安装驱动及Arduino软件,观看了教学视频,明白了软件操作界面的各类按钮的含义,进行了事例的上传实验. 接下来就进行了小车的安装工作,这部分不 ...

  10. So... what's up?

    So... testing markdown editor what to learn in May? html5 canvas api codeigniter framework var test ...