01 · Punto de partida
Actores y escenario
En el banco hay dos clases de “cosas”: las personas, que llegan, esperan, son atendidas y se van; y la caja con su fila, que estaba antes y seguirá después. Si las mezclás en una sola bolsa, tu programa no sabrá qué se crea, qué espera ni qué se libera.
La distinción es teatral: las entidades dinámicas son los actores que entran y salen (clientes, requests, piezas); las entidades estáticas son el escenario que permanece (servidores, colas, máquinas). Los eventos cuentan qué les pasa a los actores; el estado resume dónde está cada uno.
- ¿Qué se crea y se destruye durante la corrida?
- ¿Qué estaba en t=0 y seguirá en t=fin?
- ¿Cada actor tiene identidad propia o son masa anónima?
- ¿Por qué etapas pasa un actor desde que entra hasta que sale?
02 · Definición
Las que fluyen y las que quedan
Dinámica
Temporal, contable, con historia: cliente C7, request R12, pieza P3. Se crea en una llegada y se destruye en una salida.
Estática
Permanente en la corrida: caja 1, worker 2, cola principal. No nace ni muere: se ocupa y se libera.
Identidad
Cada dinámica lleva ID único (C1, C2…). Sin ID no hay esperas individuales ni prioridades ni trazabilidad.
El estado global del Tema 4 (N, ocupado) es un resumen numérico; las entidades son el detalle nominal: quién es cada uno de esos N y cuánto lleva esperando. Para contar basta N; para medir esperas por cliente o dar prioridades hacen falta entidades con ID.
| Aspecto | Entidad dinámica | Entidad estática |
|---|---|---|
| Ejemplos | Cliente, request, paciente, pieza | Caja, worker, máquina, cola |
| Nace / muere | Sí: llegada / salida | No: se ocupa / libera |
| Se cuenta | Uno por uno (C1, C2…) | Por capacidad (c=3 workers) |
| Lleva atributos | Sí: llegada, prioridad, tipo (Tema 6) | Sí: estado libre/ocupado, cola asociada |
03 · Ciclo de vida
De la puerta de entrada a la de salida
Toda dinámica recorre el mismo camino con bifurcaciones. Dibujalo antes de programar: cada flecha es un evento o una condición:
- 1Crear.
La llegada fabrica la entidad con ID y hora de nacimiento:
C7 nació en t=8. Nace en algún lugar (cola o servicio). - 2Esperar o servir.
Si hay servidor libre → directo a servicio; si no → a la cola. Esta decisión es el evento condicionado “inicio”.
- 3Ser servida.
Ocupa una estática (caja, worker) durante S. La estática pasa a “ocupada”.
- 4Salir.
Libera la estática, registra su espera y vida, y se destruye (o migra a otra cola en redes, Tema 40).
- Transacción
- Sinónimo de entidad dinámica en muchos simuladores: “la que realiza un recorrido”. Cliente = transacción del banco.
- Recurso
- Entidad estática con capacidad limitada que las dinámicas compiten por usar: cajas, workers. (Tema 7)
- Cola
- Entidad estática que alberga dinámicas en espera con una disciplina (FIFO…). (Temas 8 y 25)
- ID y trazabilidad
- Sin ID solo hay conteos; con ID hay historias (“C7 esperó 4, se atendió en caja 2”). Las estadísticas del Tema 20 exigen IDs.
Solo conteo (N)
Barato pero ciego
Sabés que hay 5, pero no quién espera más ni a quién priorizar. Alcanza para promedios gruesos.
Con entidades (IDs)
Medible y priorizable
Sabés que C7 lleva 6 esperando y es prioritario. Cuesta una lista, pero habilita Wq, prioridades y redes.
04 · Ejemplos
Quién circula en cada mundo
| Sistema | Dinámicas (fluyen) | Estáticas (permanecen) |
|---|---|---|
| Banco | Clientes C1, C2… | Cajas, fila principal |
| Servidor web | Requests R1, R2… | Workers, cola de espera |
| Fábrica | Piezas P1, P2… | Máquinas A y B, buffers |
| Guardia médica | Pacientes por triage | Médicos, boxes, sala de espera |
| Peaje | Vehículos | Cabinas, carriles |
- 1Banco.
C7 llega en 8, espera tras C5 y C6, se sirve en caja 1 de 10 a 13, sale. Caja 1 sigue para C8.
- 2Web.
R12 llega, encuentra 3 workers ocupados, espera 40 ms, se procesa 120 ms, responde y muere.
- 3Fábrica.
P3 nace en corte, espera buffer, se mecaniza, migra a pintura: la misma dinámica visita dos estáticas.
05 · Representación en Python
La entidad es un dict con nacimiento
Cada dinámica es un diccionario con id y llegada como mínimo; las estáticas son otra estructura con ocupado. Las listas cola y en_servicio dicen dónde está cada una.
Python en tu navegador. El primer bloque crea entidades; el segundo les da el ciclo completo con una caja. Cambiá tiempos y observá quién espera.
# Dinámicas: nacen con id y hora. Estáticas: permanecen.
cola = [
{"id": "C5", "llegada": 4.0},
{"id": "C6", "llegada": 6.0},
{"id": "C7", "llegada": 8.0},
]
caja = {"nombre": "caja 1", "ocupado": True}
print("en cola:", [c["id"] for c in cola])
print("caja ocupada:", caja["ocupado"])
# Ciclo: llega C7 con caja ocupada -> espera; al liberarse -> se sirve 3
S = 3
reloj = 8.0
entidad = {"id": "C7", "llegada": 8.0}
caja_libre_en = 10.0 # la caja se libera a las 10
if reloj < caja_libre_en:
print(entidad["id"], "espera", round(caja_libre_en - reloj, 1))
inicio = caja_libre_en
else:
inicio = reloj
fin = inicio + S
print("se sirve de", inicio, "a", fin, "| espera:", round(inicio - entidad["llegada"], 1))
06 · Exploración
Laboratorio: seguir a cada cliente por su ID
Llega uno cada A (C1, C2…) más N(0) iniciales (C0…), cada atención dura S en una caja. Mové inspeccionar en Tp y mirá el plano: a la izquierda la cola con sus IDs y lo que llevan esperando; a la derecha la caja con quien se sirve. Debajo, el censo completo.
Actores sobre el escenario
cada ● tiene id, llegada, inicio y fin
Mueve Tp para seguir a cada entidad.
Círculos lima: en cola con su ID y espera acumulada. Rectángulo lima: en servicio con su ID. Grises: ya salieron (no están, pero se cuentan).
Preguntas para explorar
- Con A=2, S=3, N(0)=1 e Tp=6, ¿quién está en servicio y quiénes esperan? ¿Cuánto lleva esperando el primero de la fila?
- Llevá Tp a 12. ¿Cuántas entidades se crearon en total? ¿Cuántas siguen y cuántas salieron?
- ¿Qué pierde el modelo si borra los IDs y solo guarda N? ¿Qué conserva?
Ver respuestas sugeridas
- Entidades: C0 (t=0), C1 (2), C2 (4), C3 (6). Con S=3: C0 sale en 3, C1 de 3 a 6, en Tp=6 C1 termina y C2 entra; esperan C2 (llegó en 4, lleva 2) y C3 (llegó en 6, lleva 0). El laboratorio lo muestra con IDs.
- Se crearon 1 inicial + 6 llegadas (2,4,6,8,10,12) = 7. A las 12 varias ya salieron y 2–3 siguen según S: el censo lo confirma.
- Pierde esperas individuales, prioridades y trazabilidad; conserva conteos y promedios gruesos. Para Wq por cliente hacen falta IDs.
07 · Comprensión
Confusiones frecuentes
«La cola es una entidad dinámica»
La cola es estática: permanece toda la corrida y alberga dinámicas. Lo que fluye son los clientes, no la fila.
«Con contar N alcanza para todo»
Para contar sí; para medir esperas individuales, dar prioridades o seguir piezas por el taller, no. Ahí hacen falta entidades con ID.
«El servidor es una entidad dinámica porque trabaja»
Trabaja pero no circula: se ocupa y se libera en el mismo lugar. Es estática de tipo recurso.
«Los IDs son decoración»
Sin IDs no hay “espera de C7” ni “C7 era prioritario”. Reutilizar o perder IDs corrompe estadísticas sin error visible.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: fabricar entidades
Creá 3 clientes con llegadas en 2, 4 y 6 y listá sus IDs.
llegadas = [2.0, 4.0, 6.0]
entidades = [{"id": f"C{i+1}", "llegada": t} for i, t in enumerate(llegadas)]
print([e["id"] for e in entidades])
print(entidades[2])
Ver solución razonada
IDs C1, C2, C3 con sus horas. La entidad nace como dato antes de entrar a la cola: primero se crea, después se ubica.
Ejercicio 2: ubicar a cada una
Con caja libre en t=10, ¿quién espera y quién entra directo si llegan en 8 y 11?
libre_en = 10.0
for cid, t in [("C7", 8.0), ("C8", 11.0)]:
print(cid, "->", "espera" if t < libre_en else "directo a servicio")
Ver solución
C7 (t=8) espera 2 hasta las 10; C8 (t=11) entra directo. La misma entidad, distinto destino según el estado de la estática.
Ejercicio 3: ciclo completo con espera medida
Simulá una entidad que llega en 8, espera hasta 10 y se sirve 3. Calculá espera y salida.
Ver una posible respuesta
e = {"id": "C7", "llegada": 8.0}
inicio = max(e["llegada"], 10.0)
fin = inicio + 3
e.update({"inicio": inicio, "fin": fin, "espera": inicio - e["llegada"]})
print(e) # espera 2.0, fin 13.0
La entidad acumula su historia en su dict: llegada, inicio, fin y espera derivada. Esa es la materia prima de las estadísticas.
09 · Síntesis
Ideas para recordar
- Dinámicas fluyen (clientes, requests, piezas); estáticas permanecen (cajas, workers, colas).
- Toda dinámica vive: crear → esperar/servir → salir; cada paso lo marca un evento.
- Sin ID hay conteo; con ID hay historias, esperas individuales y prioridades.
- En Python: dict por entidad con
idyllegada; listascolayen servicio. - El estado N resume; las entidades detallan: se necesitan mutuamente.
En el próximo tema agregaremos los atributos: los datos que lleva cada entidad para decidir y medir.