3.1 Sistemas Multiagentes
3.1.2 Estándar FIPA
FIPA es un organismo de definición de estándares que promueve la tecnología basada en agentes y la interoperatividad de estos estándares con otras tecnologías. Originalmente este organismo se formó para producir especificaciones de estándares de software para la comu- nicación e interacción entre los agentes y la implementación de sistemas en los que se puedan ejecutar Agentes. Existen dos estándares FIPA que han sido ampliamente adoptados. Estas son las especificaciones FIPA Agent Management Specification la cual se ha presentado en el primer capítulo de este documento, y FIPA Agent Communication Language (FIPA-ACL) Message Structure Specification, el cual se explica a continuación.
FIPA-ACL Message Structure Specification
FIPA especifica diferentes tipos de mensajes y protocolos de comunicación para unSMA. Un mensaje FIPA-ACL (Figura 3.2) contiene un conjunto de uno o más parámetros. El único parámetro que es obligatorio en todos los mensajes ACL es la performativa, aunque se espera que además se contengan también los parámetros de remitente, receptor y contenido. En la Tabla 3.1 se pueden ver todos los posibles parámetros de los mensajes junto a su significado.
La performativa de un mensaje FIPA-ACL representa la intención de realizar alguna acción (acto comunicativo), por lo que FIPA ofrece una tabla con el tipo de actos comunicativos que soporta (Tabla 3.2).
Protocolos de interacción FIPA
Las conversaciones entre agentes siguen en algunas ocasiones unos patrones determina-
Sistemas Multiagentes
Figura 3.2: Ejemplo de mensaje FIPA-ACL Parámetro Significado
:sender Identidad del agente que envía el mensaje :receiver Identidad del agente que recibe el mensaje,
pueden aparecer uno o varios nombres de agente.
:content Contenido del mensaje que el agente emisor quiere transmitir al receptor.
:reply-with
Introduce una expresión que será usada por el agente que responda para identificar este mensaje, puede ser usado para seguir
conversaciones entre agentes.
:in-reply-to Hace referencia que el mensaje es una respuesta a otro anterior :language Nombre del lenguaje en que está escrito el contenido del mensaje
(Español, Python, Inglés, ...).
:ontology Define el significado del vocabulario usado en el contenido de los mensajes.
:reply-by Indica el tiempo en que el mensaje ha de ser respondido.
:protocol Indica el protocolo que es usado por los mensajes.
:conversation-id Indica un identificador de conversación, es útil cuando un agente mantiene varias conversaciones con distintos agentes a la vez.
Tabla 3.1: Parámetros de mensajes ACL
dos, y que además se pueden repetir en diversas ocasiones. Aprovechando estos patrones, FIPA ha definido unos protocolos. Un protocolo es un patrón que se usa para llevar el orden de los mensajes en una conversación. Son conversaciones guiadas, en las que cada agente sa- be qué mensaje enviar y cuáles puede recibir. Para cada una de las conversaciones se pueden distinguir dos roles, el rol del que inicia la conversación (Initiator) y el rol del que la secunda (Responder). Al usar uno de estos protocolos, los mensajes enviados, tendrán en el campo
3.Antecedentes
Acto comunicativo Categoría accept-proposal Negociación
agree Realización de acciones
cancel Realización de acciones
cfp Negociación
failure Manejo de errores
inform Paso de informaciones
not-understood Manejo de errores
propose Negociación
query-if Solicitud de información refuse Realización de acciones reject-proposal Negociación
request Realización de acciones request-when Realización de acciones request-whenever Realización de acciones subscribe Solicitud de información Tabla 3.2: Categorización de actos comunicativos
:protocol el tipo de protocolo al que pertenece el mensaje, para que los agentes implicados sepan que se está siguiendo un protocolo. El conjunto de protocolos de interacción FIPA, se encuentra incluido en su Librería de Protocolos de Interacción (IPL) [7]. Dichos protocolos pueden ser entendidos y expresados por medio de la utilización de diagramasAUML. A con- tinuación se explican brevemente algunos de los protocolos de interacción que se encuentran incluidos en laIPL:
FIPA Request: Se usa cuando un agente le pide a otro agente que realice alguna acción. El receptor de este mensaje, puede aceptar o rechazar la petición, si éste la acepta, deberá realizar la acción e indicárselo al agente cuando finalice.
FIPA Request-when: Este protocolo es parecido al FIPA-Request, solamente que el agente receptor realizará la acción que se le ha pedido siempre que alguna precondición se haga verdadera.
FIPA Query: Este protocolo se utiliza cuando un agente quiere pedir algún tipo de información a otro. Tras la recepción de la petición el agente receptor, puede responder con la información, con un fallo, con un tipo de mensaje not-understood o con el rechazo de la petición. Siempre deberá incluir el motivo por el cual ha sido rechazada.
FIPA Contract Net: En este protocolo el agente iniciador quiere que uno o más agen- tes realicen alguna acción. Para ello este agente solicita ofertas a los otros agentes mediante mensajes cfp en los que contienen la acción a realizar y algunas precondi- ciones. Los agentes a los que se les ha enviado la petición de oferta envían de vuelta al agente iniciador sus ofertas, también indicando las condiciones de ésta. El agente
Sistemas Multiagentes iniciador estudia todas estas ofertas y elige las que mejor le convenga, rechazando el resto. En la Figura 3.3 podemos ver el esquema AUML del protocolo FIPA-Contract Net.
Figura 3.3: Protocolo de comunicación ContractNet