5.6 Funciones simmer

En este apartado se presentan los algoritmos de simulación de simmer para los sistemas de colas estudiados.

5.6.1 \(M/M/1\)

# Sistema
#################################################
cola.MM1 <- function(t, lambda, mu)
{
  # lambda: tasa de llegadas
  # mu: tasa de servicio

  # Funciones de tiempos
  tarrival <- function() rexp(1, lambda)
  tserver <- function() rexp(1, mu)
  
  # Trayectoria de servicio
  servicio <- trajectory() %>%
    visit("server", tserver)               

  # Entorno del sistema 
  #################################################
  simmer() %>%
    add_resource("server", capacity = 1, queue_size = Inf) %>%           
    add_generator("arrival", servicio, tarrival) %>% 
    run(until = t)     
}

5.6.2 \(M/M/1/K\)

# Sistema
#################################################
cola.MM1K <- function(t, lambda, mu, K)
{
  # lambda: tasa de llegadas
  # mu: tasa de servicio
  # K: capacidad del sistema

  # Funciones de tiempos
  tarrival <- function() rexp(1, lambda)
  tserver <- function() rexp(1, mu)
  
  # Tamaño de la cola
  qsize <- K - 1
  
  # Trayectoria de servicio
  servicio <- trajectory() %>%
    visit("server", tserver)               

  # Entorno del sistema 
  #################################################
  simmer() %>%
    add_resource("server", capacity = 1, queue_size = qsize) %>%           
    add_generator("arrival", servicio, tarrival) %>% 
    run(until = t)     
}

5.6.3 \(M/M/s\)

# Sistema
#################################################
cola.MMs <- function(t, lambda, mu, s)
{
  # lambda: tasa de llegadas
  # mu: tasa de servicio
  # s: servidores idénticos disponibles

  # Funciones de tiempos
  tarrival <- function() rexp(1, lambda)
  tserver <- function() rexp(1, mu)
  
  # Trayectoria de servicio
  servicio <- trajectory() %>%
    visit("server", tserver)               

  # Entorno del sistema 
  #################################################
  simmer() %>%
    add_resource("server", capacity = s, queue_size = Inf) %>%           
    add_generator("arrival", servicio, tarrival) %>% 
    run(until = t)     
}

5.6.4 \(M/M/s/K\)

# Sistema
#################################################
cola.MMsK <- function(t, lambda, mu, s, K)
{
  # lambda: tasa de llegadas
  # mu: tasa de servicio
  # s: servidores
  # K: capacidad del sistema

  # Funciones de tiempos
  tarrival <- function() rexp(1, lambda)
  tserver <- function() rexp(1, mu)
  
  # Tamaño de la cola
  qsize <- K - s
  
  # Trayectoria de servicio
  servicio <- trajectory() %>%
    visit("server", tserver)               

  # Entorno del sistema 
  #################################################
  simmer() %>%
    add_resource("server", capacity = s, queue_size = qsize) %>%           
    add_generator("arrival", servicio, tarrival) %>% 
    run(until = t)     
}