Beruflich Dokumente
Kultur Dokumente
Una plataforma:
U
l t f
que permite
it VIVIR y CONVIVIR a
los agentes dentro de ella.
Un conjunto de herramientas para el desarrollo de
g
y sistemas de forma rpida.
agentes
Qu es JADE?
Totalmente realizado en Java
Java. (Portabilidad y
Movilidad)
bajo LPGL
http://jade.tilab.com/
Estndares
Foundation for Intelligent Physical Agents (FIPA)
Arquitectura: Integracin de diferentes aplicaciones,
incluso con plataformas de diferentes propietarios.
Lenguaje de comunicacin empleado FIPA-ACL.
Servicios de agentes: ciclo de vida, pginas blancas,
pginas amarillas, transporte de mensajes,...
Conjunto
C j t d
de herramientas
h
i t grficas
fi
que soportan
t la
l
depuracin y ejecucin de agentes (RMA, sniffer, ...)
http://www.fipa.org
Internet
FIPA: Plataforma
Especificacin FIPA
Agentes
g
y servicios
Comunicacin
DF . Directory Facilitator:
JADE
FIPA - Compliant
p
Plataforma
Arquitectura
A
Agentes
t
Instalacin
Descargamos
D
ell fifichero
h
(JADE
(JADE-all-3.7.zip)
ll 3 7 i ) de
d la
l
versin correspondiente.
Descomprimimos el fichero y nos salen cuatro
nuevos ficheros:
JADE-doc-3.7.zip: la documentacion jjavadoc, el
manual del administrador, el del programador y un
tutorial.
JADE-src-3.7.zip:
JADE src 3 7 zip: el codigo fuente sin compilar
compilar.
JADE-bin-3.7.zip: el codigo ya compilado y listo
para ser invocado.
JADE-examples-3.7.zip: ejemplos de uso de la
plataforma.
Instalacin
Se crear un directorio lib/ debajo
j del cual
La clase Agent
Implementar agentes(heredar de): jade.core.Agent
jade core Agent
NUNCA SOBREESCRIBIR EL CONSTRUCTOR
Inicializacin: setup().
Morir: doDelete().
Sobreescribir: takeDown().
takeDown()
Argumentos:
g
getArguments()
g
g
()
Object[] que proporciona los argumentos que se le han
pasado al agente.
Identificadores de agentes
Descripcin del agente: AID (Agent Identier)
<nickname>@<nombre-plataforma>:<puerto>/JADE
Ejercicio 1.
1
Nuestro primer agente:
Debemos de crear un agente
g
cuya
y misin
sea imprimir un Hola Mundo
package ej01;
import jade.core.Agent;
public class Ejercicio01 extends Agent {
protected void setup() {
System.out.println(Hola Mundo.);
}
}
Ejecucin
Desde
D d llnea d
de comandos:
d
java <classpath> [opciones] jade.Boot
jade Boot [agente:ClaseAgente]
Ejecucin
Desde Eclipse:
Ejecucin
Ejecucin
Ejecucin
Ejecucin
Resultado
25may20061:46:38jade.core.RuntimebeginContainer
25
may 20061:46:38jade core RuntimebeginContainer
INFO:
ThisisJADE3.3 2005/03/0216:11:05
d
downloadedinOpenSource,underLGPLrestrictions,
l d di O
S
d LGPL
t i ti
athttp://jade.cselt.it/
*******************MASINFORMACION
INFO:
AgentcontainerMainContainer@JADEIMTP://GONWS1isready.
HolaMundo.
Resultado
25may20061:46:38jade.core.RuntimebeginContainer
25
may 20061:46:38jade core RuntimebeginContainer
INFO:
ThisisJADE3.3 2005/03/0216:11:05
d
downloadedinOpenSource,underLGPLrestrictions,
l d di O
S
d LGPL
t i ti
athttp://jade.cselt.it/
SIGUE VIVO!!!
*******************MASINFORMACION
INFO:
AgentcontainerMainContainer@JADEIMTP://GONWS1isready.
SIEMPRE CERRAR
HACIENDO SHUTDOWN
HolaMundo.
DESDE EL MENU DE LA
PLATAFORMA... SI NO, SE
QUEDA ABIERTA!
Comportamientos
Comportamientos
Acciones y Percepciones:
p
Comportamientos.
Comportamientos
El funcionamiento de los comportamientos est
implementado a 2 niveles:
agente un mensaje.
Comportamientos
La clase principal es:
jade.core.behaviours.Behaviour
Tiene 2 mtodos principales:
Comportamientos
Ejercicio 2: Crear un agente que implemente un
comportamiento que salude al mundo.
packageej02;
importjade.core.Agent;
importjade core behaviours Behaviour;
importjade.core.behaviours.Behaviour;
publicclassEjercicio02extendsAgent{
protectedvoidsetup(){
this.addBehaviour(newBehaviour(){
pub c o d act o () {
publicvoidaction(){
System.out.println("HolaMundo.Ejercicio2");
}
publicbooleandone(){returntrue;}
bli b l
d
(){ t
t
}
}); }}
Comportamientos
Ejercicio 3: Repetir el agente anterior, con
comportamiento en clase separada.
publicclassB_Ej03extendsBehaviour{
publicvoidaction(){
}
publicbooleandone(){
returntrue;
}
}
protectedvoidsetup(){
B_Ej03ej3=newB_Ej03();
addBehaviour(ej3);
}
Comportamiento
Ejercicio 4: Implementar un comportamiento
Comportamiento
Variable: myAgent
Ciertas acciones las realiza el agente
Reutilizacin de los
comportamientos
Tipos de comportamientos
C
Comportamientos
t i t estndar:
t d
Behaviour: Comportamiento genrico.
OneShotBehaviour: done() siempre devuelve
true.
CyclicBehaviour:
C li B h i
d
done()
() siempre
i
d
devuelve
l
false.
TickerBehaviour: se ejecuta peridicamente
(dado en el constructor).
FSMBehaviour: mquina finita de
estados(Finite State Machine).
..............
Ejemplo
Ejercicio 5: Crear un comportamiento cclico
Tipos de comportamientos
Los comportamientos
p
adems se p
pueden
Comportamientos Compuestos
FSMBehaviour es un comportamiento
p
compuesto.
Comportamientos Compuestos
Para la devolucin del estado se
SequentialBehaviour, ParallelBehaviour,
SequentialBehaviour
ParallelBehaviour
Ejemplo FSM
Constantes
publicclassB_Ej06extendsFSMBehaviour{
// t d FSM
//estadosFSM
privatestaticfinalStringESTADO_0="cero";
privatestaticfinalStringESTADO_1="uno";
privatestaticfinalStringESTADO_2="dos";
privatestaticfinalStringESTADO_3="tres";
privatestaticfinalStringESTADO ERR="error";
privatestaticfinalStringESTADO_ERR=
error ;
//Valoresdevueltos
privatefinalintCERO=0;
privatefinalintCINCO=5;
privatefinalintDIEZ=10;
privatefinalintQUINCE=15;
Ejemplo FSM
Constructor
publicB_Ej06(Agenta){
super(a);
( )
//Registrarlosestados
registerFirstState(newZeroBehaviour(myAgent),ESTADO_0);
registerState(newFiveBehaviour(myAgent),ESTADO_1);
registerState(newTenBehaviour(myAgent),ESTADO_2);
registerLastState(newTwentyFiveBehaviour(myAgent),ESTADO 3);
registerLastState(newTwentyFiveBehaviour(myAgent),ESTADO_3);
//transiciones
registerTransition(ESTADO_0,ESTADO_0,CERO);
registerTransition(ESTADO_0,ESTADO_1,CINCO);
(
)
registerDefaultTransition(ESTADO_0,ESTADO_ERR);
scheduleFirst();
}
Ejemplo FSM
Comportamientos internos
classZeroBehaviourextendsOneShotBehaviour{
inttransition=CERO;
publicvoidaction(){
//Cosasquehacer
}
//Seejecutaalfinalyeselencargadodedevolverelvalor.
publicintonEnd() {
returntransition;
}
}
Comunicacin
Comunicacin
Comunicacin TRANSPARENTE
3 niveles
Mquina: Eventos
E t M
Entre
Mquinas
i
misma
i
red:
d RMI
Distinta red: CORBA
Comunicacin
La capacidad de comunicacin = envo de
mensajes ACL.
En 1 mensaje podemos distinguir 4 partes
principales:
Receptor y Emisor
Contenido
Directiva
Lenguaje y Ontologas
Comunicacin
El mensaje es un objeto de la clase
jade.lang.acl.ACLMessage
Intencin del mensaje: PERFORMATIVA
Adems, posee otros parmetros:
Comunicacin
Creacin de un mensaje
ACLMessagemensaje=new
ACLMessage(ACLMessage.REQUEST);
AIDagente=newAID("agente2"
AIDagente=newAID(
agente2 ,AID.ISLOCALNAME);
AID ISLOCALNAME);
mensaje.addReceiver(agente);
mensaje.setContent("QuieroJugar");
j
( Q
g
);
myAgent.send(mensaje);
Comunicacin
Todas las acciones de un agente, deben de estar
i l
implementadas
t d como comportamientos.
t i t
La
L comunicacin
i
i es una accin.
i
Estos
E
comportamientos
i
podrin
d i ser O
OneShot*.
Sh *
Los comportamientos cclicos se usan para la
Parmetros de ejecucin
Si creamos lla plataforma
l t f
y ejecutamos
j
t
varios
i
agentes:
Unir un agente
g
a una p
plataforma creada ((en la misma
mquina=desde 2 aplic)
Parmetro: -container
mquina
Comunicacin
Ejercicio 7: Crear un comportamiento de un
Intencin: Inform
Nombre del agente servidor: servidor
Ip
p de la p
plataforma:
Comunicacin
AIDDestino;StringMensaje;intIntencion;
publicB_Ej07(String_destino,String_mensaje,int
_intencion){
) {
super();
Destino=newAID(_destino,AID.ISLOCALNAME);
Mensaje=_mensaje;
Intencion=_intencion;
}
publicvoidaction(){
ACLMessagemensaje=newACLMessage(Intencion);
mensaje.addReceiver(Destino);
mensaje.setContent(Mensaje);
myAgent send(mensaje);
myAgent.send(mensaje);
}
Comunicacin
Recepcin
R
i d
de mensajes.
j
Quien recibe el mensaje es el agente
myAgent.receive();
Si no recibe mensaje,
j , el comportamiento
p
se
debe de bloquear
block();
()
receive()
() .vs. blockingReceive()
g
()
Comunicacin
Ejercicio 8: Crear un comportamiento cclico
Comunicacin
Existen plantillas de mensajes
(MessageTemplate)
Ping Pong
Ping-Pong
Ejercicio extra:
Crear dos agentes,
g
donde uno enve un Ping
g
a otro y este le conteste con el Pong
correspondiente.
A1 enva un mensaje a A2
A2 lo escribe y RESPONDE
A1 lo escribe y se auto-finaliza
Protocolos
Protocolos
FIPA establece
t bl
unos protocolos
t
l estndares.
t d
Estn basados en el uso de directivas
(performativas).
Protocolos
JADE da libertad de lenguaje.
JADE trae soporte para lenguaje SL y
LEAP(binario)
FIPA recomienda el lenguaje SL
Tambin se puede hacer uso de ontologas
Protocolos
Ejercicio 8: Implementacin del protocolo
SimpleAchieveREInitiator
Protocolos
FIPA-REQUEST
Segn FIPA
Protocolos
Implementacion del protocolo
public B_Protocolo(Agent a, ACLMessage msg) {
super(a, msg); }
public void
public void
public void
public void
public void
handleAgree(ACLMessage msg) { }
handleRefuse(ACLMessage msg) { }
handleInform(ACLMessage msg) { }
handleNotUnderstood(ACLMessage msg) { }
handleOutOfSequence(ACLMessage msg) { }
Protocolos
Inicializacin
Creacin de un mensaje y
Activacin del comportamiento.
import jade.domain.FIPANames.InteractionProtocol;
Servicios
Servicios
2 servicios fundamentales:
DF Pginas Amarillas
plataforma.
Se puede realizar a mano si se desea,
Si extendemos de la clase Agent, esta lo
tiene implementado.
De Registro
De-Registro
El borrado de las Pginas Blancas ES
AUTOMTICO
El borrado de las Pginas Amarillas ES
MANUAL
Tetris: Introduccin.
Agente Partida
implementacin
p e e ac rpida
p da de
comportamientos y la
exportabilidad, casi inmediata,
a un funcionamiento en red.
Agente
g
Jugador
g
Mus
C
Colaboracin
l b
i entre
t agentes
t por un objetivo
bj ti
comn: ganar
Mini WarCraft
Mini-WarCraft
IImplementacin
l
t i del
d l entorno
t
como un agente,
t
que es el que se encarga de la fsica del
sistema.
sistema
JGomas
JGOMAS: Game Oriented Multi Agent
System
basado en Jade
Grandes Retos
Retos
Y ms
Robocup (Soccer)
Simulation
CAPTURAR LA BANDERA
CAPTURAR LA BANDERA
Objetivo
j
del jjuego:
g
CAPTURAR LA BANDERA
Descripcin:
Tablero de dimensin: n x m
Las celdas pueden
Por equipos
q p ((Rojo/Azul)
j
)
Estar libres:
Pared: H
Bandera: A / B
Base*: C / D
Jugadores: 1 / 2
Jug
g con Bandera: 3 / 4
CAPTURAR LA BANDERA
Descripcin
Cdigo de equipos
Servicio de la partida
Rojo: 8
Azul: 7
Protocolo de conexin:
FIPA-REQUEST
jjade.proto.SimpleAchieveREInitiator
p
p
CAPTURAR LA BANDERA
Flujo:
INICIO
BUSQUEDA
NEGOCIAC
JUEGO
CAPTURAR LA BANDERA
INICIO
CAPTURAR LA BANDERA
Bsqueda
CAPTURAR LA BANDERA
Negociacin
N
i i
CAPTURAR LA BANDERA
Juego
CAPTURAR LA BANDERA
Movimientos posibles(Acciones):
Derecha: "1"
Izquierda: "2"
Arriba: "3"
Abajo: "4
TableroCompleto: "10"
10 -> Envia un string con
el mismo formato del tablero parcial, pero con
todo lo que contiene el mapa, jugadores del
mismo equipo y rivales, banderas...
CAPTURAR LA BANDERA
Otras percepciones
CAPTURAR LA BANDERA
Ejercicio final:
Enlaces interesantes
http://programacionjade.wikispaces.com/
http://dukechile.blogspot.com/search/label/JADE
http://www.exa.unicen.edu.ar/catedras/tmultiag/apunt
es.html
http://jade.tilab.com
. GOOGLE!!!