For an \(M/M/1\) queue with mean interarrival time 1.25 minutes and mean service time 1 minute, find all the five of \(W_q,\: W,\: L_q,\: L,\: and \: \rho\). For each, interpret in words. Be sure to state all of your units (always!), and the relevant time frame of operation.
m_int <- 1.25 # Mean interval Time
m_serv <- 1 # Mean Service Time
c <- 1 # Number of server($M/M/1$ queue)
lambda <- 1 / m_int # Mean rate of arrival (lambda)
mu <- 1 / m_serv # Mean service rate (mu)
rho <- lambda / mu # Utilization of the server
W_q <- rho / (mu * (1 - rho)) # Mean wait in the queue
W <- 1 / (mu * (1 - rho)) # Mean wait in the system
L_q <- rho^2 / (1 - rho) # Mean number of customers in the queue
L <- rho / (1 - rho) # Mean number of customers in the system
\(W_q\) = 4
\(W\) = 5
\(L_q\) = 3.2
\(L\) = 4
\(\rho\) = 0.8
a <- 0.1
b<- 1.9
sd <- sqrt((b - a)^2 / 12)
var <- sd^2 # Variance of service time
m_serv <- (a + b) / 2
mu <- 1 / m_serv
rho <- lambda / mu
W_q <- (lambda * (var + 1 / mu^2)) / (2 * (1 - lambda/mu))
W <- W_q + m_serv
L_q <- lambda * W_q
L <- lambda * W
\(W_q\) = 2.54
\(W\) = 3.54
\(L_q\) = 2.032
\(L\) = 2.832
\(\rho\) = 0.8
With uniform distribution the numbers in both system and queue has dropped. Less wait time for service.
m <- 1
sd <- sqrt((a^2 + m^2 + b^2 -a*m -a*b - b*m) / 18)
var <- sd^2
m_serv <- (a + m + b) / 3
rho <- lambda / mu
W_q <- (lambda * (var + 1 / mu^2)) / (2 * (1 - lambda/mu))
W <- W_q + m_serv
L_q <- lambda * W_q
L <- lambda * W
\(W_q\) = 2.27
\(W\) = 3.27
\(L_q\) = 1.816
\(L\) = 2.616
\(\rho\) = 0.8
Triangular method achieves the lowest numbers in both system and queue. The wait time is the least out of all three.
m_int <- 1.25
m_serv <- 3
c <- 3 # Number of server(M/M/3 queue)
m <- c(0:(c-1))
p0 <- 1 / (sum((c * rho)^m / factorial(m)) + (c * rho)^c / (factorial(c) * (1- rho))) # Probability that there are 0 customers in the system
lambda <- 1 / m_int
mu <- 1 / m_serv
rho <- lambda / (c * mu)
L_q <- (p0 * (lambda / mu)^c * rho) / ((factorial(c) * (1 - rho)^2))
L <- L_q + lambda / mu
W_q <- L_q / lambda
W <- W_q + 1 / mu
\(W_q\) = 3.2359551
\(W\) = 6.2359551
\(L_q\) = 2.588764
\(L\) = 4.988764
\(\rho\) = 0.8
Service time increased at the same times as the servers (3X), behaves almost the same as 1.
# Sign In
m_int <- 6
m_serv <- 3
c <- 2
lambda <- 1/m_int
mu <- 1 / m_serv
rho <- lambda / (c * mu)
m <- c(0:(c-1))
p0 <- 1 / (sum((c * rho)^m / factorial(m)) + (c * rho)^c / (factorial(c) * (1- rho)))
L_q <- round(((p0 * (lambda / mu)^c * rho) / ((factorial(c) * (1 - rho)^2))),2)
L <- round((L_q + lambda / mu), 2)
W_q <- round((L_q / lambda) ,2)
W <- round((W_q + 1 / mu), 2)
si <- c("Sign In", W_q, W, L_q, L, rho)
# Registration
m_serv <- 5
c <- 1
lambda_r <- 0.9 * lambda
mu <- 1 / m_serv
rho <- lambda_r / (c * mu)
m <- c(0:(c-1))
p0 <- 1 / (sum((c * rho)^m / factorial(m)) + (c * rho)^c / (factorial(c) * (1- rho)))
L_q <- round(((p0 * (lambda_r / mu)^c * rho) / ((factorial(c) * (1 - rho)^2))),2)
L <- round((L_q + lambda_r / mu), 2)
W_q <- round((L_q / lambda_r) ,2)
W <- round((W_q + 1 / mu), 2)
r <- c("Registration", W_q, W, L_q, L, rho)
# Trauma Rooms
m_serv <- 90
c <- 2
lambda_t <- 0.1 * lambda
mu <- 1 / m_serv
rho <- lambda_t / (c * mu)
m <- c(0:(c-1))
p0 <- 1 / (sum((c * rho)^m / factorial(m)) + (c * rho)^c / (factorial(c) * (1- rho)))
L_q <- round(((p0 * (lambda_t / mu)^c * rho) / ((factorial(c) * (1 - rho)^2))),2)
L <- round((L_q + lambda_t / mu), 2)
W_q <- round((L_q / lambda_t) ,2)
W <- round((W_q + 1 / mu), 2)
tr <- c("Trauma Rooms", W_q, W, L_q, L, rho)
# Exam Rooms
m_serv <- 16
c <- 3
lambda_e <- 0.9 * lambda
mu <- 1 / m_serv
rho <- lambda_e / (c * mu)
m <- c(0:(c-1))
p0 <- 1 / (sum((c * rho)^m / factorial(m)) + (c * rho)^c / (factorial(c) * (1- rho)))
L_q <- round(((p0 * (lambda_e / mu)^c * rho) / ((factorial(c) * (1 - rho)^2))),2)
L <- round((L_q + lambda_e / mu), 2)
W_q <- round((L_q / lambda_e) ,2)
W <- round((W_q + 1 / mu), 2)
er <- c("Exam Rooms", W_q, W, L_q, L, rho)
# Treatment Rooms
m_serv <- 15
c <- 2
lambda_t2 <- 0.9 * 0.6 * lambda + 0.1 * lambda
mu <- 1 / m_serv
rho <- lambda_t2 / (c * mu)
m <- c(0:(c-1))
p0 <- 1 / (sum((c * rho)^m / factorial(m)) + (c * rho)^c / (factorial(c) * (1- rho)))
L_q <- round(((p0 * (lambda_t2 / mu)^c * rho) / ((factorial(c) * (1 - rho)^2))),2)
L <- round((L_q + lambda_t2 / mu), 2)
W_q <- round((L_q / lambda_t2) ,2)
W <- round((W_q + 1 / mu), 2)
tr2 <- c("Treatment Rooms", W_q, W, L_q, L, rho)
hd <- c("Queue", "W-q", "W", "L_q", "L", "rho")
df = data.frame(hd, si, r, tr, er, tr2)
names(df) <- c(" ", " ", " ", " ", " ", " ")
knitr::kable(df)
| Queue | Sign In | Registration | Trauma Rooms | Exam Rooms | Treatment Rooms |
| W-q | 0.18 | 15 | 115.8 | 17.27 | 26.62 |
| W | 3.18 | 20 | 205.8 | 33.27 | 41.62 |
| L_q | 0.03 | 2.25 | 1.93 | 2.59 | 2.84 |
| L | 0.53 | 3 | 3.43 | 4.99 | 4.44 |
| rho | 0.25 | 0.75 | 0.75 | 0.8 | 0.8 |
System is stable( \(\rho\) < 1), Treatment room may use another server.