Anda di halaman 1dari 5

UNIVERSIDAD NACIONAL

DE LOJA

PFM-CIS-UNL

rea de la Energa, las Industrias y los Recursos Naturales No Renovables


_____________________________________________________________________
CARRERA DE INGENIERA EN SISTEMAS
MDULO: 10 mo A
FECHA: 07 de Abril del 2015
ALUMNO: Diego Cale

1. TEMA

ACL Message
2. DESCRIPCIN:

La caracterstica fundamental de los sistemas multiagente es que los agentes individuales


se comunican e interactan. Esto se logra mediante el intercambio de mensajes, para
ello, es crucial que los agentes estn de acuerdo sobre el formato y la semntica de estos
mensajes.

Jade sigue los estndares FIPA para que idealmente agentes Jade podran interactuar
con agentes escritos en otros idiomas y que se ejecutan en otras plataformas.

Estructura de un mensaje JADE


La estructura ms utilizada es:

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


Direccionamiento
o Receptor
o Remitente (inicializado automticamente)
Contenido - Este es el contenido principal del mensaje
ConversationID - Se utiliza para vincular mensajes en misma conversacin
Idioma - Especifica qu idioma se utiliza en el contenido
Ontologa - Especifica que la ontologa 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 lmite de tiempo para una respuesta

Envo/recepcin de mensajes

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


FIPA-ACL
Mecanismo: paso asncrono 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 recepcin de un mensaje:
sincronizacin
Los mensajes intercambiados por agentes son instancias de la clase
jade.lang.acl.ACLMessage

Mtodos de ACLMessage
Mtodos ms importantes de la clase ACLMessage.

setPerformative(int): toma como parmetro una constante representativa de un tipo de


accin 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 parmetro un AID y lo aade a la lista de receptores
getAllReceiver(): devuelve un iterador sobre la lista de receptores.
setContent(String ): recibe como parmetro una cadena y la pone como contenido del
mensaje
getContent(): devuelve una cadena con el contenido del mensaje

El resto de mtodos get/set son similares, simplemente vara 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 cul es recomendable porque todos los mensajes deben contener al
menos el Performative.

Seleccin 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
parmetro en los mtodos receive y blockingReceive.

En esta clase se definen un conjunto de mtodos estticos 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
conversacin/negociacin.
and( Template1, Template2 ): realiza un and lgico entre los dos filtros.
or ( Template1, Template2 ): realiza un or lgico entre los dos filtros.
not( Template ): invierte el filtro.
MatchOntology( String ): devuelve un filtro segn el nombre de la ontologia que le
pasemos como parmetro.
MatchProtocol( String ): devuelve un filtro segn el nombre del protocolo que le pasamos.
MatchLanguage( String ): devuelve un filtro segn el lenguaje introducido.
MatchContent( String ): crea una plantilla segn el contenido del mensaje.
MatchReplyWith( String ): devuelve un filtro segn el campo replywith.

Adems existe el mtodo match(ACLMessage) que devuelve verdadero si el mensaje que le


pasamos como parmetro cumple el filtro definido en el objeto MessageTemplate.

3. EJEMPLO

Comunicacin 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();
}
});
}
}

4. BIBLIOGRAFA

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.

Anda mungkin juga menyukai