Asignación y secuenciación de cargas de trabajo
5.5 Asignación y secuenciación de cargas de trabajo
Tenemos el MPS: semana 5, fabricar 600 unidades de componente tipo 1. Ahora surge la pregunta táctica: ¿a qué máquina exacta asignamos esta orden? ¿En qué máquina tornamos los componentes? ¿Y en qué secuencia los procesamos si hay múltiples órdenes en cola? Este apartado explora dos problemas fuertemente acoplados: la asignación (assign) de órdenes a máquinas y su secuenciación (sequencing), es decir, el orden de procesamiento.
Problema de asignación de cargas
La asignación de cargas en su forma más simple es un problema de balanceo: tenemos órdenes de producción y máquinas disponibles; queremos distribuir las órdenes entre máquinas de forma que se minimice tiempo total de ejecución (makespan) o se equilibre carga para evitar cuellos de botella. En caso simple, todas las máquinas son idénticas, y una orden puede procesarse en cualquiera. Entonces es un problema de asignación lineal: minimizar tiempo máximo entre máquinas, o minimizar costo total.
En realidad, las máquinas raramente son idénticas. Una máquina CNC de 5 ejes puede procesar componentes complejos; una máquina manual no. El tiempo de procesamiento de orden X en máquina A es 10 horas; en máquina B (menos precisa) sería 15 horas o incluso imposible (si requiere presición que B no tiene). Adicionalmente, máquinas especializadas tienen tiempos de cambio distintos: cambiar de programa en CNC toma 20 minutos; cambiar útiles manuales toma 45 minutos.
Una asignación viable debe considerar: (1) Compatibilidad técnica: ¿puede la máquina hacer el trabajo? (2) Tiempo de procesamiento: ¿cuánto tarda en cada máquina? (3) Tiempos de cambio: ¿cuánto cuesta preparar la máquina para esta orden? (4) Carga actual: ¿cuánta carga ya tiene la máquina? (5) Disponibilidad de recursos asociados: ¿están disponibles herramientas, aditamentos, operarios entrenados?
El objetivo típico es minimizar tiempo total de cumplimiento (reducir fecha de entrega) o minimizar costo total (considerando tiempo de máquina, energía, mano de obra). En empresas Lean, el objetivo es también nivelar carga para mantener flujo constante.
Algoritmos de asignación
Asignación greedy (avaricioso): Para cada orden, en orden de llegada o prioridad, asignarla a la máquina con menor carga actual (o menos tiempo ocupado). Simple de implementar, pero no siempre óptimo. Ejemplo: órdenes 1, 2, 3 con duraciones 10h, 5h, 6h. Máquinas A, B, C inicialmente vacías. Orden 1 → A (A=10). Orden 2 → B (B=5). Orden 3 → B (B=11) o C (C=6)? Greedy elegiría C porque está menos cargada. Resultado: A=10, B=5, C=6. Pero si se hubiera asignado orden 3 a B, sería A=10, B=11, C=0, peor. Greedy acertó en este caso.
Asignación por afinidad máquina-orden: Cada orden puede tener costo (tiempo) diferente en cada máquina. Se elige asignación que minimiza costo total de asignación de todas las órdenes a todas las máquinas. Esto es un problema de optimización lineal (assignment problem) resoluble en tiempo polinómico mediante algoritmo húngaro. Es más sofisticado pero computacionalmente costoso para problemas grandes (cientos de órdenes, decenas de máquinas).
Asignación con restricciones de precedencia: Algunos procesos requieren que orden X se complete antes de orden Y (dependencia). Ejemplo: en mecanizado de piezas complejas, es frecuente: tornear → fresado → acabado manual. La orden solo puede entrar en fresado una vez se ha completado torneado en máquina anterior. Estas restricciones de precedencia generan una red de dependencias que limita qué asignaciones son viables.
Problema de secuenciación en una máquina
Una vez asignadas órdenes a una máquina, surge el problema de secuenciación: ¿en qué orden procesarlas? Esta decisión afecta significativamente a métricas de desempeño. Si hay 5 órdenes esperando una máquina, procesarlas en orden A-B-C-D-E da un resultado; procesarlas E-C-A-D-B da otro.
Secuenciación FIFO (First In, First Out): Procesar en orden de llegada. Es justo, evita que órdenes antiguas se starven (abandonen), y es administrativamente simple. Pero no optimiza ninguna métrica de desempeño particular. Una orden que llega tarde pero es pequeña espera hasta procesarse todas las anteriores.
Secuenciación SPT (Shortest Processing Time first): Procesar primero las órdenes con tiempo de proceso más corto. Si hay órdenes de 2h, 5h, 8h, procesar 2h primero, luego 5h, luego 8h. Minimiza tiempo promedio en sistema (lead time promedio). Ejemplo: FIFO: orden 1 completa en 2h, orden 2 en 7h, orden 3 en 15h. Promedio: 8h. Con SPT: orden 1 completa en 2h, orden 2 en 7h, orden 3 en 15h. Promedio: 8h (mismo en este caso, pero con orden diferente). Sin embargo, SPT penaliza órdenes largas: la orden de 8h espera 7 horas antes de empezar. El tiempo promedio es el mismo, pero la varianza es mayor.
Secuenciación EDD (Earliest Due Date first): Procesar en orden de fecha de entrega comprometida. Si la orden X debe estar lista el viernes y orden Y el lunes, procesar X primero. Minimiza retrasos y adelantos (tardiness and earliness). Esta es la secuencia más común en manufactura bajo pedido porque respeta compromisos con clientes.
Secuenciación con tiempos de cambio (SETUPS): Cuando cambiar de un producto a otro requiere tiempo significativo, el problema se vuelve más complejo. Cambiar de componente tipo A a tipo B en máquina CNC toma 20 minutos (cambio de herramientas y programa). Secuenciar A-B-A-B-C-A requeriría cambios: A→B (20'), B→A (20'), A→B (20'), B→C (20'), C→A (20') = 100 minutos de cambio puro. Secuenciar A-A-A-B-B-C requeriría: A→B (20'), B→C (20') = 40 minutos de cambio. Mucha diferencia. El problema de minimizar tiempo de cambio es NP-hard (computacionalmente muy difícil), pero heurísticas greedy funcionan bien: agrupar órdenes del mismo tipo consecutivamente.
Secuenciación multimáquina: problema flow shop
En un flow shop, órdenes pasan por múltiples máquinas en secuencia fija. Ejemplo: línea de mecanizado donde todas las piezas pasan primero por máquina M1 (desbaste), luego M2 (acabado), luego M3 (inspección). El orden de procesamiento en M1 afecta a M2 y M3 porque determina cuándo cada pieza está disponible para siguiente máquina.
Un clásico resultado (Johnson's Rule) muestra que para 2 máquinas, existe una secuencia óptima: clasificar órdenes por tiempo en primera máquina versus tiempo en segunda máquina, y procesarlas en orden que minimiza tiempo de ciclo total. Para 3+ máquinas, el problema es NP-hard y se requieren heurísticas o aproximación (rama-y-corte, algoritmos genéticos, simulación).
Ejemplo práctico: asignación y secuenciación en taller de mecanizado
Un taller tiene 3 máquinas CNC (A, B, C) con especialidades diferentes. Llegan 4 órdenes con fechas de vencimiento y tiempos de proceso:
Orden 1: Componente X, vencimiento viernes, tiempo en A: 8h, B: 10h, C: 12h.
Orden 2: Componente Y, vencimiento martes, tiempo en A: 3h, B: 3h, C: 4h.
Orden 3: Componente Z, vencimiento jueves, tiempo en A: 5h, B: 4h, C: 5h.
Orden 4: Componente W, vencimiento miércoles, tiempo en A: 4h, B: 5h, C: 4h.
Máquinas actualmente: A vacía, B tiene 6 horas de trabajo asignado (otra orden), C vacía.
Asignación greedy por mínima carga actual: Orden 1 → A (carga A=8), Orden 2 → C (carga C=4), Orden 3 → C (carga C=9), Orden 4 → B (carga B=6+5=11). Resultado: A=8, B=11, C=9. Máquina más saturada B.
Asignación por afinidad (minimizar tiempo máximo): Orden 1 → A (8h, mejor que B o C), Orden 2 → A o B o C (todos 3-4h), Orden 3 → B (4h, mejor), Orden 4 → A o C (4h). Asignación: 1→A, 2→B, 3→B, 4→C. Carga: A=8, B=6+3+4=13, C=4. B saturada.
Ahora secuenciación. En máquina A, orden 1 es la única. En máquina B, hay órdenes 2 y 4 nuevas, más el trabajo previo. Por EDD: el trabajo previo debe ir primero. Luego orden 2 (vencimiento martes), luego orden 4 (miércoles). En máquina C, orden 3 única. La máquina B es cuello de botella con 13 horas de carga total.
Ideas clave
- La asignación distribuye órdenes entre máquinas considerando compatibilidad técnica, tiempo de proceso, tiempos de cambio y carga actual.
- Algoritmos greedy de asignación son simples pero subóptimos; algoritmos de optimización como el húngaro son óptimos pero computacionalmente costosos.
- La secuenciación de órdenes en una máquina sigue reglas que optimizan distintos objetivos: FIFO es justa, SPT minimiza lead time promedio, EDD respeta compromisos con clientes.
- Los tiempos de cambio entre órdenes afectan drásticamente eficiencia; agrupar órdenes del mismo tipo consecutivamente reduce tiempo de cambio.
- En flow shops, la secuencia en máquinas tempranas afecta disponibilidad en máquinas posteriores; la solución óptima requiere consideración global.
- La práctica industrial usa heurísticas híbridas que combinan reglas simples (EDD, agrupación por tipo) con análisis de carga para evitar cuellos de botella.