Fabricación
Planificación de la producción por líneas, máquinas y turnos
Un plan de producción es una secuencia de operaciones que compiten por las mismas máquinas, interrumpida por el mantenimiento y limitada por los turnos que la planta cubre de verdad. SuperScheduler da a los planificadores una línea de tiempo para ver y ajustar esa secuencia; encontrar la mejor sigue siendo tarea de tu lógica de planificación.
El plan es una cadena, no una lista
Una orden de trabajo rara vez se queda en una sola máquina. Las piezas se cortan, luego se mecanizan, después se acaban y se inspeccionan, y cada paso espera al anterior. Cuando un planificador mueve una operación, todo lo que viene detrás se ve afectado, y la pregunta no es solo «¿está libre esta máquina?», sino «¿sigue respetando la ruta de fabricación y la fecha de entrega?».
La capacidad tampoco es uniforme. Una línea puede hacer tres turnos entre semana y uno el sábado, una prensa para por mantenimiento programado el jueves por la mañana y pasar de una familia de producto a otra cuesta tiempo de preparación. Un pedido urgente que entra el lunes desplaza trabajo prometido a otros clientes.
Los planificadores necesitan ver la cadena, los huecos y la carga a la vez, con un nivel de detalle que va de las horas del turno actual a las semanas del horizonte.
Lo que un planificador decide en cada turno
- 01
Dónde encaja un pedido urgente
Meter trabajo urgente implica elegir qué órdenes se retrasan. El planificador necesita ver las operaciones posteriores y las fechas de entrega de todo lo que se movería.
- 02
Mantener la precedencia
Una operación no debe empezar antes de que termine su predecesora, más cualquier tiempo de enfriamiento, curado o transporte. Adelantar un paso solo es válido si la cadena lo permite.
- 03
Sortear el mantenimiento
El mantenimiento programado, las calibraciones y las averías sacan una máquina del plan durante una ventana concreta. El trabajo pasa a otra máquina del mismo tipo o espera.
- 04
Agrupar para reducir cambios de formato
Fabricar juntos productos similares ahorra tiempo de preparación, pero puede retrasar otras órdenes. Los planificadores sopesan el coste del cambio frente al retraso, y la línea de tiempo debe hacer visibles ambos.
- 05
Equilibrar la carga entre turnos
Un turno de noche sobrecargado junto a una tarde ociosa es un problema en los dos sentidos. Detectarlo con semanas de antelación es más fácil que descubrirlo el mismo día.
Cómo modelar la planta
Planifica operaciones, no órdenes, y deja que el número de orden sea el campo que las une.
- Recursos
- Construye un árbol de planta, línea y máquina o centro de trabajo, con treePreventParentUsage para que las líneas hagan de cabecera y las operaciones solo caigan en máquinas. Las columnas de la cabecera de fila pueden mostrar el código del centro de trabajo y su capacidad nominal.
- Eventos
- Cada operación es un evento en una máquina, con el número de orden, el producto y la cantidad como campos propios. Los vínculos FinishToStart conectan operaciones consecutivas de la misma orden, y durationBarMode «PercentComplete» con el campo complete muestra el avance que se comunica desde la planta.
- Escala temporal
- Un cellDuration de 480 minutos da tres turnos de ocho horas que empiezan a medianoche; para turnos que cambian a las 06:00, una escala Manual con las celdas definidas explícitamente en timeline se ajusta a los límites reales de la planta. Añade un nivel de zoom por horas para el turno actual y otro semanal para el horizonte.
- Reglas
- Marca las ventanas de mantenimiento como celdas deshabilitadas para que no se puedan soltar operaciones en ellas. Comprueba la precedencia en onEventMoving y, una vez aplicado el cambio, desplaza o marca las sucesoras, agrupando esos cambios en un único lote del historial para que un solo deshacer restaure la secuencia. Alimenta el minimapa con las horas asignadas frente a la capacidad de cada tramo.
Línea de tiempo y sistema de planificación, frente a frente
- Filas jerárquicas para plantas, líneas y máquinas
- Vínculos de dependencia dibujados entre operaciones, que siguen unidos cuando los eventos se mueven
- Ventanas de mantenimiento rayadas que rechazan que se suelten operaciones, y barras de progreso según un porcentaje completado
- Una franja de minimapa que dibuja la serie de carga que calculas, con tonos de aviso y de peligro
- Deshacer y rehacer, con varios cambios agrupados en una sola entrada
- Rutas, órdenes de trabajo, calendarios de turnos y datos de cambio de formato de tu ERP o MES
- Planificación automática, lógica de capacidad finita u optimización: la librería no secuencia el trabajo
- La política de precedencia: rechazar, avisar o propagar en cascada
- Los datos de planta que actualizan el avance y los tiempos reales
- Persistencia, permisos y gestión de conflictos entre planificadores
Ejemplos que funcionan
Dónde fallan las líneas de tiempo de planta
Esperar que los vínculos empujen a las sucesoras
Los vínculos se dibujan a partir de tus datos y siguen a los eventos que conectan, pero no reprograman nada. Si una predecesora se retrasa, tu código decide si sus sucesoras también se mueven y cuánto.
Una barra por orden
Dibujar una orden entera como un solo evento oculta qué máquina está ocupada y cuándo. Los conflictos, las ventanas de mantenimiento y la carga solo tienen sentido por operación.
Celdas de turno que no coinciden con la planta
Las celdas alineadas a medianoche quedan ordenadas, pero colocan mal un cambio de turno a las 06:00. Define las celdas explícitamente en timeline cuando los turnos no empiecen a medianoche.
Medir la carga contando eventos
Diez operaciones cortas y una larga no suponen la misma carga. Calcula las horas asignadas frente a la capacidad del turno en cada tramo y pasa esa serie al minimapa.
Preguntas
¿Puede SuperScheduler planificar órdenes de producción automáticamente?
No. No secuencia, no optimiza ni nivela el trabajo. Muestra el plan que genera tu aplicación o tu solver, permite a los planificadores ajustarlo a mano e informa de cada cambio mediante handlers para que tu sistema lo valide y vuelva a calcular.
¿Cómo muestro dependencias entre operaciones de fabricación?
Pasa vínculos cuyos campos from y to sean ids de eventos. FinishToStart es el tipo por defecto, y también están disponibles StartToStart, FinishToFinish y StartToFinish. Los vínculos se definen en los datos o se añaden con la API links del control; dibujarlos con el ratón no está soportado.
¿Cómo bloqueo una máquina durante un mantenimiento programado?
En onBeforeCellRender, pon args.cell.properties.disabled a true en las celdas de esa máquina y esa ventana. Las celdas deshabilitadas aparecen rayadas y rechazan que se suelten eventos o se seleccionen tramos. Pon cellsDisabled en el recurso para sacar una máquina del plan por completo.
¿Puede la línea de tiempo mostrar turnos en lugar de horas?
Sí. Usa scale «CellDuration» con celdas de 480 minutos para tres turnos desde medianoche, o scale «Manual» con un array timeline para límites como las 06:00, las 14:00 y las 22:00. Un nivel de zoom con celdas de una hora deja el detalle a un paso.
Prueba la demo de Forge
Forge, una planta ficticia, mueve una orden para esquivar una ventana de mantenimiento y te deja seguir su secuencia de operaciones vinculadas y la carga calculada. Todos los datos son sintéticos.
Ejemplos que funcionan