simmer: un simulador de eventos discretos para R

R es un maravilloso lenguaje de programación principalmente enfocado a la estadística y la representación de datos que utilizo en mi día a día, tanto en mis labores de investigación como de docencia, aunque no me prodigo mucho al respecto por aquí. Al mismo tiempo, la simulación por eventos discretos, una de las técnicas por excelencia en mi campo (y otros, y a la cual dedico mis horas de docencia), no tenía hasta ahora representación en el universo R. Y digo hasta ahora porque, gracias al esfuerzo de Bart Smeets y el mío propio, el CRAN (Comprehensive R Archive Network, el repositorio oficial de paquetes de R) ya cuenta con simmer, un simulador de eventos discretos para R.

El paquete simmer es un proyecto creado originalmente por Bart al que yo me he unido como colaborador y ahora también mantenedor del paquete. Si alguien está interesado, lo puede instalar directamente desde CRAN con el instalador de paquetes de R o aquí tiene el repositorio de GitHub con las últimas novedades. Sugerencias y reportes de bugs, también en GitHub.

Aquí un pequeño ejemplo de funcionamiento (una introducción de uso más extensa puede encontrarse aquí):

[code language=»r»]
library(simmer)

coffees <- list(
espresso =function() runif(1, min=5, max=10),
macchiato=function() runif(1, min=6, max=12),
americano=function() runif(1, min=3, max=8)
)
coffee_prep_duration <- function()
sample(coffees, 1)[[1]]()

coffee_trajectory <- create_trajectory("I want coffee!") %>%
seize("barista", 1) %>%
timeout(coffee_prep_duration) %>%
release("barista", 1)

env <- simmer("coffee shop") %>%
add_resource("barista", 2) %>%
add_generator("caffeine addict",
coffee_trajectory,
function() abs(rnorm(1, 5, 2))) %>%
run(until=480)

plot_evolution_arrival_times(env, type = "flow_time")
[/code]

simmer