-
Notifications
You must be signed in to change notification settings - Fork 0
/
Lista5_4.R
65 lines (61 loc) · 1.2 KB
/
Lista5_4.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
t.end <- 10^5
t.clock <- 0
Ta <- 1.3333
Ts <- 1.0000
t1 <- 0
t2 <- t.end
tn <- t.clock
tb <- 0
n <- 0
s <- 0
b <- 0
c <- 0
qc <- 0
tc <- 0
plotSamples <- 100
set.seed(1)
while (t.clock < t.end){
if (t1 < t2){
t.clock <- t1
s <- s + n * (t.clock - tn)
n <- n + 1
if (t.clock < plotSamples){
qc <- append(qc, n)
tc <- append(tc, t.clock)
}
tn <- t.clock
t1 <- t.clock + rexp(1, 1/Ta)
if (n == 1){
tb <- t.clock
t2 <- t.clock + rexp(1, 1/Ts)
}
}else{
t.clock <- t2
s <- s + n * (t.clock - tn)
n <- n - 1
if (t.clock < plotSamples){
qc <- append(qc, n)
tc <- append(tc, t.clock)
}
tn <- t.clock
c <- c + 1
if (n > 0){
t2 <- t.clock + rexp(1, 1/Ts)
}else{
t2 <- t.end
b <- b + t.clock - tb
}
}
}
u <- b / t.clock
N <- s / t.clock
x <- c / t.clock
r <- N / x
q <- sum(qc) / max(tc)
print(u)
print(x)
print(r)
print(q)
plot(qc, type = 'S', xlim = c(0, plotSamples), ylim = c(0, 6), xlab = NA, ylab = NA)
lines(rep(1.7845, 153), type = 'S', col = "red")
title("M/M/1 Simulation", xlab = "Time", ylab = "Instantaneous queue length")