01 · Punto de partida
La fila del banco
En el Tema 37 los animales comían sin turno. Ahora las personas esperan: llegan, hacen fila y se atienden de a una. La simulación de eventos discretos (DES) salta de evento en evento; los agentes agregan paciencia, apuro y cambio de fila.
Por eso conviene comparar: si todos son iguales y obedientes, la cola matemática alcanza; si se cansan, se cuelan o eligen caja, hacen falta agentes con cabeza.
- ¿Cada cuánto llega cada cliente?
- ¿Cuánto tarda cada atención?
- ¿Cuántas cajas atienden a la vez?
- ¿Cuándo se cansa y abandona?
02 · Definición
Evento, cola y agente
Toda espera combina qué pasa, dónde se junta y quién se cansa:
Evento
Llegada o fin de atención en un instante: el reloj salta hasta ahí. Sin evento el tiempo no existe.
Cola
Fila con orden FIFO y cajas que atienden: el recurso que limita. Sin cajas no hay salida aunque haya prisa.
Agente
Cliente con paciencia y ojos: abandona si espera mucho y cambia a la fila corta. Lo que DES no ve.
| Mundo | Cola | Abandono típico |
|---|---|---|
| Banco | fila única a cajas | se va si tarda más que su paciencia |
| Hospital | triaje por gravedad | empeora si espera de más |
| Peaje | cabinas paralelas | cambia a la cabina corta |
| Servidor | paquetes en buffer | descarta si desborda (Tema 33) |
03 · Sistema
Reloj que salta frente a clientes que deciden
El motor DES es flaco y rápido; el motor de agentes es gordo y expresivo. Elegir es declarar qué importa.
DES clásica
Eventos y recursos
Lista de eventos: llegada → espera → salida. Rápida y exacta con iguales obedientes, ciega a paciencia.
ABM con cola
Clientes que miran
Reglas por cliente: si espera > paciencia → se va. Lenta y ruidosa, pero con fugas y vivezas.
- DES
- Simulación que avanza por eventos con colas y servidores. Se mide con espera media y uso de cajas.
- Evento
- Cambio instantáneo agendado: llegada o fin. El reloj salta al próximo sin pasos vacíos.
- Utilización
- Fracción del tiempo con cajas ocupadas: cerca de 1 la cola explota. El termómetro del sistema.
- Abandono
- Salida sin atención por espera larga: la fuga que DES clásica no tiene. Palanca del agente.
04 · Ciclo
La ronda que llega, atiende y pierde
Cada tick mete llegadas, atiende cajas y resta paciencia, en este orden síncrono:
- 1Llegar con azar.
Sorteo por tasa de llegada: entran 0, 1 o varios con paciencia propia.
- 2Atender por cajas.
Cada caja libre toma al primero y lo ocupa varios ticks: FIFO sin saltos.
- 3Abandonar por espera.
Restar 1 a la paciencia de la fila y sacar a los que llegan a cero: fuga contada.
05 · Representación en Python
Paciencia que se gasta
Esperar resta y atender suma salida. El abandono es una comparación contra cero.
Python en tu navegador. Bajá la paciencia y observá cómo la misma espera echa más gente.
def espera(paciencia, ticks=3):
return paciencia - ticks
def abandona(paciencia, ticks=3):
return espera(paciencia, ticks) <= 0
print(espera(5), abandona(5), abandona(2))
Con 5 de paciencia quedan 2 y no abandona; con 2 sí: la espera decide la fuga.
Llegadas que golpean
Llegar es sorteo por tasa: más tasa, más fila por ronda.
import random
def llegan(tasa=0.4):
return random.random() < tasa
print([llegan(0.0), llegan(1.0)])
06 · Exploración
Laboratorio: banco que atiende o pierde
Cola única con llegadas por tick y cajas que atienden 4 ticks cada una. Cada cliente trae paciencia de 12 ticks: si espera más, se va. Celeste atendido, rojo abandonado, gris en fila. ¿Cuántas cajas hacen falta para que no se fuguen?
La fila que se cansa
llega → espera → atiende o abandona
Con llegadas 0,40 y 2 cajas, la fila fluye.
Cada bloque es un cliente en orden de llegada: el color es su final tras 120 ticks. Más llegadas es más presión con las mismas cajas. Pulsá Nueva réplica para otra tarde con los mismos parámetros.
Preguntas para explorar
- Con llegadas mínimas y 1 caja, ¿hay fugas? ¿Por qué sin presión no hace falta paciencia?
- Subí las llegadas al máximo con 1 caja. ¿La espera sube lineal o explota? ¿Dónde aparece la utilización en 1?
- Repetí 3 veces con valores medios. ¿Las fugas son idénticas? ¿Qué parte es tasa y qué parte es sorteo?
Ver respuestas sugeridas
- No: la caja traga más rápido de lo que entra. Sin fila la paciencia ni se gasta.
- Explota: la caja no da abasto y la fila crece sin techo. Utilización en 1 es quiebre, no meseta.
- No: qué tick trae dos juntos arma picos distintos. La tasa pone el nivel, el sorteo pone las olas.
07 · Comprensión
Confusiones frecuentes
«DES y agentes compiten»
Se combinan: DES para el motor de cola y agentes para la cabeza del cliente. Elegir es declarar qué se quiere ver.
«Más cajas siempre sobran»
Pasada la demanda, cajas de más miran el techo. Utilización baja es plata quieta: capacidad sin fila es gasto.
«Paciencia infinita es neutral»
Infinita esconde el colapso: la fila crece eterna sin fugas. Declarar paciencia o declarar que no hay.
«Una tarde calibra»
Una tarde es una fila posible. La calibración promedia réplicas con semilla y reporta espera y fugas.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: paciencia que decide
Ejecutá y compará espera corta contra larga. Luego bajá la paciencia a 2.
def abandona(paciencia, espera):
return espera > paciencia
print(abandona(12, 3), abandona(12, 15), abandona(2, 3))
Ver solución razonada
Da False, True y True: espera corta aguanta, larga fuga y paciencia chica fuga rápido. Comparación directa.
Ejercicio 2: predecir la utilización
Sin ejecutar primero: llegan 0,5 por tick y cada atención dura 2 ticks con 1 caja. ¿Utilización?
print(0.5 * 2)
Ver solución
Da 1,0: caja siempre ocupada al filo del colapso. Un poco más de tasa y explota.
Ejercicio 3: caja que falta
Si llegan 60 en 120 ticks y cada caja atiende 20, ¿cuántas cajas hacen falta? Escribilo.
Ver una posible respuesta
print(60 / 20)
Hacen falta 3: dos colapsan y cuatro sobran. Capacidad que calza con demanda.
09 · Síntesis
Ideas para recordar
- Cola es llegar, esperar en FIFO y atender o abandonar por paciencia.
- DES salta por eventos; agentes agregan paciencia y cambio de fila.
- Utilización en 1 es quiebre: la espera explota, no sube lineal.
- Se mide con espera media, atendidos y fugas.
- En Python, llegadas por tasa más servicio fijo más paciencia que se gasta.
En el próximo tema compararemos con los modelos continuos: individuos frente a ecuaciones agregadas.