acl message diego

5
1 Área de la Energía, las Industrias y los Recursos Naturales No Renovables _____________________________________________________________________ CARRERA DE INGENIERÍA EN SISTEMAS MÓDULO: 10 mo ¨A¨ FECHA: 07 de Abril del 2015 ALUMNO: Diego Cale 1. TEMA ACL Message 2. DESCRIPCIÓN: La característica fundamental de los sistemas multiagente es que los agentes individuales se comunican e interactúan. Esto se logra mediante el intercambio de mensajes, para ello, es crucial que los agentes están de acuerdo sobre el formato y la semántica de estos mensajes. Jade sigue los estándares FIPA para que idealmente agentes Jade podrían interactuar con agentes escritos en otros idiomas y que se ejecutan en otras plataformas. Estructura de un mensaje JADE La estructura más utilizada es: Performativo - FIPA mensaje tipo (INFORM, QUERY, PROPOSE, ...) Direccionamiento o Receptor o Remitente (inicializado automáticamente) Contenido - Este es el contenido principal del mensaje ConversationID - Se utiliza para vincular mensajes en misma conversación Idioma - Especifica qué idioma se utiliza en el contenido Ontología - Especifica que la ontología se utiliza en el contenido Protocol - Indica el protocolo ReplyWith - Otro campo para ayudar a distinguir respuestas InReplyTo - remitente utiliza para ayudar a distinguir respuestas ReplyBy - Se utiliza para establecer un límite de tiempo para una respuesta UNIVERSIDAD NACIONAL DE LOJA PFM-CIS-UNL

Upload: veronica-paulina-chimbo-coronel

Post on 16-Jan-2016

11 views

Category:

Documents


0 download

DESCRIPTION

Acl Message

TRANSCRIPT

Page 1: Acl Message Diego

1

Área de la Energía, las Industrias y los Recursos Naturales No Renovables

_____________________________________________________________________

CARRERA DE INGENIERÍA EN SISTEMAS MÓDULO: 10 mo ¨A¨

FECHA: 07 de Abril del 2015

ALUMNO: Diego Cale

1. TEMA

ACL Message

2. DESCRIPCIÓN:

La característica fundamental de los sistemas multiagente es que los agentes individuales

se comunican e interactúan. Esto se logra mediante el intercambio de mensajes, para

ello, es crucial que los agentes están de acuerdo sobre el formato y la semántica de estos

mensajes.

Jade sigue los estándares FIPA para que idealmente agentes Jade podrían interactuar

con agentes escritos en otros idiomas y que se ejecutan en otras plataformas.

Estructura de un mensaje JADE

La estructura más utilizada es:

Performativo - FIPA mensaje tipo (INFORM, QUERY, PROPOSE, ...) Direccionamiento

o Receptor o Remitente (inicializado automáticamente)

Contenido - Este es el contenido principal del mensaje ConversationID - Se utiliza para vincular mensajes en misma conversación Idioma - Especifica qué idioma se utiliza en el contenido Ontología - Especifica que la ontología se utiliza en el contenido Protocol - Indica el protocolo ReplyWith - Otro campo para ayudar a distinguir respuestas InReplyTo - remitente utiliza para ayudar a distinguir respuestas ReplyBy - Se utiliza para establecer un límite de tiempo para una respuesta

UNIVERSIDAD NACIONAL

DE LOJA

PFM-CIS-UNL

Page 2: Acl Message Diego

2

Envío/recepción de mensajes

El intercambio de mensajes entre agentes en JADE se realiza mediante mensajes

FIPA-ACL

Mecanismo: paso asíncrono de mensajes

Cada agente tiene una cola de mensajes entrantes

La lectura efectiva de los mensajes es a voluntad del agente

Un agente puede:

o Leer el primer mensaje en la cola

o Leer el primer mensaje que satisfaga un requisito

La cola de mensajes es única para cada agente y, por lo tanto, es compartida por

todos los comportamientos

Cada vez que se coloca un mensaje en la cola el agente receptor es avisado

Un comportamiento puede ser bloqueado en espera de la recepción de un mensaje:

sincronización

Los mensajes intercambiados por agentes son instancias de la clase

jade.lang.acl.ACLMessage

Métodos de ACLMessage Métodos más importantes de la clase ACLMessage.

setPerformative(int): toma como parámetro una constante representativa de un tipo de acción performativa y la establece como performativa del mensaje. Los posibles actos comunicativos son los que hemos visto antes y las constantes que los representan se pueden ver en la API. Por ejemplo, para hacer que el mensaje msg sea de tipo agree bastará con escribir: msg.setPerformative(ACLMessage.AGREE);

getPerformative(): devuelve un entero equivalente a la constante que representa a la performativa del mensaje

createReply(): crea un mensaje de respuesta para el mensaje sobre el que es aplicado, poniendo los valores oportunos en campos como receiver, conversation-id, etc.

addReceiver(AID ): toma como parámetro un AID y lo añade a la lista de receptores

getAllReceiver(): devuelve un iterador sobre la lista de receptores.

setContent(String ): recibe como parámetro una cadena y la pone como contenido del mensaje

getContent(): devuelve una cadena con el contenido del mensaje

El resto de métodos get/set son similares, simplemente varía el tipo del valor introducido o devuelto. Por ejemplo, getSender() devolverá un AID mientras que getLanguage() devolverá una cadena. El Performative puede indicarse directamente pasando el valor al constructor de ACLMessage, lo cuál es recomendable porque todos los mensajes deben contener al menos el Performative.

Page 3: Acl Message Diego

3

Selección de mensajes Para seleccionar los mensajes que un agente desea recibir podemos utilizar la clase MessageTemplate. Esta clase permite definir filtros para cada atributo del mensaje ACLMessage y se utiliza como parámetro en los métodos receive y blockingReceive. En esta clase se definen un conjunto de métodos estáticos que nos devuelven como resultado un objeto de tipo MessageTemplate. Las diferentes opciones de filtrado son:

MatchPerformative( performative ) donde performativepuede ser:

ACLMessage.INFORM

ACLMessage.PROPOSE

ACLMessage.QUERY_REF

MatchSender( AID )

MatchConversationID( String ): Permite dedicar un comportamiento a gestionar una

conversación/negociación.

and( Template1, Template2 ): realiza un and lógico entre los dos filtros.

or ( Template1, Template2 ): realiza un or lógico entre los dos filtros.

not( Template ): invierte el filtro.

MatchOntology( String ): devuelve un filtro según el nombre de la ontologia que le

pasemos como parámetro.

MatchProtocol( String ): devuelve un filtro según el nombre del protocolo que le pasamos.

MatchLanguage( String ): devuelve un filtro según el lenguaje introducido.

MatchContent( String ): crea una plantilla según el contenido del mensaje.

MatchReplyWith( String ): devuelve un filtro según el campo replywith.

Además existe el método match(ACLMessage) que devuelve verdadero si el mensaje que le

pasamos como parámetro cumple el filtro definido en el objeto MessageTemplate.

Page 4: Acl Message Diego

4

3. EJEMPLO

Comunicación SMA

public class Template extends Agent { MessageTemplate mt1 = MessageTemplate.and( MessageTemplate.MatchPerformative(ACLMessage.INFORM), MessageTemplate.MatchSender(new AID("Agente", AID.ISLOCALNAME))); protected void setup() { ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.setContent("Ping"); for (int i = 1; i <= 2; i++) { msg.addReceiver(new AID("Agente" + i, AID.ISLOCALNAME)); } send(msg); // Set-up Behaviour 1 addBehaviour(new CyclicBehaviour(this) { public void action() { System.out.print("Behaviour ONE: "); ACLMessage msg = receive(mt1); if (msg != null) { System.out.println("gets " + msg.getPerformative() + " from " + msg.getSender().getLocalName() + "=" + msg.getContent()); } else { System.out.println("gets NULL"); } block(); } }); // Set-up Behaviour 2 addBehaviour(new CyclicBehaviour(this) { public void action() { System.out.print("Behaviour TWO: "); ACLMessage msg = receive(); if (msg != null) { System.out.println("gets " + msg.getPerformative() + " from " + msg.getSender().getLocalName() + "=" + msg.getContent()); } else { System.out.println("gets NULL"); } block(); } }); } }

Page 5: Acl Message Diego

5

4. BIBLIOGRAFÍA

Specifications, F. I. P. A. (2002). FIPA ACL Message Structure Specification.version G,

December.

Fip, A. (2002). FIPA ACL message structure specification (SC00061G). FIPA TC

communication.