simEd (Simulation Education)

This package contains various functions to be used for simulation education, including simple Monte Carlo simulation functions, queueing simulation functions, variate generation functions capable of producing independent streams and antithetic variates, functions for illustrating random variate generation for various discrete and continuous distributions, and functions to compute time-persistent statistics. The package also contains two queueing data sets (one fabricated, one real-world) to facilitate input modeling.

Request From Authors: If you adopt and use this package for your simulation course, we would greatly appreciate were you to email us (blawson<at>richmond<dot>edu or leemis<at>math<dot>wm<dot>edu) to let us know, as we would like to maintain a list of adopters. Please include your name, university/affiliation, and course name/number. Thanks!

Example

This is an example showing use of the ssq function in our package to simulate a simple M/M/1 queue, passing in a custom exponential interarrival function defined using our vexp variate generator, and then plotting the number in the system across time, with superimposed time-averaged statistics computed using meanTPS and sdTPS:

## ssq example code
library(simEd)
myArrFcn <- function() { vexp(1, rate = 1 / 0.95, stream = 1) }
output <- ssq(maxArrivals = 100, seed = 8675309, interarrivalFcn = myArrFcn,
              saveNumInSystem = TRUE, showOutput = FALSE)
avg <- meanTPS(output$numInSystemT, output$numInSystemN)
sd <- sdTPS(output$numInSystemT, output$numInSystemN)
plot(output$numInSystemT, output$numInSystemN, type = "s", main = "M/M/1 Queue",
     bty = "l", las = 1, xlab = "time", ylab = "number in system")
abline(h = avg, lwd = 2, col = "red")
abline(h = c(avg - sd, avg + sd), lwd = 2, lty = "dotted", col = "red")

Installing

Install the current version of simEd from CRAN using install.packages("simEd").

Note that the simEd package depends on Josef Leydold’s rstream package, a wrapper of Pierre L’Ecuyer’s “mrg32k3a” random number generator, to provide independent streams of uniform(0,1) random numbers. If the rstream package is not already installed, the previous step will install rstream automatically.

Details

The goal of this package is to facilitate use of R for an introductory course in discrete-event simulation.

This package contains variate generators capable of independent streams (based on Josef Leydold’s rstream package) and antithetic variates for two discrete and five continuous distributions:

All of the variate generators use inversion, and are therefore monotone and synchronized.

The package contains functions to visualize variate generation for the same two discrete and five continuous distributions:

The package contains functions that implement Monte Carlo simulation approaches for estimating probabilities in two different dice games:

The package also contains functions that are event-driven simulation implementations of a single-server single-queue system and of a multiple-server single-queue system:

Both queueing functions are extensible in allowing the user to provide custom arrival and service process functions.

The package contains three functions for computing time-persistent statistics:

The package also masks two functions from the stats package:

Finally, the package provides two queueing data sets to facilitate input modeling: