Hi everyone

I want to implement the Finite Queuing in NS-2 
according to the formula the Throughput can be calculated as 

Throughput = lambda(1-Pk)  // k is the queue length
and Pk = (e^k)*Po
and P0 = (1-e)/(1-e^(k+1)) 
which i have implemented in this code

if queue size is 2 then
throughput = 0.010144

Is it possible I can get the nearest of this value without using Random 
Variable ?
What Should I do ?
How to cancel the effect of random variable in the following code 

Kindly Help me .............. It shall be greatly appreciated ............. 
In the given below i have provided the code ......... 

set ns [new Simulator]

set tf [open out.tr w]
$ns trace-all $tf

set lambda     30.0
set mu        33.0
set qsize    2
set duration    200

set n1 [$ns node]
set n2 [$ns node]
set link [$ns simplex-link $n1 $n2 100kb 0ms DropTail]
$ns queue-limit $n1 $n2 $qsize

# generate random interarrival times and packet sizes
set InterArrivalTime [new RandomVariable/Exponential]
$InterArrivalTime set avg_ [expr 1/$lambda]
#line edited below one
#set pktSize 100
set pktSize [new RandomVariable/Exponential]
$pktSize set avg_ [expr 100000.0/(8*$mu)]

set src [new Agent/UDP]
$src set packetSize_ 100000
$ns attach-agent $n1 $src

# queue monitoring
set qmon [$ns monitor-queue $n1 $n2 [open qm.out w] 0.1]
$link queue-sample-timeout

proc finish {} {
    global ns tf
    $ns flush-trace
    close $tf
    exit 0
}

proc th_put {} {
    global qsize InterArrivalTime
    
    set eps 2.718281828
    
    set qsize1      [expr $qsize +1]
    set eps_qsize1    [expr pow($eps,$qsize1)]
    set eps_qsize    [expr pow($eps, $qsize)]
    set p0_1    [expr 1-$eps]
    set p0_2    [expr 1-$eps_qsize1]
    
    set p0        [expr $p0_1/$p0_2]
    set pk        [expr $eps_qsize*$p0]
    
    for {set i 1} {$i<= 10} {incr i} {
        set iat         [$InterArrivalTime value]
        puts " ====== IATe --> $iat ======= " 
    # Throughput
    set t_put     [expr [expr 1 - $pk]* $iat]
    puts "Throughput  =    $t_put"

    # Response Time
    set res_time     [expr $qsize1 / $t_put]
    puts "Response Time = $res_time"    
     } 

}


proc sendpacket {} {
    global ns src InterArrivalTime pktSize
    set time [$ns now]
    $ns at [expr $time + [$InterArrivalTime value]] "sendpacket"
    #edited line below one
    #set bytes $pktSize
    set bytes [expr round ([$pktSize value])]
    $src send $bytes
}

set sink [new Agent/Null]
$ns attach-agent $n2 $sink
$ns connect $src $sink
$ns at 0.0001 "sendpacket"
$ns at 190 "th_put"
$ns at $duration "finish"


############################################################################
puts ""
puts "===========================Testing===================================="
puts "Processing ... "
$ns run


Engr. Mahmood Qureshi
HEC Scholar
Graduate Student: Computer Engineering
Myongji University, South-Korea
San 38-2
Nam-Dong
Yong-in
Gyunggi-Do (449-728)
South Korea
Mobile No. : +82-10-2891-7096
       
---------------------------------
Looking for last minute shopping deals?  Find them fast with Yahoo! Search.

Reply via email to