System for Dynamic Production Rescheduling under Unexpected Events
Andy J. Figueroa1, Raul Poler2, Beatriz Andres3
Recibido: 13/10/24 | Aceptado: 10/01/25
Resumen
Este trabajo propone un Modelo de Programación Lineal Mixta (MILP) para abordar el problema de reprogramación de producción en un sistema de manufactura tipo taller de trabajo sujeto a eventos inesperados, con el objetivo de minimizar costes de producción y cambios de programación. Inicialmente, se calcula un plan de producción óptimo asignando lotes a máquinas. Posteriormente, se ejecuta una reprogramación dinámica en respuesta a eventos como averías o escasez de materias primas. En caso de avería de máquina, se fijan partes del plan para que permanezcan inalteradas durante la reprogramación, asegurando que la producción de productos ya en curso no se vea afectada. En caso de escasez de materia prima, se incorpora la opción de diferir lotes de producción o realizar compras urgentes de material para evitar retrasos significativos, adaptando así el plan al estado actual del taller mediante un algoritmo de enfoque iterativo y reactivo. Los resultados muestran que la reprogramación encuentra una solución eficiente que se ajusta a las nuevas condiciones, minimizando cambios respecto al plan inicial en un tiempo computacional aceptable.
Palabras clave: Programación de Producción, MILP, optimización, eventos inesperados, reprogramación.
Abstract
This paper proposes a Mixed Linear Programming Model (MILP) to address the production rescheduling problem in a job shop type manufacturing system subject to unexpected events, with the objective of minimizing production costs and scheduling changes. Initially, an optimal production plan is calculated by assigning batches to machines. Subsequently, dynamic rescheduling is executed in response to events such as breakdowns or raw material shortages. In the event of a machine breakdown, parts of the plan are set to remain unchanged during rescheduling, ensuring that production of products already in progress is not affected. In case of raw material shortages, the option to defer production batches or make urgent material purchases is incorporated to avoid significant delays, thus adapting the plan to the current state of the shop floor through an iterative and reactive approach algorithm. The results show that rescheduling finds an efficient solution that adjusts to the new conditions, minimizing changes with respect to the initial plan in an acceptable computational time.
Keywords: Production Scheduling, MILP, optimization, unexpected events, rescheduling.
En el entorno competitivo y dinámico de la manufactura moderna, la eficiencia en la planificación y la programación de la producción es clave para mantener la competitividad y minimizar los costes operativos. Las decisiones en la planificación no solo afectan a las bases estratégicas, sino que también influyen a la ejecución de los procesos productivos a nivel operativo, permitiendo a las empresas alcanzar sus objetivos de manera eficiente y mantenerse competitivas en el mercado. Estas decisiones se caracterizan por abarcar un horizonte temporal de orden descendente y reflejan el impacto de las decisiones, logrando una integración vertical entre los objetivos estratégicos, tácticos y operativos. Según el enfoque de horizontes temporales propuesto por Chase et al. (1994) la diferencia entre los niveles de planificación se describe de la siguiente manera: 1) La planificación de la producción se considera de nivel estratégico y aborda un horizonte temporal de entre tres y cinco años, enfocándose en la definición los objetivos a largo plazo de la organización y el diseño de las estrategias para alcanzarlos; 2) La programación de producción o planificación detallada se encarga de programar las actividades de producción a corto plazo, siendo considerada de nivel operativo.
La programación de la producción se define como el proceso de asignar recursos generalmente limitados y programar las actividades necesarias para cumplir con los objetivos de producción a corto plazo de manera eficiente. Esto implica determinar cuándo procesar un trabajo, con qué máquina hacerlo y qué prioridad asignar a cada tarea (Valledor et al., 2018). Esta etapa se centra en el día a día en los talleres de producción. En consecuencia, al ser un proceso que puede estar expuesto a un entorno dinámico, la programación de producción debe adaptarse rápidamente a los cambios en la demanda, la disponibilidad de recursos y las condiciones del taller. La programación de la producción enfrenta importantes retos debido a la compleja coordinación de diversas operaciones y recursos en entornos industriales. Estos retos se intensifican en los sistemas de manufactura tipo taller de trabajo, donde la eficiencia depende de una sincronización precisa de maquinaria, mano de obra y materiales.
La mayoría de los sistemas de fabricación se enfrentan a entornos dinámicos en los que los eventos inesperados pueden provocar un cambio en los planes programados (Takeda-Berger et al., 2022). Tales imprevistos pueden interrumpir significativamente el flujo de producción y aumentar los costes asociados tanto a la producción como a los ajustes inadecuados en los planes.
Durante la ejecución de los trabajos, pueden aparecer muchos eventos inesperados que alteran el plan de producción ya establecido. Dutta (1990) y Dhingra et al. (1992) denominan a estos eventos inesperados como factores de reprogramación, debido a que la presencia de uno de ellos desencadenará una necesidad por ajustar el programa de producción establecido inicialmente. Entre ellos los más comunes son:
• Avería de maquinaria
• Retraso en la llegada o escasez de materiales
• Cambio de fecha de vencimiento del pedido
• Cambio de prioridad laboral
• Cambios en la capacidad de recursos humanos
Los fabricantes necesitan nuevas soluciones para actualizar su plan de producción cuando se produce un cambio en el sistema productivo o en su entorno (Tliba et al., 2023). Por lo que la gestión efectiva requiere la capacidad de reaccionar rápidamente ante estos eventos inesperados, y mitigar sus efectos en la medida de lo posible. Una estrategia ampliamente discutida y considerada para abordar estos desafíos es la reprogramación de la producción.
Jiménez et al., (2018) definen la reprogramación dinámica como el proceso de actualización de la programación de la producción existente en respuesta a las interrupciones que puedan ocurrir. Su objetivo principal es proporcionar una respuesta inmediata a eventos inesperados, con la finalidad de mantener la eficiencia operativa, logrando reducir tanto los tiempos de inactividad como los costes operativos que conlleva. Shafaei y Brunn (1999), Vieira et al. (2003), Janak et al. (2006) y Rahman et al. (2018) detallan que una reprogramación dinámica, en respuesta a eventos inesperados en el taller de producción, puede minimizar los impactos en el plan de producción, concluyendo que, a medida que aumenta la incertidumbre en los talleres, la reprogramación se convierte, frecuente, en una estrategia eficaz para lograr mayor robustez en el plan de producción.
Para lograr una reprogramación efectiva, Vieira et al. (2003) identifica una serie de aspectos clave a considerar:
• Entorno de Reprogramación: Define el contexto y las condiciones específicas en las que se lleva a cabo la reprogramación.
• Estrategia de Reprogramación: Especifica la metodología para actualizar el programa de producción existente, especificando qué eventos inesperados o cambios en el entorno de producción son los que desencadenan la reprogramación.
• Método de reprogramación: Establece el método a utilizar para recalcular el plan de producción inicialmente establecido.
• Política de Reprogramación: Determina cuándo y cómo se realiza la reprogramación.
El objetivo del presente trabajo es resolver el problema de reprogramación de producción sujeto a eventos inesperados. Los eventos considerados son averías de máquinas y escasez de materia prima. En caso de escasez de materia prima, se contempla la compra urgente como alternativa al retraso en la producción. Para ello, se propone un modelo de programación lineal entero mixto (MILP) y una estrategia de reprogramación dinámica, con el fin de minimizar tanto los costes totales de producción, incluidos los costes derivados de la compra urgente de materia prima, como los cambios necesarios en los planes de producción al ajustarse respecto al plan inicial debido a las interrupciones ocasionadas por dichos eventos, logrando tiempos de computación reducidos.
Para ello, el resto de este documento está organizado de la siguiente manera: en la Sección 2 se presenta una revisión de la literatura relevante, con el fin de contextualizar este estudio y justificar su contribución. La Sección 3 describe el problema a resolver, mientras que en la Sección 4 se detalla el modelo MILP y la estrategia de reprogramación para la programación de la producción sujeta a eventos inesperados. En la Sección 5 se presentan los experimentos realizados y los resultados obtenidos con el sistema de reprogramación dinámica de producción bajo eventos inesperados propuesto. Finalmente, en la sección 6 se exponen las discusiones y conclusiones.
La reprogramación de la producción ha sido ampliamente estudiada en la literatura para hacer frente a los eventos inesperados en los talleres de trabajo. Diversos enfoques y modelos han sido propuestos para mejorar la adaptabilidad frente a interrupciones (Tabla 1). No obstante, pocos estudios han explorado el uso de modelos matemáticos basados en la programación lineal entera mixta, combinando eventos inesperados como averías de máquinas y escasez de materias primas. A continuación, se revisan algunos de los trabajos más relevantes, con un enfoque especial en los métodos y objetivos utilizados para resolver el problema de reprogramación de producción sujeto a eventos inesperados.
Tabla 1. Revisión Bibliográfica de Métodos de Solución.
Autores |
Objetivos |
Eventos Inesperados |
Características |
Método de resolución |
Minimización de la duración del tiempo de finalización total y penalización por trabajos tardíos |
Llegada de nuevos trabajos, averías de máquinas |
Demanda variable, máquinas paralelas no idénticas, tiempo de configuración dependiente de la secuencia |
Estrategia de programación de horizonte rodante |
|
Minimización de la variación del tiempo de finalización total |
Cierre de unidades de procesamiento y modificaciones de pedidos |
Máquinas paralelas idénticas, tiempo de configuración dependiente de la secuencia, lista de materiales |
Estrategia de reprogramación reactiva |
|
Optimización de los cronogramas de producción |
Cambios en las órdenes de producción |
Entorno de producción flexible |
Subastas combinatorias |
|
Minimización del tiempo total más largo, medida de tardanza, estabilidad del cronograma |
Llegada de nuevos trabajos y averías de máquinas |
Demanda variable, máquinas paralelas, almacenamiento intermedio ilimitado |
Algoritmo evolutivo |
|
Minimización de la variación de la carga total de la máquina e intervalo de reparación |
Averías de máquinas |
Máquinas paralelas, almacenamiento intermedio ilimitado, tiempo de transporte entre máquinas excluido |
Algoritmo evolutivo |
|
Minimización del tiempo total más largo |
Llegada de nuevos pedidos |
Demanda variable, tiempo de configuración dependiente de la secuencia |
Algoritmo metaheurístico codicioso |
|
Minimización del cambio de tiempo de ciclo y el número de tareas trasladadas entre estaciones tras el reequilibrio |
Averías o paradas de estaciones de trabajo en líneas de montaje |
Múltiples estaciones de trabajo, variación en tiempos de tareas |
Algoritmo de colonia artificial de abejas |
|
Minimización de costes totales del fabricante |
Escasez de materia prima |
Demanda variable, múltiples proveedores, capacidad limitada de transporte |
Algoritmo heurístico |
|
Minimización del tiempo total más largo |
Averías de máquinas y llegada de nuevos trabajos |
Máquinas especificas a cada trabajo |
Aprendizaje por refuerzo profundo |
|
Minimización de la duración del tiempo de finalización total, trabajos tardíos |
Escasez de materia prima |
Priorización de trabajos, bloqueo de trabajos sin materia prima |
Algoritmo genético |
Araúzo et al. (2013) proponen una técnica de programación dinámica on-line basada en modelos de mercado e implementada a través de un sistema multiagente distribuido y no jerárquico. El sistema se adapta a la complejidad y dinamismo de los sistemas de fabricación actuales. Utilizan un mecanismo de subastas combinatorias entre agentes de órdenes de producción y agentes de máquinas. El objetivo es optimizar los cronogramas de producción a través de la interacción entre agentes, que intercambian información en tiempo real. Los resultados indican un rendimiento eficiente en escenarios dinámicos.
Janak et al. (2006) presentan un modelo de Programación Lineal Entera Mixta (Mixed Integer Linear Programming, MILP) para la programación reactiva, con el objetivo de minimizar la variación del tiempo de finalización total. Consideran paradas de unidades de procesamiento y modificaciones de pedidos como eventos inesperados, proponiendo una estrategia de reprogramación reactiva con fijación de variables no afectadas por estos eventos, logrando cronogramas más estables en las reprogramaciones posteriores a la presencia de interrupciones causadas por eventos inesperados.
Fang y Xi (1997) estudian el problema de programación de taller de trabajo (job shop problem, JSP) en un entorno dinámico, considerando la llegada de nuevos trabajos, averías de máquinas y fechas de vencimiento. Proponen una estrategia de programación de horizonte rodante para minimizar la duración total del tiempo de finalización y penalizar los trabajos tardíos, considerando también tiempos de configuración dependientes de la secuencia.
Takeda-Berger et al. (2022) proponen un enfoque de reprogramación de producción reactiva combinando un modelo de simulación basado en optimización y un algoritmo genético (Genetic Algorithm, GA), considerando la disponibilidad de inventario como evento inesperado. Esta combinación permite que la función objetivo de la metaheurística dependa de los resultados de la simulación, como el número de trabajos tardíos y el tiempo medio de producción.
Jingzhe Chen et al. (2021) abordan las interrupciones masivas en la cadena de suministro provocadas por el brote de COVID-19, que dificultan la recuperación de los fabricantes a corto plazo. Proponen un modelo MILP que integra estrategias como la adquisición de emergencia en el lado de la oferta, modificaciones en los productos por parte de los fabricantes y la compensación de precios de pedidos pendientes en el lado de la demanda. El objetivo principal es minimizar el coste total del fabricante durante interrupciones en el suministro, considerando costes como los pedidos fijos, adquisiciones de proveedores originales (incluyendo compras urgentes), producción, pedidos pendientes y cambios en los productos. El modelo, implementado con un algoritmo heurístico basado en ILOG CPLEX, demuestra que su estrategia reduce significativamente la pérdida de beneficios por entregas tardías y cancelaciones de pedidos, disminuye el impacto de las interrupciones en la cadena de suministro.
Reddy et al. (2018) desarrollan un modelo de programación no lineal entera mixta para el problema de programación de taller de trabajo flexible (flexible job shop scheduling problem, FJSP) con el objetivo de reducir la variación de la carga total de la máquina y el intervalo de reparación. Analizan el problema considerando las averías de las máquinas como eventos inesperados y proponen un algoritmo evolutivo con múltiples objetivos. Utilizan el tiempo medio entre fallos y el tiempo medio de reparación para evaluar el funcionamiento del job shop durante una avería.
Shen y Yao (2015) proponen un modelo MILP junto con un algoritmo evolutivo multiobjetivo para abordar el problema dinámico FJSP. Consideran la llegada de nuevos trabajos y avería de máquinas como eventos inesperados. Evalúan la capacidad de captura, tardanza y carga máxima de trabajo. También comparan su algoritmo con el algoritmo de optimización no dominada por el objetivo II y el método de selección basada en la densidad de puntos, demostrando un mejor desempeño por el propuesto.
Wang et al. (2021) proponen una programación dinámica utilizando un método de aprendizaje por refuerzo profundo para resolver el JSP, considera avería de máquina y la llegada de nuevos trabajos como eventos responsables para la reprogramación.
La necesidad de reprogramación también afecta a los talleres de flujo (flow shop), donde los autores tratan mediante algoritmos y MILP. Karas y Ozcelik (2021) investigan el problema de asignación y reequilibrio de trabajadores en líneas de montaje interrumpidas por averías o paradas de estaciones de trabajo. Proponen un modelo MILP con una función multiobjetivo que incluye el cambio de tiempo de ciclo y el número de tareas trasladadas después del reequilibrio. También desarrollan un algoritmo de colonia artificial de abejas que muestra un mayor rendimiento en instancias de gran tamaño en comparación con el MILP.
Asimismo, Liu et al. (2018) abordan el problema de programación de taller de flujo de permutación con la llegada de nuevos pedidos, utilizando un algoritmo metaheurístico llamado codicioso iterado. Este método mejorado de destrucción, construcción y reparación permite una reprogramación dinámica eficiente para enfrentar los cambios generados en las condiciones iniciales.
A lo largo de la revisión se ha evidenciado que la mayoría de los enfoques propuestos por diversos autores, como los algoritmos metaheurísticos y aproximados (Takeda-Berger et al., 2022; Liu et al., 2018), no garantizan la obtención de una solución óptima, enfocándose principalmente en proporcionar soluciones viables dentro de tiempos computacionales razonables. Por otro lado, Janak et al. (2006) proponen un modelo MILP reactivo con fijación de variables no afectadas por eventos inesperados, logrando cronogramas más estables. Sin embargo, este enfoque no contempla de manera proactiva la reprogramación de dichas variables. La falta de utilización de modelos MILP para abordar eventos inesperados y el hueco existente en la literatura han motivado la propuesta de este trabajo. Se propone un MILP que, además de considerar las variables no afectadas, las incluye en la reprogramación con el fin de determinar si deben o no ser ajustadas, lo que permite mayor flexibilidad al plan de producción ante eventos inesperados. Adicionalmente, se desarrolla un algoritmo basado en un enfoque iterativo y reactivo, encargado de la reprogramación y monitorización del estado del taller, permitiendo una respuesta dinámica a los eventos inesperados. La necesidad de un enfoque más proactivo y completo justifica el desarrollo del modelo MILP presentado en este artículo.
Se estudia el problema de reprogramación de producción sujeto a eventos inesperados (production rescheduling problem subject to unexpected events, PRPUEs) que consiste en determinar el plan o programa de producción inicial con la asignación optima de lotes de producción de N productos a 𝑀 máquinas paralelas no idénticas en un taller de trabajo.
Cada producto 𝑖 (𝑖 =1,2, …, N) consume una cantidad determinada de materia prima 𝑟 (𝑟 =1,2, …, R) durante su proceso de producción, y existe un coste asociado a su producción y configuración, dependiente de la máquina 𝑗 (𝑗 =1,2, …, J) a la que se le asigne.
Asimismo, cada máquina está sujeta a posibles averías que pueden interrumpir el proceso de producción, y existe la posibilidad de escasez de materia prima por retraso en la cadena de suministro, lo que plantea la opción de realizar una compra urgente de materia prima para hacer frente a la escasez.
Los productos deben cumplir con su fecha de entrega dentro de un horizonte temporal discretizado en períodos de tiempo 𝑡 (𝑡 =1,2, …, T). La finalización anticipada de la producción de un producto antes de su fecha de vencimiento incurre en costes de inventario. Cada máquina j puede procesar como máximo un producto 𝑖 a la vez, aunque puede tener asignado más de un producto 𝑖 esperando a ser procesado.
Un mismo producto 𝑖 tiene un tiempo de procesado diferente para cada máquina 𝑗.
El objetivo es encontrar una asignación inicial óptima o casi óptima de lotes de productos 𝑖 a máquinas 𝑗 que minimice los costes totales de producción e inventario. Esto incluye adaptar rápidamente el plan de programación de la producción al estado actual del taller en caso de alteración de las condiciones iniciales por la aparición de eventos inesperados, como averías de maquinaria o escasez de materias primas. El problema reside en la capacidad de reacción para cambiar el plan inicial. El objetivo de este artículo reside en la propuesta de un MILP que permita reprogramar la producción tratando.
Los supuestos complementarios en el problema se consideran según las siguientes categorías.
Configuración:
• Costes de configuración dependientes de la máquina.
• Cada producto requiere una configuración específica en la máquina asignada, lo que conlleva un tiempo asociado.
• El tiempo de configuración se suma al tiempo de procesamiento y se considera como parte del tiempo total de producción en cada período de tiempo 𝑡.
Materia prima:
• El procesamiento de productos conlleva el consumo de materia prima, establecida según la lista de materiales (bill of materials, BOM). El BOM detalla las cantidades requeridas de materia prima r para la producción de cada producto 𝑖.
• Se supone que el inventario inicial de materia prima utilizado en la planificación de la producción refleja la cantidad total a consumir por la demanda de producto final en el horizonte de planificación.
• No se considera el coste de almacenamiento de materia prima en el problema. Se enfoca únicamente en las limitaciones relacionadas con la disponibilidad de materia prima.
Eventos Inesperados y Reprogramación:
• Se consideran dos tipos principales de eventos capaces de causar la reprogramación; la escasez de materia prima y las averías de máquinas.
• Las averías de maquinaria dejan a una máquina fuera de servicio durante uno o más períodos. En caso de interrupción en la producción, los productos no afectados continuaran con su proceso normal.
• La escasez de materia prima se deriva de los retrasos en los períodos de entrega preestablecidos por el proveedor.
• Los retrasos en la entrega de materia prima están limitados a un solo período.
• Ante una escasez de materia prima, se debe decidir entre realizar una compra urgente o diferir la producción al siguiente periodo, en el cual se espera la recepción de la materia prima retrasada.
• Para abordar el evento de escasez de materia prima, se supone que cada tipo de materia prima está asignado exclusivamente a un solo producto, de modo que ningún tipo de materia prima se comparte entre diferentes productos. En caso de escasez, esta afecta únicamente al producto específico asociado con la materia prima en cuestión, y no a otros productos.
Esta sección se centra en la descripción de la herramienta propuesta para resolver el problema de programación de producción sujeta a eventos inesperados. Este enfoque abarca desde la formulación matemática del modelo MILP, hasta la estrategia de reprogramación dinámica diseñada para adaptar la programación de la producción en respuesta eventos inesperados.
Inicialmente, se detalla el modelo MILP, encargado de optimizar la asignación de productos a máquinas y definir los lotes de producción tanto en condiciones normales como cuando ocurren eventos inesperados. Posteriormente, se describe la estrategia de reprogramación que se basa en un algoritmo de enfoque iterativo y reactivo.
El modelo MILP presentado se basa en el desarrollado por Figueroa et al. (2024), con el objetivo de mejorarlo mediante la incorporación de elementos adicionales, que contemplan la compra urgente de materia prima como alternativa al retraso. Esto incrementa su realismo al abordar la escasez de materia prima como un evento inesperado. La nomenclatura del problema de programación de producción sujeto a eventos inesperados se detalla en la Tabla 2, donde se listan los índices relacionados con productos, máquinas, materias primas y períodos. Seguidamente, se describen los parámetros de entrada del modelo MILP, los cuales incluyen tiempos de procesamiento, capacidades de las máquinas, estado de las máquinas, producción en curso, inventarios de productos terminados y materia prima. Finalmente, se definen el conjunto de variables de decisión que representan las salidas del modelo MILP propuesto, las cuales permiten determinar la asignación de productos a las máquinas, el dimensionamiento de los lotes para cada período, y las decisiones relativas a la configuración de las máquinas. Las variables decisión generan el plan para la programación de la producción, a seguir en el taller de trabajo.
Tabla 2. Nomenclatura de modelo MILP.
Índices |
|
𝑖 |
Índice de productos 𝑖 ∈ {1, …, I} |
𝑗 |
Índice de máquinas𝑗 ∈ {1, …, J} |
r |
Índice de materia prima r ∈ {1, …, R} |
t |
Índice de periodos 𝑡 ∈ {1, …, T} |
Parámetros |
|
dit |
Demanda del producto 𝑖 durante el periodo de tiempo 𝑡 |
caj |
Capacidad de máquina 𝑗 (unidades de tiempo) |
reqij |
Tiempo requerido para producir una unidad de producto𝑖 en máquina 𝑗 |
cpij |
Coste unitario de producción de producto 𝑖 en máquina 𝑗 |
ccj |
Coste de configuración de la máquina 𝑗 |
stij |
Tiempo de configuración del producto 𝑖 en la máquina 𝑗 |
urri |
Tasa de materia prima r requerida para producir el producto 𝑖 |
InvIpi |
Inventario inicial del producto 𝑖 |
InvIrr |
Inventario inicial de la materia prima r |
mpfrt |
Cantidad de materia primar no disponible por escasez en el periodo 𝑡 |
ucprmr |
Coste unitario de compra urgente de materia prima r |
chpi |
Coste de inventario del producto 𝑖 |
cdi |
Coste diferimiento de lotes de producción para el producto 𝑖 |
smjt |
Estado de la máquina 𝑗 en el período 𝑡 (1 si la máquina j está averiada en el periodo 𝑡, 0 en caso contrario) |
pbijt |
Cantidad de producto 𝑖 producida en la máquina 𝑗 hasta el período de tiempo 𝑡 antes de la avería de máquina (smjt= 1) |
pijt |
1 si el producto 𝑖 ha comenzado su producción en una máquina 𝑗 diferente a la averiada (smjt= 1) en el período de tiempo 𝑡, 0 en caso contrario |
Variables de decisión |
|
Xijt |
1 si el producto 𝑖 se asigna a la máquina 𝑗 en el período 𝑡, 0 en caso contrario |
QPijt |
Cantidad de producto 𝑖 a producir en la máquina 𝑗 en el período de tiempo 𝑡 |
BOit |
Cantidad diferida del producto𝑖 en el período de tiempo 𝑡 |
USRMrt |
Cantidad de materia prima r a comprar de forma urgente en el periodo de tiempo 𝑡 |
InvFPit |
Inventario final del producto 𝑖 en el período de tiempo 𝑡 |
TIIRMrt |
Inventario inicial disponible de la materia prima r en el período de tiempo 𝑡 |
InvFRrt |
Inventario final de la materia prima r en el período de tiempo 𝑡 |
XRijt |
1 si el producto i se asigna a la máquina 𝑗 en el período de tiempo 𝑡 y periodo de 𝑡-1, 0 en caso contrario |
Zjt |
Cambio de configuración adicional (Variable auxiliar dependiente de XRijt) , toma valor 1 únicamente cuando al menos un producto se asigna a una máquina 𝑗 en periodos de tiempo t-1 y t, 0 en caso contrario |
STTjt |
Tiempo total de configuración de la maquina 𝑗 en período de tiempo𝑡 |
STMAXjt |
Mayor tiempo de configuración en la máquina 𝑗 relacionado con los productos asignados en periodos de tiempot-1 y t |
CFTjt |
Número total de configuraciones en la máquina 𝑗 en el período de tiempo 𝑡 |
A continuación, se describe la formulación del modelo MILP, correspondiente a las ecuaciones (1-31). La función objetivo, ecuación (1), busca minimizar los costes totales asociados al proceso de producción e inventario, que abarcan varios componentes, incluyendo los costes directos de producción, que dependen del uso de las máquinas; los costes de configuración de las máquinas, que aumentan cuando es necesario realizar ajustes entre diferentes productos; y los costes relacionados con el manejo de inventarios de productos terminados. La gestión del inventario requiere balancear sus costes evitando retrasos en la entrega y el exceso de inventario, que incrementa los costes de almacenamiento. Además, la función objetivo considera los costes asociados a los productos diferidos, los cuales son fundamentales para garantizar el cumplimiento de la demanda y los costes asociados a la compra urgente de materia prima en caso de que ocurra el evento inesperado de escasez de materia prima.
Restricciones de balance de inventario:
Las ecuaciones de balance de inventario (2) y (3) garantizan los valores apropiados para las existencias, las cantidades a producir, y las cantidades diferida del producto 𝑖) para cada período de tiempot ≥ 1. Ambas restricciones tienen en cuenta las cantidades producidas hasta el momento justo en el que se genera una avería en máquina 𝑗, en caso de que se suceda. La restricción (4) define la cantidad de inventario inicial disponible para la materia prima r en el primer periodo de tiempo (t=1), excluyendo los lotes de materia prima retrasados. La restricción (5) garantiza que los lotes de materia prima retrasados del período anterior (t-1) se incorporen al inventario inicial disponible del período t , como consecuencia del nuevo período de llegada de la materia prima que no llegó a tiempo en el período anterior. La restricción (6) asegura que los niveles de inventario de materia prima sean precisos para cada período de tiempo t, teniendo en cuenta el consumo planificado de materia prima. La restricción (7) garantiza que el consumo de materia prima r, en todo el horizonte de programación de la producción, se mantenga dentro de los límites establecidos por el inventario inicial disponible y las compras urgentes realizadas.
Restricción de compras urgentes de materia prima:
La restricción (8) asegura que las compras urgentes de materia prima solo se realicen cuando se genere escasez provocada por retrasos en los lotes necesarios para la producción reprogramada.
Restricción de cumplimiento global de la demanda:
La restricción (9) garantiza el cumplimiento de la demanda global, asegura que la cantidad producida de producto 𝑖 durante los períodos de tiempo t sea suficiente. También considera el ajuste de la producción según la cantidad de producto 𝑖 ya producida hasta el momento en que ocurre una avería en máquina 𝑗 (pbijt).
Restricciones de capacidad y avería de maquinaria:
La restricción (10) determina que el producto 𝑖 no sea asignado a la máquina 𝑗 en el período de tiempo t en caso de avería (smjt= 1) cuando se necesite hacer una reprogramación. En caso contrario, cuando la máquina 𝑗 está operativa (smjt= 0), la restricción (11) garantiza que el tiempo total requerido para la producción de los productos 𝑖 asignados a la máquina j durante el periodo de tiempo t no exceda la capacidad de tiempo disponible de la máquina 𝑗 en el período de tiempo t.
Restricciones de cálculo de productos que repiten su producción:
Las restricciones (12), (13) y (14) indican si un producto 𝑖 es asignado o producido en la maquina 𝑗 en el período de tiempo (t-1) y t, registrando una producción en dos periodos consecutivos.
Restricciones de configuración de la máquina:
La restricción (15) determina el tiempo total de configuración para la máquina 𝑗 durante el período de tiempo t=1. Las restricciones (16) y (17) establecen límites para el tiempo de configuración en períodos de tiempo t ≥ 1, descontando el valor máximo de tiempo de configuración de uno de los productos 𝑖 que repiten su asignación en la maquina 𝑗 en el periodo de tiempo t (XRijt,= 1). Permitiendo que en un mismo periodo una máquina j pueda fabricar de forma secuencial dos o más productos 𝑖.
La restricción (18) asegura que STMAXjt tome el tiempo de configuración del producto que requiere el mayor tiempo de configuración entre todos los productos asignados a la 𝑗 durante períodos de tiempo t-1 y t (XRijt= 1). La restricción (19) garantiza que STMAXjt no supere el mayor tiempo de configuración obtenido entre el producto 𝑖 o los productos 𝑖 asignados.
La restricción (20) determina el número de configuraciones totales en la máquina j en periodo de tiempo (t=1). La restricción (21) calcula las configuraciones totales en períodos > 1, descontando una configuración para reflejar el ahorro cuando no se requiere un cambio adicional efectuado por un producto asignado en periodo de tiempo t – 1 y t.
Variables de límite y naturaleza:
La restricción (22) garantiza que un producto i sea producido en una máquina j durante el período de tiempo t si está asignado a esa máquina, siendo M un número grande. La restricción (23) establece que el producto i no puede ser asignado a una máquina j durante un período de tiempo t si no se determina ningún tamaño de lote de producción. La restricción (24) determina el valor de la variable auxiliar Zjt, activándose únicamente cuando al menos un producto 𝑖 se asigna a una máquina 𝑗 en periodos de tiempo t-1 y t.
La restricción (25) y (26) indican la naturaleza binaria de las variables Xijt que representan la asignación de productos; XRijt producto asignado en periodos consecutivos y la variable auxiliar Zjt.
Las restricciones (27), (28), (29), (30) y (31) indican la naturaleza continua de las variables representadas.
La naturaleza del PRPUEs obliga a diseñar sistemas dinámicos capaces de adaptar el plan de producción según las condiciones variables del entorno. En consecuencia, este artículo también propone un algoritmo capaz de hacer frente al problema definido y modelado. La estrategia abordada implica la programación inicial de la producción y la posterior reprogramación en caso de eventos inesperados (Algoritmo 1). Ambas partes se resuelven mediante el uso del modelo MILP descrito en la sección anterior.
En este contexto, se utiliza un enfoque basado en los aspectos clave para la reprogramación identificados por Vieira et al. (2003):
• Entorno de Reprogramación: Se dirige a talleres de trabajo con máquinas paralelas no idénticas.
• Estrategia de Reprogramación: Se adopta una estrategia iterativa y reactiva, actualizando el plan de producción en respuesta a escasez de materias y avería de maquinaria.
• Método de Reprogramación: Se adopta un enfoque de reprogramación parcial, en el cual solamente se modifica una parte del plan de producción inicial. Este método permite mantener inalteradas las partes del programa que no requieren cambios, logrando así ajustes menores sin la necesidad de rehacer el plan de producción por completo.
• Política de reprogramación: Las políticas de reprogramación guían cómo y cuándo se realizan los ajustes necesarios. A continuación, se describen las políticas de reprogramación establecidas:(i) Productos asignados a máquinas operativas que ya han comenzado su producción en el momento de la avería en otra máquina se establecen como inamovibles (pijt = 1). Esto significa que su asignación y cantidad a producir, calculadas en el plan de producción inicial (QPijt), se mantienen fijas durante el cálculo de reprogramación. (ii) La reprogramación se ejecuta solamente por escasez de materia prima (mpfrt) y averías de máquinas(smjt).
Las fases implicadas en el proceso general programación y reprogramación de la producción, que se ilustra en la figura 1, son:
Fase 1. Cálculo del plan inicial: se calcula un plan de producción inicial utilizando modelo MILP descrito en la sección anterior. Este plan incluye la asignación óptima o casi óptima de lotes de producción a las máquinas.
Fase II. Monitoreo del taller de trabajo: Tras el cálculo del plan de producción inicial, se lleva a cabo un monitoreo continuo del entorno de producción para detectar cualquier cambio asociado a los eventos inesperados, como averías de maquinaria (smjt = 1) o escasez de materias prima(mpfrt >= 1).
Fase III. Reprogramación: Durante esta fase, se determina inicialmente qué partes del plan de producción deben permanecer inalteradas, como la producción de productos ya en proceso en caso de averías. La variable de decisión asociada a esta parte, antes del cálculo de la reprogramación, es QPijt, que representa la cantidad de producción que se mantiene fija para garantizar que la asignación y la cantidad a producir permanezcan constantes. Posteriormente, se realiza el cálculo de la reprogramación utilizando el modelo MILP. En caso de escasez de materia prima, se decide si realizar una compra urgente de materia prima (USRMrt) o diferir lotes de a producir (BOit) para su producción en un periodo posterior.
El algoritmo propuesto (algoritmo 1) aborda la programación y reprogramación dinámica de la producción según el proceso descrito en la Figura 1. Su objetivo principal es calcular un plan óptimo de producción y garantizar la adaptabilidad del plan ante eventos inesperados a través de la monitorización continua del estado del taller. Cuando se detectan eventos inesperados, tales como averías en las máquinas o escasez de materia prima, el algoritmo activa un proceso de reprogramación para actualizar el plan de producción según las necesidades actuales.
Figura 1. Proceso de Programación y Reprogramación Dinámica.

El algoritmo 1 describe el proceso general de programación y reprogramación dinámica de la producción. Comienza con la verificación de la existencia del archivo asociado al estado de programación. Si el archivo no existe (lo que indica que no se ha ejecutado la programación de producción inicial), se crea e inicializa el modelo. Seguidamente, se resuelve el modelo MILP para obtener el plan de producción inicial y se guarda el estado actualizado. Posteriormente se inicia la monitorización del taller de producción que permitirá detectar un evento inesperado sobre el estado de la máquina y/o escasez de materia prima (algoritmo 2). En el bucle principal, el algoritmo espera a que se detecte un evento, realiza los ajustes necesarios en el modelo, y vuelve a resolverlo para actualizar el plan de producción.
Algoritmo 1: Programación y Reprogramación Dinámica de la Producción
Entrada: Instancias del modelo y parámetros
Salida: Programa de producción actualizado
1: Check si el archivo de estado de programación inicial (status) existe
1.1: If no existe, create status.tab con valor 0
2: Read el valor de status
2.1: If el valor es 0, hacer lo siguiente:
2.1.1: Create una instancia inicial del modelo desde los datos de entrada
2.1.2: Solve el modelo MILP para obtener el plan de producción inicial
2.1.3: Save los resultados y actualizar status =1
2.2: Else:
2.2.1: Print "Inspeccionando estado del taller."
3: Start hilo en segundo plano para monitorear eventos (avería de máquina, escasez de materia prima)
4: while True hacer lo siguiente:
4.1: Wait a que el hilo en segundo plano detecte un evento (evento_reprogramacion.wait=true)
4.2: Clear el indicador del evento
4.3: Create una nueva instancia del modelo
4.4: Load los últimos valores del plan de producción inicial desde base de datos
4.5: Implementar ajustes basados en el evento detectado:
4.5.1: If se detecta escasez de materia prima(mpfrt >=1):
4.5.1.1: Print “Se detectó un cambio en el estado de materia prima. Reprogramando. “
4.5.2: If avería detectada (smjt=1):
4.5.2.1:print “Avería detectada, reprogramando.
4.5.2.2: Fix el plan de producción (QPijt) de la producción en curso en curso(pijt)
4.5.2.3: Print "Variable (QPijt) fijada en valor"
4.6: Solve el modelo con los nuevos ajustes (reprogramación de producción)
4.7: Print "Inspeccionando estado del taller."
El algoritmo 2 forma parte integral del algoritmo 1 y se centra en la monitorización del taller y gestiona la detección de eventos, actualizando el estado del sistema y activando el proceso de reprogramación cuando se detectan cambios en el estado de las máquinas o la materia prima. Su naturaleza iterativa y reactiva permite realizar ajustes dinámicos en la producción.
Algoritmo 2: Monitorización del taller de trabajo
3: Start hilo en segundo plano para monitorear eventos (fallas de máquinas o escasez de materia prima):
3.2.1: Load el estado actual de las máquinas y materia prima
3.2.2: If hay diferencias en el estado de las máquinas comparado con el estado anterior:
3.2.2.1: If se detecta una avería (smjt=1):
3.2.2.2: Print ”Avería detectada, reprogramando.“
3.2.2.3: Activación de hilo de reprogramación (evento_reprogramacion.set=true)
3.2.2.4: Else:
3.2.2.4.1 print “Máquina en funcionamiento normal.”
3.2.2.5: Actualizar estado de las máquinas
3.2.3: If hay diferencias en el estado de la materia prima comparado con el estado anterior:
3.2.3.1: If se detecta un cambio significativo (mpfrt >= 1)
3.2.3.2:Print “Se detectó un cambio en el estado de materia prima. Reprogramando. “
3.2.3.3: Activación de hilo de reprogramación (evento_reprogramacion.set=true)
3.2.3.4: Actualizar el estado de la materia prima
3.2.3.5: Esperar 1 segundo antes de la próxima monitorización del taller (time. Sleep=1)
El modelo matemático propuesto para el problema de reprogramación de la producción sujeto a eventos inesperados, junto con el algoritmo encargado de ejecutar el MILP y la reprogramación dinámica, se implementaron en Python 3.12 utilizando Pyomo como lenguaje de modelado de optimización. El sistema se ha evaluado en un conjunto de instancias para medir su rendimiento en términos de tiempo de resolución y capacidad de adaptación ante averías de máquinas y escasez de materia prima. Para la resolución del modelo, se utilizó el solver Gurobi 11.0. Las pruebas se llevaron a cabo en un ordenador con 8 GB de RAM y sistema operativo Windows 10 Enterprise de 64 bits.
En la siguiente sección de generación de datos, se describe el proceso utilizado para generar los datos necesarios para ejecutar los experimentos computacionales. Los conjuntos de datos para validar el rendimiento del sistema para la reprogramación dinámica propuesto corresponden a conjuntos de datos pequeños y medianos. Finalmente, en la última sección se presentan los resultados de los experimentos computacionales realizados.
Para la generación de datos, se definieron varios conjuntos de instancias, abarcando tamaños pequeños y medianos. El conjunto de datos pequeño corresponde a la cantidad mínima de datos necesarios para validar el modelo propuesto, mientras que el conjunto de datos mediano permite evaluar el rendimiento del con una mayor carga de trabajo. Para los experimentos computacionales, los datos fueron generados mediante un código programado en Python utilizando la biblioteca NumPy, que tiene como función determinar valores de manera aleatoria dentro de intervalos establecidos.
Los intervalos definidos para el cálculo de los valores de los parámetros en este estudio han sido determinados de forma que permiten representar condiciones realistas del problema investigado. Aunque los valores no provienen de casos reales o históricos específicos, se han establecido dentro de intervalos plausibles y realistas, siguiendo patrones observados en estudios similares de la literatura existente. La consideración de conjuntos de datos sintéticos permite evaluar el modelo de manera controlada, garantizando que el modelo MILP propuesto sea validado y aplicable en escenarios reales sobre el contexto de estudio.
A continuación, se describe cómo se establecen en la Tabla 3 los rangos asociados a los valores de los parámetros del modelo, definidos mediante distribuciones uniformes discretas (UD) dentro de intervalos especificados [r1, r2]:
• Los parámetros clave como el coste de diferir producción (cdi), coste de configuración de máquina (ccj), coste unitario de producción (cpij), coste de mantenimiento de producto(chpi), coste unitario de compra urgente de materia prima (ucprmr) tiempo requerido de producción (reqij), y el tiempo de configuración del producto(stij), se definen dentro de estos intervalos.
• El parámetro de capacidad de la máquina (caj) también se establece con UD [r1, r2], garantizando capacidad suficiente para la producción. Si ocurre una avería, la máquina afectada se deshabilita temporalmente, interrumpiendo su capacidad de producción hasta que se resuelva el problema.
• Los valores de la demanda (dit), se establecen para cinco periodos correspondientes a los días laborables de la semana, con valores generados aleatoriamente UD [r1, r2].
• El Inventario inicial de productos terminados (InvIpi), se determina también con UD [r1, r2]. Posteriormente, se calcula el inventario de materia prima en función de la demanda y la tasa de materia prima requerida para producir un producto (urri), garantizando la disponibilidad suficiente para cubrirla y permitiendo la simulación de eventos inesperados relacionados con la escasez de materia prima.
• El evento de escasez de materia prima (mpfrt) se define de manera controlada y arbitraria, indicando qué tipo de materia prima sufre retrasos en su entrega, en qué cantidad y el periodo (t ≥ 1) en el que sufre el retraso.
• Los parámetros asociados a las averías de máquina se determinan después del cálculo del plan de producción inicial. En este punto, se seleccionan aleatoriamente las máquinas involucradas en el proceso para experimentar el evento inesperado de avería de máquina (smjt=1), con la restricción de que un número especifico X de máquinas puede averiarse ().
• Luego de identificar las máquinas afectadas, los parámetros pbijt y pijt se establecen en función del impacto estimado de la avería. En particular, pbijt, que representa la cantidad producida de un producto hasta el momento en que ocurre la avería, su valor está determinado por un intervalo porcentual aleatorio UD [p1, p2] basado en la demanda correspondiente al mismo periodo. El parámetro pijt, que indica qué productos han comenzado su producción en el periodo de la avería, se determina con valores binarios aleatorios dentro del intervalo.
Tabla 3. Generación de valores para parámetros.
Parámetros |
Valor |
dit |
UD (15, 45) |
caj |
UD (200, 300) |
reqij |
UD (1,3) |
cpij |
UD (2,5) |
ccj |
UD (25,35) |
stij |
UD (6,10) |
urri |
UD (1,3) |
ucprmr |
UD (1,3) |
InvIpi |
Aleatorio (0, 15) |
InvIrr |
(dit * urri); valor dependiente del producto entre la demanda y la tasa de materia prima requerida |
chpi |
UD (5,10) |
cdi |
UD (20,30) |
smjt |
UD (0, 1); condicionado a que solo x cantidad de máquinas puedan estar averiadas por periodo: |
pbijt |
UD (p1, p2) sismjt= 1, 0 en caso contrario |
pijt |
UD (0, 1) |
mpfrt |
UD (0, 100) |
Mediante el proceso de generación de datos previamente descrito, se lleva a cabo una serie de experimentos para validar el sistema de reprogramación dinámica. Para proporcionar una visión clara de los experimentos y resultados, estos se dividen en dos partes. En primer lugar, se realiza un conjunto de experimentos para calcular únicamente la producción inicial, sin considerar los eventos inesperados. Estos experimentos se realizan utilizando conjuntos de datos correspondientes a instancias pequeñas y medianas, lo que permite analizar la eficiencia temporal del modelo MILP para la programación de producción. En segundo lugar, se llevan a cabo experimentos adicionales en los que se evalúa la capacidad del sistema para adaptarse dinámicamente a los eventos inesperados. En estos experimentos, se comparan las modificaciones obtenidas en el plan de producción recalculado mediante la reprogramación con el plan de producción original. Esta comparativa permite evaluar la adaptabilidad del sistema y la capacidad de minimizar los cambios respecto al plan inicial.
A modo de ejemplo, se presenta un conjunto de datos correspondiente a una instancia pequeña, utilizado para el cálculo inicial de la programación de la producción. Este conjunto de datos incluye 4 productos, 3 máquinas, 4 tipos de materia prima y 3 períodos, como se describe en la Tabla 4. En la Tabla 5 se muestra la demanda requerida para cada producto.
Tabla 4. Experimento de programación inicial de la producción: Tamaño de instancia.
𝑖 |
𝑗 |
r |
t |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
3 |
4 |
- |
4 |
- |
Tabla 5. Experimento de programación inicial de la producción: Demanda para cada producto.
𝑖 |
t |
dit |
1 |
1 |
25 |
1 |
2 |
24 |
1 |
3 |
27 |
2 |
1 |
21 |
2 |
2 |
21 |
2 |
3 |
23 |
3 |
1 |
31 |
3 |
2 |
21 |
3 |
3 |
21 |
4 |
1 |
15 |
4 |
2 |
0 |
4 |
3 |
24 |
Las Tablas 6 y 7 presentan los principales resultados del modelo MILP de manera simplificada, destacando únicamente las variables de decisión asociadas a la asignación de productos a máquinas, al tamaño de los lotes de producción y a las configuraciones de máquinas.
Tabla 6. Experimento de programación inicial de la producción: Plan inicial de la producción.
𝑖 |
𝑗 |
t |
X_ijt |
QPijt |
1 |
1 |
1 |
1 |
25 |
1 |
1 |
2 |
1 |
24 |
1 |
1 |
3 |
1 |
27 |
2 |
2 |
1 |
1 |
21 |
2 |
2 |
2 |
1 |
21 |
2 |
2 |
3 |
1 |
23 |
3 |
3 |
1 |
1 |
31 |
3 |
3 |
2 |
1 |
21 |
3 |
3 |
3 |
1 |
21 |
4 |
1 |
1 |
1 |
15 |
4 |
1 |
2 |
1 |
0 |
4 |
1 |
3 |
0 |
24 |
Tabla 7. Experimento de programación inicial de la producción: Configuración de máquinas.
𝑗 |
t |
CFTjt |
STMAXjt |
STTjt |
1 |
1 |
2 |
0 |
13 |
1 |
2 |
1 |
6 |
0 |
1 |
3 |
0 |
6 |
7 |
2 |
1 |
1 |
0 |
6 |
2 |
2 |
0 |
6 |
0 |
2 |
3 |
0 |
6 |
0 |
3 |
1 |
1 |
0 |
7 |
3 |
2 |
0 |
7 |
0 |
3 |
3 |
0 |
7 |
0 |
El plan de producción inicial obtenido mediante el cálculo de programación de la producción, indica la cantidad de productos a fabricar y las correspondientes asignaciones de máquinas para cada período (Tabla 6). Además, se especifica el número de cambios de configuración que deberá realizar cada máquina, así como el tiempo total de configuración debido a la producción de los distintos productos (Tabla 7). La función objetivo correspondiente a los costes, obtenida en el cálculo, es de 2426.0 unidades monetarias.
Finalmente, en la Tabla 8 se presentan los resultados generales de las demás instancias ejecutadas en el cálculo de la programación de producción inicial. Esta tabla detalla información relevante, como la cantidad de productos, máquinas, períodos y los tiempos de resolución. Las instancias pequeñas están representadas por P (P1, P2, P3,...), mientas que las instancias medianas por M (M1, M2, M3,...).
Tabla 8. Resultados experimentales de modelo MILP para la programación inicial de la producción.
Inst. |
𝑖 |
𝑗 |
r |
t |
Nº restricciones |
Nº variables binarias |
Nº variables enteras |
Nº non zeros |
Tiempo (s) |
P1 |
3 |
2 |
3 |
3 |
170 |
42 |
121 |
433 |
0.0540 |
P2 |
8 |
5 |
8 |
3 |
808 |
255 |
535 |
3,064 |
0.19200 |
P3 |
10 |
5 |
10 |
7 |
2,510 |
735 |
1535 |
9,420 |
0.7450 |
M1 |
13 |
10 |
13 |
14 |
12,273 |
3,780 |
6,920 |
47,835 |
10.7630 |
M2 |
24 |
14 |
24 |
14 |
30,068 |
9604 |
16,562 |
128,126 |
80.6340 |
M3 |
32 |
16 |
32 |
16 |
51,712 |
16,640 |
28,144 |
214,096 |
302.6190 |
El experimento asociado a la reprogramación de la producción en respuesta a averías de maquinaria se centra en encontrar una asignación óptima, teniendo en cuenta este evento inesperado.
Para abordar el planteamiento del evento 1 (EV1 averías de máquinas), se considera un escenario posterior a la programación inicial, en el que ya se ha obtenido un plan de producción previo (QPijt) (Tabla 6). En este caso de estudio, se supone que la máquina 𝑗 = 2 sufre una avería en el período de tiempo t=1 y, como consecuencia debe permanecer inhabilitada durante el resto del período (Tabla 9). La Tabla 10 muestra los productos cuya producción ha comenzado en otras máquinas en el momento de la avería, por lo que se consideran inamovibles (pijt). La Tabla 11 detalla la cantidad producida por la máquina afectada justo antes de su avería (pbijt).
Tabla 9. Experimento EV1 : Estado de máquinas.
𝑗 |
t |
smij |
1 |
1 |
0 |
1 |
2 |
0 |
1 |
3 |
0 |
2 |
1 |
1 |
2 |
2 |
0 |
2 |
3 |
0 |
3 |
1 |
0 |
3 |
2 |
0 |
3 |
3 |
0 |
Tabla 10. Experimento EV1 : Productos Inamovibles.
𝑖 |
𝑗 |
t |
pijt |
1 |
1 |
1 |
1 |
2 |
2 |
1 |
0 |
3 |
3 |
1 |
1 |
4 |
3 |
1 |
0 |
Tabla 11. Experimento EV1 : Cantidad producida en máquina averiada.
𝑖 |
𝑗 |
t |
pbijt |
1 |
1 |
1 |
0 |
2 |
2 |
1 |
10 |
3 |
3 |
1 |
0 |
4 |
3 |
1 |
0 |
Los parámetrospijt y pbijt son relevantes para la para la reprogramación, ya que permiten reducir los cambios respecto al plan de producción inicial (QPijt), evitando costes adicionales y modificaciones en el flujo de trabajo. Los resultados presentados en la Tabla 12 evidencian la no asignación a la máquina averiada y muestran cómo la estrategia de reprogramación parcial genera un plan reprogramado () estable con respecto a QPijt. Tener en cuenta estos parámetros actualizables (pijt y pbijt) contribuye a evitar cambios significativos, como configuraciones adicionales de máquinas o el diferimiento de lotes de producción durante la reprogramación (Tabla 13), cambios que podrían generarse al considerar lotes de productos ya producidos. La Tabla 14 muestra la comparativa de los costes obtenidos en la programación inicial y la reprogramación.
Tabla 12. Experimento EV1 : Resultado comparativo de planes de producción debido a EV1.
𝑖 |
𝑗 |
t |
QPijt |
|
1 |
1 |
1 |
25 |
25 |
1 |
1 |
2 |
24 |
24 |
1 |
1 |
3 |
27 |
27 |
2 |
1 |
1 |
- |
11 |
2 |
2 |
1 |
21 |
- |
2 |
2 |
2 |
21 |
21 |
2 |
2 |
3 |
23 |
23 |
3 |
3 |
1 |
31 |
31 |
3 |
3 |
2 |
21 |
21 |
3 |
3 |
3 |
21 |
21 |
4 |
1 |
1 |
15 |
15 |
4 |
1 |
2 |
0 |
0 |
4 |
1 |
3 |
24 |
24 |
Tabla 13. Experimento EV1 : Cantidad diferida de productos de planes de producción.
𝑖 |
t |
BOit |
|
1 |
1 |
0 |
0 |
2 |
1 |
0 |
0 |
2 |
2 |
0 |
0 |
2 |
2 |
0 |
0 |
4 |
1 |
0 |
0 |
Tabla 14. Experimento EV1 : Función objetivo (FO) de planes de producción.
FO |
FOEV1 |
2426.0 |
1948.0 |
El cálculo de la reprogramación en respuesta al evento 2 (EV2: escasez de materia prima) se abordó de manera similar al evento de avería de maquinaria, situándose en un escenario posterior al cálculo de la programación inicial. Cabe destacar que, para tratar este evento, se consideraron los siguientes supuestos:
• La escasez de materia prima resulta de retrasos en los períodos de entrega preestablecidos por el proveedor.
• Los retrasos en la entrega de materia prima están limitados a un solo período.
• La programación inicial se lleva a cabo bajo la suposición de que toda la materia prima está disponible en el inventario, a pesar de que algunas aún no han sido entregadas. Este enfoque permite establecer un escenario en el que la falta de materia prima se simula como parte del evento de escasez. En este caso, se consideran faltantes de las materias primasr =3,4, asociadas a la producción de los productos 𝑖 = 3, 4 (Tabla 15).
• El modelo debe decidir en caso de escasez de materia prima, si lanzar una orden de compra urgente, o diferir la producción del correspondiente producto al período siguiente.
Tabla 15. Experimento EV2: Materia prima faltante.
r |
t |
mpfrt |
1 |
- |
- |
2 |
- |
- |
3 |
2 |
20 |
4 |
3 |
48 |
Los datos correspondientes para la experimentación de este escenario se presentan en las siguientes tablas. La Tabla 16 muestra la lista de materiales asociada a cada producto, mientras que la Tabla 17 indica el inventario inicial de materia prima necesario para cumplir la demanda.
Tabla 16. Experimento EV2: Lista de materiales.
r |
𝑖 |
urri |
1 |
1 |
2 |
2 |
2 |
2 |
3 |
3 |
2 |
4 |
4 |
2 |
Tabla 17. Experimento EV2: Inventario inicial de materia prima.
r |
InvIrr |
1 |
152 |
2 |
130 |
3 |
146 |
4 |
78 |
A través de los resultados obtenidos (Tabla 18), se observa cómo el plan de producción reprogramado se ajusta en respuesta a la escasez de materia prima con respecto a QPijt , como consecuencia de retrasos causados por el proveedor. Cuando no se cuenta con suficiente materia prima para un producto, su producción se determina como pedido pendiente ya que su producción se difiere al próximo periodo (Tabla 19), programados para ser producidos en el siguiente período, cuando se espera que llegue la materia prima faltante.
Tabla 18. Experimento EV2: Resultado comparativo de planes de produccióndebido a EV2.
𝑖 |
t |
BOit |
|
3 |
1 |
0 |
0 |
3 |
2 |
0 |
14 |
3 |
3 |
0 |
0 |
4 |
1 |
0 |
0 |
4 |
2 |
0 |
0 |
4 |
3 |
0 |
0 |
Tabla 19. Experimento EV2: Cantidad diferida de producto en el plan inicial vs plan reprogramado.
𝑖 |
𝑗 |
t |
QPijt |
|
1 |
1 |
1 |
25 |
25 |
1 |
1 |
2 |
24 |
24 |
1 |
1 |
3 |
27 |
27 |
2 |
2 |
1 |
21 |
21 |
2 |
2 |
2 |
21 |
21 |
2 |
2 |
3 |
23 |
23 |
3 |
3 |
1 |
31 |
31 |
3 |
3 |
2 |
21 |
7 |
3 |
3 |
3 |
21 |
35 |
4 |
3 |
1 |
15 |
15 |
4 |
3 |
2 |
0 |
0 |
4 |
3 |
3 |
24 |
24 |
La Tabla 20 muestra las órdenes de compras urgentes determinadas por el modelo MILP. Dado que t= 3 es el último periodo del horizonte temporal y también el momento en el que surge la escasez del tipo de materia prima r = 4, no es posible diferir la producción a un periodo posterior. Por lo tanto, la integración de la lógica de compra urgente de materia prima hace que el cálculo del modelo sea más realista frente a este evento inesperado, generando una orden de compra inmediata para la materia prima afectada y permitiendo que la producción del producto correspondiente continúe sin interrupciones.
Tabla 20. Experimento EV2: Ordenes de compras urgentes de materia prima.
𝑖 |
t |
USRMRt |
3 |
1 |
0 |
3 |
2 |
0 |
3 |
3 |
0 |
4 |
1 |
0 |
4 |
2 |
0 |
4 |
3 |
48 |
A través de la Tabla 21, se puede observar una comparativa de los costes obtenidos durante la programación inicial y la reprogramación de la producción, los cuales aumentaron como consecuencia de los cambios generados tanto en el diferimiento de producción como en el lanzamiento de órdenes de compra urgentes de materia prima.
Tabla 21. Experimento EV2: Función objetivo(FO) de planes de producción.
FO |
FOEV2 |
2426.0 |
3155.0 |
En el presente artículo se ha propuesto un modelo MILP que incluye como solución alternativa la compra urgente de materia prima para hacer frente a la escasez, lo cual lo diferencia del enfoque presentado en el artículo derivado de la revista Mathematics, donde solo se considera el retraso en la producción como respuesta a este evento inesperado. Esta novedad no solo incorpora los costes asociados con la compra urgente de materia prima, sino también la capacidad de actualización del inventario de materia prima cuando se enfrenta a una escasez. Aunque esta adición aumenta la complejidad del MILP propuesto inicialmente, también mejora su adaptabilidad y realismo, permitiendo una representación más precisa de las condiciones dinámicas en los entornos de producción.
Los resultados experimentales demuestran la efectividad y adaptabilidad del modelo MILP y de la estrategia iterativa y reactiva de reprogramación en conjunto como un sistema de reprogramación dinámica, diseñado para resolver el problema de reprogramación de producción en talleres sujetos a eventos inesperados. Los resultados indican que el modelo MILP funciona satisfactoriamente en la resolución de instancias pequeñas y medianas, y aborda de manera eficiente la implementación de compras urgentes de materia prima frente a situaciones escasez. La reprogramación ha demostrado ser dinámica frente a eventos inesperados, minimizando cambios en el plan de producción inicialmente calculado y manteniendo la adaptabilidad.
Sin embargo, este estudio no está exento de limitaciones. Se identifican áreas que requieren mayor atención y desarrollo para mejorar el desempeño y la aplicabilidad del modelo en escenarios más complejos. En particular, la eficiencia computacional en instancias mayores es una limitación que podría abordarse mediante la aplicación de técnicas metaheurísticas, que optimicen el proceso de resolución del modelo MILP y proporcionen soluciones en tiempos razonables para instancias de gran tamaño.
Otro aspecto importante que abre brecha para futuras investigación es el análisis del comportamiento de la variable de decisión STMAXjt en escenarios donde la capacidad de las máquinas se aproxima a su límite. Esta variable en ocasiones no refleja con precisión el tiempo de configuración, lo que puede llevar a estimaciones imprecisas del tiempo total de configuración de una máquina. Mejorar esta precisión es esencial para proporcionar estimaciones más fiables.
A partir del análisis y propuesta de soluciones del problema abordado, se proponen un conjunto de líneas futuras de investigación. La integración del sistema de reprogramación con sistemas de control en tiempo real es un área prometedora. Este enfoque no solo permitiría desarrollar un sistema inteligente capaz de realizar reprogramaciones inmediatas, sino que también podría beneficiarse del uso de técnicas de inteligencia artificial. La incorporación de algoritmos de aprendizaje automático e inteligencia artificial podría optimizar la toma de decisiones en tiempo real, mejorando aún más la adaptabilidad y la eficiencia del sistema de reprogramación frente a condiciones cambiantes en el entorno de producción. Los modelos predictivos permitirían identificar la probabilidad de avería de las máquinas y por tanto realizar paros programados para su mantenimiento. Igualmente, la falta de materias primas debida a fallos en la entrega de los proveedores podría modelarse a través de sistemas inteligentes que consideren eventos pasados para anticipar futuras interrupciones de suministro.
Estas líneas de investigación futuras no solo mejorarán la precisión y eficiencia del modelo MILP y el sistema para la reprogramación, sino que también contribuirán al desarrollo de sistemas de producción más resilientes y adaptativos, capaces de manejar la complejidad y dinamismo en talleres de trabajo.
Conceptualización, A.J.F., R.P. y B.A.; metodología, A.J.F. y B.A.; software, A.J.F. y R.P.; validación, A.J.F.; análisis formal, A.J.F., R.P. y B.A.; investigación, A.J.F. y B.A.; recursos, R.P. y B.A.; curación de datos, A.J.F.; redacción—preparación del borrador original, A.J.F.; redacción—revisión y edición, R.P. y B.A.; visualización, B.A.; supervisión, R.P. Todos los autores han leído y aprobado la versión publicada del artículo.
Araúzo, J. A., Olmo, R. D., & Laviós, J. J. (2013). Subasta combinatoria para la programación dinámica en sistemas de fabricación distribuidos. Dirección y Organización, 51, 55-64. https://doi.org/10.37610/dyo.v0i51.438
Chase, R. B., & Aquilano, N. J. (1994). Dirección y administración de la producción y las operaciones. Adison-Wesley Iberoamericana.
Chen, J., Wang, H., & Zhong, R. Y. (2021). A supply chain disruption recovery strategy considering product change under COVID-19. Journal of Manufacturing Systems, 60, 920-927. https://doi.org/10.1016/j.jmsy.2021.04.004
Dhingra, J. S., Musser, K. L., & Blankenship, G. L. (1992). Realtime operations scheduling for flexible manufacturing systems. In Proceedings of the 24th Conference on Winter Simulation, (págs. 849-855). https://doi.org/10.1145/167293.16774
Dutta, A. (1990). Reacting to scheduling exceptions in FMS environments. IIE transactions, 22, 300-314. https://doi.org/10.1080/07408179008964185
Fang, J., & Xi, Y. (1997). A rolling horizon job shop rescheduling strategy in the dynamic environment. The International Journal of Advanced Manufacturing Technology, 13, 227–232. https://doi.org/10.1007/bf01305874
Figueroa, A. J., Poler, R., & Andres, B. (2024). Adaptive Production Rescheduling System for Managing Unforeseen Disruptions. Mathematics, 12(22), 3478. https://doi.org/10.3390/math12223478
Janak, S. L., Floudas, C. A., Kallrath, J., & Vormbrock, N. (2006, 28 de Mayo). Production scheduling of a large-scale industrial batch plant. II. Reactive scheduling. Industrial & engineering chemistry research, 45, 8253-8269. https://doi.org/10.1021/ie0600590
Jiménez, J., González-Neira, E., & Zambrano-Rey, G. (2018). An adaptive genetic algorithm for a dynamic. Management Science Letters, 8, 1117-1132. https://doi.org/10.5267/j.msl.2018.8.011
Karas, A., & Ozcelik, F. (2021). Assembly line worker assignment and rebalancing problem: A mathematical model and an artificial bee colony algorithm. Computers & Industrial Engineering, 156, 156. https://doi.org/10.1016/j.cie.2021.107195
Liu, W., Jin, Y., & Price, M. (2018). New meta-heuristic for dynamic scheduling in permutation flowshop with new order arrival. The International Journal of Advanced Manufacturing Technology, 98, 1817-1830. https://doi.org/10.1007/s00170-018-2171-y
Rahman, H., Sarker, R., & Essan, D. (2018). Multiple-order permutation flow shop scheduling under process interruptions. The International Journal of Advanced Manufacturing Technology, 97, 2781-2808. https://doi.org/10.1007/s00170-018-2146-z
Reddy, M. S., Ratnam, C., Rajyalakshmi, G., & Manupati, V. K. (2018). An effective hybrid multi objective evolutionary algorithm for solving real time event in flexible job shop scheduling problem. Measurement, 114, 78-90. https://doi.org/10.1016/j.measurement.2017.09.022
Shafaei, R., & Brunn, P. (1999). Workshop scheduling using practical (inaccurate) data Part 2: An investigation of the robustness of scheduling rules in a dynamic and stochastic environment. International Journal of Production Research, 37, 4105-4117. https://doi.org/10.1080/002075499189682
Shen, X. N., & Yao, X. (2015). Mathematical modeling and multi-objective evolutionary algorithms applied to dynamic flexible job shop scheduling problems. Information Sciences, 298, 198-224. https://doi.org/10.1016/j.ins.2014.11.036
Takeda-Berger, S. L., Agostino, Í. R., da Silva, M. R., & Frazzon, E. M. (2022). Reactive production scheduling approach based on inventory availability. IFAC-PapersOnLine, 55, 418-423. https://doi.org/10.1016/j.ifacol.2022.09.429
Tliba, K., Diallo, T. M., Peñas, O., Ben Khalifa, R., Ben Yahia, N., & Choley, J.-Y. (2023). Digital twin-driven dynamic scheduling of a hybrid flow shop. Journal of Intelligent Manufacturing, 34, 2281-2306.
Valledor, P., Gómez, A., Priore, P., & Puente, J. (2018). Solving multi-objective rescheduling problems in dynamic permutation flow shop environments. International Journal of Production, 56, 6363-6377. https://doi.org/10.1080/00207543.2018.1468095
Vieira, G. E., Herrmann, J. W., & Lin, E. (2003). Rescheduling manufacturing systems: a framework of strategies, policies, and methods. Journal of Scheduling, 6, 39-62.
Wang, L., Hu, X., Wang, Y., Xu, S., Ma, S., Yang, K., & Wang, W. (2021). Dynamic job-shop scheduling in smart manufacturing using deep reinforcement learning. Computer Networks, 190. https://doi.org/10.1016/j.comnet.2021.107969
_______________________________
1 Universitat Politècnica de València, Escuela Politécnica Superior de Alcoy, Plaza Ferrándiz y Carbonell, 03801 Alcoy, España. Email: afigueroa@cigip.upv.es (Autor de correspondencia) ORCID: 0009-0005-9656-7021
2 Centro de Investigación en Gestión e Ingeniería de Producción, Universitat Politècnica de València, 46022 Valencia, España. Email: rpoler@cigip.upv.es ORCID: 0000-0003-4475-6371
3 Centro de Investigación en Gestión e Ingeniería de Producción, Universitat Politècnica de València, 46022 Valencia, España. Email: bandres@cigip.upv.es ORCID: 0000-0002-7920-7711