Find all five the steady-state queueing metrics for an M/D/1 queue, where \(D\) denotes a deterministic “distribution,”, i.e., the associated \(RV\) (in this case representing service time) is a constant with no variation at all (also called a degenerate distribution).
State parameter conditions for your results to be valid; use the same meaning for \(\lambda\), \(\mu\), and $ as we did in this chapter. Compare your results to those if \(D\) were repalced by a distribution with the mean equal to the constant value from the original \(D\) distribution, except having at least some variation.
Note. For this problem, the arrival rate and service rates are applied from Ch. 4 Problem #15.
\(\lambda\) = arrival rate
\(\mu\) = service rate
\(\rho\) = utilization = \(\lambda\)/\(\mu\)
\(L\) = average number of entities in the system, given by:
\[L = \rho + \frac{1}{2}\left(\frac{\rho^2}{1 - \rho}\right)\]
\(L_q\) = the average number of entities in the queue, given by:
\[L_q = \frac{1}{2}\left(\frac{\rho^2}{1 - \rho}\right)\]
\(W\) = the average waiting time in the system, given by:
\[W = \frac{1}{\mu} + \left(\frac{\rho}{2\mu(1 - \rho)}\right)\] \(Wq\) = the average waiting time in the queue, given by:
\[W_q = \frac{\rho}{2\mu(1 - \rho)}\]
MD1 <- function(lambda, mu, label) {
rho <- lambda/mu
L <- rho + (rho^2)/(2*(1-rho))
Lq <- 1/2*(rho^2/(1-rho))
W <- 1/mu + (rho/(2*mu*(1-rho)))
Wq = rho/(2*mu*(1-rho))
return (data.frame(label = label,
lambda = lambda,
mu = mu,
W = W,
Wq = Wq,
L = L,
Lq = Lq,
rho = rho))
}
MD1_result <- MD1(1, 1/0.9, 'M/D/1')
We can compare the result above to the function previously created for an M/G/1 queue (Assignment #2). Since the associated RV in the M/D/1 queue is constant, the standard deviation \(\sigma\) in the M/G/1 queue will be zero.
MG1 <- function(lambda, mu, sd, label) {
rho <- lambda/mu
Wq <- lambda*(sd^2+1/(mu)^2)/(2*(1-lambda/mu))
W <- Wq + 1/mu # + mean_service_time
L <- lambda * W
Lq <- lambda * Wq
return (data.frame(label = label,
lambda = lambda,
mu = mu,
W = W,
Wq = Wq,
L = L,
Lq = Lq,
rho = rho))
}
MG1_result <- MG1(1, 1/0.9, 0, 'M/G/1')
label | lambda | mu | W | Wq | L | Lq | rho |
---|---|---|---|---|---|---|---|
M/D/1 | 1 | 1.111111 | 4.95 | 4.05 | 4.95 | 4.05 | 0.9 |
M/G/1 | 1 | 1.111111 | 4.95 | 4.05 | 4.95 | 4.05 | 0.9 |
Let’s introduce some variation into the original \(D\) distribution.
MG1_var_result <- MG1(1, 1/0.9, 0.25, 'M/G/1-var')
label | lambda | mu | W | Wq | L | Lq | rho |
---|---|---|---|---|---|---|---|
M/G/1 | 1 | 1.111111 | 4.9500 | 4.0500 | 4.9500 | 4.0500 | 0.9 |
M/G/1-var | 1 | 1.111111 | 5.2625 | 4.3625 | 5.2625 | 4.3625 | 0.9 |
Build a Simio model to confirm and cross-check the steady-state queueing-theoretic results from your solutions to the M/D/1 queue of Problem 9 in the Chapter 2.
\(\lambda\) = 1 per minute
\(\mu\) = 1/0.9 per minute
Source Node: Interarrival Time = Random.Exponential(1)
Server Node: Processing Time = Random.Discrete(0.9, 1)
Warm-up Period: = 24 hours
Execution time: = 4 weeeks (672 hours)
4 Experiments:
1. 3 Replications
2. 10 Replications
3. 50 Replications
4. 100 Replications
Using a 95% confidence interval, we can be confident that the true mean of 5 metrics are as follows based on the number of replications:
Theoretical Calculation: \(L\) = 4.95
Theoretical Calculation: \(L_q\) = 4.05
Theoretical Calculation: \(W\) = 4.95
Theoretical Calculation: \(W_q\) = 4.05
Theoretical Calculation: \(\rho\) = 90 (%)