El comportamiento de una estación de servicio se puede estimar definiendo dos funciones de probabilidad, una para la llegada de clientes y otra para el númenro de estaciónes de servicio.
Si por ejemplo, se define el comportamiento de llegadas de clientes como una función de probabilidad uniforme con parámetros entre 1 y 4 clientes por unidad de tiempo y sea lambda el número de estaciones abiertas por unidad de tiempo, desde un punto de vista práctico se puede pensar como la cantidad de cajas en un banco, o el número de garitas que se abren dependiendo de la cantida de personas o automoviles esperando. Además es posible establecer criterios de calidad en el servicio com puede ser, el mínimo y máximo de cajeros atendiendo y el numero minimo y máximo de llegadas de clientes.
Para este ejemplo consideremos una función uniforme para la llegadas con un minimo de uno y un máximo de cuatro clientes por unidad de tiempo, a su vez, un mínimo de una y máximo de 5 cajas abiertas y un máximo de personas en espera de 10.
cli <- 0 # inicializa la variable llegadas
ser <- 0 # inicializa la variable servicio
minlam <- 1 # mínimo de estaciones de servicio
maxlam <- 5 # máximo de estaciones de servicio
lam <- 1 # parámetro inicial de estaciones de servico
acuCola <- 0
minCola <- 4 # mínimo númenro de clientes en espera
maxCola <- 10 # máximo númerno de clientes en espera
cola <- 0 # Inicializa valores de cola
acumCola <- c() # inializa un vector para almacenar valores de acumulado de clientes en espera
for (i in seq(1,20,1)){
llegadas <- runif(1,min = 1,max = 4)
print(paste("En el minuto",toString(i),"llegaron",llegadas,"clientes"))
cli <- cli + llegadas # Total de clientes que llegaron en el periodo comprendido
atendidos <- rpois(1,lam)
print(paste("En el minuto",toString(i),"se atendieron",atendidos,"clientes"))
ser <- ser + atendidos # Total de clientes atendidos en el periodo.
cola <- cli-ser
ifelse(cola<=0,cola<-0,cola)
print(paste("Se añade a la cola",cola))
acuCola <- acuCola + cola
acumCola[i] <- acuCola
ifelse(acuCola<=0,acuCola<-0,acuCola)
print(paste("la cola en espera es",acuCola))
if (acuCola >= maxCola){
lam <- maxlam
}
if (acuCola <= minCola){
lam <= minlam
}
print(paste("El ajuste de servicio es",lam,"cajeros"))
}
## [1] "En el minuto 1 llegaron 1.74930018791929 clientes"
## [1] "En el minuto 1 se atendieron 2 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 0"
## [1] "El ajuste de servicio es 1 cajeros"
## [1] "En el minuto 2 llegaron 1.75737306568772 clientes"
## [1] "En el minuto 2 se atendieron 1 clientes"
## [1] "Se añade a la cola 0.506673253607005"
## [1] "la cola en espera es 0.506673253607005"
## [1] "El ajuste de servicio es 1 cajeros"
## [1] "En el minuto 3 llegaron 2.7311499544885 clientes"
## [1] "En el minuto 3 se atendieron 3 clientes"
## [1] "Se añade a la cola 0.237823208095506"
## [1] "la cola en espera es 0.744496461702511"
## [1] "El ajuste de servicio es 1 cajeros"
## [1] "En el minuto 4 llegaron 2.28680547140539 clientes"
## [1] "En el minuto 4 se atendieron 0 clientes"
## [1] "Se añade a la cola 2.52462867950089"
## [1] "la cola en espera es 3.2691251412034"
## [1] "El ajuste de servicio es 1 cajeros"
## [1] "En el minuto 5 llegaron 3.56070696446113 clientes"
## [1] "En el minuto 5 se atendieron 2 clientes"
## [1] "Se añade a la cola 4.08533564396203"
## [1] "la cola en espera es 7.35446078516543"
## [1] "El ajuste de servicio es 1 cajeros"
## [1] "En el minuto 6 llegaron 2.83719858061522 clientes"
## [1] "En el minuto 6 se atendieron 2 clientes"
## [1] "Se añade a la cola 4.92253422457725"
## [1] "la cola en espera es 12.2769950097427"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 7 llegaron 3.4434611662291 clientes"
## [1] "En el minuto 7 se atendieron 7 clientes"
## [1] "Se añade a la cola 1.36599539080635"
## [1] "la cola en espera es 13.642990400549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 8 llegaron 2.1803370648995 clientes"
## [1] "En el minuto 8 se atendieron 3 clientes"
## [1] "Se añade a la cola 0.546332455705851"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 9 llegaron 2.55576073937118 clientes"
## [1] "En el minuto 9 se atendieron 5 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 10 llegaron 3.44279432157055 clientes"
## [1] "En el minuto 10 se atendieron 6 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 11 llegaron 1.04211891605519 clientes"
## [1] "En el minuto 11 se atendieron 6 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 12 llegaron 2.46711943671107 clientes"
## [1] "En el minuto 12 se atendieron 3 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 13 llegaron 1.67887116968632 clientes"
## [1] "En el minuto 13 se atendieron 8 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 14 llegaron 2.39188606385142 clientes"
## [1] "En el minuto 14 se atendieron 8 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 15 llegaron 1.15913366503082 clientes"
## [1] "En el minuto 15 se atendieron 7 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 16 llegaron 1.45059209456667 clientes"
## [1] "En el minuto 16 se atendieron 3 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 17 llegaron 2.56507935305126 clientes"
## [1] "En el minuto 17 se atendieron 3 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 18 llegaron 2.01547680050135 clientes"
## [1] "En el minuto 18 se atendieron 3 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 19 llegaron 2.21565008093603 clientes"
## [1] "En el minuto 19 se atendieron 2 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
## [1] "En el minuto 20 llegaron 1.24810423259623 clientes"
## [1] "En el minuto 20 se atendieron 3 clientes"
## [1] "Se añade a la cola 0"
## [1] "la cola en espera es 14.1893228562549"
## [1] "El ajuste de servicio es 5 cajeros"
print(paste("El total de clientes que llegaron a las estaciones es",toString(cli)))
## [1] "El total de clientes que llegaron a las estaciones es 44.7789193296339"
print(paste("El total de clientes atendidos fué",toString(ser)))
## [1] "El total de clientes atendidos fué 77"
plot(acumCola,type = "l", xlab = "Tiempo", ylab = "Numero de Clientes",
main = paste("Comportamiento del servicio con un máximo de",toString(maxlam),"estaciones"))