Ingeniería en Sistemas Computacionales Materia: Seminario de Desarrollo de Proyectos de Investigación Estudio y Diseño de Agentes Móviles Capitulo 1 Introducción El uso de sistemas de agentes móviles es el resultado de la evolución y la unión de sus los agentes, del campo de la inteligencia artificial, y del procesamiento distribuido, en el campo de la computación distribuida. La necesidad de usar de manera efectiva la información disponible en una red de computadoras, como puede ser Internet, requiere de algún mecanismo de organización y acceso a tal información. Una sistema basado en agentes móviles como solución a las necesidades especificadas es una solución que existe actualmente. Algunas de las ventajas que ofrecen los sistemas de agentes móviles son: • Reducen el tráfico en la red • Tienen interacción con entidades de tiempo real • Tratan con grandes volúmenes de datos Debido a que actualmente la tecnología de los agentes móviles ofrece soluciones a diversos problemas que se presentan a la hora de elaborar sistemas en red, este proyecto de investigación estudia los sistemas de agentes móviles. El objetivo principal de este proyecto de investigación es realizar un estudio y diseño de agentes móviles, además de establecer elementos base para el desarrollo de un protocolo que mantenga la comunicación en un sistema de agentes móviles. Es decir, con el producto final se pretende solo brindar el conocimiento que servirá de base para su futura implementación. En el capitulo 2, se presenta la revisión bibliográfica, que brinda todos los antecedentes de cómo surgio la Inteligencia Artificial Distribuida, los tipos de agentes y su clasificación hasta llegar a los sistemas de agentes 1 móviles. La metodología utilizada en este proyecto de investigación se describe en el capitulo 3. Y los resultados que se obtienen de la aplicación de esta metodología se especifican en el capitulo siguiente. En el capitulo 5, se describe de manera esencial el producto final que fue resultado del conocimiento obtenido en la aplicación de la metodología. Y finalmente en el capitulo 6 se concluye el estudio, y se da una idea para continuar en este estudio como un posible trabajos futuro. CAPÍTULO 2. REVISIÓN BIBLIOGRÁFICA El propósito de nuestro estudio nos lleva a partir desde el punto inicial, desde la comprensión de lo que es un agente y su funcion. Según Wooldridge (1996) se distinguen dos usos generales del termino agente: Noción débil de agencia: sistema de hardware o un sistema de computo basado en software que contiene las propiedades de autonomía, habilidad social, reactividad y proactividad. Noción fuerte de agencia: sistema computacional que, además de las propiedades mencionadas, es conceptualizado e implementado usando conceptos que son mas usualmente aplicados a humanos. Entendiendo lo que es un agente, podemos describir las propiedades de estos de una manera mas precisa. Autonomía: los agentes actúan sin la intervención directa de las personas. Posee la capacidad de razonamiento para generar cursos de acción. Sociabilidad: los agentes interactúan con otros agentes mediante algún mecanismo de comunicación. Reactividad: los agentes perciben su ambiente (mundo real, interfaz grafica, conjunto de otros agentes, Internet o combinación de estos) y responden a los cambios de éste. Proactividad: los agentes no solo actúan en respuesta a su ambiente, sino que son capaces de tener comportamiento orientado a metas. Además de las propiedades que Wooldridge menciona, anónimo(1999) distingue otras: Cooperativo: en consecuencia a la sociabilidad, la cooperación entre agentes es una razón de ser para tener múltiples agentes para resolver problemas. Aprendizaje: los agentes para ser inteligentes requieren la propiedad de poder aprender del ambiente que les rodea. Veracidad: un agente no comunica deliberadamente información falsa. Benevolencia: los agentes no tienen metas conflictivas, hará siempre lo que se pida. Racionalidad: un agente actuara para alcanzar sus metas en la medida que sus creencias, conocimientos y capacidad de razonamiento se lo permitan. 2 Movilidad: algunos agentes tienen la habilidad de viajar en una red de computadoras (en Internet). Los agentes pueden clasificarse desde diferentes puntos de vista que se mencionan a continuación: En base a sus capacidades de resolver problemas se clasifican en: Agentes reactivos: reaccionan a cambios en su ambiente o a mensajes provenientes de otros agentes. No son capaces de razonar acerca de sus intenciones. Sus acciones se realizan como resultado de reglas que se establecen. Agentes intencionales: son capaces de razonar acerca de sus intenciones y conocimientos, crear planes de acción y ejecutar dichos planes. Los agentes intencionales pueden ser considerados como sistemas de planeación. Agentes sociales: poseen la capacidad de los agentes intencionales. Mantener los modelos de los otros agentes, razonar sobre el conocimiento incorporado a estos modelos. Tomar decisiones y crear sus planes con respecto a los modelos de otros agentes. En base a autonomía, aprendizaje y cooperación: Agentes colaborativos: enfatizan su autonomía y cooperación (con otros agentes) para realizar su tarea. Pueden aprender. Agentes de interfaz: ponen énfasis en su autonomía y aprendizaje para realizar sus tareas. Los agentes de interfaz asisten y dan soporte al usuario para aprender el uso de una aplicación. Otra clasificación de agentes: Agentes móviles: los agentes móviles son programas de software capaces de viajar por redes de computadoras, como Internet, de interactuar con hosts, pedir información a nombre de un usuario y regresar a su lugar de origen una vez que ha realizado las tareas especificadas por un usuario. Agentes de información/internet: realizan la tarea de administrar, manipular o recolectar información proveniente de varias fuentes distribuidas. Los agentes de información pueden ser estáticos o móviles, no cooperativos o sociales y pueden o no aprender. Agentes híbridos: son aquellos que en su funcionamiento poseen la combinación de dos o mas de las capacidades de los tipos mencionados. Estas ultimas clasificaciones, especialmente la de agentes móviles es el sujeto de nuestro estudio. Pero además de estudiar a fondo lo que es un agente, sus propiedades y conocer los diversos tipos de agentes debemos saber en que pueden ser aplicados. Un agente individual encuentra aplicación en robótica, pero según Merelo (1997) puede ser usado de múltiples maneras en el entorno actual: • Ayuda al cliente: puede escuchar el problema, buscar en medios diferentes y proponer la solución. • Filtrado y búsqueda en la world wide web: aprendería los hábitos de búsqueda del usuario para proponer nuevas paginas. • Busca gangas: un agente podría buscar el objeto que desee su usuario al mejor precio. 3 • Agentes charlatanes: puede mantener una conversación con el usuario, tomando la apariencia deseada para diversión. • Trabajo en grupo: los agentes se están usando para negociar problemas de trabajo y coordinación de un grupo. Siendo cualquiera de estas aplicaciones las que se desee implementar un sistema basado en agentes propone interesantes oportunidades para crear sistemas computacionales mas flexibles y robustos. La investigación de los agentes de una forma individual la estudia la Inteligencia Artificial pero debido a la aplicación de agentes en forma colectiva, se crea una nueva rama de la IA, la Inteligencia Artificial Distribuida, que Avouris (1992) define como : La IAD es un subcampo de la Inteligencia Artificial que se centra en los comportamientos inteligentes colectivos que son producto de la cooperación de diversas entidades(agentes) Otra definición que propone anónimo (1999): La Inteligencia Artificial Distribuida (IAD) es un subcampo de la Inteligencia Artificial que investiga modelos de conocimiento, así como las técnicas de comunicación y razonamiento que necesitan los agentes computacionales para participar en la solución de problemas comunes a ellos. De esta forma, la investigación en IAD se orienta al entendimiento y modelado de conocimiento y acción en tareas que requieren de colaboración. En la IAD se distinguen tres periodos cronológicos: • La IAD clásica: estudio de la conducta colectiva. • La IAD autónoma: estudio de los agentes individuales en un mundo social. • La lAD comercial: se centra en la aplicación de la IAD clásica y autónoma desarrollando agentes con características muy diferenciadas que están siendo explotados de forma comercial. La investigación que se realizara tomara la clasificación de la IAD clásica, debido a que el estudio esta enfocado en las técnicas y el conocimiento necesario para la coordinación y distribución del conocimiento y las acciones en un entorno con múltiples agentes. Según Bond (1988) existen dos áreas principales de investigación: • Resolución (cooperativa) de Problemas Distribuidos ((C) DPS): estudia como un conjunto de modulos cooperan para dividir y compartir el conocimiento de un problema y en el desarrollo de la solución. • Sistemas Multiagente (MAS) estudia la coordinación de la conducta inteligente entre un conjunto de agentes inteligentes autónomos. Una definición de Sistema Multiagente la da Flores (2002): Un sistema multiagente es una red poco acoplada de entidades capaces de solucionar problemas que están mas allá de la capacidad y el conocimiento individual de cada entidad Otra definición según Luckenhaus y Eckstein (2002) es: Un sistema multiagente es una comunidad de agentes que cooperan para resolver problemas comunes 4 Con estas definiciones llegamos a una comprensión de este tipo de sistemas la cual es necesaria para nuestra investigación. Existen diversas razones para desarrollar sistemas Multiagentes con respecto a un sistema de computo común o ya conocido: • Puede dar solución a los problemas con una mayor rapidez. • Mantiene una comunicación mínima, transmiten soluciones parciales a otros agentes en lugar de enviar todos los datos a un sistema central. • Existe una mayor flexibilidad, ya que se tiene agentes con diferentes habilidades que cooperan entre si. Las razones para desarrollar sistemas Multiagentes también pueden ser explicadas en términos de algunos tipos de agentes, nos enfocaremos al punto de vista de nuestro sujeto de estudio: Desde al punto de vista de los agentes móviles: dado que un agente móvil es capaz de navegar por diferentes redes, puede ser mas eficiente y barato que un agente estático en la búsqueda de información, pues visitaría cada host para realizar sus operaciones y regresar finalmente con toda la información, y operaciones realizadas, a la computadora que lo origino. A pesar de las múltiples razones y ventajas que nos brinda el desarrollar sistemas Multiagentes existen varios problemas que la IAD clásica estudia son: • Cómo formular, describir, descomponer y asignar problemas y sintetizar los resultados entre un grupo de agentes inteligentes. • Cómo capacitar a los agentes para que se comuniquen e interactúen: que lenguajes de comunicación o protocolos deben utilizarse, que y cuando deben comunicarse, etc. • Cómo asegurar que los agentes actúan coherentemente al tomar decisiones o realizar acciones. • Cómo capacitar a los agentes para representar y razonar sobre acciones, planes y conocimiento de otros agentes para coordinarse. • Cómo reconocer y reconciliar puntos de vista e intenciones conflictivas entre un conjunto de agentes para coordinar sus acciones. • Cómo utilizar técnicas de ingeniería y desarrollar sistemas con IAD. Nuestra investigación se centra en el punto 2, ya que se desea brindar los elementos para la interacción y comunicación entre agentes. Esto debido a que los agentes pueden mejorar su coordinación y coherencia gestionando qué, cómo, y cuándo se comunican entre si. La comunicación puede proporcionar a los agentes el conocimiento necesario para desarrollar sus acciones con una visión menos local y poder sincronizarse con el resto de los agentes. La capacidad de interacción es una de las mas importantes de los agentes (Wooldridge y Jennings,1998). Investigadores en lenguajes de comunicación como Finin (1997), Huhns (1998) y Peng (1998) mencionan tres elementos clave para conseguir la interacción multiagente: • Un lenguaje y un protocolo de comunicación común • Un formato común del contenido de la comunicación • Una ontología compartida Históricamente, la comunicación entre agentes de un sistema se realizaba mediante lenguajes propios de cada vendedor, impidiendo la comprensión entre los agentes de sistemas diferentes. A principios de los 80s el 5 DARPA desarrolló el Knowledge Query management Language (KQML). Algunos entornos como el Java Agent Template han desarrollado compatibilidad con KQML, pero no son completamente compatibles. En cuanto a los protocolos de comunicación se definen como las reglas de comunicación que permiten el flujo de información entre computadoras distintas que manejan lenguajes distintos, que es lo que el estudio pretende brindar. Además el estudio pretende proporcionar una mejora a la interacción entre agentes, brindando los elementos para la creación del protocolo de comunicación realizado en un lenguaje que brinde las herramientas necesarias para su desarrollo. Capitulo 3 Metodología de Investigación El objetivo de nuestro estudio nos lleva a realizar una variante en los métodos a realizar propuestos con anterioridad. Debido al poco auge de la implementación de la tecnología de agentes móviles en el desarrollo de sistemas de software, la realización de un estudio en el sector productivo es imposible, ya que la información que pudiera arrojar esta investigación seria ambigua o no aportaría nada relevante o decisivo a nuestro proyecto de investigación. Sin embargo, se analizo que tipo de métodos eran los adecuados y se opto por realizar una Investigación documental que consta de los siguientes puntos: • realizar un estudio del Estado del Arte • aplicar Entrevistas • casos documentados bibliográficamente 1.El estudio del Arte se efectuara en las siguientes diferentes tipos de muestras: • Artículos publicados en la www con información actual de la aplicación de la tecnología de agentes móviles • Libros de Inteligencia Artificial • Tesis de proyectos referentes a la tecnología de agentes 2.Las entrevistas que se realizaran será grupal, se aplicara a un grupo de estudiantes del Instituto Tecnológico de Ciudad Madero quienes forman un equipo de colaboradores que estudian y desarrollan tecnología de agentes el cual esta bajo la asesoria de la Mtra. Yolanda Pérez Cruz catedrático de dicha institución. Las preguntas de la entrevista se discutirán con el grupo y se contestaran de manera aleatoria con los integrantes del grupo. 3.El estudio de casos documentados bibliográficamente se aplicara al caso documentado vía internet del sistema Neurona de la empresa Nemotix de España, el cual utiliza la aplicación de los agentes para el desarrollo de sistemas. Los métodos que se aplicaran para el análisis de los datos recolectados serán: a)Familiarización. Se releerán todos los documentos y la información generada en las entrevistas con el fin de recopilar los elementos claves que nos producirán ideas relevantes en nuestro estudio. b)Reflexión. Se analizar todos los documentos que arrojo la investigación y se relacionara con lo descrito en nuestra revisión bibliogràfica con el fin de analizar si apoya o responde las dudas que existían en la literatura ya existente. 6 Capitulo 4 Resultados de la Investigación El estudio del arte que se aplico en el campo de los agentes móviles fue el principal instrumento que brindo todo el conocimiento para obtener un resultado en este proyecto, dado a su enorme importancia se estudio y se selecciono cuidadosamente dicha información. Para el desarrollo de un sistema de agentes móviles este debe contener según Nava(2002) los siguientes modelos : • Modelo de Agente. Este modelo define la estructura interna del agente como parte del agente móvil, en esencia define las características de autonomía, aprendizaje y cooperatividad. • Modelo de Ciclo de Vida. Define los diferentes estados de ejecución de un agente móvil. • Modelo Computacional. Define las habilidades computacionales de un agente, como la manipulación y control de instrucciones. • Modelo de Seguridad. Se encarga de dos protecciones: la de los agentes sobre un nodo y la de los nodos sobre los agentes. • Modelo de Comunicación. Es la implementación de un protocolo. • Modelo de Navegación. Se refiere a todos los aspectos de movilidad. Ya que la tecnología de agentes ha comenzado a establecerse, se han desarrollado plataformas y lenguajes para emplear sistemas multiagentes en variadas aplicaciones. Lenguajes de agentes Los lenguajes de agentes se definen como lenguajes que permiten programar agentes con los terminos desarrollados por los teóricos de agentes. Se distinguen los siguientes niveles en la programación de agentes: • Lenguajes de programación de la estructura del agente: suelen ser lenguajes de propósito general como C++, Java, Lisp, Prolog, etc. o lenguajes especificos como April, Prolog/C, CLOS/C. • Lenguajes de comunicación de agentes: se distinguen dos tipos de lenguajes de comunicación: ♦ Procedimentales como Perl, Tcl, etc. ♦ Declarativos como ACL. • Lenguajes de programación del comportamiento del agente: permiten la definición de su estructura, conocimiento y habilidades. ACL Como resultado del esfuerzo por crear un lenguaje que permitiera la interoperación entre agentes autónomos distribuidos surgió el lenguaje llamado ACL (Agent Communication Language). (Guevara,1998) ACL tiene tres componentes: un vocabulario, un lenguaje de contenido llamado KIF (Knowledge Interchange Format) y un lenguaje de comunicación llamado KQML (Knowledge Query Manipulation Language). Un mensaje de ACL es un mensaje en KQML que consiste de una directiva de comunicación y un contenido semántico en KIF expresado en términos del vocabulario. 7 Vocabulario. El vocabulario de ACL es un diccionario de palabras apropiado para áreas comunes de aplicación. Cada palabra en el diccionario tiene una descripción que es usada por las personas para entender su significado y una anotación formal (escrita en KIF) que es usada por los programas. KIF KIF es una versión en prefijo del cálculo de predicados de primer orden con varias extensiones para incrementar su expresividad. Este formato para intercambio de conocimiento permite primeramente expresar datos simples. KQML Aunque es posible diseñar un marco de trabajo completo para la comunicación en el que todos los mensajes tengan la forma de oraciones en KIF, esto sería ineficiente, ya que se requeriría incluir información implícita sobre el agente que envía el mensaje y sobre el que lo recibe, debido a que la semántica de KIF es independiente del contexto. La comunicación se hace más eficiente si se provee una capa lingüística en la que el contexto se toma en cuenta. (Genesereth, 1992). KQML fue concebido como un formato de mensajes y como un protocolo que maneja los mensajes para permitir a un programa identificar, conectarse e intercambiar información con otros programas. En términos lingüísticos se puede decir que KQML se enfoca principalmente a la parte pragmática de la comunicación. Plataformas para Agentes Las plataformas son herramientas de programación para la construcción de agentes. Existen diversas plataformas en las que se pueden construir los sistemas de agentes móviles, La mayoría de las plataformas de agentes móviles están basadas en Java: Plataforma Aglets Los aglets son agentes autónomos basados en Java, desarrollados por IBM. Proveen las capacidades básicas requeridas para la movilidad. Un aglet refleja el modelo de applet en Java pero brindándole la propiedad de movilidad. Un aglet también puede ser un agente móvil porque soporta las ideas de ejecuciones autónomas y ruteo dinámico sobre sus itinerarios. Tiene las siguientes características (IBM Aglets, 2002): • Un esquema global único para agentes (Modelo de navegación/seguridad) • Un itinerario de viaje, para la especificación de patrones complejos de viajes con múltiples destinos y manejos de fallas automáticos (Modelo de navegación) • Un mecanismo white−board permitiendo que múltiples agentes colaboren y compartan información asíncronamente (Modelo de comunicación) • Un esquema de transmisión de mensajes que soporta una unión asíncrona desahogada tan bien como una comunicación síncrona entre agentes (Modelo de comunicación) • Una carga de clases dinámicamente que permite que el código Java de los agentes y la información de su estado viajen a través de la red (Modelo de navegación) • Un contexto de ejecución que proporciona un ambiente independiente del sistema actual sobre el cual se están ejecutando (Modelo computacional) Desafortunadamente el modelo de ciclo de vida de un aglet es muy simple y algunas de sus desventajas se mencionan a continuación: 8 • Soporte inadecuado de control de recursos • No tiene protección de referencias • No provee ayuda para la preservación y reanudación del estado de ejecución. Los aglets utilizan el Protocolo de Transferencia de Agentes independiente de la plataforma para transferir agentes entre redes de computadoras. Plataforma D'Agents Agent Tcl, ahora llamado D'Agents es una plataforma simple independiente del sistema de agente móvil. El modelo de navegación esta basado en un simple comando agente_salta, este comando puede aparecer en un agente y provocar que su estado y contexto de ejecución sea congelado y transportado a un nodo específico; esta habilidad es más sofisticada que la de los Aglets. El Modelo de Comunicación tiene tres comandos: agente_enviar, agente_recibir y agente_reunir. Cuando un agente quiere migrar a una nueva maquina, éste manda llamar a una simple función agente_salta, el cual automáticamente captura la completa información del estado del agente y la envía al servidor sobre una máquina destino; el servidor destino empieza apropiándose del ambiente de ejecución, cargando la información del estado y retornándolo a su lugar de origen. D'Agents tiene importantes características, como: • Arquitectura Simple • Seguridad • Transparencia en la movilidad (TCP/IP) • Comunicación entre agentes (RPC) El Lenguaje D'Agent es una extensión de Tcl/Tk que soporta la programación distribuida en la forma de agentes transportables. Tcl (Tool Command Language) es realmente dos cosas: un lenguaje script y un intérprete para este lenguaje, que es diseñado para ser fácilmente incorporado dentro de las aplicaciones. Plataforma Voyager Es una aplicación realizada 100% en Java, creada por la compañía ObjectSpace, su meta es proveer al programador un espacio para crear programas distribuidos rápidamente, fácilmente, con mucha flexibilidad y extensibilidad. Una de las grandes ventajas de este sistema es que soporta ambas arquitecturas: cliente−servidor y basada en agentes. Características de Voyager (Objetcspace Voyager, 2002): ♦ Habilitación remota de las clases ♦ Inicialización por parte del cliente ♦ Cargado dinámico de clases ♦ Colección distribuida de basura ♦ Agregación dinámica ♦ CORBA, RMI, DCOM ♦ Movilidad ♦ Activación ♦ Applets y Servlets ♦ Servicio de nombres ♦ Multi−reparto para objetos de Java distribuidos 9 ♦ Suscripción para publicar eventos remotos ♦ Mensajería avanzada Plataforma Odyssey General Magic Inc. fue el creador del primer sistema de agentes móviles denominado Telescript, cuyo periodo de vida fue muy corto pese a que estaba pensado para trabajar en una arquitectura de red. En respuesta a la popularidad de Internet y al gran auge del lenguaje de programación Java, General Magic decidió reimplementar todos los conceptos considerados en el desarrollo de Telescript pero ahora en este lenguaje. El resultado obtenido fue Odyssey, el cual es una librería de clases Java que permiten al usuario crear sus propias aplicaciones de agentes móviles . Maneja el Protocolo de Transferencia de Agentes Simples (SATP). (General Magic, 2002). Plataforma Concordia Concordia es un espacio de trabajo para desarrollar y manejar aplicaciones de agentes móviles eficientemente para accesar información en cualquier tiempo, en cualquier lugar y sobre cualquier dispositivo que soporte Java. Las aplicaciones: • Procesan datos sobre los datos fuente • Procesan datos aún cuando el usuario esta desconectado de la red • Accesan y entregan la información a través de múltiples redes (LANs, Intranets e Internet) • Utilizan comunicación inalámbrica • Soportan múltiples dispositivos clientes, tales como computadoras de escritorio, portátiles, PDAs y teléfonos inteligentes Concordia oculta las complejidades de programar una aplicación móvil a los programadores, desarrollando una aplicación agente−habilitado similar a un programa estacionario o no móvil. Los agentes mantienen su estado interno mientras viajan en la red, así que ellos pueden reanudar su ejecución al llegar a una nueva posición. Todos los agentes transportan trabajo que se maneja transparentemente sin la intervención del programador. Un agente Concordia viaja en la red definido por su Itinerario. El Itinerario especifica a dónde viajará el agente y qué tareas deberá desarrollar cuando llegue. Los itinerarios de Concordia son especificados en tiempo de ejecución, los agentes pueden cambiar su propio itinerario basados en la información y eventos descubiertos a medida que los agentes viajan. Algunas de las características que provee Concordia según Nava (2002) son: • Servicios de comunicaciones TCP/IP • Manejo avanzado de funciones • Colaboración • Servicio de puentes • Persistencia y manejo de cola • Itinerario • Servicio de nombres • Estructura de seguridad Concordia • Transportador de agentes ligero API • Cifrado 10 Componentes de Concordia: • Administrador de agentes • Administrador de seguridad • Administrador de persistencia • Administrador de comunicación inter−agente • Administrador de cola • Administrador de directorio • Director de administración • Librería de herramientas para agentes Concordia no impone un protocolo o un servicio de computación distribuida como propio. Concordia emplea los servicios de comunicación existentes de TCP/IP, ampliamente disponibles y compatibles con redes de área local, y redes privadas y públicas inalámbricas. Plataforma JINI Jini es una tecnología de sistema de redes y tiene el potencial para fundamentalmente cambiar la forma que escribimos software. Basado en Java, Jini posibilita la creación de comunidades de redes dinámicas de dispositivos y servicios informáticos − comunidades que espontáneamente se forman sin intervención humana. Professional Jini le mostrará exactamente cómo puede usar Jini y el JavaSpaces relacionado para crear servicios de software en un ambiente altamente dimensionable y robusto, activar la funcionabilidad para ser entregado a pesar de la interferencia de redes o servicios en cualquier parte de la red. (Sun Microsystems Inc,2002) La simplicidad es una de las metas buscadas al desarrollar la tecnología Jini, todas las habilidades de Jini se basan en cinco conceptos básicos. Una vez que se comprenden estos elementos, se conocen los principios de la tecnología. Estos conceptos según Cruz (2000) son: Ddescubrimiento, búsqueda, arrendamiento, eventos remotos y transacciones. Estos conceptos son implantados como un conjunto de librerías de software y, como convenciones de código que se aplican en las comunidades de tecnología Jini. Descubrimiento es el proceso usado para encontrar comunidades en un red y unirse a ellas. El descubrimiento es la parte de Jini que es responsable de las propiedades de construcción de comunidades espontáneas de los sistemas. Una vez que se han conocido diferentes lenguajes de actualidad que permiten el desarrollo de sistemas de agentes móviles, también se analizaron los diferentes protocolos de comunicación que existen para así complementar el diseño del sistema de agentes móviles. La comunicación entre los agentes del sistema parte de la elección de un lenguaje común a todos ellos y de un protocolo para el establecimiento de la comunicación entre agentes. Protocolos de Comunicación. Los protocolos son como reglas de comunicación que permiten el flujo de información entre computadoras distintas que manejan lenguajes distintos, por ejemplo, dos computadores conectados en la misma red pero con protocolos diferentes no podrían comunicarse jamás, para ello, es necesario que ambas "hablen" el mismo idioma. (Anónimo, 2002) Las conversaciones entre agentes siguen en algunas ocasiones unos patrones determinados, que se repiten en 11 muchos casos. Un protocolo es un patrón que se usa para llevar por unos cauces concretos una conversación. Son como conversaciones guiadas, en que cada agente sabe qué mensaje enviar y cuales puede recibir. Los agentes que forman un sistema pueden colaborar entre ellos para alcanzar sus tareas respectivas, dicha colaboración se realiza mediante un protocolo de comunicación comprensible por los agentes del sistema. A continuación se presentan protocolos actuales mas importantes según Nava (2002) : Protocolo MICK Es un Marco de Inter−Comunicación basado en KQML, en el que cada agente cuenta con un ruteador capaz de enviar y recibir mensajes en KQML, reconocer un conjunto de palabras y seguir un protocolo. Sus elementos son: • Facilitador, es el que define la arquitectura de coordinación asistida, ya que se encarga de aceptar conexiones, de recibir solicitudes de registro de los ruteadores y de mantener tablas con las direcciones de quienes se han registrado. • Ruteador, se encarga de registrar a su agente con el facilitador, recibir mensajes, interpretarlos para solicitar la acción correspondiente a quien esta sirviendo, construir mensajes y enviarlos. • KQML, es un lenguaje de tipo declarativo que se enfoca a la parte pragmática de la comunicación. • Vocabulario, es el conjunto de palabras que los ruteadores reconocen en el contenido de los mensajes, y • Protocolo, maneja la comunicación entre el UAD (Director de Agentes de Usuario) y los agentes, entre el UAD y ALiS (Servicios de Biblioteca Activa), y entre el UAM (Administrador de Agentes de Usuario) y ALiS. Protocolo ATP El Protocolo de Transferencia de Agentes (ATP) es un protocolo a nivel de aplicación para sistemas distribuidos basados en agentes, puede ser usado para transferir agentes móviles entre redes de computadoras. Mientras los agentes móviles pueden ser programados en diferentes lenguajes y para una variedad de plataformas de agentes, ATP ofrece la oportunidad para manejar la movilidad de los agentes de una forma general y uniforme. Protocolo CORBA CORBA (Common Object Request Broker Architecture) es una especificación abierta de OMG para las arquitecturas de las aplicaciones que trabajan sobre redes. Su interoperabilidad proviene de dos partes principales: OMG Lenguaje de Definición de Interface (OMG IDL) y los protocolos estandarizados GIOP e IIOP. El Lenguaje de Definición de Interface (IDL) , puede ser usado para definir la interacción de objetos distribuidos sobre la red, la interfaz permite enviar objetos a métodos remotos como parámetros, ya sea pasar el objeto actual o una copia de él, y define la interacción del código remoto con el código local. El Protocolo Inter−ORB General (GIOP) , especifica una sintaxis de transferencia estándar y un conjunto de formatos de mensajes para comunicaciones entre ORBs, un ORB (Object Request Broker) es un transporte de objetos, que toma a los objetos transparentemente hace peticiones a − y recibe respuestas de − otros objetos localizados local o remotamente. GIOP define siete formatos de mensajes que cubren todas las semánticas de petición/respuesta ORB. 12 El Protocolo Inter−ORB Internet (IIOP), especifica como los mensajes GIOP se intercambian utilizando conexiones TCP/IP. El IIOP especifica un protocolo de interoperabilidad estandarizado para el Internet, proporcionando interoperación "fuera de la caja" con otros ORBs compatibles basados en TCP/IP. Ambos protocolos: IIOP y DCE/ESIOP (Environment−Specific Inter−ORB Protocol) tienen que integrarse a mecanismos para transmitir implícitamente el contexto de los datos que esta asociado con la transacción o los servicios de seguridad. Protocolo RMI RMI (Remote Method Invocation) habilita al programador para crear aplicaciones basadas en tecnología Java distribuida, en la cual los métodos de objetos en Java remotos pueden ser invocados desde otras máquinas virtuales de Java, posiblemente en diferentes servidores. El programa puede hacer una llamada sobre un objeto remoto, una vez que éste obtiene una referencia al objeto remoto, buscándolo en el bootstrap llamando un servicio proveído por RMI o recibiendo la referencia como un argumento o un valor regresado. RMI utiliza la serialización de objetos con parámetros oficiales y no oficiales, y no trunca los tipos, soportando un verdadero polimorfismo orientado a objetos. El sistema RMI consiste de cuatro capas: • Capa de aplicación • Capa de fragmento/esqueleto, transmite los datos de la capa de aplicación a la capa de referencia remota • Capa de referencia remota, es responsable de proveer la habilidad para soportar variaciones de referencias remotas o invocaciones a protocolos independientes del fragmento del cliente y del esqueleto del servidor • Capa de transporte, es responsable de establecer conexiones a direcciones remotas, manejar las conexiones, escuchar sus llamadas entrantes, manejar una tabla de objetos remotos que residen en el mismo espacio de direcciones, establecer una conexión de una llamada entrante localizando su despachador y pasándole su conexión. Esta información aquí brindada es el resultado de nuestra investigación documental, se han establecido aquí los detalles para un diseño de sistemas de agentes móviles, a continuación el producto final propondra lo mas optimo de acuerdo al estudio de esta información. Capitulo 5 Producto Final Debido al poco auge de la tecnología estudiada en este proyecto de investigación el producto resulto solo de la investigación bibliografica exhaustiva que se realizo. A continuación se presenta la propuesta para el diseño de un sistema de agentes móviles. Se propone como herramienta de Lenguaje de Programación: • Utilizar la tecnología JINI como herramienta para el desarrollo del sistema de agentes móviles. Ya que es la plataforma mas actual, es simple, puede crear sistemas robustos y esta basado en Java. Como puntos importantes para la creación del protocolo de comunicación se propone: • El uso del formato KIF por la simplicidad en como se expresan los datos. • Además complementarlo con la utilización del lenguaje KQML debido a que es comúnmente 13 utilizado en los sistemas Multiagentes. Además que el protocolo de comunicación deberá proveer los siguientes servicios al sistema multiagente: • Establecer un patrón determinado para la conversación entre agentes. (comunicación) • Establecer los roles de cada agente (coordinación) • Permitir actividades entre agentes como la planeación, negociación y toma de decisiones. Esta propuesta esta basada en el estudio de la información analizada, es decir, se selecciono aquellas tecnologías mas recientes y optimas para el desarrollo de sistemas de agentes, además de proveer elementos clave que se requieren para la elaboración del protocolo de comunicación, el cual complementara el diseño del sistema de agentes. Capitulo 6 Conclusiones Debido a la importancia del desarrollo de nuevos sistemas que utilizan la tecnología de agentes móviles, se realizo de manera favorable un estudio de esta tecnología. Obteniendo con ello conocimiento nuevo, actual y sobre todo de gran ayuda para nuevos proyectos de desarrollo de software, brindando información acerca de las diferentes plataformas que existen para el desarrollo de sistemas de agentes, protocolos de comunicación, lenguajes, etc. Además se propusieron elementos importantes que se tomaran en cuenta para el diseño de un sistema de agentes móviles, como lo es el lenguaje y la plataforma de agentes. También como un complemento a el estudio y al diseño de los agentes se establecieron puntos clave para la elaboración de un protocolo de comunicación para sistemas de agentes móviles. Trabajos Futuros • Este estudio y diseño de agentes móviles, podrá ser tomado como una base para la implementación del sistema de agentes móviles. Referencias Bibliograficas ANÓNIMO, www.redcientifica.com/doc/doc199904190010.html, 1999. AVOURIS, M., Distribuited Artificial Intelligence: Theory and Praxis, Kluwer Academic Publishers, Boston, 1992. BOND A., Readings in Distributed Artificial Intelligence, Morgan Kaufmann, 1988. Finin, t., KQML as an Agent Communication Language in Software Agents, AAAI Press, 1997. FLORES, Roberto, Hacia una estandarización de los marcos de trabajo para Sistemas Multi−Agentes, http://www.acm.org/crossroads/espanol/xrds5−4/multiagent.html, 10 septiembre 2002. HUHNS, M., Agentes y Multiagentes, San Francisco California, Morgan Kauffman Publishers, 1998. 14 LUCKENHAUS, M., Eckstein , W., Sistemas basados en agentes, http;//mailweb.udlap.mx/sp098974/is578/agentes−img.html, 5 octubre 2002. MERELO, J.J, Agentes Autónomos Inteligentes, http://www.adi.uam.es/~adarraga/studs/Xerxes/Pag2.html, 7 de septiembre 2002. PENG, Y, Agentes y multiagentes, Ndumu Ed., London, 1998. WOOLDRIGE, Michael. Overview at Agents, 1996 WOOLDRIGE, M. and Jennings N., Proceedings of the second international conference on autonomous agents, May 1998. Anónimo, Protocolos de comunicación, http://www.forest.ula.ve/~mana/cursos/redes/protocolos.html, 8 septiembre 2002. Cruz, C., Desarrollo de telerobótica utilizando la tecnología Jini, Tesis Licenciatura. Escuela de Ingeniería, Universidad de las Américas−Puebla. Mayo 2000 IBM Aglets. http://ww.trl.ibm.co.jp/aglets, 5 noviembre 2002. General Magic Odyssey. http://www.generalmagic.com, 10 noviembre 2002. Genesereth, M. Knowledge Interchange Format, Version 3.0 Reference Manual, Technical Report, Computer Science Department, Stanford University, USA., 1992. Guevara, A, Un Marco de Comunicación Inter−Agentes en una Biblioteca Digital, Tesis Licenciatura, Escuela de Ingeniería, Universidad de las Américas−Puebla, Mayo 1998. Nava, Sandra, Federación de Bibliotecas Digitales utilizando Agentes Móviles , http://ict2.udlap.mx/people/sandra/prop_formal.html , Noviembre 15 de 2002. Objectspace Voyager, http://www.objectspace.com, octubre 30 de 2002 Sun Microsystems Hispanoamérica, http://ve.sun.com/service/sunps/jdc/jini.html, Noviembre 10 2002. Instituto Tecnológico de Ciudad Madero 15