leach 分析2

原创 2012年03月22日 09:53:21

leach 分析1对wireless.tcl进行了简要的分析,接下来对Uamps.tcl脚本进行分析。

set opt(Efriss_amp)   [expr [expr 1.1 * $opt(RXThresh) * 16 * $PI * $PI] / \
                            [expr $opt(bw) * $opt(Gt) * $opt(Gr) * $l * $l]]
# Etwo_ray_amp = RXThresh / (Rb Gt Gr ht^2 hr^2)
set opt(Etwo_ray_amp) [expr 1.1 * $opt(RXThresh) / \
                      [expr $opt(bw) * $opt(Gt) * $opt(Gr) * \
                            $opt(ht) * $opt(ht) * $opt(ht) * $opt(ht)]]
set opt(EXcvr)         50e-9              ;# Energy for radio circuitry
set opt(e_bf)          5e-9               ;# Beamforming energy (J/bit)
set opt(Esense)        0                  ;# Sensing energy (J/bit)
set opt(thresh_energy) 0.00               ;# Threshold for power adaptation
set opt(Pidle)         0                  
     ;# Idle power (W)
set opt(Psleep)        0                
     ;# Sleep power (W)

     set initialized 0
set rng_ [new RNG]#用于产生随机数

     首先往opt数组里面添加一些变量,并对这些变量进行初化。opt(Psleep)  opt(Pidle)set opt(thresh_energy)在ns-leach.tcl中使用到,这个是计算单位时间空闲所消耗的能量和休眠所消耗的能量。

这个脚本主要是创建leach节点:

if {$initialized == 0} {
    #remove old trace
      sens_init
        set initialized 1
        }

    # Remove old trace files.
    catch "eval exec rm [glob -nocomplain $opt(dirname)/TDMAschedule.*.txt]"
    catch "exec rm $opt(dirname)/$opt(filename).energy"
    catch "exec rm $opt(dirname)/$opt(filename).data"
    catch "exec rm $opt(dirname)/$opt(filename).alive"
    catch "exec rm $opt(dirname)/startup.energy"
    catch "exec rm $opt(dirname)/init.energy"

如果没有初始化过,则将将以前的跟踪文件删除,接着回到创建leach的函数中,创建节点:

if {$id != $opt(nn_)} {
      puts -nonewline "$id "
      #important
      set node_($id) [new MobileNode/ResourceAwareNode]
    } else {
      puts "($opt(nn_) == BS)"
      set node_($id) [new MobileNode/ResourceAwareNode $BS_NODE]
    }

如果不是簇头节点则将$opt(nn_)-1个节点设置为一般节点,将$opt(nn_)设置为BS节点。newMobileNode/ResourceAwareNode函数是在ns-ranode.tcl中。分析完这个我们接下来分析newMobileNode/ResourceAwareNode这个函数。

set node $node_($id)
   
    if {$id != $opt(nn_)} {
     
 # Set initial node energy.
     
  if {$opt(eq_energy) == 1} {
        $node set-energy $opt(init_energy) $opt(thresh_energy)
     
     } else {

由于eq-energy在leach-test中给定,将eq-energy=1;则每个节点都会对能量尽享初始化,设置节点的初始能量和门槛能量(个人理解,死亡能量)。

set high_e_nodes [list 97 19 12 87 8 22 83 55 34 72]
        if {[lsearch $high_e_nodes $id] == -1} {
          set E 2
        } else {
          set E 200
        }
        $node set-energy $E $opt(thresh_energy)
        set initf [open "$opt(dirname)/init.energy" a]
        puts $initf "$id\t$E"
        close $initf

将不属于list中的能量初始化能量设置为2,将属于list中的能量设置为200.并将初始化能量写到init.energy中,将节点id和节点初始能量写进去。

 else {
     
    # Base station has an infinite amount of energy.
     
  $node set-energy 50000 $opt(thresh_energy)
   
      }

节点问簇头节点,则将节点的初始化能量设置为50000,能量无限。

到此为止,创建节点完成并将每个节点的能量初始化完成。下一节将分析ns-ranode.tcl脚本。区分普通节点和簇头节点的不同。

接下来是配置节点信道和跟踪文件

$ns_ at 0.0 "$node_($id) start-app"   ns在0的时候启动应用,应用在ns-ranode.tcl中分析。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Leach协议性能分析(2)

1.复制leach_test为leach-c_test,修改里面的文件夹和输出文件名。并且手动建立相应的文件夹。 很多教程说只修改文件名,没提到修改文件夹,如果同时运行两个协议会覆盖一部分实验结果的...

ns-leach.tcl 分析2

在start中调用下面这个方法。 Application/LEACH instproc decideClusterHead {} {   global ns_ chan opt node_...

【转】Leach协议学习(2)——简单仿真测试

转自:http://hi.baidu.com/jerry_916/blog/item/5d4b59550dadb7163b293577.html一、怎样判断仿真是否正确首先熟悉下leach的文档结构1...

【转】Leach协议学习(2)——简单仿真测试

转自:http://hi.baidu.com/jerry_916/blog/item/5d4b59550dadb7163b293577.html一、怎样判断仿真是否正确首先熟悉下leach的文档结构1...

【转】Leach协议学习(2)——简单仿真测试

转自:http://hi.baidu.com/jerry_916/blog/item/5d4b59550dadb7163b293577.html一、怎样判断仿真是否正确首先熟悉下leach的文档结构1...

Windows下安装ns2-2.29和leach各种方法和遇到的问题

两天内尝试了n种方法,分别在windows和ubuntu下安装了2.27 2.29 2.35ns2,之后又在各个版本ns2上安装了mit和mannaSim的leach,纯手工编译和修改历史遗留bug,...

ns2leach.pdf

  • 2011-04-08 16:02
  • 25KB
  • 下载

NS2运行LEACH,tcl文件的bug调试

在上一篇文章中,我发布了一个mit.tar.gz的

ns2 leach bug

转摘于http://blog.163.com/lt_lvtao/blog/static/43846410200984119913/?fromdm&fromSearch&isFromSearchEngi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)