⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analyse-end-to-end.tcl

📁 采用蚂蚁算法实现ad hoc网络路由协议,平台为ns2
💻 TCL
字号:
package require structpackage require counterpackage require math::statistics::struct::matrix sendtimessendtimes add row::struct::matrix recvtimesrecvtimes add rowproc do_line {line} {    global sendtimes recvtimes    regexp " -t (.*?) " $line match time    if {[regexp {^(.).*-Nl AGT.*-Is (\S*?) -Id (\S*?).*-Il (\S*?).*-Ii (\S*?)} $line match \	    operation source dest lengthBytes id\	    ]} {	if {$operation=="r"} {	    if {[recvtimes get cell $id 0]==""} {		recvtimes set cell $id 0 $time	    }	}	if {$operation=="s"} {	    while {[sendtimes columns] <= $id} {		sendtimes add columns 100		recvtimes add columns 100	    }		    sendtimes set cell $id 0 $time	}    }}set trace_file [open [lindex $argv 0] r]while {[gets $trace_file line]!=-1} {    do_line $line}close $trace_fileset sendTimeList [sendtimes get row 0]set recvTimeList [recvtimes get row 0]::counter::init latencyDistribution -hist2x 0.01set latencyList {}set latencyTotal 0.0set deliveredPackets 0foreach send $sendTimeList recv $recvTimeList {        if {$send!="" && $send>0  && $recv>0} {	    set latency [expr $recv-$send]	    lappend latencyList $latency	    ::counter::count latencyDistribution $latency 	    set latencyTotal [expr $latencyTotal + $latency]	    incr deliveredPackets#		printf "%d, %f, %f, %f, %f, %d, %f\n", $i, $sendTime[$i], #			$recvTime[$i], $recvTime[$i]-$sendTime[$i], #			$latencyTotal, $deliveredPackets, #			($latencyTotal/$deliveredPackets);        }}if {$deliveredPackets>0} {    set avgLatency [expr $latencyTotal / $deliveredPackets]    puts "#LATENCY: $avgLatency over $deliveredPackets delivered. $latencyTotal"}set b1 [::math::statistics::basic-stats $latencyList]foreach label {mean min max number stdev var} v1 $b1 {   puts "#$label\t$v1"}array set histogramArgs [::counter::get latencyDistribution -all]set buckets [::counter::get latencyDistribution -hist]set min 0set max $histogramArgs(bucketsize)set mult $histogramArgs(mult)puts "#BucketMin BucketMax BucketCentre Value"foreach {index value} $buckets {    puts "$min $max [expr ($min+$max)/2] $value"    set min $max    set max [expr $max * $mult]}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -