INTRODUCCIÓN
Uno de los principales problemas que enfrentan las empresas de manufactura es el secuenciamiento de la producción, también llamado de scheduling, que consiste en identificar cuál o cuáles son las mejores maneras de ordenar el programa de producción en las máquinas para una mejora en la eficiencia 1.
En entornos de producción del tipo Job Shop, los recursos son representados como máquinas y un job es definido como un conjunto de una o más actividades, también llamadas de tareas, y cada tarea es única, con rutas preestablecidas y diferentes, procesada al menos una vez en cada una de las máquinas. Los problemas dentro de ese entorno son conocidos como Problemas de Secuenciamiento de la Producción en Job Shop (del inglés, JSSP).
Debido a su importancia y complejidad computacional, el JSSP ha sido extensivamente estudiado. Sin embargo, la gran mayoría de los artículos aborda el problema determinístico y/o estático, y no tienen en cuenta los tiempos de procesamiento estocástico y/o la llegada dinámica de tareas que reflejan de manera más adecuada a las situaciones de la industria del mundo real. Además, muchos de los artículos tratan el problema de programación en diferentes entornos de producción 2. De esta forma, es posible ver una gran brecha entre la práctica y la teoría de secuenciamiento en Job Shop 3.
Como, en general, cada abordaje de integración específica utiliza su propia representación del sistema, se hace difícil el intercambio de dados y exige el desenvolvimiento de interfaces dedicadas 4.
De este modo, este trabajo tiene como objetivo encontrar, por medio de la integración entre el modelo de simulación con el método de optimización, una o más soluciones satisfactorias para el problema de secuenciamiento dinámico y estocástico de la producción en un entorno Job Shop. Por lo tanto, la busca por la mejoría continua en el proceso de producción, específicamente en el secuenciamiento de la producción (scheduling) hace con que la contribución de este trabajo, con una propuesta de abordaje de uso simple, pueda ser utilizado en la planificación de la producción, pues puede ofrecer respuestas más eficientes en relación al medio real de cambio constante y al mismo tiempo puede ayudar estratégicamente los tomadores de decisiones en el proceso diario de una empresa de manufactura.
PROBLEMA DE SECUENCIAMIENTO DINÁMICO Y ESTOCÁSTICO DE LA PRODUCCIÓN EN JOB SHOP
En el problema de secuenciamiento estático de la producción, todas las tareas están listas para empezar a momento cero, mientras que en la secuenciación de tareas dinámicas pueden llegar a algunos momentos futuros conocidos o desconocidos. Además, si los tiempos de procesamiento son aleatorios, entonces, el problema es también clasificado como estocástico. De este modo, según 5, el problema de secuenciamiento dinámico y estocástico puede ser definido de acuerdo con las dos características siguientes: (1) El tiempo entre la llegada de los pedidos es considerado como una variable aleatoria, lo que significa que la llegada de las tareas al sistema es dinámica; (2) Los tiempos de procesamiento de las tareas varían estocásticamente en cada máquina.
ENFOQUE TEMÁTICO
Módulo de simulación
La simulación es la imitación de la operación de un sistema del mundo real a lo largo del tiempo. En este caso, la representación del sistema es definida solamente en puntos discretos en el tiempo en que ocurren las alteraciones de estado del sistema 6. Uno de los principales objetivos del módulo de simulación consiste en avaluar la solución para un módulo de optimización 7.
En este trabajo, el módulo de simulación fue desenvuelto con base en simulación de eventos discretos, por medio del software ARENA 14.5 y tiene como objetivos:
avaluar la solución candidata para el problema de programación generada por el módulo de optimización;
construir un programa teniendo en cuenta todas las limitaciones;
avaluar el desempeño de las reglas de se cuenciación comunes para condiciones dinámi cas y estocásticas del piso de fábrica (para la comparación).
El modelo de simulación fue construido a partir de una escenografía dinámica y estocástica de la producción compuesta de 8 máquinas y 10 tipos de jobs con rutas predefinidas, y estimados tiempos de producción determinados de acuerdo con la Tabla 1.
Tabla 1 Escenografía dinámica y estocástica de la producción: jobs con rutas predefinidas y tiempos de producción estimados.

Otros parámetros del modelo de simulación propuesto se presentan en la Tabla 2. Los detalles del desenvolvimiento y avaluación se presentan en 7, realizado de acuerdo con 8.
El formato de soluciones de secuenciamiento
El módulo de simulación desenvuelto reconoce una solución del problema de programación por medio de una secuencia de prioridades de las tareas en cada una de las máquinas. Entonces, una solución es representada en el interior del módulo como una lista de número entero k, donde k es el número de operaciones. Es importante destacar que él es independiente de la representación adoptada por el módulo de optimización, en que puede ser utilizado en cualquier enfoque disponible. Además, como diferentes tareas deben tener diferentes valores de prioridad, en una determinada máquina los valores son quitados de la lista teniendo en cuenta la ocurrencia en vez de la posición.
Dentro del modelo, cada tarea tiene un plano de proceso definido como una secuencia de acuerdo con la ruta en la Tabla 1. Cada paso del plano de proceso para todas las tareas tiene una prioridad de atribución de nombre, cuyo valor es almacenado como un objeto del modelo en un módulo específico, y ella es cambiada durante el proceso de solución.
Modelo lógico
Las soluciones criadas por el módulo de optimización son insertadas en el modelo utilizando el Visual Basic for Application (VBA) en el ARENA. El proyecto VBA tiene acceso al modelo de simulación por medio del objeto This-Document que contiene muchos eventos VBA integrados en el ARENA donde el código es activado. Estos eventos integrados dividen en tres categorías que definen el exacto momento durante la simulación de que el código VBA es ejecutado 9: (1) eventos Pre-ejecutable (por ejemplo, DocumentOpen); (2) eventos de ejecución Arena-iniciado (por ejemplo, RunBegin, RunEndReplication); (3) eventos de ejecución modelo / usuario iniciado (por ejemplo, UserFunction, VBA_Block_Fire).
Una ilustración de la secuencia de estos eventos VBA, con instrucciones para en el establecimiento de una secuencia de prioridades en el modelo, se presenta en la Figura 1. En la Figura 1, la cursiva indica los eventos VBA integrados, al tiempo que subraya representan las instrucciones programadas en el código VBA desarrollado en el modelo. Los valores de prioridad se introducen en el campo apropiado antes de que comience la simulación y los resultados se guardan después de cada replicación del modelo.
Módulo de optimización
El Algoritmo Genético (AG) es una técnica meta-heurística - método estocástico, no determinístico de busca y optimización. Él imita el proceso evolutivo que ocurre con organismos biológicos en la naturaleza, basado en el proceso de selección natural. Sin embargo, el AG presenta aspectos peculiares en relación a otros métodos de optimización. Mitchell hace destaque a tales aspectos 10: (i) trabajar con los parámetros de codificación, en vez de variables originales del problema, (ii) pesquisar las soluciones optimas a partir de un conjunto de soluciones potenciales y no apenas de un punto de partida, (iii) usar una función de avaluación para las diferentes soluciones y (iv) el uso de reglas probabilísticas en encontrar nuevas soluciones.
A partir de esta teoría, el módulo de optimización es desenvuelto con base en la biblioteca Galib, componentes del Algoritmo Genético en C++ 11. Sin embargo, como la propuesta de integración es realizado utilizando componentes fuera del proceso, en que el método de optimización es ejecutado como un aplicativo independiente, el módulo de simulación puede ser fácilmente integrado con otras aplicaciones desenvueltas en cualquier lenguaje de programación como C++, Visual Basic o Java.
La Tabla 3 resume los parámetros del AG que fueron adoptados para ejecutar la propuesta de integración.
Entorno de integración
La integración fue realizada utilizando las instalaciones del control dentro de las aplicaciones, a través de la tecnología ActiveX Automation y del Visual Basic for Application. ActiveX es una especie de Component Object Model (COM), que permite una comunicación entre aplicaciones de forma independiente del lenguaje de programación, esto es, permite que otros métodos sean fácilmente integrados más tarde por el usuario, a través de otro código de propósito general para hacer frente con eventos externos en una simulación en tiempo real. El control del módulo de simulación es realizado por la aplicación C++. Además de realizar las operaciones normales del método de optimización, tales como los operadores genéticos, la aplicación hace control a ejecución del modelo siempre que una nueva solución candidata tiene que ser avaluada.
RESULTADOS NUMÉRICOS
Los experimentos que utilizan un AG simples fueran realizados principalmente para ilustrar la operación de la integración propuesta. Además, seis niveles de demanda diferentes fueran testados a fin de avaluar sus efectos sobre las reglas de secuencia de acuerdo con el makespan, tempo total de retardo total y número de trabajos atrasados.
Resultados para el tiempo de retardo se muestran en la Figura 2. Los resultados del método propuesto fueron comparados con algunas reglas de secuenciación comunes: Shortest Processing Time (SPT), Longest Processing Time (LPT), Earliest Due Date (EDD), First In FirstOut (FIFO) e Last In First Out (LIFO), para diferentes niveles de demanda. Cuanto más corto sea el tiempo entre llegadas más largo son las demandas.
Se ve que, los valores de las medidas de desempeño empeoran mientras la demanda aumenta. Por otra parte, los efectos de las reglas de secuenciación son más significativos cuando el nivel de la demanda es mayor. En general, a pesar del pequeño número de individuos y el número de generaciones adoptadas, la simulación basada en el AG podría alcanzar buenos resultados. Es importante señalar que la integración propuesta fue aplicada como un enfoque multiobjectivo, lo que significa que el objetivo es minimizar las medidas de desempeño simultáneamente, mismo que los resultados de AG son, en la mayoría, similares a los das reglas de expedición.
Además de promover una reducción significativa en el número de retardos, en particular para las demandas más altas, como se muestra en las Figuras 2 y 3, las soluciones generadas por el AG son menos sensibles a las variaciones de la demanda. Se observa que los números obtenidos en las soluciones generadas por el AG a las demandas EXPO(6) y EXPO(8) son casi iguales y alrededor de 77 unidades, en comparación con más de 115 unidades en el mejor caso para las reglas de expedición (LPT).
En este caso, los datos de reglas de secuenciación tienen una variación mínima de 73% (regla EDD) cuando cambia la demanda EXPO(8)-EXPO(6) mientras que la variación AG es inferior a 10% (aumento de 77,1 a 84,7). Esto muestra que la integración puede producir igualmente buenos resultados en situaciones de demandas diferentes. Estos resultados se muestran en la Figura 3. Las soluciones generadas por el AG son menos sensibles a las variaciones de la demanda.
Además de la optimización, la integración con simulación permite evaluar otras medidas de rendimiento del sistema e inferir/ver correlaciones importantes entre estas mediciones. Se observa en la Figura 4, por ejemplo, el tamaño máximo de la cola y la tasa de utilización en cada máquina, lo que permite identificar los puestos de trabajo que limitan la producción (cuello de botella, ejemplo la máquina 2) y ver el aumento esperado en las colas y las tasas de utilización debido al aumento de la demanda.
CONCLUSIONES
En este trabajo proponemos una integración entre el modelo de simulación y el método de optimización a fin de solucionar el problema de secuenciamiento dinámico e estocástico de la producción en un entorno Job Shop.
A pesar de usar un método de AG sencillo, los resultados numéricos muestran que el método de optimización y simulación pueden resolver el problema de programación eficientemente, logrando resultados hasta 40% mejores en comparación con las reglas de secuenciación comunes. Además las soluciones generadas por el AG son menos sensibles a las variaciones de la demanda, lo que es muy significativo en entornos job Shop con demanda estocástica variable.
El único inconveniente observado fue con el tiempo de procesamiento, principalmente debido al procedimiento de cambio de mensajes. Sin embargo, esto se puede reducir mediante el uso de una solución Message broker que es un módulo de programa intermediario que traduce un mensaje del protocolo de mensajería formal del remitente para el protocolo de mensajería formal del receptor, lo que permite intercambiar mensajes entre aplicaciones.