ns-leach.tcl 分析3

原创 2012年03月24日 17:04:10

当簇头发出了一个ADV类型的包时,其他的节点会接收这个包,并会将发送这个包的簇头的节点号按顺序先后记录在clusterChoices_中,还会计算每个簇头到接收节点的距离并记录在clusterDist_中。这样可以方便每个节点选簇的时候进行比较。具体的实现在在ns-leach.tcl中的recvADV_CH函数中。

findBestCluster

  if [$self isClusterHead?] {
    # If node is CH, determine code and create a TDMA schedule.
    set dist_ $opt(max_dist)
    set currentCH_ $nodeID
    set myADVnum_ [[$self mac] set myADVnum_] 
    # There are opt(spreading) - 1 codes available b/c need 1 code 
    # for communication with the base station.
    set numCodesAvail [expr 2 * $opt(spreading) - 1]
    set ClusterCode [expr int(fmod($myADVnum_, $numCodesAvail)) + 1]
    $ns_ at [expr $now_ + $opt(ra_adv_total) + $opt(ra_join)] \
        "$self createSchedule"
  }

    如果这个节点是簇头节点,设置为当前的簇头,

    set numCodesAvail [expr 2 * $opt(spreading) - 1]
    set ClusterCode [expr int(fmod($myADVnum_, $numCodesAvail)) + 1]这两句没看懂

在一个随机时间后调用createSchedule,节点根据自己收到的clusterChoices,选择最近的簇头作为簇头节点。选择好簇头节点就informClusterHead。发送完数据就进入休眠状态。

Application/LEACH instproc createSchedule {} {


  global ns_ opt ADV_SCH MAC_BROADCAST BYTES_ID 
 
  $self instvar clusterNodes_ TDMAschedule_ 
  $self instvar dist_ code_ now_ beginningE_


  set numNodes [llength $clusterNodes_]
  set chID [$self nodeID]
  if {$numNodes == 0} {
    set xmitOrder ""
    puts "Warning!  There are no nodes in this cluster ($chID)!"
    $self SendMyDataToBS
  } else {
    # Set the TDMA schedule and send it to all nodes in the cluster.
    set xmitOrder $clusterNodes_
    set msg [list $xmitOrder]
    set spreading_factor $opt(spreading)
    set datasize [expr $spreading_factor * $BYTES_ID * [llength $xmitOrder]]
    pp "$chID sending TDMA schedule: $xmitOrder at time [$ns_ now]"
    pp "Packet size is $datasize."
    set mac_dst $MAC_BROADCAST
    set link_dst $chID
    $self send $mac_dst $link_dst $ADV_SCH $msg $datasize $dist_ $code_
  }


  set TDMAschedule_ $xmitOrder
  set outf [open $opt(dirname)/TDMAschedule.$now_.txt a]
  puts $outf "$chID\t$TDMAschedule_"
  close $outf


  set outf [open $opt(dirname)/startup.energy a]
  puts $outf "[$ns_ now]\t$chID\t[expr $beginningE_ - [[$self getER] query]] "
  close $outf

}

recvADV_SCH给没个节点一个时间间隙发送数据

  set frame_time_ [expr [expr 5 + [llength [join $order]]] * $opt(ss_slot_time)]
  set xmitTime_ [expr $opt(ss_slot_time) * $ind]
  set end_frm_time_ [expr $frame_time_ - $xmitTime_]
  set xmitat [expr [$ns_ now] + $xmitTime_]
  pp "$nodeID scheduled to transmit at $xmitat.  It is now [$ns_ now]."
  if {[expr $xmitat + $end_frm_time_] < \
      [expr $next_change_time_ - 10 * $opt(ss_slot_time)]} {
    $ns_ at $xmitat "$self sendData"

具体实现方法看不太懂。



ns-leach.tcl 分析2

在start中调用下面这个方法。 Application/LEACH instproc decideClusterHead {} {   global ns_ chan opt node_...
  • chenkai619
  • chenkai619
  • 2012年03月24日 14:36
  • 1049

ns-leach.tcl 分析1

由leach 分析3可知,一般节点的应用为Application/LEACH。则现在就是如何选择簇头节点和设置门槛值。 我们接下来分析leach 分析4中红色的方法。在leach 分析3中创建一个A...
  • chenkai619
  • chenkai619
  • 2012年03月22日 11:52
  • 1099

ns-leach.tcl

leach的仿真部分,有bug,每个节点所带能量2J,100个节点,最后能量大于200J,需要修改ns-leach.tcl部分, 183行: 655行: 修改之后总能量不会超过200J,不过怎么看...
  • tianshide851049708
  • tianshide851049708
  • 2014年03月12日 19:45
  • 677

算法设计与分析基础(第3版)读书笔记(及几处翻译上的错误~~)

算法设计与分析基础(第3版) p16 in-place翻译为‘在位’?‘就地’更合适点p38 amortized应翻译为‘均摊’,‘摊销’这个词简直莫名其妙(可能因为翻译是做算法...
  • cteng
  • cteng
  • 2015年02月02日 11:19
  • 1226

信号完整性分析系列——1基本概念

1.信号完整性(Signal Integrity):就是指电路系统中信号的质量,如果在要求的时间内,信号能不失真地从源端传送到接收端,我们就称该信号是完整的。2.传输线(Transmission Li...
  • lh1611
  • lh1611
  • 2010年07月14日 10:46
  • 1136

魔兽争霸3-游戏简单剖析 No.1 单位

注意,单位分为士兵、建筑、英雄、特殊(不过所有的单位都共用一个类)类细分为分为 技能、科技树、路径、声音、文本、显示、移动、战斗、状态这9个方面。 技能分为 技能 默认主动技能 - 可选择(默认释放...
  • linglian0522
  • linglian0522
  • 2017年07月26日 06:50
  • 338

优化3——数据库语句分析

人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS...
  • u010796790
  • u010796790
  • 2016年08月12日 20:24
  • 276

squid源码分析3—purge流程分析

分类: PURGE操作 Squid接受一种客户请求方式,用于删除cache对象。PURGE方式并非官方HTTP请求方式之一。它与DELETE不同,对后者,s...
  • adamska0104
  • adamska0104
  • 2016年03月30日 12:08
  • 333

ArcGIS水文分析实战教程(3)DEM数据准备

GIS与水文分析(3)DEM数据准备 ArcGIS的水文分析工具需要DEM数据才能执行,因此在使用之前必须要准备好DEM数据并且针对DEM数据进行预处理。本章节内容介绍如何根据已有的数据制作和处理...
  • liyuanxiang1984
  • liyuanxiang1984
  • 2017年06月21日 23:12
  • 4551

一些程序段分析(2)

程序段3:以下代码编译时会产生错误的是哪条语句? #include using namespace std; struct Foo { Foo() {} Foo(int) {} ...
  • JIEJINQUANIL
  • JIEJINQUANIL
  • 2016年07月02日 15:23
  • 335
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ns-leach.tcl 分析3
举报原因:
原因补充:

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