Software

Para poder utilizar el código expuesto en estos materiales es necesario la instalación de los programas R (R Core Team 2021), que actúa como lenguaje de programación, y RStudio (RStudio Team 2019). que actúa como interfaz, y que se pueden descargar desde:

Para crear informes directos a partir del código utilizado al programar en R con RStudio se recomienda RMarkdown (Allaire et al. 2021).

A continuación se detallan brevemente las librerías especifícas de R utilizadas en este manual. Conviene tenerlas instaladas y actualizadas todas ellas. El conjunto de librerías útiles en Simulación de Procesos y Sistemas son:

  • tidyverse, en Wickham et al. (2019) y Wickham (2021): Es una colección de librerías en R para la ciencia de datos, que comparten una misma filosofía, gramática y estructuras de datos y facilita el tratamiento de datos. Para aprender a utilizar estas librerías es recomendable el libro R for Data Science de Wickham and Grolemund (2017), así como el manual de Grosser (2018).

  • simmer, en Ucar, Smeets, and Azcorra (2019), Ucar and Smeets (2021a), Ucar and Smeets (2021b): Es una librería R para la simulación de eventos discretos (DES) orientada a procesos. Diseñado para ser un marco genérico como SimPy o SimJulia, aprovecha la potencia de Rcpp para aumentar el rendimiento y hacer factible el DES en R. Como característica destacable, simmer explota el concepto de trayectoria: un camino común en el modelo de simulación para entidades del mismo tipo. Es bastante flexible y sencillo de utilizar, y aprovecha el flujo de trabajo de encadenamiento/conducción introducido por el paquete magrittr (Bache and Wickham (2022)). También utilizaremos las librerías vinculadas simmer.plot, simmer.optim, simmer.json, y simmer.mom.

  • markovchain (Spedicato et al. 2021): Librería de R que proporciona clases, métodos y funciones para manejar fácilmente las Cadenas de Markov de Tiempo Discreto (DTMC), realizando análisis probabilísticos y ajustes.

  • queueing (Canadilla 2019): Proporciona una herramienta versátil para el análisis de los modelos de colas markovianos basados en el nacimiento y la muerte y de las redes de colas monoclase y multiclase.

  • queuecomputer, en Ebert et al. (2020) y Ebert (2021): Implementación de un método computacionalmente eficiente para simular colas con tiempos de llegada y servicio arbitrarios.

Las versiones de las librerías de R utilizadas son las siguientes:

sessionInfo()
## R version 4.1.2 (2021-11-01)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Big Sur 10.16
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] es_ES.UTF-8/es_ES.UTF-8/es_ES.UTF-8/C/es_ES.UTF-8/es_ES.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.8           bslib_0.3.1          jquerylib_0.1.4     
##  [4] pillar_1.7.0         compiler_4.1.2       simmer_4.4.3        
##  [7] tools_4.1.2          digest_0.6.29        jsonlite_1.7.3      
## [10] evaluate_0.14        lifecycle_1.0.1      tibble_3.1.6        
## [13] gtable_0.3.0         pkgconfig_2.0.3      queueing_0.2.12     
## [16] rlang_1.0.1          DBI_1.1.2            cli_3.1.1           
## [19] rstudioapi_0.13      yaml_2.2.2           xfun_0.29           
## [22] fastmap_1.1.0        stringr_1.4.0        dplyr_1.0.7         
## [25] knitr_1.37           sass_0.4.0           generics_0.1.2      
## [28] vctrs_0.3.8          grid_4.1.2           tidyselect_1.1.1    
## [31] glue_1.6.1           R6_2.5.1             fansi_1.0.2         
## [34] bookdown_0.24        rmarkdown_2.11       ggplot2_3.3.5       
## [37] purrr_0.3.4          magrittr_2.0.2       scales_1.1.1        
## [40] codetools_0.2-18     ellipsis_0.3.2       htmltools_0.5.2.9000
## [43] assertthat_0.2.1     colorspace_2.0-2     utf8_1.2.2          
## [46] stringi_1.7.6        munsell_0.5.0        crayon_1.4.2

Cargamos las librerías de interés que utilizaremos en este manual.

# librerías
library(tidyverse)
library(simmer)
library(simmer.bricks)
library(simmer.plot)
library(diagram)
library(markovchain)
library(queueing)
library(queuecomputer)
library(rootSolve)
# Librerías de entorno gráfico
library(sjPlot)
library(gridExtra)
library(kableExtra) # y tablas

Configuramos además el tema de los gráficos para que tengan un aspecto más limpio y más fácil de exportar en formato pdf o word. Para ellos utilizamos la función theme_set().

theme_set(theme_sjplot2())

Manuales de referencia

Se recomiendan los siguientes manuales para trabajar con R, RStudio y las librerías proporcionadas:

References

Allaire, JJ, Yihui Xie, Jonathan McPherson, Javier Luraschi, Kevin Ushey, Aron Atkins, Hadley Wickham, Joe Cheng, Winston Chang, and Richard Iannone. 2021. Rmarkdown: Dynamic Documents for r. https://CRAN.R-project.org/package=rmarkdown.
Bache, Stefan Milton, and Hadley Wickham. 2022. Magrittr: A Forward-Pipe Operator for r. https://CRAN.R-project.org/package=magrittr.
Canadilla, Pedro. 2019. Queueing: Analysis of Queueing Networks and Models. https://www.r-project.org.
Childs, Dylan Z. 2019. APS 135: Introduction to Exploratory Data Analysis with r. https://dzchilds.github.io/eda-for-bio/.
Ebert, Anthony. 2021. Queuecomputer: Computationally Efficient Queue Simulation. https://github.com/AnthonyEbert/queuecomputer.
Ebert, Anthony, Paul Wu, Kerrie Mengersen, and Fabrizio Ruggeri. 2020. “Computationally Efficient Simulation of Queues: The R Package queuecomputer.” Journal of Statistical Software 95 (5): 1–29. https://doi.org/10.18637/jss.v095.i05.
Goicoa, Tomas. 2017. RMarkdown Básico. http://www.unavarra.es/personal/tgoicoa/ESTADISTICA_RMarkdown_tomas/basicRmarkdown/index.html.
Grosser, Malte. 2018. Tidyverse Cookbook. https://bookdown.org/Tazinho/Tidyverse-Cookbook/.
R Core Team. 2021. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
RStudio Team. 2019. RStudio: Integrated Development Environment for r. Boston, MA: RStudio, Inc. http://www.rstudio.com/.
Spedicato, Giorgio Alfredo, Tae Seung Kang, Sai Bhargav Yalamanchi, Deepak Yadav, and Ignacio Cordón. 2021. Markovchain: Easy Handling Discrete Time Markov Chains. https://github.com/spedygiorgio/markovchain/.
Ucar, Iñaki, and Bart Smeets. 2021a. “Simmer.” Web. https://doi.org/https://doi.org/10.18637/jss.v090.i02.
———. 2021b. Simmer: Discrete-Event Simulation for r. https://CRAN.R-project.org/package=simmer.
Ucar, Iñaki, Bart Smeets, and Arturo Azcorra. 2019. simmer: Discrete-Event Simulation for R.” Journal of Statistical Software 90 (2): 1–30. https://doi.org/10.18637/jss.v090.i02.
Wickham, Hadley. 2019. Advanced r, 2nd Edition. CRC Press. https://adv-r.hadley.nz/.
———. 2021. Tidyverse: Easily Install and Load the Tidyverse. https://CRAN.R-project.org/package=tidyverse.
Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D’Agostino McGowan, Romain François, Garrett Grolemund, et al. 2019. “Welcome to the tidyverse.” Journal of Open Source Software 4 (43): 1686. https://doi.org/10.21105/joss.01686.
Wickham, Hadley, Winston Chang, Lionel Henry, Thomas Lin Pedersen, Kohske Takahashi, Claus Wilke, Kara Woo, Hiroaki Yutani, and Dewey Dunnington. 2021. Ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics. https://CRAN.R-project.org/package=ggplot2.
Wickham, Hadley, and Garret Grolemund. 2017. R for Data Science, 1st Edition. O’Reilly Media. https://r4ds.had.co.nz/ , https://es.r4ds.hadley.nz/.
Xie, Yihui, Christophe Dervieux, and Emily Riederer. 2020. R Markdown Cookbook. Boca Raton, Florida: Chapman; Hall/CRC. https://bookdown.org/yihui/rmarkdown-cookbook.