Se trabaja un sistema de colas con un solo servidor y con un timpo de llegadas y servicios con distribuciones de probabilidad dadas

set.seed(5623)
t_llegada <- (1:8)
t_servicio <- (1:6)
pllegada <- c(0.125,0.125,0.125,0.125,0.125,0.125,0.125,0.125)
pservicio <- c(0.1,0.2,0.3,0.25,0.1,0.05)
sim <- NULL

##Se dimensionan las variables:
min.llegada <- numeric(20)
min.salida <- numeric(20)
cuenta.servicio <- numeric(20)
tiempo.cola <- numeric(20)
tiempo.sistema <- numeric(20)
tservidor.disponible <- numeric(20)
tservicio.llegada<-numeric(20)

Se comienza a realizar la simulación del sistema de colas con 20 clientes:

##Se realiza el conteo para el primer cliente:

tllegadas <- sample(t_llegada,size=1,replace = TRUE,prob=pllegada) ## Saca una muestra del tiempo entre llegadas
tservicio <- sample(t_servicio,size=1,replace = TRUE,prob=pservicio)## Saca una muestra del tiempo del servicio

min.llegada[1]<- 0
cuenta.servicio[1]<- 0
min.salida[1]<-cuenta.servicio[1]+tservicio[1]
tiempo.cola[1] <- cuenta.servicio[1]-min.llegada[1]
tiempo.sistema[1] <- tiempo.cola[1]+tservicio[1]
tservidor.disponible[1] <- 0

###Se guarda en data frame "Sim"
nuevo <- data.frame (cliente=1,Tiempo_desde_ultima_llegada=0,Tiempo_servicio=tservicio [1],minuto_llegada=min.llegada[1],minuto_inicio_del_servicio=cuenta.servicio[1], minuto_salida_del_cliente=min.salida[1]) 
  sim <- rbind(sim, nuevo)
  
##Se construlle el sistema para los demás clientes 
for (c in 2:20){
  tllegadas[c] <- sample(t_llegada,size=1,replace = TRUE,prob=pllegada)
  tservicio[c] <- sample(t_servicio,size=1,replace = TRUE,prob=pservicio)
  
  min.llegada[c]<- tllegadas[c]+min.llegada[c-1]
  tservicio.llegada[c]<-tservicio[c]-tllegadas[c]
  
  if(min.llegada[c]>min.salida[c-1]){
    cuenta.servicio[c]<-min.llegada[c]
  }else{cuenta.servicio[c]<-min.salida[c-1]}
  
  min.salida[c]<-cuenta.servicio[c]+tservicio[c]
  tservidor.disponible[c] <-cuenta.servicio[c]-min.salida[c-1]
  tiempo.cola[c] <- cuenta.servicio[c]-min.llegada[c]
  tiempo.sistema[c] <- tiempo.cola[c]+tservicio[c]
 
  nuevo <- data.frame (cliente=c,Tiempo_desde_ultima_llegada=tllegadas[c],Tiempo_servicio=tservicio [c],minuto_llegada=min.llegada[c],minuto_inicio_del_servicio=cuenta.servicio[c], minuto_salida_del_cliente=min.salida[c]) 
  sim <- rbind(sim, nuevo)
}

Se muestran los resultados de la simulación en la tabla “sim”

print(sim)
##    cliente Tiempo_desde_ultima_llegada Tiempo_servicio minuto_llegada
## 1        1                           0               4              0
## 2        2                           1               1              1
## 3        3                           3               1              4
## 4        4                           3               3              7
## 5        5                           8               3             15
## 6        6                           7               3             22
## 7        7                           2               4             24
## 8        8                           4               5             28
## 9        9                           8               3             36
## 10      10                           2               4             38
## 11      11                           5               1             43
## 12      12                           1               4             44
## 13      13                           3               4             47
## 14      14                           2               2             49
## 15      15                           5               4             54
## 16      16                           2               3             56
## 17      17                           4               3             60
## 18      18                           1               2             61
## 19      19                           3               1             64
## 20      20                           5               5             69
##    minuto_inicio_del_servicio minuto_salida_del_cliente
## 1                           0                         4
## 2                           4                         5
## 3                           5                         6
## 4                           7                        10
## 5                          15                        18
## 6                          22                        25
## 7                          25                        29
## 8                          29                        34
## 9                          36                        39
## 10                         39                        43
## 11                         43                        44
## 12                         44                        48
## 13                         48                        52
## 14                         52                        54
## 15                         54                        58
## 16                         58                        61
## 17                         61                        64
## 18                         64                        66
## 19                         66                        67
## 20                         69                        74
T.Prom.de.espera <- mean(tiempo.cola)## Es el tiempo promedio de espera de un cliente en la cola.
T.disponible <- sum(tservidor.disponible) ##Es el tiempo que el servidor pasa desocupado.
T.Prom.de.servicio <- mean(tservicio)## Es el tiempo promedio de cada servicio en el servidor. 
T.Prom.del.cliente <- mean(tiempo.sistema)##Es el tiempo promedio que un cliente pasa en todo el sistema, tomando en cuenta tiempo de cola y de servicio.
T.entre.llegadaas <- mean(tllegadas)##es el tiempo promedio entre llegadas del sistema. 
  
  
tasa.de.servicio<-1/(mean(tservicio))##Es la cantidad promedio de servicios por minuto
tasa.de.llegada<-20/min.llegada[20] ##Es la cantidad promedio de llegadas por minuto
factor.de.utilizacion<-tasa.de.llegada/tasa.de.servicio ##Representa que tan utilizado se encuentra el sistema y la probabilidad de esperar para ser atendido.

result <- data.frame (Tiempo.de.promedio.espera = T.Prom.de.espera, 
                      Tiempo.servidor.disponible =T.disponible, 
                      Tiempo.promedio.servicio = T.Prom.de.servicio, 
                      Tiempo.promedio.de.cliente.en.sistema=T.Prom.del.cliente,
                      Tiempo.promedio.llegada=T.entre.llegadaas,
                      Utilizacion.del.Sistema=factor.de.utilizacion)

##Se traspone la matriz y se muestra
print(t(result))
##                                             [,1]
## Tiempo.de.promedio.espera              0.9500000
## Tiempo.servidor.disponible            14.0000000
## Tiempo.promedio.servicio               3.0000000
## Tiempo.promedio.de.cliente.en.sistema  3.9500000
## Tiempo.promedio.llegada                3.5000000
## Utilizacion.del.Sistema                0.8695652

Conclusion

El sistema muestra una utilización bastante alta, por lo que es muy probable que se haga cola cuando un nuevo cliente llegue al sistema.