Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Agenda
Java Agent DEvelopment Framework Plataforma multiagente Agentes en JADE Comportamientos Agentes con interfaz grfica
2
Introduccin
Framework para el desarrollo de sistemas multi-agente en conformidad con las especificaciones de FIPA. JADE provee:
Plataforma multiagente conforme a FIPA. Paquete para el desarrollo JAVA de agentes. Set de herramientas grficas para administrar y monitorear la ejecucin de los agentes.
3
Caractersticas
Plataforma distribuida. Interfaces graficas para administracin remota de agentes. Herramientas de debugging. Movilidad de agentes inter-plataforma. Soporta la ejecucin en paralelo de mltiples agentes. Transporte de mensajes ACL dentro de la plataforma. FIPA-complaint Agent Platform (incluye AMS, DF y ACC). Librera de protocolos de interaccin FIPA. Servicio de nombres (GUID: Globally Unique Identifier). Interface para que aplicaciones externas inicien agentes autnomos.
4
Plataforma multiagente
Agent Platform
Agent Agent Management System Directory Facilitator
Main container
A4 Is registered with Is registered with A2 A3
Container 2
Platform 1
Container 1
Network
A5 AMS DF
Main container
Platform 2 7
Agenda
Plataforma multiagente
Agentes en JADE Comportamientos Agentes con interfaz grfica
8
La clase Agent
Incluida en el paquete jade.core Define las caractersticas bsicas para que el agente interacte con la plataforma registro configuracin administracin remota y los mtodos para implementar el comportamiento del agente envo y recepcin de mensajes uso de protocolos de interaccin estndar Modelo computacional multitarea. Identificacin
AID: local-name@platform-name
Wait
Resume
Suspended
Wake up
Active
Unknow
Move
Create
Execute
Transit Initiated
10
11
Ejecutando el agente
Desde Eclipse
Run
Java Application
12
13
doDelete() Invoca a
takeDown()
14
Pasaje de argumentos
15
16
Implementar una agente que active otra instancia de l cuando sea eliminado
17
Agenda
Plataforma multiagente
Agentes en JADE Comportamientos Agentes con interfaz grfica
18
Un comportamiento es una tarea que el agente puede ejecutar. Son implementados como objetos de las clases que extienden
action() define la accin a ser ejecutada cuando se ejecute el comportamiento done() determina si el comportamiento ha sido completado.
20
Todos los comportamientos del agente son manejados por el mismo thread
Permite tener un nico thread por agente. Provee mejor performance ya que el switch de comportamiento es mas rpido que el switch de thread en Java. Elimina los problemas de sincronizacin entre comportamientos concurrentes que acceden al mismo recurso. Facilita la persistencia y la movilidad.
21
10
b.action()
NO
b.done() ?
SI Remover el comportamiento actual del pool de comportamientos activos
takeDown()
Operaciones de limpieza
22
Comportamientos
public class MiBehaviour extends Behaviour { public void action() { System.out.println("El agente + myAgent.getAID().getName()+" est activo."); } public boolean done() { return true; } }
11
ThreadedBehaviourFactory.getThread(b) interrupt()
Cuando el agente muere, se mueve o suspende, estos comportamientos deben ser explcitamente finalizados. Atencin con los problemas de sincronizacin.
25
12
Tipos de comportamiento
OneShotBehaviour CyclicBehaviour
Cclico
Genricos
26
Comportamiento "One-shot"
13
Comportamiento cclico
Se mantiene activo tanto tiempo como est activo el agente. La clase CyclicBehaviour ya implementa el mtodo done()
public class MyCyclicBehaviour extends CyclicBehaviour { public void action() { // Ejecuta la operacin Y } }
28
Comportamientos genricos
Mantienen un estado del agente y en base a l ejecutan diferentes operaciones. Finalizan cuando cierta condicin es cumplida.
29
14
Comportamientos genricos
public class MyThreeStepBehaviour extends Behaviour { private int step = 0; public void action() { switch (step) { case 0: // perform operation X step++; break; case 1: // perform operation Y step++; break; case 2: // perform operation Z step++; break; } } public boolean done() { return step == 3; } }
30
WakerBehaviour action() y done() ya implementados Ejecuta handleElapsedTimeout() luego de alcanzado un timeout especificado en el constructor.
public class MyAgent extends Agent { protected void setup() { System.out.println(Adding waker behaviour); addBehaviour(new WakerBehaviour(this, 10000) { protected void handleElapsedTimeout() { System.out.println(X); } } ); } }
31
15
TickerBehaviour
32
Comportamientos compuestos
CompositeBehaviour
Modela comportamientos que estn compuestos por otros comportamientos (hijos). La poltica de seleccin de hijos est implementada en las subclases:
33
16
SequencialBehaviour
Ejecuta los hijos en forma secuencial. Finaliza cuando el ltimo hijo finaliza Agregar hijos
addSubBehaviour(Behaviour b)
ParallelBehaviour
35
17
FSMBehaviour
registerFirstState(Behaviour b, String n)
Registra un nico comportamiento como estado inicial. registerLastState(Behaviour b, String n) Registra uno o ms comportamientos como estados finales. registerState(Behaviour b, String n)
FSMBehaviour
Registra una transicin entre el estado s1 y s2. Event es el evento retornado por el mtodo onEnd() del comportamiento s1. registerDefaultTransition(String s1, String s2)
Registra una transicin entre el estado s1 y s2. La transicin es ejecutada cuando s1 termina con un evento que no est explicitado para ninguna otra transicin.
18
Behaviour - DataStore
Agenda
Java Agent DEvelopment Framework Plataforma multiagente Agentes en JADE Comportamientos Agentes con interfaz grfica
39
19
jade.gui.GuiEvent
Mtodo onGuiEvent(GuiEvent) Toma un evento y lo procesa. Mtodo postGuiEvent(GuiEvent) Enva el evento al GuiAgent
40
Agente
public class MiAgenteGui extends GuiAgent { private GuiAgentFrame gui; public void setup() { gui = new GuiAgentFrame(this); gui.setVisible(true); } protected void onGuiEvent(GuiEvent ev) { // procesa los eventos } }
Interfaz grfica public class GuiAgentFrame extends JFrame { private MiAgenteGui myAgent;
// Listener de la interfaz
public void actionPerformed(ActionEvent evt){ GuiEvent ev = new GuiEvent(this,0); ev.addParameter(//datos del evento); myAgent.postGuiEvent(ev); }
41
20
OnGuiEvent()
Behaviour.action()
Encapsular el acceso a la interfaz con un objeto Runnable Utilizar SwingUtilities.invoke Later() para enviar el runnable al thread Event Dispatcher.
// Mtodo en la interfaz public void contestar(final String s){ Runnable addIt = new Runnable() { public void run() { // cambio en la interfaz } }; SwingUtilities.invokeLater(addIt); }
21