Simulación de Eventos Discretos · Tema 50

Aplicaciones en producción y logística

Fábricas, depósitos y transporte — WIP, lead time y lote óptimo con las mismas colas de siempre.

01 · Punto de partida

La fábrica es una red de colas con overol

Piezas que llegan a 30/hora, tres máquinas en línea, un setup de 6 min por lote, camiones que reparten: throughput (TH), inventario en proceso (WIP) y lead time (LT) obedecen WIP = TH × LT —Little con casco. El cuello manda el TH, los lotes chicos ahogan en setups y los grandes ahogan en espera.

Aplicar el curso acá es mapear estaciones, medir por máquina, poner pull (Kanban) donde el push inunda y dimensionar lotes y flota como servidores.

  • ¿Cómo mapeo la línea a estaciones y ruteo?
  • ¿Qué WIP y lead time tengo (Little)?
  • ¿Lote chico o grande? ¿Push o pull?
  • ¿Cuántos camiones/pickers (flota = c)?

02 · Definición

Estaciones, flujo e inventario

⚙

Estaciones

Máquinas, celdas, operarios, pickers, camiones: cada uno con (λi, Si, ci).

📦

Lotes y setups

Q piezas por lote con setup F: Sef = s + F/Q. Q chico = setup domina; Q grande = espera domina.

WIP

Inventario

WIP = TH × LT (Little): piezas adentro. Pull/Kanban lo acota con K (Tema 27); push lo deja explotar.

Línea λ = 0.5/min (30/h): A(1.2), B(1.6), C(1.0), c = 1.
EstaciónρiWiLectura
A · corte0.603.0Sana
B · pintura0.808.0Cuello: 62% del LT
C · empaque0.502.0Sobra
Total—LT = 13.0WIP = 6.5 piezas

03 · El corazón: push, pull y lotes

Acotar WIP, afinar Q, servir con flota

mapear + medir→cuello→pull + lote→flota
  1. 1
    Mapear y medir por estación.

    Flujo, λi, Si (con setup separado), ci. El cuello sale del ranking ρ.

  2. 2
    Poner pull donde inunda.

    Kanban = K finita por estación (Tema 27): el WIP se acota y el bloqueo avisa. Push solo donde sobra.

  3. 3
    Afinar el lote Q.

    Sef = s + F/Q baja con Q, pero la formación Q/2λ y la espera suben: curva en U, óptimo adentro.

  4. 4
    Dimensionar flota como c.

    Camiones/pickers = servidores con S = viaje/pickeo: Erlang o sim con ventanas (picos de pedidos).

Push vs pull
Push (K = ∞): el TH manda y el WIP absorbe todo. Pull (Kanban K): el WIP se acota y el TH se protege del cuello.
Setup / SMED
F fijo por lote: bajar F (cambio rápido) achica Q óptimo y el LT de un saque. Proceso antes que plantilla.
Lote óptimo
Mínimo de formación + espera + servicio: Q chico ahoga en setups (ρ > 1), Q grande ahoga en espera.
Transporte
Ruta = S con variabilidad (tráfico); flota = c con turnos. Ventanas de entrega = SLA con percentil.

Push

Simple e inundable

Cada estación empuja: ante el cuello, el WIP crece sin cota (ρ > 1 localizado). Barato de gestionar, caro en inventario.

Pull / Kanban

Acotado y señalizado

K tarjetas por estación: el lleno frena aguas arriba (bloqueo visible). El WIP se elige, no se sufre.

04 · Ejemplos

Cuatro plantas con número

  1. 1
    Línea A-B-C (λ = 0.5).

    LT = 13, WIP = 6.5, cuello B (62%): la mejora va a pintura.

  2. 2
    Depósito picking (ola 100/h).

    Pickers = c con S = 2 min: a = 3.3 → 5 pickers (ρ = 0.67) en ola.

  3. 3
    Flota 20 entregas/h, ruta 30 min.

    L = 10 camiones ocupados: flota 12–13 con margen (Little + N+1).

  4. 4
    Kanban K = 10 entre A y B.

    WIP acotado en 10: si B frena, A se bloquea a la vista (no inunda).

05 · Representación en Python

Lead time de la línea y curva del lote

Sumar W por estación (M/M/1) y barrer Q con setup: el óptimo en una lista.

Python en tu navegador. El primero suma la línea; el segundo barre Q y halla el óptimo. Cambiá F y mirá cómo se corre.

# Línea A-B-C: lam=0.5, S=[1.2,1.6,1.0] (M/M/1 por estación)
lam = 0.5
LT = sum(1/(1/s - lam) for s in [1.2, 1.6, 1.0])
print(f"LT={LT:.1f} WIP={lam*LT:.1f}")  # 13.0 y 6.5
# Barrer Q con setup F=6, s=1, lam=0.5 (aprox. didáctica)
lam, s, F = 0.5, 1.0, 6.0
def LT(Q):
    Sef = s + F/Q
    mu = 1/Sef
    Wq = lam/(mu*(mu-lam)) if lam < mu else float("inf")
    return Q/(2*lam) + Wq + Sef

qs = {Q: LT(Q) for Q in [4, 6, 8, 10, 12]}
print({k: round(v, 1) for k, v in qs.items()})
print("óptimo Q =", min(qs, key=qs.get))

06 · Exploración

Laboratorio: la U del lote

Modelo aproximado didáctico: pieza unitaria s = 1 con setup F por lote Q (Sef = 1 + F/Q), M/M/1 con tu λ. El lead time suma formación Q/2λ (teal, crece con Q) + espera+servicio (naranja, cae con Q). Con Q = 1 el setup avalancha; con Q grande la formación domina: el óptimo está adentro.

EXPERIMENTO 50

Setup contra espera

LT ≈ Q/2λ + Wq + Sef · s=1

Los resultados numéricos aparecen debajo.
S efectivo0
ρ0
Lead time0
WIP0

Mové Q para buscar el valle.

Curva teal = formación (sube), naranja = espera+servicio (baja), lima gruesa = total en U. Punto = tu Q; roja = avalancha por setup.

Preguntas para explorar

  1. Default (Q=8, λ=0.5, F=6): ¿Sef, ρ y LT? ¿Qué parte domina?
  2. Bajá a Q=2: ¿ρ? ¿Por qué avalancha si λ no cambió?
  3. Subí F=10: ¿a dónde se corre el óptimo? ¿Y con F=2?
Ver respuestas sugeridas
  1. Sef = 1.75, ρ = 0.875, LT ≈ 22 (8 formación + 14 espera): domina la espera.
  2. ρ = 2.0: el setup por pieza (3 + 1) supera la capacidad. Q chico ahoga en setups.
  3. F=10 ⇒ óptimo ≈ 12 (más lote para amortizar); F=2 ⇒ óptimo ≈ 4–6 (casi flujo unitario).

07 · Comprensión

Confusiones frecuentes

«Acelero cualquier estación y mejora el LT»

Solo la del cuello (o la que más W aporta) mueve el total: el resto mueve su cartel local.

«Lote grande siempre baja el costo»

Baja setup por pieza pero sube formación y espera (y WIP = capital quieto). La U decide, no el setup solo.

«Push con más operarios alcanza»

Más c sin K inunda igual ante el cuello: el WIP necesita tope (pull), no solo manos.

«El transporte no se modela»

Camión = servidor con S = viaje y c = flota: con ventanas y tráfico, es una cola móvil más.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: WIP de la línea

λ=0.5, LT=13. ¿WIP? ¿Y si el cuello baja su W de 8 a 4?

# WIP=6.5; con B en 4: LT=9, WIP=4.5 (un tercio menos de capital quieto)
print(0.5*13, 0.5*9)
Ver solución razonada

6.5 → 4.5 piezas: atacar el cuello libera capital además de tiempo.

Ejercicio 2: S efectivo

s=1, F=6, Q=3 vs 12. ¿Sef y ρ con λ=0.5?

for Q in [3, 12]:
    Sef = 1 + 6/Q
    print(f"Q={Q} Sef={Sef} rho={0.5*Sef:.2f}")  # 3.0/1.50 vs 1.5/0.75
Ver solución

Q=3: ρ=1.5 avalancha; Q=12: ρ=0.75 estable. El lote decide el régimen.

Ejercicio 3: flota por Little

20 entregas/h, ruta 30 min. ¿Camiones ocupados? ¿Flota con N+1?

Ver una posible respuesta
# L=10 ocupados -> flota 11-12 (margen pico/taller)
print(20*0.5, "-> flota 11-12")

10 + 1–2 de margen: Little + N+1 también maneja camiones.

09 · Síntesis

Ideas para recordar

  • Línea = red de colas: WIP = TH × LT, cuello = max ρ.
  • Pull/Kanban acota WIP; push lo deja explotar.
  • Lote Q en U: setup (chico ahoga) vs formación+espera (grande ahoga).
  • Flota = c con S = viaje: Erlang, ventanas y N+1.
  • En Python: sumar W por estación + barrer Q con setup separado.

En el próximo y último tema integraremos todo: el proyecto de simulación.