fake_world

5

Dec 6th, 2019
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 7.05 KB | None | 0 0
  1. # This script is created by NSG2 beta1
  2. # <http://wushoupong.googlepages.com/nsg>
  3.  
  4. #===================================
  5. #     Simulation parameters setup
  6. #===================================
  7. set val(chan)   Channel/WirelessChannel    ;# channel type
  8. set val(type)   GSM            ;# type of network (added)
  9. set val(prop)   Propagation/TwoRayGround   ;# radio-propagation model
  10. set val(netif)  Phy/WirelessPhy            ;# network interface type
  11. set val(mac)    Mac/802_11                 ;# MAC type
  12. set val(ifq)    Queue/DropTail/PriQueue    ;# interface queue type
  13. set val(ll)     LL                         ;# link layer type
  14. set val(ant)    Antenna/OmniAntenna        ;# antenna model
  15. set val(ifqlen) 50                         ;# max packet in ifq
  16. set val(nn)     10                         ;# number of mobilenodes
  17. set val(rp)     DSDV                       ;# routing protocol
  18. set val(x)      838                      ;# X dimension of topography
  19. set val(y)      502                      ;# Y dimension of topography
  20. set val(stop)   50.0                         ;# time of simulation end(changed from 10 to 50)
  21.  
  22.  
  23. ####################################
  24. #   Creating file for graph           (added 3 lnes)
  25. ####################################
  26.  
  27. set f0 [open throughput.tr w]
  28. set f1 [open lost.tr w]
  29. set f2 [open delay.tr w]
  30.  
  31. #===================================
  32. #        Initialization        
  33. #===================================
  34. #Create a ns simulator
  35. set ns [new Simulator]
  36.  
  37. #Setup topography object
  38. set topo       [new Topography]
  39. $topo load_flatgrid $val(x) $val(y)
  40. create-god $val(nn)
  41.  
  42. #Open the NS trace file
  43. set tracefile [open 5.tr w]
  44. $ns trace-all $tracefile
  45.  
  46. #Open the NAM trace file
  47. set namfile [open 5.nam w]
  48. $ns namtrace-all $namfile
  49. $ns namtrace-all-wireless $namfile $val(x) $val(y)
  50. set chan [new $val(chan)];#Create wireless channel
  51.  
  52. #===================================
  53. #     Mobile node parameter setup
  54. #===================================
  55. $ns node-config -adhocRouting  $val(rp) \
  56.                 -llType        $val(ll) \
  57.                 -macType       $val(mac) \
  58.                 -ifqType       $val(ifq) \
  59.                 -ifqLen        $val(ifqlen) \
  60.                 -antType       $val(ant) \
  61.                 -propType      $val(prop) \
  62.                 -phyType       $val(netif) \
  63.                 -channel       $chan \
  64.                 -topoInstance  $topo \
  65.                 -agentTrace    ON \
  66.                 -routerTrace   ON \
  67.                 -macTrace      ON \
  68.                 -movementTrace ON
  69.  
  70. #===================================
  71. #        Nodes Definition        
  72. #===================================
  73. #Create 10 nodes
  74. set n0 [$ns node]
  75. $n0 set X_ 198
  76. $n0 set Y_ 402
  77. $n0 set Z_ 0.0
  78. set X1(0) 210
  79. set Y1(0) 420
  80. $ns initial_node_pos $n0 20
  81. set n1 [$ns node]
  82. $n1 set X_ 343
  83. $n1 set Y_ 398
  84. $n1 set Z_ 0.0
  85. set X1(1) 330
  86. set Y1(1) 410
  87. $ns initial_node_pos $n1 20
  88. set n2 [$ns node]
  89. $n2 set X_ 470
  90. $n2 set Y_ 402
  91. $n2 set Z_ 0.0
  92. set X1(2) 480
  93. set Y1(2) 412
  94. $ns initial_node_pos $n2 20
  95. set n3 [$ns node]
  96. $n3 set X_ 611
  97. $n3 set Y_ 400
  98. $n3 set Z_ 0.0
  99. set X1(3) 621
  100. set Y1(3) 390
  101. $ns initial_node_pos $n3 20
  102. set n4 [$ns node]
  103. $n4 set X_ 732
  104. $n4 set Y_ 398
  105. $n4 set Z_ 0.0
  106. set X1(4) 744
  107. set Y1(4) 408
  108. $ns initial_node_pos $n4 20
  109. set n5 [$ns node]
  110. $n5 set X_ 738
  111. $n5 set Y_ 218
  112. $n5 set Z_ 0.0
  113. set X1(5) 750
  114. set Y1(5) 238
  115. $ns initial_node_pos $n5 20
  116. set n6 [$ns node]
  117. $n6 set X_ 604
  118. $n6 set Y_ 206
  119. $n6 set Z_ 0.0
  120. set X1(6) 624
  121. set Y1(6) 196
  122. $ns initial_node_pos $n6 20
  123. set n7 [$ns node]
  124. $n7 set X_ 472
  125. $n7 set Y_ 191
  126. $n7 set Z_ 0.0
  127. set X1(7) 484
  128. set Y1(7) 202
  129. $ns initial_node_pos $n7 20
  130. set n8 [$ns node]
  131. $n8 set X_ 347
  132. $n8 set Y_ 182
  133. $n8 set Z_ 0.0
  134. set X1(8) 358
  135. set Y1(8) 193
  136. $ns initial_node_pos $n8 20
  137. set n9 [$ns node]
  138. $n9 set X_ 204
  139. $n9 set Y_ 181
  140. $n9 set Z_ 0.0
  141. set X1(9) 194
  142. set Y1(9) 195
  143. $ns initial_node_pos $n9 20
  144.  
  145.  
  146. ####################################
  147. #    Calculating distance
  148. ####################################
  149. set m 0
  150. for { set i 0} {$i<$val(nn)} {incr i} {
  151.      set k 0
  152.    for {set j 0} {$j <  $val(nn)} {incr j} {
  153.    set a [expr $X1($j)- $X1($i)]
  154.    set b [expr $a*$a]
  155.    set c [expr $Y1($j)-$Y1($i)]
  156.    set d [expr $c*$c]
  157.    set e [expr $b+$d]
  158.    set f 0.5
  159.    set g [expr pow($e,$f)]
  160.  if { $g <=200 && $i !=$j} {
  161.    puts "| node($i) | node($j) |"
  162. set nei($m) $j
  163. set k [expr $k+1]
  164. set m [expr $m+1]
  165. }
  166. }
  167. }
  168.  
  169. #===================================
  170. #        Agents Definition        
  171. #===================================
  172. #Setup a UDP connection
  173. set udp0 [new Agent/UDP]
  174. $ns attach-agent $n0 $udp0
  175. set sink [new Agent/LossMonitor]
  176. $ns attach-agent $n7 $sink
  177. $ns connect $udp0 $sink
  178. $udp0 set packetSize_ 1500
  179.  
  180.  
  181. #===================================
  182. #        Applications Definition        
  183. #===================================
  184. #Setup a CBR Application over UDP connection
  185. set cbr0 [new Application/Traffic/CBR]
  186. $cbr0 attach-agent $udp0
  187. $cbr0 set packetSize_ 1000
  188. $cbr0 set rate_ 1.0Mb
  189. $cbr0 set random_ null
  190.  
  191. ####################################
  192. #   Declare 3 Variable
  193. ####################################
  194. set holdtime 0
  195. set holdseq 0
  196. set holdrate1 0
  197. #===================================
  198. #        Recording        
  199. #===================================
  200. #Define a 'record' procedure
  201. proc record {} {
  202.     global sink f0 f1 f2 holdtime holdseq holdrate1
  203.     set nsi [Simulator instance]
  204.     set time 0.9
  205.     set bw0 [$sink set bytes_]
  206.     puts "$bw0"
  207.     set bw1 [$sink set nlost_]
  208.     set bw2 [$sink set lastPktTime_]
  209.     set bw3 [$sink set npkts_]
  210.     set now [$nsi now]
  211.    
  212.    
  213.     puts $f0 "$now [expr (($bw0+ $holdrate1)*8)/(2*$time*1000000)]"
  214.  
  215.     puts $f1 "$now [expr $bw1/$time]"
  216.  
  217.     if { $bw3 > $holdseq } {
  218.             puts $f2 "$now [expr ($bw2 -$holdtime)/($bw3-$holdseq)]"
  219.          } else {
  220.             puts $f2 "$now [expr ($bw3-$holdseq)]"
  221.         }
  222.     $sink set bytes_ 0
  223.     $sink set nlost_ 0
  224.    
  225.     set holdtime $bw2
  226.     set holdseq $bw3
  227.     set holdrate1 $bw0
  228.     $nsi at [expr $now+$time] "record"
  229.  }
  230.    
  231.    
  232. $ns at 0.0 "record"
  233. $ns at 1.0 "$cbr0 start"
  234. $ns at 50.0 "$cbr0 stop"
  235. $ns at 2.0 "$n0 setdest 400 300 20"
  236. $ns at 2.0 "$n1 setdest 420 360 30"
  237. $ns at 2.0 "$n2 setdest 300 290 20"
  238. $ns at 2.0 "$n3 setdest 535 400 50"
  239. $ns at 2.0 "$n4 setdest 600 423 30"
  240. $ns at 2.0 "$n5 setdest 756 355 20"
  241. $ns at 2.0 "$n6 setdest 503 260 30"
  242. $ns at 2.0 "$n7 setdest 660 180 50"
  243. $ns at 2.0 "$n8 setdest 700 364 20"
  244. $ns at 2.0 "$n9 setdest 800 368 20"
  245.  
  246.  
  247.  
  248. #===================================
  249. #        Termination        
  250. #===================================
  251. #Define a 'finish' procedure
  252. proc finish {} {
  253.     global ns tracefile namfile f0 f1 f2
  254.     $ns flush-trace
  255.     close $tracefile
  256.     close $namfile
  257.     close $f0
  258.     close $f1
  259.     close $f2
  260.     exec nam 5.nam &
  261.     exec xgraph throughput.tr &
  262.     exec xgraph lost.tr &
  263.     exec xgraph delay.tr &
  264.     exit 0
  265. }
  266. for {set i 0} {$i < $val(nn) } { incr i } {
  267.     $ns at $val(stop) "\$n$i reset"
  268. }
  269. $ns at $val(stop) "$ns nam-end-wireless $val(stop)"
  270. $ns at $val(stop) "finish"
  271. $ns at $val(stop) "puts \"done\" ; $ns halt"
  272. $ns run
Add Comment
Please, Sign In to add comment