SlideShare una empresa de Scribd logo
AGENTES INTELIGENTES
CON JAVA NETBEANS.
JADE.
Octavio C. Abundez Ramírez
email: gamabun4@gmail.com
Facebook: Octavio Abundez
• Taller: Agentes Inteligentes
• México, D.F., 29-30 de Octubre de 2015
MAIN CONTAINER
•AMS (Sistema de
Gestión de Agente)
-Proporciona El servicio
de nombres y representa
la autoridad en la
plataforma.
• DF (Directorio Facilitador)
-Proporciona Un servicio de páginas amarillas por
medio de los cuales un agente puede encontrar otros
agentes que prestan los servicios que requiere para
lograr sus metas.
• RMA (Remote Management Agent)
-Actuando como consola gráfica para la gestión de la
plataforma y el control.
Remote Monitoring Agent
• Proporcionar a
la interfaz gráfica
de usuario para
controlar el ciclo
de vida de los
agentes
• Canal de comunicación del agente (ACC)
- Agente a Agente
- Plataforma agente a Plataforma Agente
Message Transport System
•Agent identifier
–
<nickname>@<platform_name>
Objetos vs Agentes
Un objeto es reactiva
Un objeto es una entidad pasiva
(o reactiva). Si nadie solicita el valor
de un atributo o activa un método de
el objeto, entonces no Pasa nada.
Un agente es ProActif
Un agente tiene, además de los
Atributos y métodos, procesos
Internos función, incluso en
ausencia de tensiones externas. Un
agente puede actuar, por tanto,
incluso si nadie le pregunta nada
Dummy Agent
Herramienta útil para la depuración
• Permite la interacción con otros agentes de
envío, recepción y visualización de mensajes
de ACL
• ¿Cómo poner en marcha:
-Desde La línea de comandos
java jade.Boot da:
jade.tools.DummyAgent.DummyAgent
-Desde El GUI RMA
• Elegir "Herramientas  Iniciar DummyAgent"
• Seleccione "Iniciar nueva Agent" y
proporcionar
jade.tools.DummyAgent.DummyAgent como
el nombre de la clase
Dummy Agent
Cuando un agente sniff (o un grupo), algunos
mensajes son enviados a el agente, son visibles
en una especie de diagrama UML de secuencia
• Cuando un agentes o contenedores son creados
o destruidos, el Agente Sniffer es informado por
la AMS
• ¿Cómo poner en marcha:
-Desde La línea de comandos
java jade.Boot snif: jade.tools.sniffer.Sniffer
-Desde El GUI RMA
• Elegir "Herramientas  Iniciar Sniffer"
• O seleccione "Iniciar nueva Agent" y proporcionar
jade.tools.sniffer.Sniffer como el nombre de la
clase
Sniffer Agent
Sniffer Agent
Sniffer Agent
• DF es un servicio de páginas amarillas:
agentes pueden registrar sus servicios o
buscar en el DF
• En cada plataforma, hay al menos un DF
• Cómo iniciar la interfaz gráfica de usuario:
-Desde El GUI RMA
• Elegir "Herramientas  Mostrar la GUI DF"
IntrospectorAgent
Monitoriza el ciclo de vida de un agente: mensajes
enviados recibido, cola / comportamiento
• ¿Cómo poner en marcha:
-Desde El GUI RMA
• elegir "Herramientas -Iniciar IntrospectorAgent"
El ciclo de vida de los agentes y la
movilidad.
INICIADO: el objeto Agente está construido, pero no se ha
registrado en sí pero con la AMS, no tiene nombre ni una
dirección y no puede comunicarse con otros agentes.
ACTIVO: el objeto Agente se ha registrado en el AMS, tiene
un
nombre regular y la dirección y puede acceder a todas las
diversas características JADE.
SUSPENDIDO: el objeto del agente se detiene en ese
momento.
su rosca interna se suspende y no se está ejecutando el
comportamiento del agente. doSuspend ()
ESPERA: el objeto Agente está bloqueado, esperando algo. Su
rosca
interna es durmiendo en un monitor de Java y se despierta
cuando
se cumple alguna condición (por lo general, cuando un mensaje
llega).doWait ()
ELIMINADO: el agente es definitivamente muerto. La rosca
interna
ha terminado su ejecución y el Agente no es más registrado en
el
AMS.
TRÁNSITO: un agente móvil entra en este estado mientras se
está
migrando a la nueva ubicación. Los sistema continúa para
amortiguar los mensajes que luego serán enviados a su nueva
El ciclo de vida de los agentes y la
movilidad.
El ciclo de vida de los agentes y la
movilidad.
Creación de agentes
Hay dos formas de ejecutar un
agente: desde el GUI de JADE y
desde la línea de comandos.
Desde la línea de comandos.
java jade.Boot –container <nombre_agente>:
<paquete_.class>
Ejecución remota de agentes
jade.Boot -container -host nombreHost
<nombre_agente>:<ruta_agente.class>
Entonces…¿Qué es un
agente?
 "Los agentes autónomos son
sistemas computacionales que
habitan en algún complejo entorno
dinámico, sienten y actúan de forma
autónoma en este entorno, y al
hacerlo, se dan cuenta de un conjunto
de metas o tareas para las que han
sido diseñados."
Qué es un comportamiento EN
JADE?
Un comportamiento o behaviour hace referencia a
una funcionalidad que incorpora el agente.
Los comportamientos especifican tareas o
servicios que realiza un agente para lograr sus
objetivos. Cada comportamiento puede realizar
una tarea simple como "Envia este mensaje" o
"compra X " aunque también se pueden crear
comportamientos compuestos.
Cada tarea del agente sará una instancia de una
clase que deber heredar de la clase Behaviour.
class MiComportamiento extends Behaviour{ … }
LIBRERÍA: jade.core.behaviours.*
Qué es un comportamiento EN
JADE?
Los agentes están programados en base a sus
comportamientos.
La programación basada en comportamientos debe realizar los
siguientes pasos:
1. Determinar qué debe ser capaz de hacer el agente.
2. Asociar cada funcionalidad con un comportamiento.
3. Escoger el tipo de comportamientos
4. Dejar a JADE la tarea del scheduling (un solo
5. comportamiento se está ejecutando en cada instante).
En el ejemplo ANTERIOR se puede ver como se añade
un comportamiento desde el método setup() del
agente.
Qué es un comportamiento EN
JADE?
 Además de añadir nuevos
comportamientos, también se pueden
eliminar comportamientos de un agente con
el método removeBehaviour(Behaviour).
Así, si en el ejemplo anterior quisiéramos
borrar el primer comportamiento desde el
segundo comportamiento bastaría con
hacer una llamada
a removeBehaviour() dentro del método
action del segundo comportamiento:
Ejercicios de Comportamiento
 Crea un proyecto de nombre:dia2
 Crea el paquete: comportat
◦ Crea la clase: comportat1
◦ Crea la clase: comportat1_m
◦ Crea la clase: comportat2
Comportamiento
Métodos de un comportamiento
Toda clase que herede de Behaviour deberá implementar:
- El método action().
Este método define la acción a ser ejecutada cuando se ejecute el comportamiento. Debe incluir
el
código de las acciones a realizar cuando se ejecute el comportamiento.
Es invocado cuando se produce el evento asociado al comportamiento.
Es recomendable que los métodos action() no tengan un tiempo de ejecución alto ya que
mientras
que se ejecutan no pueden ser interrumpidos por otro comportamiento.
- El método done().
Es invocado cuando finaliza la ejecución del método action().
Este método determina si el comportamiento ha sido completado o no. Devuelve un booleano
(true si ha
terminado o false en caso contrario).
Si el comportamiento ha finalizado, éste se elimina de la cola de comportamientos activos.
Se puede utilizar una marca que se activa cuando se quiere que finalice el comportamiento (se
evalúa su valor en el método done()).
 Un comportamiento también puede ser
bloqueado utilizando el método block(). Este
método permite bloquear un comportamiento
hasta que algún acontecimiento ocurra
(típicamente, hasta que un mensaje llegue).
Este no afecta a los demás comportamientos
de un agente.
Cuando el método action() termina, el
método block() coloca el comportamiento en
la cola de comportamientos bloqueados.
Comportamiento
Comportamiento
 En el paquete: comportat
◦ Crea la clase: comportat3
◦ Crea la clase: comportat4
◦ Crea la clase: comportat5
 OneShotBehaviour
En este tipo de comportamiento el
método done() siempre devuelve "true",
de forma
que sólo se ejecuta una vez y de forma
ininterrumpida.
 CyclicBehaviour
Representa un comportamiento que
debe
ejecutarse una serie de veces.
El método done() devuelve false.
Se mantiene activo tanto tiempo como
esté
activo el agente.
Hay riesgo de que se pueda quedar con
toda
Comportamiento
Comportamiento
 Un agente de la clase Receptor llamándolo
con el nombre “receptor”
java jade.Boot -container receptor:comportat.Receptor
 Un agente de la clase Emisor llamándolo con
el nombre "emisor1" :
java jade.Boot -container
emisor1:comportat.Emisor
 Obtenemos la siguiente salida:
 En el paquete: comportat
◦ Crea la clase: Emisor
◦ Crea la clase: Receptor
Comunicación 1ª parte
java jade.Boot -container receptor:comportat.Receptor
Después ejecuta el programa:
Comportamiento
java jade.Boot -container
emisor1:comportat.Emisor
Después ejecuta el programa:
Fundamentos:La comunicación entre
agentes
 Es fundamental para poder conseguir la potencia propia de
los sistemas multiagente.
 Determina el comportamiento social de los agentes
 Para que los agentes se puedan comunicar deben usar el
mismo lenguaje de comunicación
 Un lenguaje de comunicación define los tipos de mensaje:
informar, solicitar, preguntar…
 Las conversaciones entre agentes se rigen por una serie de
protocolos de interacción
 El lenguaje de comunicación de agentes (ACL) permitirá
transmitir una serie de conocimiento que vendrá expresado
en un lenguaje de contenido. Los términos del lenguaje
de contenido que representen conocimiento pertenecerán a
un vocabulario común a los distintos agentes que se
llama ontología.

Comunicación 2ª parte
 Un agente de la clase Receptor llamándolo con
el nombre “receptor”
java jade.Boot -container receptor:comportat.Receptor2
 Un agente de la clase Emisor llamándolo con el
nombre "emisor1" :
java jade.Boot -container
emisor1:comportat.Emisor2
 Obtenemos la siguiente salida:
 En el paquete: comportat
◦ Crea la clase: Emisor2
◦ Crea la clase: Receptor2
Comportamiento
java jade.Boot -container receptor:comportat.Receptor
Después ejecuta el programa:
Comportamiento
java jade.Boot -container
emisor1:comportat.Emisor2
Después ejecuta el programa:
Haciendo uso de createReply().
De esta manera, la clase Receptor quedaría así:
Como verás en este programa, existe una respuesta del agente receptor
Comportamiento
 En el paquete: comportat
◦ Crea la clase: Emisor3
◦ Crea la clase: Receptor3
Comportamiento
 En el paquete: comportat
◦ Crea la clase:
Receptor3
◦ Crea la clase: Emisor3
En el presente
programa se da
un pequeño
dialogo
La comunicación JADE :es FIPA-
ACL. Un mensaje FIPA-ACL puede contener los siguientes campos:
performative: tipo de acto comunicativo (acción que realiza el
mensaje). Es el único campo obligatorio y puede tomar uno de
los siguientes valores:
◦ accept-proposal: aceptar una propuesta recibida previamente
◦ agree: estar de acuerdo en realizar alguna acción
◦ cancel: cancelar alguna acción pedida previamente
◦ cfp: solicitar propuestas para realizar una acción dada
◦ confirm: informar a un receptor que una proposición es cierta
◦ disconfirm: informar a un receptor que una proposición es falsa
◦ failure: informar a otro agente que se intentó una acción pero
falló
◦ inform: informar a un receptor que una proposición es cierta
◦ inform-if: si el agente que recibe la acción cree que la sentencia
es verdadera informará de manera afirmativa, sino indicará que
es falsa.
La comunicación JADE :es FIPA-
ACL.
 not-understood: informar a un receptor que el emisor no entendió el
mensaje
 propagate: el receptor trata el mensaje como si fuese dirigido
directamente a él, y debe identificar los agentes en este descriptor y
enviarles el mensaje a ellos
 propose: enviar una propuesta para realizar una cierta acción
 proxy: el receptor debe seleccionar agentes objetivo denotados por una
descripción dada, y enviarles un mensaje embebido
 query-if: preguntarle a otro agente si una determinada proposición es
cierta
 query-ref: preguntar a otro agente por el objeto referenciado en una
expresión
 refuse: rechazar realizar una acción
 reject-proposal: rechazar una propuesta durante una negociación
 request: solicitar a un receptor que realice alguna acción
 request-when: solicitar al receptor que realice alguna acción cuando una
proposición dada sea cierta
 request-whenever: solicitar al receptor que realice alguna acción cada
vez que una proposición dada sea cierta
 subscribe: una intención persistente de notificar al emisor de un
determinado valor, y volver a notificarle cada vez que dicho valor cambie
La comunicación JADE :es FIPA-
ACL.
 Métodos de ACLMessage
A continuación se muestran algunos de los métodos más importantes de la clase
ACLMessage. Para consultar más detenidamente todos los métodos de dicha
clase se puede consultar su documentación en la API de JADE ( 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
 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
◦ ...
La comunicación JADE :es FIPA-
ACL.
 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.
En el ejemplo anterior, el agente Receptor podría solo estar interesado en recibir
mensajes del tipo REQUEST, en Español y procedentes exclusivamente del
agente "emisor". Esto se puede obtener modificando el
La comunicación JADE :es FIPA-
ACL.
 En el paquete:
comportat
◦ Crea la clase: Emisor4
◦ Crea la clase: Receptor4
La comunicación JADE :es FIPA-
ACL.
La comunicación JADE :es FIPA-
ACL.
Después ejecuta el programa:
La comunicación JADE :es FIPA-
ACL.
Después ejecuta el programa:
La comunicación JADE :es FIPA-
ACL.
 Ejecución de
◦ La clase:
Receptor4
◦ La clase: Emisor4
Páginas amarillas (DF Agent)
 Permite a los agentes publicar los servicios que
proporcionan, para que otros agentes puedan
acceder a ellos.
Páginas amarillas (DF Agent)
 El agente debe proporcionar al DF una
descripción, incluyendo su AID, los
protocolos, lenguajes y ontologías que el
resto de agentes necesitan conocer para
interactuar con él; y la lista de servicios
publicados.
 Para cada servicio se proporciona una
descripción, incluyendo: tipo de servicio,
nombre, protocolos, lenguajes y ontologías; y
una serie de propiedades específicas del
servicio.
 Antes de finalizar su ejecución el agente
debe eliminar del DF sus servicios.
Páginas amarillas (DF Agent)
 Para realizar las acciones anteriores Jade proporciona
los siguientes métodos:
static DFAgentDescription register: registra los
servicios de un agente en el DF.
 static void deregister: elimina del registro del DF los
servicios del agente.
 Los servicios se definen con los siguientes métodos de
la clase ServiceDescription:
◦ void setName: modifica el nombre del servicio.
◦ void setOwnership: modifica el propietario del servicio.
◦ void setType: modifica el tipo de servicio.
◦ void addLanguages: añade lenguaje del servicio.
◦ void addOntologies: añade ontología del servicio.
◦ void addProtocols: añade protocolo del servicio.
◦ void addProperties: añade propiedades del servicio.
Publicar servicios:
 La descripcion del agente se modifica con los
siguientes métodos de la
clase DFAgentDescription:
◦ void setName: modifica el AID de la descripciñón del
agente.
◦ void addServices: añade el servicio pasado por
parámetro a la descripción del agente.
◦ void removeServices: elimina el servicio pasado por
parámetro a la descripción del agente.
◦ void addLanguages: añade lenguajes que el agente
entiende.
◦ void addOntologies: añade ontologías que el agente
entiende.
◦ void addProtocols: añade protocolos que el agente
entiende.
Páginas blancas (AMS Agent)
• Garantiza que cada agente en la
plataforma tenga un único nombre.
• Encargado de proporcionar los
servicios de páginas blancas y ciclo de
vida, y de mantener el directorio de los
identificadores de agentes (AID: Agent
Identifier) y su estado.
• Cada agente debe registrarse con el
AMS para obtener un AID válido, esta
operación en JADE la realizan los
agentes de manera automática en el
agente AMS por defecto.
Páginas blancas (AMS Agent)
Para acceder a los servicios del agente AMS hay que
importar la clase AMSService. Esta clase contiene los
siguientes métodos:
static void register: registra al agente en el AMS. Tanto
esta operación como la operación deregister se
realizan automáticamente en JADE cuando se ejecutan
los métodos setup() y takeDown() respectivamente, por
lo tanto no suelen ser usados normalmente.
 static void deregister: elimina el registro del agente en
el AMS.
 static void modify: modifica los datos del agente en el
AMS.
 static AMSAgentDescription search: devuelve la
descripción de los agentes registrados en el agente
AMS.
 Programa 14. Crea la clase: PaginasBlancas y
ejecutalo
Páginas blancas (AMS Agent)
Programa 14. Crea la clase: PaginasBlancas y ejecutalo
Protocolos de comunicación
 El paquete jade.proto
Este paquete agrupa todas las clases que, en forma
de
comportamientos, facilitan la implementación de los
protocolos de comunicación definidos por FIPA.
Dichas clases se agrupan dentro del paquete en
cuatro
parejas de clases principales con las cuales se
podrán
implementar la mayoría de los protocolos.
Protocolos de comunicación
 Como ya se indicó más arriba estas clases
implementan comportamientos, y concretamente el
tipo de comportamiento que implementa es el
FSMBehaviour, ya que las acciones de los agentes
en los protocolos FIPA se puede reducir simplemente
a una máquina de estados finitos, y este es el tipo de
comportamiento indicado para representar dichas
máquinas. Este comportamiento es más fácil de
comprender observando el siguiente ejemplo en el
cual Pedro le pide la hora Juan:
 Pedro: Juan, ¿Tienes hora?
 Juan: Sí, un segundo.
 Juan mira el reloj.
 Juan: Son las seis en punto.
Protocolos de comunicación
Protocolos de comunicación
 En JADE los
comportamientos de los
iniciadores se ejecutarán
una
sola vez, mientras que los
de
los respondedores serán
cíclicos.
La acciones que se realizan
en
cada estado se definen
mediante manejadores (Ha
ndl
ers), mientras que los
mensajes se concretan
mediante (Prepares)..
Algunos de los protocolos que
implementa la clase AchieveRE
son:
FIPA-Request
Este protocolo permite a un agente solicitar a otro la
realización de una acción y está identificado en el
parámetro del protocolo del mensaje con el valor fipa-
request. Los mensajes que se intercambian son:
Request, la petición.
 Agree, si acepta la petición o refuse si la rechaza.
 En caso de que el mensaje anterior fuera un agree:
Failure si ocurrió algún error en el proceso, inform-done
si se realizó correctamente e inform-result si además se
tiene que comunicar el resultado.
 A continuación se presenta un ejemplo que hace uso
de estas clases.
Ejercicio último 
En este ejemplo un agente (representado por la clase Testigo)
avisará a los
hospitales pasados como parámetro de que ha habido un accidente
de
tráfico y pide ayuda. Es decir podremos crear varios hospitales y
pasarlos todos como parámetros al testigo.
Los hospitales (representados por la clase Hospital) podrán atender
la emergencia o descartarla por estar fuera de su radio de
actuación.
Para que funcione bien, hay que lanzar primero el agente Hospital
(uno o
varios) y luego pasarle como parámetro al agente Testigo uno o
mas
agentes (en caso de no pasar ninguno dará un error de falta de
parámetros).
Jade Agentes inteligentes básico

Más contenido relacionado

La actualidad más candente

Conceptos de software
Conceptos de softwareConceptos de software
Conceptos de software
Alejandra Regalado
 
La herramienta de desarrollo de agentes Jade
La herramienta de desarrollo de agentes JadeLa herramienta de desarrollo de agentes Jade
La herramienta de desarrollo de agentes Jade
pcuestaesei
 
Comandos java
Comandos javaComandos java
Comandos java
Michelle Peña
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
Fco Javier Lucena
 
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTEPROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE
Percy Javier Flores Mamani
 
22 ejercicios base de datos
22 ejercicios base de datos 22 ejercicios base de datos
22 ejercicios base de datos
Hector Velazquez Alfonso de Castillo
 
Deteccion Y Recuperacion De Un Interbloqueo
Deteccion Y Recuperacion De Un InterbloqueoDeteccion Y Recuperacion De Un Interbloqueo
Deteccion Y Recuperacion De Un Interbloqueo
Tecnologico de pinotepa
 
Wireshark
Wireshark Wireshark
Wireshark
Eliana Navarro J
 
Tipos de excepciones
Tipos de excepcionesTipos de excepciones
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
jose_rob
 
Analizador lexico
Analizador lexicoAnalizador lexico
formas de codificación de la información
formas de codificación de la informaciónformas de codificación de la información
formas de codificación de la información
albertolnm
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de uso
Tensor
 
Orange hrm
Orange hrmOrange hrm
100 ejercicios-resueltos-de-sistemas-operativos
100 ejercicios-resueltos-de-sistemas-operativos100 ejercicios-resueltos-de-sistemas-operativos
100 ejercicios-resueltos-de-sistemas-operativos
PatriciaDavila16
 
Java web Lección 04 - JSTL
Java web Lección 04 - JSTLJava web Lección 04 - JSTL
Java web Lección 04 - JSTL
Eric Gustavo Coronel Castillo
 
python
pythonpython
Procesos
ProcesosProcesos
Procesos
pedro castro
 
Sistema Operativo Unidad II Procesos e Hilos
Sistema Operativo Unidad II Procesos e HilosSistema Operativo Unidad II Procesos e Hilos
Sistema Operativo Unidad II Procesos e Hilos
Joan Ml. Gregorio Pérez
 
Ejercicio de Análisis de Sistemas
Ejercicio de Análisis de SistemasEjercicio de Análisis de Sistemas
Ejercicio de Análisis de Sistemas
Victor Escamilla
 

La actualidad más candente (20)

Conceptos de software
Conceptos de softwareConceptos de software
Conceptos de software
 
La herramienta de desarrollo de agentes Jade
La herramienta de desarrollo de agentes JadeLa herramienta de desarrollo de agentes Jade
La herramienta de desarrollo de agentes Jade
 
Comandos java
Comandos javaComandos java
Comandos java
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
 
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTEPROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE
 
22 ejercicios base de datos
22 ejercicios base de datos 22 ejercicios base de datos
22 ejercicios base de datos
 
Deteccion Y Recuperacion De Un Interbloqueo
Deteccion Y Recuperacion De Un InterbloqueoDeteccion Y Recuperacion De Un Interbloqueo
Deteccion Y Recuperacion De Un Interbloqueo
 
Wireshark
Wireshark Wireshark
Wireshark
 
Tipos de excepciones
Tipos de excepcionesTipos de excepciones
Tipos de excepciones
 
Modelo Orientado A Objetos
Modelo Orientado A ObjetosModelo Orientado A Objetos
Modelo Orientado A Objetos
 
Analizador lexico
Analizador lexicoAnalizador lexico
Analizador lexico
 
formas de codificación de la información
formas de codificación de la informaciónformas de codificación de la información
formas de codificación de la información
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de uso
 
Orange hrm
Orange hrmOrange hrm
Orange hrm
 
100 ejercicios-resueltos-de-sistemas-operativos
100 ejercicios-resueltos-de-sistemas-operativos100 ejercicios-resueltos-de-sistemas-operativos
100 ejercicios-resueltos-de-sistemas-operativos
 
Java web Lección 04 - JSTL
Java web Lección 04 - JSTLJava web Lección 04 - JSTL
Java web Lección 04 - JSTL
 
python
pythonpython
python
 
Procesos
ProcesosProcesos
Procesos
 
Sistema Operativo Unidad II Procesos e Hilos
Sistema Operativo Unidad II Procesos e HilosSistema Operativo Unidad II Procesos e Hilos
Sistema Operativo Unidad II Procesos e Hilos
 
Ejercicio de Análisis de Sistemas
Ejercicio de Análisis de SistemasEjercicio de Análisis de Sistemas
Ejercicio de Análisis de Sistemas
 

Destacado

La herramienta de desarrollo de agentes JADE
La herramienta de desarrollo de agentes JADELa herramienta de desarrollo de agentes JADE
La herramienta de desarrollo de agentes JADE
pcuestaesei
 
Seminario Agentes, Multiagentes y Aplicaciones - MASTER US
Seminario Agentes, Multiagentes y Aplicaciones - MASTER USSeminario Agentes, Multiagentes y Aplicaciones - MASTER US
Seminario Agentes, Multiagentes y Aplicaciones - MASTER US
Gonzalo Aranda
 
ProgramacióN Orientada A Agentes
ProgramacióN Orientada A AgentesProgramacióN Orientada A Agentes
ProgramacióN Orientada A Agentes
NICK
 
Agente Inteligente Para El DiagnóStico MéDico
Agente Inteligente Para El DiagnóStico MéDicoAgente Inteligente Para El DiagnóStico MéDico
Agente Inteligente Para El DiagnóStico MéDico
Santiago Ortega
 
Modelo computacional discreto
Modelo computacional discretoModelo computacional discreto
Modelo computacional discreto
oskrvc
 
SMA_Agentes
SMA_AgentesSMA_Agentes
SMA_Agentes
bakalutis
 
Jade1 agentes
Jade1 agentesJade1 agentes
Jade1 agentes
pcuestaesei
 
Presentacion servlets
Presentacion servletsPresentacion servlets
Presentacion servlets
srcid
 
224842
224842224842
Esto es lo que hay.
Esto es lo que hay.Esto es lo que hay.
Esto es lo que hay.
José María
 
Repair café @ Napoli
Repair café @ NapoliRepair café @ Napoli
Repair café @ Napoli
Loredana Chiatto
 
Jiba en CenterParcs: Structureel hogere conversie door online personalisatie
Jiba en CenterParcs: Structureel hogere conversie door online personalisatieJiba en CenterParcs: Structureel hogere conversie door online personalisatie
Jiba en CenterParcs: Structureel hogere conversie door online personalisatie
BRIQLAB - Business Eco-platform voor digitale transformatie
 
Monografia - pensamento politico militar do Che
Monografia - pensamento politico militar do CheMonografia - pensamento politico militar do Che
Monografia - pensamento politico militar do Che
Isabel Cunha Lopes
 
Oposiciones Policia Nacional en Bilbao Formacion
Oposiciones Policia Nacional en Bilbao FormacionOposiciones Policia Nacional en Bilbao Formacion
Oposiciones Policia Nacional en Bilbao Formacion
Bilbao Formacion
 
Energy Eficiency North 3
Energy Eficiency North  3Energy Eficiency North  3
Energy Eficiency North 3
ianfletcher
 
Letter of Recommendation Brian Toalson
Letter of Recommendation Brian ToalsonLetter of Recommendation Brian Toalson
Letter of Recommendation Brian Toalson
Brian Toalson
 
Maite Pagaza
Maite PagazaMaite Pagaza
Maite Pagaza
Douce Nieto
 
Capítulo 3. Precio óptimo de mayor aceptación
Capítulo 3. Precio óptimo de mayor aceptaciónCapítulo 3. Precio óptimo de mayor aceptación
Capítulo 3. Precio óptimo de mayor aceptación
Nelson Pricing
 
Sociales trabajo josefina pilloneto i nerea
Sociales trabajo josefina pilloneto i nereaSociales trabajo josefina pilloneto i nerea
Sociales trabajo josefina pilloneto i nereaamelisgalmes
 
Presentation smartisan
Presentation smartisanPresentation smartisan
Presentation smartisan
Yifan Yao
 

Destacado (20)

La herramienta de desarrollo de agentes JADE
La herramienta de desarrollo de agentes JADELa herramienta de desarrollo de agentes JADE
La herramienta de desarrollo de agentes JADE
 
Seminario Agentes, Multiagentes y Aplicaciones - MASTER US
Seminario Agentes, Multiagentes y Aplicaciones - MASTER USSeminario Agentes, Multiagentes y Aplicaciones - MASTER US
Seminario Agentes, Multiagentes y Aplicaciones - MASTER US
 
ProgramacióN Orientada A Agentes
ProgramacióN Orientada A AgentesProgramacióN Orientada A Agentes
ProgramacióN Orientada A Agentes
 
Agente Inteligente Para El DiagnóStico MéDico
Agente Inteligente Para El DiagnóStico MéDicoAgente Inteligente Para El DiagnóStico MéDico
Agente Inteligente Para El DiagnóStico MéDico
 
Modelo computacional discreto
Modelo computacional discretoModelo computacional discreto
Modelo computacional discreto
 
SMA_Agentes
SMA_AgentesSMA_Agentes
SMA_Agentes
 
Jade1 agentes
Jade1 agentesJade1 agentes
Jade1 agentes
 
Presentacion servlets
Presentacion servletsPresentacion servlets
Presentacion servlets
 
224842
224842224842
224842
 
Esto es lo que hay.
Esto es lo que hay.Esto es lo que hay.
Esto es lo que hay.
 
Repair café @ Napoli
Repair café @ NapoliRepair café @ Napoli
Repair café @ Napoli
 
Jiba en CenterParcs: Structureel hogere conversie door online personalisatie
Jiba en CenterParcs: Structureel hogere conversie door online personalisatieJiba en CenterParcs: Structureel hogere conversie door online personalisatie
Jiba en CenterParcs: Structureel hogere conversie door online personalisatie
 
Monografia - pensamento politico militar do Che
Monografia - pensamento politico militar do CheMonografia - pensamento politico militar do Che
Monografia - pensamento politico militar do Che
 
Oposiciones Policia Nacional en Bilbao Formacion
Oposiciones Policia Nacional en Bilbao FormacionOposiciones Policia Nacional en Bilbao Formacion
Oposiciones Policia Nacional en Bilbao Formacion
 
Energy Eficiency North 3
Energy Eficiency North  3Energy Eficiency North  3
Energy Eficiency North 3
 
Letter of Recommendation Brian Toalson
Letter of Recommendation Brian ToalsonLetter of Recommendation Brian Toalson
Letter of Recommendation Brian Toalson
 
Maite Pagaza
Maite PagazaMaite Pagaza
Maite Pagaza
 
Capítulo 3. Precio óptimo de mayor aceptación
Capítulo 3. Precio óptimo de mayor aceptaciónCapítulo 3. Precio óptimo de mayor aceptación
Capítulo 3. Precio óptimo de mayor aceptación
 
Sociales trabajo josefina pilloneto i nerea
Sociales trabajo josefina pilloneto i nereaSociales trabajo josefina pilloneto i nerea
Sociales trabajo josefina pilloneto i nerea
 
Presentation smartisan
Presentation smartisanPresentation smartisan
Presentation smartisan
 

Similar a Jade Agentes inteligentes básico

Sma
SmaSma
Movilidad en jade
Movilidad en jadeMovilidad en jade
Movilidad en jade
cccampos
 
Seminario Jade 2014
Seminario Jade 2014Seminario Jade 2014
Seminario Jade 2014
Gonzalo Aranda
 
Introduccion a Android
Introduccion a AndroidIntroduccion a Android
Introduccion a Android
Paradigma Digital
 
Jade Introducción
Jade IntroducciónJade Introducción
Jade Introducción
Adrián Andujo
 
Agentes Estimulo Respuesta, victor mamani catachura,boreasH,Inteligencia Arti...
Agentes Estimulo Respuesta, victor mamani catachura,boreasH,Inteligencia Arti...Agentes Estimulo Respuesta, victor mamani catachura,boreasH,Inteligencia Arti...
Agentes Estimulo Respuesta, victor mamani catachura,boreasH,Inteligencia Arti...
victor mamani
 
Agentes moviles
Agentes movilesAgentes moviles
Agentes moviles
YeseniaLaraFlores
 
Curso de Struts2: Unidad Didáctica 00 Introduccion
Curso de Struts2: Unidad Didáctica 00 IntroduccionCurso de Struts2: Unidad Didáctica 00 Introduccion
Curso de Struts2: Unidad Didáctica 00 Introduccion
David Vaquero
 
Flow layout
Flow layoutFlow layout
Android master class
Android master classAndroid master class
Android master class
Sergi Martínez
 
SMA1011_BUBAL_Tipos de comportamiento
SMA1011_BUBAL_Tipos de comportamientoSMA1011_BUBAL_Tipos de comportamiento
SMA1011_BUBAL_Tipos de comportamiento
xoanGz
 
Tema 2 sma
Tema 2 smaTema 2 sma
Tema 2 sma
Sottti
 
Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuario
Carlos A. Iglesias
 
Slides1
Slides1Slides1
Slides1
jhonlex31
 
Intelligent agents
Intelligent agentsIntelligent agents
Sma jade
Sma jadeSma jade
Sma jade
kasas12
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
Alberto Ruibal
 
UIMP: Taller de Sistemas MultiAgente
UIMP: Taller de Sistemas MultiAgenteUIMP: Taller de Sistemas MultiAgente
UIMP: Taller de Sistemas MultiAgente
Gerardo DeMiguel
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Android
jezabelink
 
Exposicion Agentes Inteligentes
Exposicion Agentes InteligentesExposicion Agentes Inteligentes
Exposicion Agentes Inteligentes
Ivanmauricio
 

Similar a Jade Agentes inteligentes básico (20)

Sma
SmaSma
Sma
 
Movilidad en jade
Movilidad en jadeMovilidad en jade
Movilidad en jade
 
Seminario Jade 2014
Seminario Jade 2014Seminario Jade 2014
Seminario Jade 2014
 
Introduccion a Android
Introduccion a AndroidIntroduccion a Android
Introduccion a Android
 
Jade Introducción
Jade IntroducciónJade Introducción
Jade Introducción
 
Agentes Estimulo Respuesta, victor mamani catachura,boreasH,Inteligencia Arti...
Agentes Estimulo Respuesta, victor mamani catachura,boreasH,Inteligencia Arti...Agentes Estimulo Respuesta, victor mamani catachura,boreasH,Inteligencia Arti...
Agentes Estimulo Respuesta, victor mamani catachura,boreasH,Inteligencia Arti...
 
Agentes moviles
Agentes movilesAgentes moviles
Agentes moviles
 
Curso de Struts2: Unidad Didáctica 00 Introduccion
Curso de Struts2: Unidad Didáctica 00 IntroduccionCurso de Struts2: Unidad Didáctica 00 Introduccion
Curso de Struts2: Unidad Didáctica 00 Introduccion
 
Flow layout
Flow layoutFlow layout
Flow layout
 
Android master class
Android master classAndroid master class
Android master class
 
SMA1011_BUBAL_Tipos de comportamiento
SMA1011_BUBAL_Tipos de comportamientoSMA1011_BUBAL_Tipos de comportamiento
SMA1011_BUBAL_Tipos de comportamiento
 
Tema 2 sma
Tema 2 smaTema 2 sma
Tema 2 sma
 
Tema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuarioTema 4 3_3_interfaces_de_usuario
Tema 4 3_3_interfaces_de_usuario
 
Slides1
Slides1Slides1
Slides1
 
Intelligent agents
Intelligent agentsIntelligent agents
Intelligent agents
 
Sma jade
Sma jadeSma jade
Sma jade
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
UIMP: Taller de Sistemas MultiAgente
UIMP: Taller de Sistemas MultiAgenteUIMP: Taller de Sistemas MultiAgente
UIMP: Taller de Sistemas MultiAgente
 
Deletreando Android
Deletreando AndroidDeletreando Android
Deletreando Android
 
Exposicion Agentes Inteligentes
Exposicion Agentes InteligentesExposicion Agentes Inteligentes
Exposicion Agentes Inteligentes
 

Último

DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
Maria Celeste Trujillo Cruz
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
PaulDelgadoSoto
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
Eduardo455921
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
dayronfabricioruizmo
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
eliersin13
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 

Último (7)

DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
 
Introduccion al Lenguaje de Programación C++
Introduccion al Lenguaje de Programación  C++Introduccion al Lenguaje de Programación  C++
Introduccion al Lenguaje de Programación C++
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
 
primer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporteprimer manual de nuestra compañía de soporte
primer manual de nuestra compañía de soporte
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 

Jade Agentes inteligentes básico

  • 1. AGENTES INTELIGENTES CON JAVA NETBEANS. JADE. Octavio C. Abundez Ramírez email: gamabun4@gmail.com Facebook: Octavio Abundez • Taller: Agentes Inteligentes • México, D.F., 29-30 de Octubre de 2015
  • 2. MAIN CONTAINER •AMS (Sistema de Gestión de Agente) -Proporciona El servicio de nombres y representa la autoridad en la plataforma. • DF (Directorio Facilitador) -Proporciona Un servicio de páginas amarillas por medio de los cuales un agente puede encontrar otros agentes que prestan los servicios que requiere para lograr sus metas. • RMA (Remote Management Agent) -Actuando como consola gráfica para la gestión de la plataforma y el control.
  • 3. Remote Monitoring Agent • Proporcionar a la interfaz gráfica de usuario para controlar el ciclo de vida de los agentes
  • 4. • Canal de comunicación del agente (ACC) - Agente a Agente - Plataforma agente a Plataforma Agente Message Transport System
  • 6. Objetos vs Agentes Un objeto es reactiva Un objeto es una entidad pasiva (o reactiva). Si nadie solicita el valor de un atributo o activa un método de el objeto, entonces no Pasa nada. Un agente es ProActif Un agente tiene, además de los Atributos y métodos, procesos Internos función, incluso en ausencia de tensiones externas. Un agente puede actuar, por tanto, incluso si nadie le pregunta nada
  • 7. Dummy Agent Herramienta útil para la depuración • Permite la interacción con otros agentes de envío, recepción y visualización de mensajes de ACL • ¿Cómo poner en marcha: -Desde La línea de comandos java jade.Boot da: jade.tools.DummyAgent.DummyAgent -Desde El GUI RMA • Elegir "Herramientas  Iniciar DummyAgent" • Seleccione "Iniciar nueva Agent" y proporcionar jade.tools.DummyAgent.DummyAgent como el nombre de la clase
  • 9. Cuando un agente sniff (o un grupo), algunos mensajes son enviados a el agente, son visibles en una especie de diagrama UML de secuencia • Cuando un agentes o contenedores son creados o destruidos, el Agente Sniffer es informado por la AMS • ¿Cómo poner en marcha: -Desde La línea de comandos java jade.Boot snif: jade.tools.sniffer.Sniffer -Desde El GUI RMA • Elegir "Herramientas  Iniciar Sniffer" • O seleccione "Iniciar nueva Agent" y proporcionar jade.tools.sniffer.Sniffer como el nombre de la clase Sniffer Agent
  • 11. Sniffer Agent • DF es un servicio de páginas amarillas: agentes pueden registrar sus servicios o buscar en el DF • En cada plataforma, hay al menos un DF • Cómo iniciar la interfaz gráfica de usuario: -Desde El GUI RMA • Elegir "Herramientas  Mostrar la GUI DF"
  • 12. IntrospectorAgent Monitoriza el ciclo de vida de un agente: mensajes enviados recibido, cola / comportamiento • ¿Cómo poner en marcha: -Desde El GUI RMA • elegir "Herramientas -Iniciar IntrospectorAgent"
  • 13. El ciclo de vida de los agentes y la movilidad. INICIADO: el objeto Agente está construido, pero no se ha registrado en sí pero con la AMS, no tiene nombre ni una dirección y no puede comunicarse con otros agentes. ACTIVO: el objeto Agente se ha registrado en el AMS, tiene un nombre regular y la dirección y puede acceder a todas las diversas características JADE. SUSPENDIDO: el objeto del agente se detiene en ese momento. su rosca interna se suspende y no se está ejecutando el comportamiento del agente. doSuspend ()
  • 14. ESPERA: el objeto Agente está bloqueado, esperando algo. Su rosca interna es durmiendo en un monitor de Java y se despierta cuando se cumple alguna condición (por lo general, cuando un mensaje llega).doWait () ELIMINADO: el agente es definitivamente muerto. La rosca interna ha terminado su ejecución y el Agente no es más registrado en el AMS. TRÁNSITO: un agente móvil entra en este estado mientras se está migrando a la nueva ubicación. Los sistema continúa para amortiguar los mensajes que luego serán enviados a su nueva El ciclo de vida de los agentes y la movilidad.
  • 15. El ciclo de vida de los agentes y la movilidad.
  • 16. Creación de agentes Hay dos formas de ejecutar un agente: desde el GUI de JADE y desde la línea de comandos. Desde la línea de comandos. java jade.Boot –container <nombre_agente>: <paquete_.class> Ejecución remota de agentes jade.Boot -container -host nombreHost <nombre_agente>:<ruta_agente.class>
  • 17.
  • 18. Entonces…¿Qué es un agente?  "Los agentes autónomos son sistemas computacionales que habitan en algún complejo entorno dinámico, sienten y actúan de forma autónoma en este entorno, y al hacerlo, se dan cuenta de un conjunto de metas o tareas para las que han sido diseñados."
  • 19. Qué es un comportamiento EN JADE? Un comportamiento o behaviour hace referencia a una funcionalidad que incorpora el agente. Los comportamientos especifican tareas o servicios que realiza un agente para lograr sus objetivos. Cada comportamiento puede realizar una tarea simple como "Envia este mensaje" o "compra X " aunque también se pueden crear comportamientos compuestos. Cada tarea del agente sará una instancia de una clase que deber heredar de la clase Behaviour. class MiComportamiento extends Behaviour{ … } LIBRERÍA: jade.core.behaviours.*
  • 20. Qué es un comportamiento EN JADE? Los agentes están programados en base a sus comportamientos. La programación basada en comportamientos debe realizar los siguientes pasos: 1. Determinar qué debe ser capaz de hacer el agente. 2. Asociar cada funcionalidad con un comportamiento. 3. Escoger el tipo de comportamientos 4. Dejar a JADE la tarea del scheduling (un solo 5. comportamiento se está ejecutando en cada instante). En el ejemplo ANTERIOR se puede ver como se añade un comportamiento desde el método setup() del agente.
  • 21. Qué es un comportamiento EN JADE?  Además de añadir nuevos comportamientos, también se pueden eliminar comportamientos de un agente con el método removeBehaviour(Behaviour). Así, si en el ejemplo anterior quisiéramos borrar el primer comportamiento desde el segundo comportamiento bastaría con hacer una llamada a removeBehaviour() dentro del método action del segundo comportamiento:
  • 22. Ejercicios de Comportamiento  Crea un proyecto de nombre:dia2  Crea el paquete: comportat ◦ Crea la clase: comportat1 ◦ Crea la clase: comportat1_m ◦ Crea la clase: comportat2
  • 23. Comportamiento Métodos de un comportamiento Toda clase que herede de Behaviour deberá implementar: - El método action(). Este método define la acción a ser ejecutada cuando se ejecute el comportamiento. Debe incluir el código de las acciones a realizar cuando se ejecute el comportamiento. Es invocado cuando se produce el evento asociado al comportamiento. Es recomendable que los métodos action() no tengan un tiempo de ejecución alto ya que mientras que se ejecutan no pueden ser interrumpidos por otro comportamiento. - El método done(). Es invocado cuando finaliza la ejecución del método action(). Este método determina si el comportamiento ha sido completado o no. Devuelve un booleano (true si ha terminado o false en caso contrario). Si el comportamiento ha finalizado, éste se elimina de la cola de comportamientos activos. Se puede utilizar una marca que se activa cuando se quiere que finalice el comportamiento (se evalúa su valor en el método done()).
  • 24.  Un comportamiento también puede ser bloqueado utilizando el método block(). Este método permite bloquear un comportamiento hasta que algún acontecimiento ocurra (típicamente, hasta que un mensaje llegue). Este no afecta a los demás comportamientos de un agente. Cuando el método action() termina, el método block() coloca el comportamiento en la cola de comportamientos bloqueados. Comportamiento
  • 25. Comportamiento  En el paquete: comportat ◦ Crea la clase: comportat3 ◦ Crea la clase: comportat4 ◦ Crea la clase: comportat5  OneShotBehaviour En este tipo de comportamiento el método done() siempre devuelve "true", de forma que sólo se ejecuta una vez y de forma ininterrumpida.
  • 26.  CyclicBehaviour Representa un comportamiento que debe ejecutarse una serie de veces. El método done() devuelve false. Se mantiene activo tanto tiempo como esté activo el agente. Hay riesgo de que se pueda quedar con toda Comportamiento
  • 27. Comportamiento  Un agente de la clase Receptor llamándolo con el nombre “receptor” java jade.Boot -container receptor:comportat.Receptor  Un agente de la clase Emisor llamándolo con el nombre "emisor1" : java jade.Boot -container emisor1:comportat.Emisor  Obtenemos la siguiente salida:  En el paquete: comportat ◦ Crea la clase: Emisor ◦ Crea la clase: Receptor
  • 28. Comunicación 1ª parte java jade.Boot -container receptor:comportat.Receptor Después ejecuta el programa:
  • 30. Fundamentos:La comunicación entre agentes  Es fundamental para poder conseguir la potencia propia de los sistemas multiagente.  Determina el comportamiento social de los agentes  Para que los agentes se puedan comunicar deben usar el mismo lenguaje de comunicación  Un lenguaje de comunicación define los tipos de mensaje: informar, solicitar, preguntar…  Las conversaciones entre agentes se rigen por una serie de protocolos de interacción  El lenguaje de comunicación de agentes (ACL) permitirá transmitir una serie de conocimiento que vendrá expresado en un lenguaje de contenido. Los términos del lenguaje de contenido que representen conocimiento pertenecerán a un vocabulario común a los distintos agentes que se llama ontología. 
  • 31. Comunicación 2ª parte  Un agente de la clase Receptor llamándolo con el nombre “receptor” java jade.Boot -container receptor:comportat.Receptor2  Un agente de la clase Emisor llamándolo con el nombre "emisor1" : java jade.Boot -container emisor1:comportat.Emisor2  Obtenemos la siguiente salida:  En el paquete: comportat ◦ Crea la clase: Emisor2 ◦ Crea la clase: Receptor2
  • 32. Comportamiento java jade.Boot -container receptor:comportat.Receptor Después ejecuta el programa:
  • 34. Haciendo uso de createReply(). De esta manera, la clase Receptor quedaría así: Como verás en este programa, existe una respuesta del agente receptor Comportamiento  En el paquete: comportat ◦ Crea la clase: Emisor3 ◦ Crea la clase: Receptor3
  • 35. Comportamiento  En el paquete: comportat ◦ Crea la clase: Receptor3 ◦ Crea la clase: Emisor3 En el presente programa se da un pequeño dialogo
  • 36. La comunicación JADE :es FIPA- ACL. Un mensaje FIPA-ACL puede contener los siguientes campos: performative: tipo de acto comunicativo (acción que realiza el mensaje). Es el único campo obligatorio y puede tomar uno de los siguientes valores: ◦ accept-proposal: aceptar una propuesta recibida previamente ◦ agree: estar de acuerdo en realizar alguna acción ◦ cancel: cancelar alguna acción pedida previamente ◦ cfp: solicitar propuestas para realizar una acción dada ◦ confirm: informar a un receptor que una proposición es cierta ◦ disconfirm: informar a un receptor que una proposición es falsa ◦ failure: informar a otro agente que se intentó una acción pero falló ◦ inform: informar a un receptor que una proposición es cierta ◦ inform-if: si el agente que recibe la acción cree que la sentencia es verdadera informará de manera afirmativa, sino indicará que es falsa.
  • 37. La comunicación JADE :es FIPA- ACL.  not-understood: informar a un receptor que el emisor no entendió el mensaje  propagate: el receptor trata el mensaje como si fuese dirigido directamente a él, y debe identificar los agentes en este descriptor y enviarles el mensaje a ellos  propose: enviar una propuesta para realizar una cierta acción  proxy: el receptor debe seleccionar agentes objetivo denotados por una descripción dada, y enviarles un mensaje embebido  query-if: preguntarle a otro agente si una determinada proposición es cierta  query-ref: preguntar a otro agente por el objeto referenciado en una expresión  refuse: rechazar realizar una acción  reject-proposal: rechazar una propuesta durante una negociación  request: solicitar a un receptor que realice alguna acción  request-when: solicitar al receptor que realice alguna acción cuando una proposición dada sea cierta  request-whenever: solicitar al receptor que realice alguna acción cada vez que una proposición dada sea cierta  subscribe: una intención persistente de notificar al emisor de un determinado valor, y volver a notificarle cada vez que dicho valor cambie
  • 38. La comunicación JADE :es FIPA- ACL.  Métodos de ACLMessage A continuación se muestran algunos de los métodos más importantes de la clase ACLMessage. Para consultar más detenidamente todos los métodos de dicha clase se puede consultar su documentación en la API de JADE ( 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
  • 39.  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 ◦ ... La comunicación JADE :es FIPA- ACL.
  • 40.  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. En el ejemplo anterior, el agente Receptor podría solo estar interesado en recibir mensajes del tipo REQUEST, en Español y procedentes exclusivamente del agente "emisor". Esto se puede obtener modificando el La comunicación JADE :es FIPA- ACL.
  • 41.  En el paquete: comportat ◦ Crea la clase: Emisor4 ◦ Crea la clase: Receptor4 La comunicación JADE :es FIPA- ACL.
  • 42. La comunicación JADE :es FIPA- ACL. Después ejecuta el programa:
  • 43. La comunicación JADE :es FIPA- ACL. Después ejecuta el programa:
  • 44. La comunicación JADE :es FIPA- ACL.  Ejecución de ◦ La clase: Receptor4 ◦ La clase: Emisor4
  • 45. Páginas amarillas (DF Agent)  Permite a los agentes publicar los servicios que proporcionan, para que otros agentes puedan acceder a ellos.
  • 46. Páginas amarillas (DF Agent)  El agente debe proporcionar al DF una descripción, incluyendo su AID, los protocolos, lenguajes y ontologías que el resto de agentes necesitan conocer para interactuar con él; y la lista de servicios publicados.  Para cada servicio se proporciona una descripción, incluyendo: tipo de servicio, nombre, protocolos, lenguajes y ontologías; y una serie de propiedades específicas del servicio.  Antes de finalizar su ejecución el agente debe eliminar del DF sus servicios.
  • 47. Páginas amarillas (DF Agent)  Para realizar las acciones anteriores Jade proporciona los siguientes métodos: static DFAgentDescription register: registra los servicios de un agente en el DF.  static void deregister: elimina del registro del DF los servicios del agente.  Los servicios se definen con los siguientes métodos de la clase ServiceDescription: ◦ void setName: modifica el nombre del servicio. ◦ void setOwnership: modifica el propietario del servicio. ◦ void setType: modifica el tipo de servicio. ◦ void addLanguages: añade lenguaje del servicio. ◦ void addOntologies: añade ontología del servicio. ◦ void addProtocols: añade protocolo del servicio. ◦ void addProperties: añade propiedades del servicio.
  • 48. Publicar servicios:  La descripcion del agente se modifica con los siguientes métodos de la clase DFAgentDescription: ◦ void setName: modifica el AID de la descripciñón del agente. ◦ void addServices: añade el servicio pasado por parámetro a la descripción del agente. ◦ void removeServices: elimina el servicio pasado por parámetro a la descripción del agente. ◦ void addLanguages: añade lenguajes que el agente entiende. ◦ void addOntologies: añade ontologías que el agente entiende. ◦ void addProtocols: añade protocolos que el agente entiende.
  • 49. Páginas blancas (AMS Agent) • Garantiza que cada agente en la plataforma tenga un único nombre. • Encargado de proporcionar los servicios de páginas blancas y ciclo de vida, y de mantener el directorio de los identificadores de agentes (AID: Agent Identifier) y su estado. • Cada agente debe registrarse con el AMS para obtener un AID válido, esta operación en JADE la realizan los agentes de manera automática en el agente AMS por defecto.
  • 50. Páginas blancas (AMS Agent) Para acceder a los servicios del agente AMS hay que importar la clase AMSService. Esta clase contiene los siguientes métodos: static void register: registra al agente en el AMS. Tanto esta operación como la operación deregister se realizan automáticamente en JADE cuando se ejecutan los métodos setup() y takeDown() respectivamente, por lo tanto no suelen ser usados normalmente.  static void deregister: elimina el registro del agente en el AMS.  static void modify: modifica los datos del agente en el AMS.  static AMSAgentDescription search: devuelve la descripción de los agentes registrados en el agente AMS.  Programa 14. Crea la clase: PaginasBlancas y ejecutalo
  • 51. Páginas blancas (AMS Agent) Programa 14. Crea la clase: PaginasBlancas y ejecutalo
  • 52. Protocolos de comunicación  El paquete jade.proto Este paquete agrupa todas las clases que, en forma de comportamientos, facilitan la implementación de los protocolos de comunicación definidos por FIPA. Dichas clases se agrupan dentro del paquete en cuatro parejas de clases principales con las cuales se podrán implementar la mayoría de los protocolos.
  • 53. Protocolos de comunicación  Como ya se indicó más arriba estas clases implementan comportamientos, y concretamente el tipo de comportamiento que implementa es el FSMBehaviour, ya que las acciones de los agentes en los protocolos FIPA se puede reducir simplemente a una máquina de estados finitos, y este es el tipo de comportamiento indicado para representar dichas máquinas. Este comportamiento es más fácil de comprender observando el siguiente ejemplo en el cual Pedro le pide la hora Juan:  Pedro: Juan, ¿Tienes hora?  Juan: Sí, un segundo.  Juan mira el reloj.  Juan: Son las seis en punto.
  • 55. Protocolos de comunicación  En JADE los comportamientos de los iniciadores se ejecutarán una sola vez, mientras que los de los respondedores serán cíclicos. La acciones que se realizan en cada estado se definen mediante manejadores (Ha ndl ers), mientras que los mensajes se concretan mediante (Prepares)..
  • 56. Algunos de los protocolos que implementa la clase AchieveRE son: FIPA-Request Este protocolo permite a un agente solicitar a otro la realización de una acción y está identificado en el parámetro del protocolo del mensaje con el valor fipa- request. Los mensajes que se intercambian son: Request, la petición.  Agree, si acepta la petición o refuse si la rechaza.  En caso de que el mensaje anterior fuera un agree: Failure si ocurrió algún error en el proceso, inform-done si se realizó correctamente e inform-result si además se tiene que comunicar el resultado.  A continuación se presenta un ejemplo que hace uso de estas clases.
  • 57. Ejercicio último  En este ejemplo un agente (representado por la clase Testigo) avisará a los hospitales pasados como parámetro de que ha habido un accidente de tráfico y pide ayuda. Es decir podremos crear varios hospitales y pasarlos todos como parámetros al testigo. Los hospitales (representados por la clase Hospital) podrán atender la emergencia o descartarla por estar fuera de su radio de actuación. Para que funcione bien, hay que lanzar primero el agente Hospital (uno o varios) y luego pasarle como parámetro al agente Testigo uno o mas agentes (en caso de no pasar ninguno dará un error de falta de parámetros).