INTELIGENCIA ARTIFICIAL APLICADA A LA PROGRAMACIÓN DE LA PRODUCCIÓN TEXTIL

0
384

Escribe: Dr. Luis Alfredo Negrón Naldos y Johann Luis Jesus Gonzales Davila

En el presente artículo se presenta la experiencia de Creditex, en el desarrollo de un Algoritmo de Inteligencia Artificial para la programación de la sala de telares (tejeduría plana), el mismo que está enmarcado en un proceso de innovación en el marco del desarrollo de los procesos bajo el enfoque de la denominada Industria 4.0. Este proyecto fue cofinanciado por el Programa Nacional de Innovación para la Competitividad y Productividad, bajo el convenio 114-INNOVATEPERÚ-PIEC1-2020.

La Inteligencia Artificial (IA) es el área de las ciencias de la computación que estudia la automatización del comportamiento inteligente, también conocido como el proceso cognitivo digital o cognitivo artificial; es decir, la capacidad de razonar, planear, resolver problemas, pensar abstractamente, comprender ideas complejas y aprender de la experiencia (Gottfredson, 2017). En contraste con la Inteligencia Computacional, que estudia cómo automatizar las habilidades de percepción, reconocimiento de patrones y aprendizaje, la IA abarca adicionalmente las habilidades de raciocinio y manipulación de conocimiento, como se muestra en la figura 1.   

Figura 1: Capacidades de una entidad Inteligente.

Bajo este marco la Inteligencia Artificial busca construir agentes inteligentes, esto es, programas computacionales a los que se les incorpora una lógica (programa de agente) que busca siempre tomar decisiones que maximicen una medida de desempeño. Para la construcción de agentes es importante definir los siguientes elementos (PEAS): Medida de desempeño (Performance), Ambiente (Environment), Actuadores (Actuator) y Sensores (Sensor).

Selección del Agente de Inteligencia

Artificial

En Creditex se buscó optimizar la asignación de pedidos a los telares (máquinas tejedoras) optimizando 3 factores: Calidad, tiempo de entrega, y costos, por lo que el modelo de solución consistió en desarrollar una versión más compleja del problema de optimización denominado GAP por sus siglas en ingles “Generalized Assignment Problem” (Feltl & Raidl, 2004), adicionando la característica de trabajar con colas dinámicas, restricciones que cambian en tiempo real (conexiones a bases de datos), reprogramaciones, integración con módulo predictivo de Machine Learning, ocurrencia de eventos inesperados, y con múltiples objetivos. Además, la computación debía ser relativamente rápida para que sea viable reprogramar con cierta frecuencia.

Como parte del proceso de diseño de la solución se evaluaron diferentes tipos de modelos de generación de agentes de inteligencia artificial como se detalla en la tabla 1. Así como se procedió a la revisión de casos de aplicación en ámbitos similares, entre ellos tenemos a Harwin Kurniawan et. al. (2014) en “Optimizing Production Scheduling Using Genetic Algorithm in Textile Factory” que describe el uso de algoritmos genéticos en una empresa textil de Indonesia con resultados positivos. Además, Son Duy Dao et.al. (2016), describen aplicaciones de algoritmos genéticos para problemas complejos de optimización de la programación de la producción en el artículo “An improved genetic algorithm for multidimensional optimization of precedence-constrained production planning and scheduling”. Tras una evaluación exhaustiva de los beneficios y desventajas de los algoritmos, el equipo técnico, con el apoyo de un especialista en el campo de Inteligencia Artificial, decidieron que para el proyecto se optará por el uso de Algoritmos Genéticos.

AGENTE DE IA

VENTAJAS

DESVENTAJAS

Aprendizaje por refuerzo:

Modelo DQN (Deep Q-network)

Algoritmo que realiza una alta cantidad de programaciones de tejeduría y analiza el resultado de cada experiencia para construir un sistema de valores (en una red neuronal) de todas sus posibles decisiones y aprender a optimizar el proceso.

-No requiere heurístico, que son complejos de definir.

-Cercano al conocimiento humano. Puede aprender políticas de acciones complejas, siempre y cuando, se entrene en un entorno que le permita explorar dichas alternativas

-Requiere entorno simulado.

-Tiempo elevado de entrenamiento, requiere gran cantidad de experiencias.

-Se requerirán re-entrenamientos periódicos, pues las condiciones del área de tejeduría pueden cambiar.

Búsqueda (optimización):

Simulated-Anealing

Algoritmo de búsqueda que analiza distintas programaciones de tejeduría y maximizar un heurístico (función objetivo). Tiene un componente aleatorio para aumentar la exploración y evitar caer en óptimos locales.

-Fácil de implementar. Fácil de escalar.

-No requiere entrenamiento, pero si de una buena representación en código de programación de los procesos de la empresa.

-La representación en código del proceso puede actualizarse fácilmente o de manera automática a los cambios en la empresa.

-Depende de un buen heurístico, que puede ser difícil de definir

-Pocas configuraciones de hiperparámetros.

Computación bioinspirada:

Algoritmo Genético:

Basado en la evolución darwiniana. En cada iteración del algoritmo se crean candidatos de programación de tejeduría, se eliminan a los peores y se crean nuevos candidatos combinando información de los mejores. Además, está sujeto a “mutaciones” o cambios aleatorios para mejorar la exploración y no caer en óptimos locales.

-Fácil de implementar, no requiere entrenamiento. Fácil de escalar

-Permite un buen balance entre exploración de soluciones y explotación del conocimiento.

-Se pueden probar diversas configuraciones de hiperparámetros y estructuras del algoritmo.

-El tiempo de ejecución puede ser corto, pues el algoritmo es altamente paralelizable.

-Depende de un buen heurístico, que puede ser difícil de definir

-Se debe probar diversas estructuras de algoritmos genéticos para llegar a uno que sea robusto al resolver el problema de la empresa.

Desarrollo del Algoritmo Genético

Durante el desarrollo del algoritmo genético se debió seguir la estructura: Agente + PEAS (performance, environment, actuator, sensor). Por lo que se debió adaptar el modelo teórico a las características de un proceso productivo por pedidos y en un contexto de variables operativas propias de una tejeduría plana:

Sensores: El algoritmo debió conocer en tiempo real la disponibilidad de materiales, herramientas y el estado de las colas de producción en tejeduría. Por esto, la primera etapa fue crear las conexiones a las bases de datos de la empresa: (a) Sistema de consulta de nuevos pedidos de clientes, (b) Sistema TIM (ERP de la empresa), (c) Base de almacenes de peines, (d) Base de datos de almacén de hilo, (e) Base de datos de calidad de hilado y (f) Sistema GANTT de tejeduría. Además, se conecto con las bases de datos fuentes de las variables relevantes para el modelo predictivo de roturas (que se desarrollo en paralelo para el presente proyecto). Este modelo agregó una característica adicional el agente que fue la capacidad de predecir la falla por rotura de hilo al momento de programar el pedido. En la figura 2 se muestra el esquema de las conexiones y flujo de comunicación que se desarrollaron para el presente proyecto.

Figura 2: Modelo de comunicación y conexión.

Definición del entorno y la arquitectura de individuos: De acuerdo a la lógica del algoritmo genético un “individuo” es una posible solución al problema que se busca resolver. En este caso, el individuo es una representación del Gantt usado en tejeduría (ver figura 3). Cada individuo está sujeto a operadores genéticos (cruzamiento y mutación) y a ser evaluado por un fitness (función objetivo). Con esto el algoritmo tiene por objetivo no solo encontrar la mejor posición para un nuevo pedido, sino de crear todo un nuevo programa para optimizar toda la sala en función de la llegada de cada pedido, (siempre considerando que no puede cambiar los pedidos ya en procesos y los que están a puertas de iniciar procesos, a este periodo se le llamó el periodo de congelamiento de pedidos, que implicaba que el algoritmo no podía modificar lo pedidos involucrados en ese periodo).

Figura 3: Extracto de un Gantt actual.

Las decisiones que puede tomar el algoritmo, es decir, los alelos (nombre que recibe cada alternativa de solución), son el orden de los pedidos y la información anteriormente mencionada para de cada pedido, como se muestra en la figura 4

Figura 4: Representación del telar en una lista ordenada.

La representación de la realidad mediante una única lista ordenada de pedidos es capaz de contener tanta información como una representación mediante un Gantt. Cada lista es traducida a un Gantt, colocando los pedidos al final de las colas del telar correspondiente en el orden que la lista indique. También, se consideró el tiempo necesario para configurar el telar, como se muestra a continuación, como se muestra en la figura 5.

Figura 5: Traducción de una lista a un Gantt.

Performance y requerimientos lógicos del fitness: Durante la definición del alcance del proyecto, el equipo decidió que el algoritmo debía encontrar soluciones que consideren los siguientes cuatro objetivos.

– Tiempo: Se debe reducir el lead time de entrega a clientes y el algoritmo debe ser capaz de reprogramar los pedidos que aún no hayan empezado, en caso sea necesario.

– Atención al cliente: El algoritmo debe ser capaz de priorizar a clientes importantes para la empresa en caso ocurran conflictos en las fechas de entrega y en la asignación de recursos de distintas calidades.

– Costo: La programación de tejeduría debe de reducir el costo de producción. Los costos relevantes en un grupo de distintas soluciones frecuentemente se explican porque tienen distintas utilizaciones de las máquinas.

– Calidad: Se debe mejorar la calidad del tejido. En el contexto de la optimización de la programación de tejeduría, dicha calidad está relacionada con la cantidad de roturas, la cual depende de los recursos asignados a una orden de trabajo.

La función objetivo o fitness fue diseñada a partir de estos cuatro objetivos, por lo que se desarrolló una función matemática que se define una valorización o penalización del cumplimiento de los cuatro objetivos y permite al algoritmo genético segregar a distintas posibles soluciones al problema. Adicionalmente se identificaron posibles fallas en la tela que no son ocasionadas por las roturas y que son llamadas “fallas de apariencia”. Debido a que no son explicables por el modelo predictivo de roturas, fue necesario que se liste una serie de criterios para la elección de hilo y telar que evitan las fallas de apariencia y que serán ingresados al algoritmo como un grupo de restricciones. De esta forma, cuando el algoritmo empieza la optimización, se asegura de nunca generar individuos o soluciones que no cumplan todas las restricciones, y finalmente genera internamente un Gantt para las evaluaciones del fitness, como se muestra en la tabla 2.

Tabla 2: Extracto de un gantt que el algoritmo genera para la evaluación de soluciones.

Pruebas y Validación del Modelo

Un objetivo del proyecto es que el algoritmo pueda responder a las distintas complejidades del sector textil y la producción de tejidos planos. Por esto, las pruebas de validación del algoritmo corresponden a casuísticas frecuentes del negocio. A continuación, se detallan los grupos de pruebas realizadas y sus respectivos resultados.

En primer lugar, se verificó en distintos escenarios que la asignación de los trabajos a las colas sea correcta. El equipo levantó distintas restricciones correspondientes a las características de los telares y criterios de negocio. En los distintos ejemplos la asignación de consultas nuevas y la reprogramación de pedidos sigue las restricciones impuestas por el equipo.

En segundo lugar, se verificó el comportamiento de los “pedidos grandes” que son aquellos con gran cantidad de metros por tejer. El comportamiento esperado es que sean particionados en más de un telar para cumplir con las fechas. Se verificó en los distintos resultados que este comportamiento está presente. Además, se verificó que los pedidos puedan ser reprogramados en una mayor cantidad de telares o juntados en menos telares. Estas pruebas también sirven para evaluar el componente de Costo de la función objetivo, el cual penaliza tener muchas particiones más de las necesarias.

En tercer lugar, se verificó la correcta asignación de “pedidos chicos”. Dos trabajos consecutivos tienen entre ellos un tiempo de setup variable que depende de su relación, en un caso óptimo se espera que se realicen la mayor cantidad de anudados entre dos trabajos continuos, ya que toman menos tiempo. En este sentido, el comportamiento esperado en pedidos chicos es que el algoritmo siempre asigne un trabajo inmediatamente después a otro trabajo al que se pueda anudar. Se probaron casos de pedidos de colección en los cuales suelen haber grandes cantidades de consultas entrantes al mismo tiempo. Se encontró que el algoritmo prioriza correctamente asignar pedidos que se anudarán.

Un cuarto aspecto evaluado fue la correcta asignación de hilo, en el cual se validó la selección del stock en almacén, la predicción de roturas del modelo predictivo y el correcto uso de las predicciones por parte de la función objetivo. Las pruebas evidenciaron un comportamiento correcto.

El quinto grupo de pruebas corresponde a la evaluación de la asignación de peines. El algoritmo tiene un componente que revisa la disponibilidad de peines al momento de programar una consulta nueva. Las pruebas se enfocaron en someter al algoritmo a casuísticas en que la disponibilidad del recurso peine es baja. El resultado esperado es que el algoritmo planifique de manera que nunca se falte peines y si en ningún escenario se pudiese asignar un peine a un pedido, que este sea programado en el periodo posterior más cercano que en que se libere uno de estos peines. Se observó que, la asignación de peines fue correcta.

Tabla 3: Resumen de los grupos de pruebas.

Finalmente, el ejemplo mostrado en la figura 6 contiene un extracto de una programación resultante del algoritmo. En esta, un pedido de 9144 metros fue particionado en tres telares y colocados de manera que terminen en tiempos similares. De esta manera se concluyó que el algoritmo estaba listo para ser puesto en producción, asumiendo un paralelo inicial de dos meses respecto al proceso actual como periodo de validación.

Con esta experiencia se ha demostrado la aplicación de la inteligencia artificial en la optimización de procesos textiles, dicho proyecto forma parte del proceso de transición tecnológica hacia el denominado entorno de la Industria 4.0, en donde se desarrollarán una serie de proyectos para lograr llegar al nivel de “Fábrica Inteligente” y de esta manera mantener la competitividad en un sector altamente cambiante.

Figura 6: Extracto de una programación resultante del algoritmo.

Dentro de los principales beneficios obtenidos se deben resaltar el tiempo de respuesta de cada consulta siendo en promedio 5 minutos, lo que permite evaluar diferentes escenarios según requerimientos del cliente, el obtener programa que cumple diferentes criterios de optimización de manera prescriptiva, y el haber logrado integrar el modelo predictor de fallas en la toma de decisión de la asignación de hilado y tipo de telar para la mejora en la calidad del producto final.