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