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.
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.
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
)
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: