4.12 Soluciones
Ejercicio B-1.
# Matriz de tasas
<- c(0, 1, 2, 3, 4)
estados <- length(estados)
nestados
<- matrix(nrow = nestados, ncol = nestados, data = 0)
R <- 1/2
lambda <- 1/72
mu
1,2] <- 2*lambda
R[2,1] <- mu
R[2,3] <- 2*lambda
R[3,2] <- 2*mu
R[3,4] <- 2*lambda
R[4,3] <- 3*mu
R[4,5] <- lambda
R[5,4] <- 4*mu R[
Distribución de probabilidad asociada al evento de interés:
# Matriz de probabilidades de transición
<-matriz.prob.trans(R, 9, 1)
Pmat# Distribución de probabildiad buscada
1,] Pmat[
## [1] 0.0002 0.0020 0.0136 0.1547 0.8295
# valor esperado
<- round(sum(estados*Pmat[1,]), 1) esperanza
Solución con simmer:
<- 2500
replicas <- lapply(1:replicas, function(i) {
envs <- mantenimiento(9, 1/2, 1/72, 2)
maquinas
})# almacenamos análisis de recursos del sistema
<- as_tibble(get_mon_resources(envs))
simresource # Almacenamos el estado final de la cola en el último instante del sistema
<- simresource %>%
salida filter(resource == "funcionando") %>% #seleccionamos el recurso adecuado
group_by(replication) %>%
summarise(estado = last(system))
# Estimamos la distribución de probabilidad
<- round(table(salida$estado)/replicas, 3)
distrprob <- sum(as.numeric(names(distrprob))*distrprob)
esperanza esperanza
## [1] 3.895
Ejercicio B-2.
# Matriz de tasas
<- c("(0, 0)", "(0, 1)", "(0, 2)", "(1, 0)",
estados "(1, 1)", "(1, 2)", "(2, 0)", "(2, 1)", "(2,2)")
<- length(estados)
nestados
<- 1/200
lambda <- matrix(nrow = nestados, ncol = nestados, data = 0)
R
2,1] <- lambda
R[3,2] <- 2*lambda
R[4,1] <- lambda
R[5,2] <- lambda
R[5,4] <- lambda
R[6,3] <- lambda
R[6,5] <- 2*lambda
R[7,4] <- 2*lambda
R[8,5] <- 2*lambda
R[8,7] <- lambda
R[9,6] <- 2*lambda
R[9,8] <- 2*lambda R[
Probabilidades de transición para el evento de interés:
# Matriz de probabilidades de transición
<-matriz.prob.trans(R, 6, 1)
Pmat# Calculamos la probabilidad buscada
<- Pmat[9,5] + Pmat[9,6] + Pmat[9,8] + Pmat[9,9]
probabilidad probabilidad
## [1] 0.9982
Por tanto, la probabilidad de un fallo que le impida al avión finalizar el viaje es 0.0018.
Ejercicio B-5.
# Matriz de tasas
<- 6
nestados <- 10
lambda <- 15
mu <- matrix(nrow = nestados, ncol = nestados, data = 0)
R
1,2] <- lambda
R[2,1] <- mu
R[2,3] <- lambda
R[3,2] <- mu
R[3,4] <- lambda
R[4,3] <- mu
R[4,5] <- lambda
R[5,4] <- mu
R[5,6] <- lambda
R[6,5] <- mu R[
Obtenemos ahora la matriz \(M(1)\):
tiempos.ocupacion(R, 1, 1)
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.4451 0.2548 0.1442 0.0814 0.0465 0.0280
## [2,] 0.3821 0.2793 0.1604 0.0920 0.0535 0.0326
## [3,] 0.3246 0.2407 0.2010 0.1187 0.0710 0.0441
## [4,] 0.2746 0.2070 0.1780 0.1695 0.1046 0.0663
## [5,] 0.2356 0.1806 0.1598 0.1569 0.1624 0.1047
## [6,] 0.2124 0.1648 0.1489 0.1492 0.1571 0.1677
Estamos interesados en la transición \(X(0) = 0\) a \(X(1) = 0\) que corresponde con el elemento \([1,1]\) de la matriz obtenida. Utilizando simmer
:
# Réplicas del proceso
<- 2500
replicas <- lapply(1:replicas, function(i) {
envs <- cola.MM1K(1, 10, 15, 1, 6)
cajero
})# almacenamos análisis de llegadas del sistema
<- as_tibble(get_mon_arrivals(envs))
simarrivals <- as_tibble(get_mon_resources(envs))
simresources # detectamos los instantes de tiempo donde el sistema esta libre y obtenemos los tiempos correspondientes
<-c()
resfor(i in 1:replicas)
{<- simresources[which(simresources$replication == i), ]
temp <- diff(temp$time)
deltas <- which(temp$system == 0)
free <- deltas[free]
t_free <- c(res, sum(t_free, na.rm = TRUE))
res }
El tiempo que el sistema esta libre es de mean(res)
horas. En este caso, la estimación obtenida si es más diferente del ressultado teórico. Podrímaos incluir un mayor número de réplicas para intentar conseguir algo más de precisión.
Ejercicio B-6.
Sea \(X(t)\) el número de artículos en stock en el tiempo \(t\), e \(Y(t)\) el estado de la máquina en el tiempo \(t\). El conjunto de estados de este proceso viene dado por:
\[S = \{1 = (0, 1), 2 = (1, 1), 3 = (2, 1), 4 = (3, 1), 5 = (4, 0), 6 = (3, 0)\}.\] En la situación inicial nos encontramos en el estado \(5 = (4, 0) = (X(0), Y(0))\) y estamos interesados en el tiempo en que la máquina estará después de 24 horas en los estados \(1, 2, 3\) o \(4\), es decir:
\[m_{51}(24) + m_{52}(24) + m_{53}(24) + m_{54}(24)\] En esta situación tenemos que la tasa de producción es \(\lambda = 60/10 = 6\) y la de demanda es \(\mu = 5\), de forma que la matriz de tasas viene dada por:
<- 6
nestados <- 6
lambda <- 5
mu <- matrix(nrow = nestados, ncol = nestados, data = 0)
R
1,2] <- lambda
R[2,1] <- mu
R[2,3] <- lambda
R[3,2] <- mu
R[3,4] <- lambda
R[4,3] <- mu
R[4,5] <- lambda
R[5,6] <- mu
R[6,3] <- mu R[
Obtenemos ahora la matriz \(M(24)\):
<-tiempos.ocupacion(R, 24, 1)
mmat mmat
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 4.0004 4.6322 5.4284 2.9496 3.5097 3.4798
## [2,] 3.8602 4.6639 5.4664 2.9703 3.5345 3.5047
## [3,] 3.7697 4.5553 5.5361 3.0084 3.5802 3.5503
## [4,] 3.7207 4.4965 5.4656 3.0608 3.6431 3.6132
## [5,] 3.7063 4.4793 5.4448 2.9586 3.7204 3.6906
## [6,] 3.7380 4.5173 5.4905 2.9835 3.5503 3.7204
La cantidad buscada viene dada por:
sum(mmat[5, 1:4])
## [1] 16.589
Ejercicio B-9.
<- 4
maquinas <- maquinas + 1
estados <- 2
operarios <- 1/2
lambda <- 1/72
mu <- pmin(maquinas - (0:(maquinas-1)), operarios)*lambda
lambdas <- (1:(maquinas-1))*mu
mus # Debemos quitar el último elemento de lambda y el primero de mu para usar la función definida
<- distr.lim.nm(estados, lambdas, mus)
probs probs
## [1] 1.540618e-05 1.109245e-03 3.993283e-02 9.583879e-01 5.546226e-04
Así, a largo plazo, todas las máquinas funcionan el 89,6% del tiempo (\(p_4 = p[5]\)). Ambos operarios están ocupados siempre que el sistema está en el estado \(0\), \(1\) o \(2\). Por lo tanto, la fracción de tiempo a largo plazo en que ambos reparadores están ocupados viene dada por \(p_0 + p_1 + p_2\):
sum(probs[1:3])
## [1] 0.04105748
Ejercicio B-10.
<- 5
maxcola <- maxcola + 1
estados <- 10
lambda <- 15
mu <- rep(lambda, maxcola)
lambdas <- rep(mu, maxcola)
mus # Distribución límite
<- distr.lim.nm(estados, lambdas, mus)
probs probs
## [1] 0.36541353 0.24360902 0.16240602 0.10827068 0.07218045 0.04812030
Ejercicio B-11.
Recordemos que el espacio de estados es \(\{1, 2,...,9\}\) y nos intersa obtener la probabilidad del sujconjunto \(\{1, 2, 3, 4, 7\}\). Obtenemos en primer lugar la matriz de tasas:
# Estados del sistema
<- 9
nestados <- 1/20
lambda # Matriz de tasas
<- matrix(nrow = nestados, ncol = nestados, data = 0)
R 2,1] <- lambda
R[3,2] <- 2*lambda
R[4,1] <- lambda
R[5,2] <- lambda
R[5,4] <- lambda
R[6,3] <- lambda
R[6,5] <- 2*lambda
R[7,4] <- 2*lambda
R[8,5] <- 2*lambda
R[8,7] <- lambda
R[9,6] <- 2*lambda
R[9,8] <- 2*lambda
R[# Resolución de las ecuaciones de balance
<- distr.lim.general(R)
ps ps
## [1] 1 0 0 0 0 0 0 0 0
Ejercicio B-12.
# Estados del sistema
<- 3
nestados # Matriz de tasas
<- matrix(nrow = nestados, ncol = nestados, data = 0)
R 1,1] <- 0
R[1,2] <- 1/4
R[1,3] <- 1/4
R[2,1] <- 3/4
R[2,2] <- 0
R[2,3] <- 1/4
R[3,1] <- 1/2
R[3,2] <- 1/6
R[3,3] <- 0
R[# Resolución de las ecuaciones de balance
<- distr.lim.general(R)
ps # Expresando en porcentajes
round(100*ps, 2)
## [1] 54.55 18.18 27.27