4.10 Tiempos de primer paso

Como ocurría con las CMTD podemos hablar de los tiempos de primer paso en las CMTC. Si \(\{X(t), t \geq 0\}\) es una CMTC con espacio de estados \(\{1, 2,...,N\}\) y matriz de tasas \(R\), entonces se define como el tiempo de primer paso al estado \(N\) como:

\[T = min\{t \geq 0: X(t) = N\}.\]

Más concretamente estudíamos el valor esperado de \(T\), \(E(T)\). Para ello definimos los tiempos esperados a partir de cada uno de los estados del sistema como:

\[m_i = E(T \mid X(0) = i), \quad 1 \leq i \leq N-1\] y \(m_N = 0.\)

Teorema 4.9 Los valores \(\{m_i, 1 \leq i \leq N-1\}\) satisfacen

\[r_im_i = 1 + \sum_{j=1}^{N-1} r_{ij}m_j, \quad 1\leq i \leq N-1.\]

Si deseamos calcular los tiempos de primer paso a un subconjunto de estados, \(A\) se puede adaptar el teorema anterior ya que sólo debemos resolver el sistema:

\[r_im_i(A) = 1 + \sum_{j \notin A} r_{ij}m_j(A), \quad 1\leq i \leq N-1.\]

A continuación presentamos un algoritmo para calcular los valores de \(m_i\) a partir de la matriz de tasas del sistema, donde debemos indicar el estado o estados desde los que partimos al inicio.

# Función para la resolución numérica de las ecuaciones de balance
tiempos.primer.paso<-function(Rmat, A, estados)
{
  # Parámetros de la función
  #=========================
  # Rmat: matriz de tasas del sistema
  # A: vector de estados que debemos alcanzar
  # estados: conjunto de estados total (como carácter)
  
  # Estados como texto
  
  estados <- as.character(estados)
  # Tasas r
  rts <- diag(apply(Rmat, 1, sum), nrow(Rmat))
  # Seleccionamos el subconjunto de la matriz quitando fila y columna
  Rmod <- Rmat[-A, -A]
  rates <- rts[-A, -A]
  # Número de m´s a estimar
  lms <- nrow(Rmod)
  # Matriz de coeficientes del sistema de ecuaciones de balance
  B <- rates - Rmod
  # Vector de términos independientes del sistema
  CS <- rep(1, lms)
  # Resolución del sistema
  ps <- as.data.frame(qr.solve(B, CS))
  rownames(ps) <- paste("estado", estados)[-A]
  colnames(ps) <-"tiempo"
  return(ps)
}

Ejemplo 4.10 En las condiciones del sistema \(M/M/1/K\) del cajero bancario descrito anteriormente, estamos interesados en conocer el tiempo quen debe trasncurrir hasta que la cola esta vacia si ahora mismo hay un cliente en el sistema y cero en la cola (\(X(0) = 0\)). Recordemos que el esapcio de estados hace referencia al número de clientes en la cola y viene dado por \(\{0, 1, 2, 3, 4, 5\}.\)

# Definición matriz de tasas
nestados <- 6
R <- matrix(nrow = nestados, ncol = nestados, data = 0)
R[1,2] <- 10
R[2,1] <- 15 
R[2,3] <- 10 
R[3,2] <- 15 
R[3,4] <- 10 
R[4,3] <- 15 
R[4,5] <- 10
R[5,4] <- 15
R[5,6] <- 10
R[6,5] <- 15

# Tiempos de primer el estado 1 que deseamos alcanzar (corresponde con el primer elemento del espacio de estados)
tiempos.primer.paso(R, 1, 0:5)
##             tiempo
## estado 1 0.1736626
## estado 2 0.3341564
## estado 3 0.4748971
## estado 4 0.5860082
## estado 5 0.6526749

El tiempo esperado hasta que la cola este vacia de nuevo son 0.1736 horas o 10.42 minutos.

Ejemplo 4.11 En las condiciones del sistema de mantenimiento de areonaves descrito anteriormente. Supongamos que en un experimento de prueba el avión despega con cuatro motores motores que funcionan correctamente y sigue volando hasta que se estrella. Estamos interesados en conocer el tiempo esperado del accidente.

Recordemos que el espacio de estados del sistema es \(\{1, 2,...,,9\}\), y sabemos que el avión se estrallará si en algún momento accedemos al subconjunto de estados \(\{1, 2, 3, 4, 7\}.\) Calculamos los tiempos de primer paso cuando \(X(0) = \{5, 6, 8, 9\}\), aunque como el avión está en condiciones çoptimas para despegar nos debermeos fijar en el valor correspondiente al estado 9. Recordemos que el tiempo medio hasta que falla un motor es de 200 horas, de forma que \(\lambda = 1/200 = 0.005.\)

# Definición matriz de tasas
nestados <- 9
lambda <- 0.005
R <- 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

# Conjunto que debemos alcanzar
A <- c(1, 2, 3, 4, 7)
# Tiempos de primer paso 
tiempos.primer.paso(R, A, 1:9)
##            tiempo
## estado 5 100.0000
## estado 6 133.3333
## estado 8 133.3333
## estado 9 183.3333

De esta forma, partiendo de un avión en condiciones óptimas el tiempo ahsta que ocurra un incidente que le impida volar es de 183.33 horas, o lo que es lo mismo 183 horas y 20 minutos.