Publireportaje
Para Programacin de Agentes INTELIGENTES:
Dpto. Ciencias de la Computacin e p p Inteligencia Artificial Programa de Master O c a y Doctorado ! og a a as e Oficial oc o ado
http://master.cs.us.es p
Qu es JADE?
Jade es bsicamente dos cosas:
Una l t f U plataforma: que permite VIVIR y CONVIVIR a it los agentes dentro de ella. Un conjunto de herramientas para el desarrollo de g agentes y sistemas de forma rpida.
Qu es JADE?
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 de herramientas grficas que soportan l C j t d h i t fi t la depuracin y ejecucin de agentes (RMA, sniffer, ...)
http://www.fipa.org
FIPA: Plataforma
Especificacin FIPA Agentes y servicios g Comunicacin
JADE
FIPA - Compliant p
Plataforma Arquitectura Agentes A t
Instalacin
Descargamos el fi h D l fichero (JADE ll 3 7 i ) de l (JADE-all-3.7.zip) d la versin correspondiente. Descomprimimos el fichero y nos salen cuatro nuevos ficheros: JADE-doc-3.7.zip: la documentacion javadoc, el j 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 del cual j estarn las libreras necesarias para la ejecucin de Jade j NECESITA, menos NECESITA al menos, JAVA 1 4 2 1.4.2
(Aunque usaremos la 1.6)
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: getArguments() g g g ()
Object[] que proporciona los argumentos que se le han pasado al agente.
Identificadores de agentes
Descripcin del agente: AID (Agent Identier)
Ejercicio 1. 1
Nuestro primer agente: Debemos de crear un agente cuya misin g y 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 lnea d comandos: D d l de d
java <classpath> [opciones] jade.Boot [agente:ClaseAgente] jade Boot
classpath: direccion y nombre de los *.jar de Jade opciones: en principio, usaremos la opcion -gui jade.Boot: es la clase de arranque de la plataforma agente:ClaseAgente: Nombre y clases(incluyendo paquetes) de nuestro agente
Ejecucin
Desde Eclipse:
Creamos una configuracin de ejecucin. Configuramos los siguiente parmetros
(Ver pag siguiente)
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 downloadedinOpenSource,underLGPLrestrictions, d 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 downloadedinOpenSource,underLGPLrestrictions, d 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:
Una cola circular de los comportamientos activos Una cola con los comportamiento bloqueados.
Comportamientos
La clase principal es: jade.core.behaviours.Behaviour Tiene 2 mtodos principales:
action(): que es el mtodo que se ejecuta cada vez que se i invoca el mtodo l t d done(): hace la comprobacin de si el comportamiento ha terminado o no.
Aqu se puede sobreescribir el constructor (aunque no es aconsejable)
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(){ System.out.println("HolaMundo.Ejercicio3"); System out println("HolaMundo Ejercicio3"); } publicbooleandone(){ returntrue; } } protectedvoidsetup(){ B_Ej03ej3=newB_Ej03(); addBehaviour(ej3); }
Comportamiento
Ejercicio 4: Implementar un comportamiento que cuente desde 1 hasta 10
publicclassB_Ej04extendsBehaviour{ intcontador=1; publicvoidaction(){ System.out.println(contador); contador++; } publicbooleandone(){ //CONDICIONDEFINALDECOMPORTAMIENTO returncontador>10; } }
Comportamiento
Variable: myAgent Ciertas acciones las realiza el agente Reutilizacin de los comportamientos
Tipos de comportamientos
Comportamientos estndar: C t i t t d
Behaviour: Comportamiento genrico. OneShotBehaviour: done() siempre devuelve true. CyclicBehaviour: d C li B h i done() siempre d () i 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 que lea un sensor constantemente
publicclassB_Ej05extendsCyclicBehaviour{ privateintestado=0; publicvoidaction(){ intmedida=Sensores.getBumper(); switch(estado){ case0: //Nohatocado case1: //Hatocado } } }
Tipos de comportamientos
Los comportamientos adems se pueden p p componer y formar comportamientos ms complejos. j Una implementacin interesante sera el comportamiento BDI dentro de Jade.
Comportamientos Compuestos
FSMBehaviour es un comportamiento p compuesto.
De manera secuencial, y definiendo transiciones entre estados, se implementa la accin que debe realizar el comportamiento.
Comportamientos Compuestos
Para la devolucin del estado se sobreescribe el mtodo onEnd(), que devuelve el entero que nos decidir la transicin de estado. Tambin existen otros como: SequentialBehaviour, ParallelBehaviour, SequentialBehaviour ParallelBehaviour
Ejemplo FSM
Constantes
publicclassB_Ej06extendsFSMBehaviour{ //estadosFSM // t d FSM 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 Entre Mquinas misma red: RMI E t M i i d 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: ReplyWith, ConversationId, etc
Comunicacin
Creacin de un mensaje
ACLMessagemensaje=new ACLMessage(ACLMessage.REQUEST); AIDagente=newAID( agente2 AID ISLOCALNAME); AIDagente=newAID("agente2",AID.ISLOCALNAME); mensaje.addReceiver(agente); mensaje.setContent("QuieroJugar"); j ( Q g ); myAgent.send(mensaje);
Comunicacin
Todas las acciones de un agente, deben de estar implementadas como comportamientos. i l t d t i t La L comunicacin es una accin. i i i Estos comportamientos podrin ser O Sh * E i d i OneShot*. Los comportamientos cclicos se usan para la recepcin contnua de mensajes.
Parmetros de ejecucin
Si creamos l plataforma y ejecutamos varios la l t f j t i agentes:
(sin parmetros especiales)
Comunicacin
Ejercicio 7: Crear un comportamiento de un disparo que enve un mensaje a la plataforma del servidor.
Intencin: Inform Nombre del agente servidor: servidor Ip de la p 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 d mensajes. R i de j Quien recibe el mensaje es el agente
myAgent.receive();
Comunicacin
Ejercicio 8: Crear un comportamiento cclico que reciba mensajes y los muestre por pantalla.
publicvoidaction(){ ACLMessageenvio=myAgent.receive(); if(envio!=null){ System.out.println(envio.getSender().getLocalName() +":"+envio.getContent()); }else block(); }
Comunicacin
Existen plantillas de mensajes (MessageTemplate) Se usan para filtrar la recepcin de mensajes Las plantillas se pueden componer.
ACLMessagea=myAgent.receive( MessageTemplate.and( MessageTemplate.MatchPerformative(ACLMessage.PROPOSE), l h f i ( ) MessageTemplate.MatchConversationId("12221") ));
Protocolos
Protocolos
FIPA establece unos protocolos estndares. t bl t l t d Estn basados en el uso de directivas (performativas). Algunos implementados en JADE
FIPA Request Interaction Protocol Specification FIPA Query Interaction Protocol Specification FIPA Request When Interaction Protocol Specification FIPA Contract Net I t C t t N t Interaction Protocol Specification ti P t lS ifi ti ...
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 FIPA-REQUEST para conexin a una plataforma.
Nombre del servidor: entorno Equipos: 7 Azul, 8 Rojo Clave: a Clase a sobreescribir:
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; ACLMessage msg = new ACLMessage(ACLMessage.REQUEST); msg.addReceiver(new AID("entorno",AID.ISLOCALNAME)); msg.setContent(Equipo + Cl tC t t(E i Clave); ) msg.setProtocol(InteractionProtocol.FIPA_REQUEST); this.addBehaviour(new B_Protocolo(this,msg)); this addBeha io r(ne B Protocolo(this msg))
Servicios
Servicios
2 servicios fundamentales:
AMS DF Pginas Blancas Pginas Amarillas
De-Registro De Registro
El borrado de las Pginas Blancas ES AUTOMTICO El borrado de las Pginas Amarillas ES MANUAL
Debemos de hacerlo cuando el agente muere muere, dentro del mtodo takeDown()
Tetris: Introduccin.
Sistema Multi-agente (2) que van a interactuar por medio de mensajes ACL para implementar el juego del Tetris Jade nos ofrece la facilidad de implementacin rpida de p e e ac p da comportamientos y la exportabilidad, casi inmediata, a un funcionamiento en red.
Agente Partida
Agente Jugador g g
Mus
C l b Colaboracin entre agentes por un objetivo i t t bj ti comn: ganar
JGomas
JGOMAS: Game Oriented Multi Agent System
basado en Jade
Y ms
CAPTURAR LA BANDERA
CAPTURAR LA BANDERA
Objetivo del j g j juego:
Capturar la bandera del equipo contrario y llevarla a su base. Evitar que los contrarios capturen su bandera.
CAPTURAR LA BANDERA
Descripcin:
Tablero de dimensin: n x m Las celdas pueden
Estar libres: Pared: H
CAPTURAR LA BANDERA
Descripcin
Cdigo de equipos
Rojo: 8 Azul: 7
Servicio de la partida
Nombre del servicio: "SERVER" Tipo del servicio: "SERVIDOR_PARTIDA
Protocolo de conexin:
FIPA-REQUEST j jade.proto.SimpleAchieveREInitiator p p
CAPTURAR LA BANDERA
Flujo:
INICIO
BUSQUEDA
NEGOCIAC
JUEGO
CAPTURAR LA BANDERA
INICIO
Inicializacin de la representacin de datos ( ) internos (Cerebro). Lanzamiento del comportamiento de bsqueda
CAPTURAR LA BANDERA
Bsqueda
Bsqueda del servicio dentro del DF Obtencin del nombre del servidor y almacenarlo. almacenarlo
CAPTURAR LA BANDERA
Negociacin N i i
Implementacin del FIPA-REQUEST Cuando se acepta,
En el inform se manda un mensaje con la informacin del tablero [ANCHO_MAPA],[ALTO_MAPA], [ANCHO MAPA] [ALTO MAPA] [ANCHO_VENTANA],[ALTO_VENTANA], [POS_X],[POS_Y], [MAPA] No enva la posicin de los jugadores contrarios
CAPTURAR LA BANDERA
Juego
El servidor enva cada x ms(1 ciclo) un j jugador. mensaje con la ventana de visin del j g Slo acepta 1 accin por ciclo ciclo.
Si se envan varias, elige una al azar.
CAPTURAR LA BANDERA
Movimientos posibles(Acciones):
Derecha: "1" Izquierda: "2" Arriba: "3" Abajo: "4 TableroCompleto: "10" -> Envia un string con 10 el mismo formato del tablero parcial, pero con todo lo que contiene el mapa, jugadores del mismo equipo y rivales, banderas...
Penaliza con varios ciclos
CAPTURAR LA BANDERA
Otras percepciones
"6" -> el jugador ha sido expulsado de la plataforma Game Over: "9" -> Cuando el jugador gana la 9 partida, se envia este mensaje
CAPTURAR LA BANDERA
Ejercicio final:
Crear un jugador que, mediante un p q comportamiento basado en una mquina de estados finitos, vaya a por la bandera contraria y vuelva.
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!!!
96