Kelton et al. (2014). Simio and Simulation: Modeling, Analysis, Applications (3rd Ed.)

Chapter 5: Problems 1, 2, 3, 4 & 5

5.1) An object property is an input value or distribution of values specified when an object is instantiated, for example, a source object’s interarrival time. An object state is a dynamic value that changes as a model executes, for example, the busy/idle status of a server.

5.2) A token’s parent object is the instance of the object in which the process is defined. A token’s associated object is a related object distinct from the parent object that triggers execution of the process.

5.3)

Problem 5.3 model design

Problem 5.3 model design

Problem 5.3 results of 25 replications each with length 1200 hours and a 200 hour warm-up period

Problem 5.3 results of 25 replications each with length 1200 hours and a 200 hour warm-up period

5.4)

As shown below, the half-widths for the 95% confidence interval on the average time spent by customers in the drivers’ license office system decrease by a factor of roughly \(\sqrt{n}\) for each increase in \(n\) times as many replications. The appropriate number of replications to perform in this case depends on one’s preferences or needs with regard to the precision of the resulting estimates of the performance metrics of interest. An experiment with 1000 replications of the 8-hour long business day in the office system executed in 24.7 seconds on my machine and produced an estimate of average time in system with a 95% confidence interval width under one minute, which seemed like a reasonable tradeoff between precision and runtime in this case.

res <- data.frame(replications = c(10, 25, 50, 100, 200, 300, 400, 500, 1000),
                  avg_time_in_system = c(37.2818, 39.2450, 39.7799, 
                                         39.9207, 40.8356, 40.9808, 
                                         40.7400, 40.6820, 40.5599),
                  half_width = c(3.9656, 2.6900, 1.8699, 
                                 1.3096,1.0555, 0.9029, 
                                 0.7653, 0.6762, 0.4923))

knitr::kable(res, caption = "Average time in system results versus number of replications")
Average time in system results versus number of replications
replications avg_time_in_system half_width
10 37.2818 3.9656
25 39.2450 2.6900
50 39.7799 1.8699
100 39.9207 1.3096
200 40.8356 1.0555
300 40.9808 0.9029
400 40.7400 0.7653
500 40.6820 0.6762
1000 40.5599 0.4923
par(mfrow = c(1, 2))
plot(avg_time_in_system ~ replications, data = res, type = "b")
plot(half_width ~ replications, data = res, type = "b" )

Results of 1000 replications of a simulated 8-hour day at DMV office

Results of 1000 replications of a simulated 8-hour day at DMV office

SMORE plot for average time in system from 1000 replications

SMORE plot for average time in system from 1000 replications

5.5)

DMV office animation

DMV office animation