Sistema Multiagentes para Programación en Entornos de
Transcripción
Sistema Multiagentes para Programación en Entornos de
Sistema Multiagentes para Programación en Entornos de Fabricación Área de conocimiento: Inteligencia Artificial José Antonio Gordillo Sosa1, Adriana Giret Boggino2, Vicente Botti Navarro2 {jgordillo,agiret,vbotti}@dsic.upv.es 2 Departamento de Sistemas Informáticos y Computación, Universidad Politécnica de Valencia. Camino de Vera s/n 46022 Valencia,España. 1 Tecnologías de la Información y Comunicación, Universidad Tecnológica del Suroeste de Guanajuato. Carr. Valle-Huanímaro km1.2, 38400 Valle de Santiago, Gto. México. Resumen. La investigación en entornos multiagente toma frecuentemente ejemplos biológicos en los que encontramos elementos destacados de cooperación colectiva. Un ejemplo interesante es el del comportamiento de las ardillas al buscar repetitivamente espacio libre para sus alimentos hasta guardarlos por completo. Este comportamiento es una metáfora excelente para desarrollar algoritmos y métodos de asignación de recursos de todo tipo, desde bloques de datos computacionales hasta piezas de fábrica. Este trabajo presenta un esquema de simulación que implementa un algoritmo de este tipo para resolver el problema de programación de lotes de fabricación de azulejos cerámicos en una planta de fabricación. En este enfoque se demuestra un comportamiento cooperativo, incluyendo la habilidad de crear rutas óptimas, y enfrentar ambientes dinámicos. Además de la simulación basada en un sistema multiagente, se combinan técnicas de programación, análisis de procesos de producción y manufactura en un entorno real de fabricación de productos cerámicos. Palabras clave: multiagentes, distribución dinámica, algoritmo de optimización. 1 Introducción La vida social de insectos y animales proporciona un ejemplo útil a partir del cual la investigación de multiagentes puede inspirarse, ya que maneja acciones colectivas sofisticadas con un gran número de elementos siguiendo comportamientos individuales relativamente simples. Por ejemplo, el llamado "comportamiento de enjambre" [1,2] de algunos insectos ha generado la creación de métodos que se han aplicado con éxito en problemas de difícil optimización como enrutamiento de redes [3]. Los sistemas de manufactura actuales requieren incluir técnicas de configuración dinámica de procesos como medio para controlar el sistema de producción y lograr un manejo óptimo de sus lotes, detallado incluso a nivel de pieza producida; incluyendo, evidentemente, criterios de decisión rápida y manejo eficiente de costos. Tales sistemas necesitan, además, la implementación de mecanismos dinámicos para proveer una respuesta rápida a tareas y órdenes emergentes de trabajo, así como situaciones no previstas como fallas mecánicas o tardanzas en el montaje de las líneas de manufactura. De manera general, podemos mencionar que el entorno de fabricación de piezas cerámicas estudiado, se compone de 6 procesos básicos: Gestión de Almacén de Materia Prima, Ayuda a la Gestión de Compras, Gestión de Almacén de Productos Terminados, Ayuda a la Gestión de Ventas, Definición del Plan Maestro, Producción y Fabricación. Este trabajo se aplica en el proceso de Fabricación, el más difícil de controlar de los seis. La aplicación del algoritmo presentado se centra en la asignación de tareas de fabricación a los recursos de las líneas de esmaltado correspondientes, posibilitando una distribución uniforme de las mismas. 2. Estado del Arte El objetivo de este trabajo es el diseño, simulación y ejecución de la programación de órdenes de trabajo en las líneas de producción de una empresa del sector cerámico. Se propone una arquitectura de agentes JADE [4] integrados al área de prensado como medio de enlace para distribuir dinámicamente los diferentes lotes producidos hacia el área de esmaltado. 3. Metodología El sistema de “ardillas” [5] consiste en un entorno Peer-to-Peer de espacios de almacenamiento, en el que cada espacio contiene una cierta capacidad para guardar nueces. Las ardillas viven en cada uno de estos espacios. Cuando tienen nueces, se dirigen hacia los espacios, “husmeando” hasta encontrar uno adecuado para guardar sus recursos. El aspecto interesante del comportamiento de las ardillas es la manera como distribuyen sus nueces y otros alimentos en su entorno hasta obtener una distribución balanceada de recursos. La intención de estudiarlo es buscar la manera de explotar este comportamiento para desarrollar técnicas de diseño e implementación de sistemas multiagentes capaces de almacenar recursos en sistemas reales de producción. Los comportamientos estudiados de las ardillas pueden resumirse en: • Búsqueda de espacio y almacenamiento de nueces en áreas cercanas a su nido • Investigación aleatoria de espacios antes de decidir dónde guardar sus nueces • Una ardilla puede decidir no almacenar su comida si hay otras ardillas a su alrededor. En este trabajo, nos centramos en el primer comportamiento para implementar el sistema de agentes. La comunicación entre agentes se basa en la programación de comportamientos (Behaviours en el lenguaje de programación) mediante los cuales se simula la introducción de datos tales como: tamaño de lote, prioridad y modelo. Con ésto, cada agente interactúa con el resto de manera dinámica, distribuyendo las piezas producidas en las líneas con capacidad de recepción. Tal estrategia puede realizarse mediante la plataforma de agentes JADE y programación Java, utilizando como base de distribución de tareas un algoritmo de optimización inspirado en comportamientos de ardillas, el cual consiste, en el trabajo presentado, en tomar un lote cerámico y recorrer todas las líneas de producción existentes hasta "almacenarlo" en su totalidad en ellas. Como ejemplo, se simula solamente la distribución de 3 lotes previamente prensados hacia igual número de líneas de esmaltado. Como se muestra en la figura 1, el agente encargado de cada lote revisa una a una dichas líneas, distribuyendo el máximo de elementos posible en cada una de ellas hasta finalizar el lote. = Ardilla = Línea de esmaltado = Nueces Fig. 1. Entorno MAS con ardillas. Cada espacio (línea de esmaltado) tiene diferentes capacidades de almacenamiento durante el tiempo de ejecución de las tareas, a medida que la ardilla va distribuyendo sus nueces (lotes cerámicos). Una vez que ésta ha terminado de almacenarlos, cede su lugar a la siguiente en el orden de prioridad. Cada ardilla requerirá buscar espacios de diferente capacidad, debido a que tienen un número variado de nueces por almacenar. 3.1Algoritmo de ardillas multiagente En esta sección se describe el algoritmo que implementa el comportamiento descrito anteriormente que se ha implementado en este trabajo. Considérense las definiciones siguientes: nuez =pieza cerámica prensada c= capacidad de carga de línea de esmaltado A=ardilla de distribución El algoritmo simula la búsqueda de espacio para almacenamiento de nueces. Si en el espacio buscado no hay capacidad suficiente para vaciar la carga, se moverá a la localización siguiente en busca de espacio disponible. El ciclo se repite hasta que la ardilla encuentre dicho espacio o muera buscándolo, lo cual puede ocurrir si se introducen restricciones al sistema (tiempo límite de búsqueda, volumen máximo de recursos, etc.) o incidencia de factores externos (falla interna de los equipos, sobrecarga de recursos, etc.) Este algoritmo puede formalizarse como: For each c(j) if ardilla tiene nueces para almacenar actual=i c(i)=A(j)-c(i) Mover ardilla a c(j+1) End if End if 3.2Implementación La implementación del prototipo se desarrolló bajo el entorno JADE, utilizando Java como lenguaje de programación. Se crea un agente para cada orden de fabricación de piezas prensadas y 1 para cada línea de esmaltado. Una vez que el agente con mayor prioridad ha logrado distribuir toda su carga, habilita al siguiente agente en el orden de prioridad. La comunicación entre ellos se basa en la programación de comportamientos (Behaviours) y métodos de creación dinámica (en tiempo de ejecución) de agentes al terminar el funcionamiento de uno de ellos, lo que posibilita una distribución más rápida. 6. Resultados experimentales El simulador de almacenamiento de recursos permite manejar los parámetros siguientes: • Cantidad de piezas para distribuir. Desde 1 hasta n piezas. En este estudio se maneja un máximo de 9 para representar el entorno. • • • • Cantidad de espacios de almacenamiento. Desde 1 hasta n espacios. En el trabajo presentado se involucran 3 líneas de producción donde se almacenarán los recursos. Capacidad de almacenamiento en cada espacio. El simulador puede adaptarse a la capacidad específica requerida del sistema y, en tiempo de ejecución, comunicar a cada agente la capacidad admitida en ese momento. Ardillas (agentes) a ser creadas. Debido al relativamente bajo requerimiento de recursos para la creación de cada agente, su número límite puede adaptarse a prácticamente cualquier situación real de producción. Cantidad de piezas almacenadas en cada espacio. Varía durante la ejecución. Al igual que la capacidad de almacenamiento, el simulador comunicará en el momento requerido, la cantidad almacenada. Fig. 2. Resultado de almacenamiento de recursos La figura 2 muestra el resultado de la ejecución del simulador. En la parte superior aparece la creación de dos agentes de línea de esmaltado que recibirán los recursos del agente que intenta almacenarlos. En la parte inferior, la creación del agente que revisará las líneas intentando distribuir sus nueces. En el ejemplo de la figura se tiene un sobrante de 1 nuez en la primera línea (Nueces1:5, Espacio1:4), el agente se desplaza a la línea siguiente, que también presenta sobrante de nueces (Nueces2: 7, Espacio2:2), por lo que la comunicación se traslada al tercer agente, el cual tiene espacio suficiente de almacenamiento (Nueces3: 3,Espacio3: 8). Se muestra el estado final de los agentes en la parte superior de la figura, con un valor de 0 para el primer agente, lo cual indica la distribución total de los recursos generados en ese momento. Como información adicional, se muestra en pantalla el tiempo (medido en mseg.) transcurrido entre las interacciones de los agentes. En la tabla a continuación se muestra la duración observada de algunas de las acciones generadas por el intercambio de datos en el simulador. En la columna de la extrema derecha puede notarse que, a medida que la comunicación va adquiriendo complejidad (mayor número de agentes, acumulación de recursos por almacenar, etc.), el tiempo necesario para completar la tarea se incrementa exponencialmente. Estado Agente1 Con sobrante Con sobrante Estado Agente 2 Almacena el total de recursos Con sobrante Con sobrante Con sobrante Con sobrante Almacena el total de recursos Con sobrante No interviene Estado Agente 3 No interviene Tiempo (mseg.) 30793 Almacena parte de recursos Almacena el total de recursos Con sobrante No interviene 44357 59082 35243 240 Tabla 1. Tiempos observados de interacción de agentes Cabe mencionar que actualmente el proceso de programación de lotes de fabricación de azulejos cerámicos en la empresa de la cual se ha obtenido la información, se realiza de forma manual, por lo que la implementación de un algoritmo que permita una distribución más dinámica y eficiente de las órdenes de trabajo, en este caso mediante sistemas multiagente, sería de gran valía para la empresa. 7. Conclusiones En esta etapa del estudio, no se pretende hacer un desarrollo complejo o crear mecanismos de alto nivel para cooperación y negociación, solamente centrarse en un mecanismo simple, confiable y práctico para programación dinámica de tareas, debido a que se intenta utilizar como parte de un diseño integral basado en agentes y sistemas de manufactura para una fábrica real. Con ésto se simplifica la complejidad del sistema, se reduce el retardo de comunicación y por consecuencia, el tiempo de programación/reprogramación. Los resultados obtenidos demuestran que los comportamientos de ardillas traducidos en esquemas de trabajo reales son un medio eficiente de distribución de tareas. Asimismo, una vez observado lo anterior, puede predecirse que es posible responder a posibles situaciones de emergencia, tales como: Reconfiguración para nuevos pedidos de emergencia Reconfiguración tras cancelación de pedidos Reconfiguración para optimización de la programación actual Reconfiguración por ruptura de la máquina o producto destruido 8. Trabajos futuros Como líneas futuras de investigación dentro de este trabajo pueden destacarse las siguientes: • Implementación y comparación de eficiencia de otros algoritmos de programación como medida de reducción de tiempos de proceso. • Desarrollo de interfaz gráfica del simulador para una mayor facilidad de uso. • Reestructuración del código para permitir la introducción manual de datos en tiempo real, para enfrentar contingencias. • Estudio detallado de requerimientos mínimos de hardware y software que permita un funcionamiento óptimo del simulador. • Implantación en la fábrica de un sistema multiagente para la programación de producción en tiempo real. Referencias [1] R. Poli, C. Di Chio, W.Langdon. Exploring extended particle swarms: a genetic programming approach. In Proceedings of the 2005 conference on Genetic and Evolutionary Computation. pp. 169-176. [2] K.E. Parsopoulos,M.N.Vrahatis.Evolutionary computing and optimization: Particle swarm optimization method in multiobjective problems. In Proceedings of the 2002 ACM Symposium on Applied Computing. [3] Chien-Chung Shen, Chaiporn Jaikaeo,2005. Ad hoc multicast routing algorithm with swarm intelligence. Mobile Networks and Applications. Volume 10 issue 1-2. [4] JADE.2005.Java Agent Development Framework.http://jade.tilab.com/ [5] S. Camorlinga , K. Barker.2003.Multiagent Systems Storage Resource Allocation in a Peer-to-Peer Distributed File System.