Agentes móviles

Anuncio
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
Descargar