Es un problema de colas en un banco, se necesita determinar cambiando el número de servidores de 1 a 7 el tamaño promedio de la cola. El banco trabaja de 10 a 18 horas.
###Se definen las variables con su distribución de probabilidad para cada día y también se definen las variables de tiempo entre llegadas
set.seed(1500)
tentre.llegadas <- c(0, 1, 2, 3, 4, 5, 6)
plunes <- c(0.1, 0.15, 0.1, 00.35, 0.25, 0.05, 0)
pmartes <- c(0.1, 0.1, 0.15, 0.2, 0.35, 0.1,0)
pmier <- c(0, 0.1, 0.1, 0.2, 0.1, 0.25, 0.25)
pjueves <- c(0, 0.15, 0.2, 0.2, 0.15, 0.15, 0.15)
pviernes <- c(0.15, 0.15, 0.2, 0.2, 0.1, 0.1, 0.1)
psaba <- c(0.2, 0.15, 0.1, 0.5, 0.05, 0, 0)
pdom <- c(0.35, 0.25, 0.2, 0.1, 0.1, 0, 0)
datos <- NULL
min.llegada <- numeric(1000)
min.salida <- numeric(1000)
cuenta.servicio <- numeric(1000)
tcola <- numeric(1000)
tsistema <- numeric(1000)
tdesocupado <- numeric(1000)
tservicio.llegada<-numeric(1000)
Se comienza a realizar la simulación
for(s in 1:7){
for(d in c("lunes", "martes", "mierc", "jueves", "viernes", "sabado", "domingo" )){
tservicio <- rnorm(1,8,5)
tllegadas <- sample(tentre.llegadas, 1, replace = TRUE, prob = switch (d,
lunes={plunes},
martes={pmartes},
mierc={pmier},
jueves={pjueves},
viernes={pviernes},
sabado={psaba},
domingo={pdom}))
min.llegada[1]<- 0
cuenta.servicio[1]<- 0
min.salida[1]<-cuenta.servicio[1]+tservicio[1]
tcola[1] <- cuenta.servicio[1]-min.llegada[1]
tsistema[1] <- tcola[1]+tservicio[1]
tdesocupado[1] <- 0
nuevo <- data.frame (Servidores=s,
Dia=d,
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],
Tiempo_cola=tcola[1])
datos <- rbind(datos, nuevo)
for (c in 2:100){
tservicio[c] <- rnorm(1,8,5)
tllegadas[c] <- sample(tentre.llegadas, 1, replace = TRUE, prob = switch (d,
lunes={plunes},
martes={pmartes},
mierc={pmier},
jueves={pjueves},
viernes={pviernes},
sabado={psaba},
domingo={pdom}))
min.llegada[c]<- tllegadas[c]+min.llegada[c-1]
cuenta.servicio[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]
tdesocupado[c] <-cuenta.servicio[c]-min.salida[c-1]
tcola[c] <- cuenta.servicio[c]-min.llegada[c]
tsistema[c] <- tcola[c]+tservicio[c]
nuevo <- data.frame(Servidores=s,
Dia=d,
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],
Tiempo_cola=tcola[c])
datos <- rbind(datos, nuevo)
}
}
}
head(datos)
## Servidores Dia cliente Tiempo_desde_ultima_llegada Tiempo_servicio
## 1 1 lunes 1 0 9.5794180
## 2 1 lunes 2 3 5.9690264
## 3 1 lunes 3 0 6.6862646
## 4 1 lunes 4 0 12.4502006
## 5 1 lunes 5 3 8.1390881
## 6 1 lunes 6 1 -0.2134184
## Minuto_llegada Minuto_inicio_del_servicio minuto_salida_del_cliente
## 1 0 0.000000 9.579418
## 2 3 9.579418 15.548444
## 3 3 15.548444 22.234709
## 4 3 22.234709 34.684910
## 5 6 34.684910 42.823998
## 6 7 42.823998 42.610579
## Tiempo_cola
## 1 0.000000
## 2 6.579418
## 3 12.548444
## 4 19.234709
## 5 28.684910
## 6 35.823998
plot(datos$Servidores, datos$Tiempo_cola)
