martes, 1 de abril de 2008

Mensajeria en JADE

JADE se encuentra basado en las especificaciones FIPA en cuanto al formato de los mensajes, los cuales están divididos en diferentes slots que contiene la información (lenguaje, protocolo, contenido. . . ), y sobre estos se definen funciones de creación (set) y consulta (get).

Los métodos básicos de los que se dispone para el manejo de los mensajes entre agentes son:

  • send(ACLMessage): Se usa para enviar un mensaje una vez ingresados todos los parametros de este. El mensaje es enviado desde el agente que invoca el método a todos los destinatarios que contienen el campo :receiver.
  • ACLMessage receive( ): Recibe un mensaje de la cola de mensajes del agente. Se puede especificar que tipo de mensaje se quiere recibir mediante una plantilla de mensaje (MessageTemplate).
  • ACLMessage blockingReceive( ): Bloquea el agente mientras no se reciba un mensaje. Al igual que en el método anterior, se puede especificar el tipo de mensaje a recibir, con lo que se desecharía el resto, y el agente permanecería bloqueado hasta recibir el mensaje deseado.
La siguiente figura muestra la secuencia de envió de un mensaje en JADE:

Como se aprecia en la figura anterior el agente A1 prepara el mensaje configurando como receptor de este al agente A2 y lo envía a través del canal de distribución de mensajes de JADE, el cual guarda el mensaje en la cola de recepción del agente A2. Una vez guardado el mensaje en la cola de recepción, el agente A2 puede proceder en cualquier momento a retirar este.

El lenguaje que se utiliza comúnmente para escribir los mensajes es el FIPA-SL (Semantic Lenguaje), el cual contiene un ámbito mas general ya que permite: formar expresiones lógicas, intercambiar información entre agentes y expresar acciones a realizar.


Agent Communication Language (ACL)


En una sociedad multiagente, los agentes deben cooperar para realizar sus tareas y alcanzar sus objetivos. Los mecanismos de comunicación tradicionales permiten que dos agentes se transfieran información, pero eso es insuficiente cuando el objetivo es conseguir un comportamiento social. Es decir, son necesarios otros mecanismos que permitan dotar a los mensajes intercambiados de un contenido semantico.

Para definir el modelo de comunicación, FIPA parte de la idea que los agentes poseen capacidad de razonamiento. Esta capacidad viene dada por una serie de actitudes mentales que se definen como:

  • Creencias: Conjunto de proposiciones que el agente acepta como verdaderas. Lo que el agente conoce del mundo.
  • Objetivos: Conjunto de propiedades que el agente quiere que sean verdaderas aunque actualmente no están entre sus creencias.
  • Intenciones: Conjunto de acciones planificadas por el agente que le permiten llegar a un estado deseado.
Mediante sus acciones, un agente puede contribuir a cambiar el estado de su entorno y así satisfacer sus objetivos. Un agente influye en el conocimiento y acciones de otros agentes mediante un acto de comunicación (speech act), que se realiza mediante el envió de un mensaje desde el origen al destino. Ambos extremos de la comunicación deben entender el mensaje, y este debe ser algo mas que un intercambio de datos: debe tener asociado un contenido semantico accesible por ambas partes.

La solución adoptada por FIPA se basa en la utilización de mensajes ACL que tienen que ser comprendidos por cualquier agente del sistema. El uso de mensajes ACL permite el envió de información junto a su contenido semantico.

El lenguaje ACL (Agent Communication Language) desarrollado por FIPA es una evolución del lenguaje KQML (Knowledge Query Manipulation Language). La definición semántica formal de los mensajes ACL ha sido uno de los esfuerzos mayores dentro del estándar FIPA, y otorga a este lenguaje de una gran aceptación como estándar dentro del mundo de los agentes.

Desde este punto de vista, hay que entender un agente como una entidad que entiende el lenguaje ACL y es capaz de intercambiar conocimiento con otros agentes mediante el uso del mismo. Ya no se habla de que la interfaz de un agente (objeto) ofrezca una serie de servicios que se puedan invocar o instanciar, sino que un agente va a proporcionar ciertos servicios que se le pueden solicitar mediante un mensaje ACL que incluya dicha solicitud. Se pasa de un modelo de objetos a un modelo de agentes inteligentes basados en actos de comunicación.


Niveles de un mensaje ACL


  • Contenido: Contenido real del mensaje en el lenguaje de representación propio.
  • Mensaje: El nivel de mensaje conforma la esencia del mensaje. Determina el tipo de interacciones que se pueden tener con un agente que habla ACL. La función principal del nivel de mensaje es identificar el protocolo a ser utilizado para enviar el mensaje y proporciona al emisor una preformativa para que añada el contenido.
  • Comunicación: Relativo a los parámetros de comunicación a más bajo nivel: identidad del emisor y receptor, y un identificador único asociado con la comunicación.

La siguiente figura muestra los niveles de comunicación en un mensaje ACL:



Estructura de un mensaje ACL


Un mensaje ACL esta formado por:

  • Identificador del tipo de comunicación: Define el significado principal del mensaje. Es decir, lo que el agente origen pretende con dicho mensaje. Por ejemplo: ”inform”(un agente transmite información a otro), ”request”(un agente solicita a otro que realice una accion), ”agree”(un agente acepta la petición realizada), ”query”(un agente solicita información a otro).
  • Secuencia de parámetros del mensaje: Es un conjunto de parejas clave-valor que permiten asociar a cada acto de comunicación concreto toda la información necesaria.


Ejemplo de mensaje ACL:


(inform
:sender agente1
:receiver: agente2
:content
(velocidad agenteA 40)
:in-reply-to round-4
:reply-with bid04
:language sl
:ontology ontologia-agente
)

Este mensaje enviado del agente1 al agente2 informa que la velocidad del agente A es de 40, utiliza el lenguaje SL y la ontología ontologia-agente para describir esta información.

La siguiente figura muestra la estructura de los mensajes que se intercambian entre agentes:



Parámetros del mensaje


Los parámetros básicos del lenguaje ACL definidos por la especificación FIPA, son los siguientes: