01 · Punto de partida
Entre paso y paso también pasa el tiempo
En el Tema 5 el tiempo avanzaba de a un paso: nada cambiaba entre n y n+1. Pero una llamada llega a las 9:03:27, una máquina falla un martes cualquiera a las 14:11. El tiempo continuo admite cambios en cualquier instante t ≥ 0.
La diferencia no es solo la unidad más fina: la simulación cambia de técnica. En vez de un for por pasos, se generan los instantes de salto y el estado queda fijo entre saltos.
- ¿Cuándo ocurre el próximo cambio: en el paso 7 o en t = 4,32?
- ¿Cuánto dura cada estado: la permanencia en 0 o en 1?
- ¿Qué tan rápido ocurren los saltos: la tasa λ, μ?
- ¿Evaluamos X(t) en cualquier t, no solo en enteros?
02 · Definición
¿Qué es un proceso continuo en el tiempo?
Todo proceso continuo combina tres piezas:
Permanencia
Tiempo aleatorio en cada estado: cuánto dura «funciona» antes de fallar.
Salto
El cambio instantáneo: 0 → 1 (falla), 1 → 0 (repara), N → N+1 (arribo).
Tasa
Velocidad de los saltos: λ fallas por hora, μ reparaciones por hora.
Los Tₖ son los instantes de salto (aleatorios) y xₖ los estados visitados. Entre Tₖ y Tₖ₊₁ nada cambia: la trayectoria es una escalera.
| Aspecto | Discreto (Tema 5) | Continuo (este tema) |
|---|---|---|
| Reloj | n = 0, 1, 2… pasos fijos | t ≥ 0 real, saltos en T₁, T₂… |
| Bucle | for n in range(N) | while t < T: sortear espera, saltar |
| Pregunta típica | ¿X₅ vale? | ¿X(4,32) vale? ¿Cuánto duró el 0? |
03 · Anatomía
Permanencias, reloj y muestreo
Cuatro ideas evitan confundir «continuo en el tiempo» con «continuo en los valores»:
- Tiempo continuo
- El reloj es real: los saltos caen en 2,17 o 9,03. No significa que X valga reales.
- Estado discreto
- Lo habitual aquí: X(t) ∈ {0, 1} o {0, 1, 2…} aunque t sea continuo. (Poisson y Markov continuas)
- Permanencia
- Tiempo en cada visita: se sortea con exponencial de tasa λ o μ. (Tema 12)
- Muestreo
- Mirar X(t) cada minuto es discretizar un continuo: útil, pero se pierden saltos intermedios.
Simular por pasos finos
Fácil pero aproximado
Avanza dt = 0,01 y sortea en cada rebanada. Funciona, pero desperdicia sorteos donde nada pasa.
Simular por eventos
Eficiente y exacto
Salta directo al próximo Tₖ sorteando la espera. Solo se trabaja donde algo cambia.
04 · Ejemplos
Continuos en el tiempo que simularás
Todos son escaleras: tramos fijos + saltos en instantes aleatorios:
- 1Máquina funciona/falla.
X(t) ∈ {0, 1}. Falla con tasa λ, se repara con tasa μ. (Laboratorio)
- 2Arribos acumulados.
N(t) = 0, 1, 2… Solo sube de a 1 en cada Tₖ. (Poisson, Tema 8)
- 3Cola en tiempo real.
Sube con llegadas, baja con servicios, en segundos reales.
- 4Stock con demanda continua.
Baja de a unidades en instantes aleatorios; sube de golpe al reponer.
- 5Temperatura.
Continua en tiempo y en valores: requiere otras técnicas (fuera del núcleo Markov).
05 · Representación en Python
El continuo se programa por eventos
En Python, un proceso continuo son dos listas: instantes Tₖ y estados xₖ. Las esperas se sortean con exponenciales: −ln(1−u)/tasa. Entre eventos, X(t) no cambia.
Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Cambiá las tasas y observá las permanencias.
import random, math
def espera(tasa, u):
# Sorteo exponencial: permanencia media 1/tasa.
return -math.log(1 - u) / tasa
random.seed(7)
lam = 0.5 # fallas por hora: permanencia media 2 h en 0
print([round(espera(lam, random.random()), 2) for _ in range(5)])
Subí lam a 2,0: las esperas se acortan (media 0,5). La tasa manda la velocidad del reloj.
De esperas a trayectoria escalera
Alternamos 0 (funciona, tasa λ) y 1 (fallado, tasa μ) hasta el horizonte T:
import random, math
def simular_maquina(T, lam=0.5, mu=1.0, semilla=7):
# Devuelve (tiempos, estados): X(t) constante entre tiempos.
random.seed(semilla)
t, x = 0.0, 0
tiempos, estados = [0.0], [0]
while t < T:
tasa = lam if x == 0 else mu
t += -math.log(1 - random.random()) / tasa
if t > T:
break
x = 1 - x
tiempos.append(round(t, 2))
estados.append(x)
return tiempos, estados
T, E = simular_maquina(10)
print(T)
print(E)
06 · Exploración
Laboratorio: una máquina que falla y se repara
Máquina 0 = funciona (falla con tasa λ), 1 = fallada (se repara con tasa μ). Cada fila es una réplica hasta el horizonte T: el tramo bajo es trabajo, el alto es parada. Subí λ y verás más cortes; subí μ y los cortes se acortan.
Permanencias y saltos en t real
0 → 1 con λ · 1 → 0 con μ · X(t) escalera
Con λ 0,50 y μ 1,00, la máquina trabaja 2 de cada 3 horas.
El eje horizontal es tiempo real: los saltos caen en decimales, no en enteros. La disponibilidad es la fracción de T en estado 0 promediada sobre las 5 réplicas.
Preguntas para explorar
- Con λ = 0,5 y μ = 1, ¿qué disponibilidad predice μ/(λ+μ)? ¿La simulada se acerca?
- Duplicá ambas tasas (λ = 1, μ = 2). ¿Cambia la disponibilidad? ¿Y la cantidad de fallas?
- Si mirás X(t) solo en enteros (muestreo), ¿podés perder una falla corta? ¿Qué implica?
Ver respuestas sugeridas
- 1/1,5 ≈ 66,7 %. Con 5 réplicas cae cerca (60–75 %); con más réplicas se estabiliza.
- La disponibilidad queda igual (2/3), pero hay el doble de fallas más cortas. Misma fracción, distinto ritmo.
- Sí: una falla entre dos enteros pasa invisible. Muestrear discretiza y puede ocultar eventos.
07 · Comprensión
Confusiones frecuentes
«Continuo significa valores reales»
No: aquí el reloj es continuo y los estados suelen ser discretos (0/1, conteos). Son dos continuidades distintas.
«Simular fino es simular continuo»
Un for con dt chico aproxima, pero sigue siendo discreto. El continuo exacto salta por eventos.
«La tasa es una probabilidad»
La tasa λ no está entre 0 y 1: son eventos por unidad de tiempo. La probabilidad vive en λ·dt chico, no en λ sola.
«Entre eventos no pasa nada»
Pasa lo más importante: el sistema permanece. La permanencia acumula disponibilidad, costo y espera.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: evaluar X(t) en cualquier t
Ejecutá esta escalera y evaluá X en t = 2,5 y t = 4. Notá que t no es entero.
tiempos = [0.0, 1.2, 3.1, 3.8]
estados = [0, 1, 0, 1]
def X(t):
x = estados[0]
for Tk, xk in zip(tiempos, estados):
if Tk <= t:
x = xk
else:
break
return x
print(X(2.5), X(4.0))
Ver solución razonada
Da 1 1: en 2,5 rige el salto de 1,2 (estado 1) y en 4,0 el de 3,8 (estado 1). X(t) se evalúa en cualquier real buscando el último Tₖ ≤ t.
Ejercicio 2: permanencia media
Sin ejecutar primero: con λ = 2, ¿qué permanencia media esperás en 0? Comprobala con 3000 sorteos.
import random, math
random.seed(3)
lam = 2.0
esperas = [-math.log(1 - random.random()) / lam for _ in range(3000)]
print("teórica:", 1 / lam)
print("simulada:", round(sum(esperas) / len(esperas), 3))
Ver solución
La teórica es 1/2 = 0,5. La simulada cae cerca (0,48–0,52): a mayor tasa, menor permanencia.
Ejercicio 3: disponibilidad simulada
Simulá la máquina hasta T = 100 con λ = 0,5 y μ = 1 y medí la fracción en 0. Compará con μ/(λ+μ).
Ver una posible respuesta
import random, math
def disponibilidad(T, lam=0.5, mu=1.0, semilla=11):
random.seed(semilla)
t, x, en_cero = 0.0, 0, 0.0
while t < T:
tasa = lam if x == 0 else mu
dt = -math.log(1 - random.random()) / tasa
proximo = min(t + dt, T)
if x == 0:
en_cero += proximo - t
t = proximo
if t < T:
x = 1 - x
return en_cero / T
print("teoría:", round(1.0 / 1.5, 3))
print("simulada:", round(disponibilidad(100), 3))
La teoría es 0,667 y la simulada cae cerca. Con T = 100 el ruido ya es chico; con T = 12 (laboratorio) fluctúa más.
09 · Síntesis
Ideas para recordar
- Continuo = reloj real: X(t) escalera con saltos en Tₖ aleatorios.
- Permanencia + salto + tasa describen toda la evolución.
- Se simula por eventos (espera exponencial), no por pasos finos.
- La tasa λ no es probabilidad: es velocidad (eventos por tiempo).
- En Python: listas (tiempos, estados) y función X(t) para cualquier t.
En el próximo tema entraremos a los procesos de conteo: N(t) cuenta eventos y nunca baja.