Agentes Alberto Montes López José María Santibáñez García Héctor Manuel Feijóo López
<ul><li>Definición Agente Jade. </li></ul><ul><ul><li>Clase Agent. </li></ul></ul><ul><li>Ciclo de Vida de un Agente. </li...
<ul><li>Terminación de la ejecución de un Agente. </li></ul><ul><ul><li>Gui de Jade. </li></ul></ul><ul><ul><li>Consola. <...
Definición Agente JADE
<ul><li>Un agente JADE es una instancia de una clase Java definida por el usuario y que extiende de la clase “ Agent ” </l...
<ul><li>Tiene un nombre único en el entorno de ejecución (AID). </li></ul><ul><li>Se implementa como un único hilo de ejec...
<ul><li>Extiende de la clase Object. Esta clase es una superclase común para los agentes definidos por el usuario. </li></...
Ciclo de vida de un Agente
<ul><li>Define los  estados  en los cuales se puede encontrar un agente, así como los cambios que pueden producirse entre ...
Ciclo de Vida Podremos consultar el estado de un Agente mediante el método  getAgentState()
Diagrama
Creación de Agentes
<ul><li>Tareas que se producen cuando se crea un agente: </li></ul><ul><ul><li>Se llama al constructor del agente. </li></...
<ul><li>Ejemplo de un agente JADE: </li></ul><ul><li>import  jade.core.Agent; </li></ul><ul><li>public   class  MiAgente  ...
<ul><li>public   class  BookBuyerAgent  extends  Agent { </li></ul><ul><li>private  String targetBookTitle;  // Almacena e...
Ejecución de Agentes
Gui de JADE
Gui de JADE
Consola
Forma Remota
Terminación de la ejecución de un Agente
Gui de JADE
Consola
<ul><li>public   void  doDelete() </li></ul><ul><ul><li>Método de la clase Agent que realiza una transición de los estados...
<ul><li>public   class  BookBuyerAgent  extends  Agent { </li></ul><ul><li>protected   void  setup() { </li></ul><ul><li>i...
<ul><li>public   class  BookSellerAgent  extends  Agent { </li></ul><ul><li>protected   void  setup() { // . . . } </li></...
<ul><li>// el vendedor no llama por sí solo al método doDelete ya que su comportamiento es cíclico. La llamada a takeDown ...
Identificador de un Agente
<ul><li>Cada agente tiene que estar identificado de forma única en la plataforma. </li></ul><ul><li>Estructura: </li></ul>...
Paso de argumentos
<ul><li>public   class  BookBuyerAgent  extends  Agent { </li></ul><ul><li>private  String targetBookTitle;  // Título del...
Consola
Gui JADE
Ejercicio Propuesto
<ul><li>Introducción a un SMA en un entorno JADE </li></ul><ul><li>La finalidad de este ejercicio es aprender a crear un a...
<ul><li>El agente que  solicita  servicios deberá realizar las siguientes tareas: </li></ul><ul><li>Mostrar por pantalla u...
¿Preguntas?
Upcoming SlideShare
Loading in …5
×

SMA_Agentes

859 views
796 views

Published on

Presentacion de la Parte de Agentes

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
859
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Esta plantilla se puede usar como archivo de inicio para presentar materiales educativos en un entorno de grupo. Secciones Las secciones pueden ayudarle a organizar las diapositivas o a facilitar la colaboración entre varios autores. En la ficha Inicio , en Diapositivas , haga clic en Sección y, a continuación, en Agregar sección. Notas Use el panel Notas para las notas de entrega o para proporcionar detalles adicionales al público. Puede ver estas notas en la vista Moderador durante la presentación. Tenga en cuenta el tamaño de la fuente (es importante para la accesibilidad, visibilidad, grabación en vídeo y producción en línea) Colores coordinados Preste especial atención a los gráficos, diagramas y cuadros de texto. Tenga en cuenta que los asistentes imprimirán en blanco y negro o escala de grises. Ejecute una prueba de impresión para asegurarse de que los colores son los correctos cuando se imprime en blanco y negro puros y escala de grises. Gráficos y tablas En breve: si es posible, use colores y estilos uniformes y que no distraigan. Etiquete todos los gráficos y tablas.
  • Ofrezca una breve descripción general de la presentación. Describa el enfoque principal de la presentación y por qué es importante. Introduzca cada uno de los principales temas. Si desea proporcionar al público una guía, puede repetir esta diapositiva de información general a lo largo de toda la presentación, resaltando el tema particular que va a discutir a continuación.
  • Ésta es otra opción para una diapositiva de información general que utilice transiciones para avanzar por varias diapositivas.
  • Ofrezca una breve descripción general de la presentación. Describa el enfoque principal de la presentación y por qué es importante. Introduzca cada uno de los principales temas. Si desea proporcionar al público una guía, puede repetir esta diapositiva de información general a lo largo de toda la presentación, resaltando el tema particular que va a discutir a continuación.
  • Ofrezca una breve descripción general de la presentación. Describa el enfoque principal de la presentación y por qué es importante. Introduzca cada uno de los principales temas. Si desea proporcionar al público una guía, puede repetir esta diapositiva de información general a lo largo de toda la presentación, resaltando el tema particular que va a discutir a continuación.
  • Ofrezca una breve descripción general de la presentación. Describa el enfoque principal de la presentación y por qué es importante. Introduzca cada uno de los principales temas. Si desea proporcionar al público una guía, puede repetir esta diapositiva de información general a lo largo de toda la presentación, resaltando el tema particular que va a discutir a continuación.
  • Ofrezca una breve descripción general de la presentación. Describa el enfoque principal de la presentación y por qué es importante. Introduzca cada uno de los principales temas. Si desea proporcionar al público una guía, puede repetir esta diapositiva de información general a lo largo de toda la presentación, resaltando el tema particular que va a discutir a continuación.
  • Ésta es otra opción para otra diapositiva de información general.
  • Use un encabezado de sección para cada uno de los temas, de manera que la transición resulte clara para el público.
  • Microsoft Excelencia en ingeniería Información confidencial de Microsoft
  • Ésta es otra opción para una diapositiva de información general que utilice transiciones para avanzar por varias diapositivas.
  • Microsoft Excelencia en ingeniería Información confidencial de Microsoft
  • Microsoft Excelencia en ingeniería Información confidencial de Microsoft
  • SMA_Agentes

    1. 1. Agentes Alberto Montes López José María Santibáñez García Héctor Manuel Feijóo López
    2. 2. <ul><li>Definición Agente Jade. </li></ul><ul><ul><li>Clase Agent. </li></ul></ul><ul><li>Ciclo de Vida de un Agente. </li></ul><ul><ul><li>Estados de un agente. </li></ul></ul><ul><ul><li>Diagrama. </li></ul></ul><ul><li>Creación de Agentes. </li></ul><ul><ul><li>Ejemplo: BookBuyerAgent. </li></ul></ul><ul><li>Ejecución de Agentes. </li></ul><ul><ul><li>Gui de Jade. </li></ul></ul><ul><ul><li>Consola. </li></ul></ul><ul><ul><li>Ejecución remota. </li></ul></ul>Índice
    3. 3. <ul><li>Terminación de la ejecución de un Agente. </li></ul><ul><ul><li>Gui de Jade. </li></ul></ul><ul><ul><li>Consola. </li></ul></ul><ul><ul><li>Método doDelete(). </li></ul></ul><ul><ul><li>Ejemplos. </li></ul></ul><ul><li>Identificador de un agente. </li></ul><ul><li>Paso de argumentos. </li></ul><ul><ul><li>Consola. </li></ul></ul><ul><ul><li>Gui de Jade. </li></ul></ul><ul><li>Ejercicio Propuesto. </li></ul>Índice
    4. 4. Definición Agente JADE
    5. 5. <ul><li>Un agente JADE es una instancia de una clase Java definida por el usuario y que extiende de la clase “ Agent ” </li></ul><ul><li>(jade.core.Agent). </li></ul><ul><li>import jade.core.Agent; </li></ul><ul><li>public class MiAgente extends Agent { </li></ul><ul><li>protected void setup() { </li></ul><ul><li>} </li></ul><ul><li>protected void takeDown() { </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>Definición
    6. 6. <ul><li>Tiene un nombre único en el entorno de ejecución (AID). </li></ul><ul><li>Se implementa como un único hilo de ejecución. </li></ul><ul><li>Tiene un método de inicio (setup) y otro de fin (takeDown). Ambos métodos deben ser sobreescritos. </li></ul><ul><li>Se define una clase interna para cada uno de los comportamientos asociados al agente. </li></ul>Características
    7. 7. <ul><li>Extiende de la clase Object. Esta clase es una superclase común para los agentes definidos por el usuario. </li></ul><ul><li>La Clase Agent suministra métodos que permiten ejecutar las tareas básicas de los agentes. Dichos métodos son: </li></ul><ul><ul><li>Pasar mensajes utilizando objetos ACLMessage. </li></ul></ul><ul><ul><li>Dar soporte al ciclo de vida de un agente. </li></ul></ul><ul><ul><li>Planificar y ejecutar múltiples actividades de forma concurrente. </li></ul></ul>Clase Agent
    8. 8. Ciclo de vida de un Agente
    9. 9. <ul><li>Define los estados en los cuales se puede encontrar un agente, así como los cambios que pueden producirse entre los diferentes estados. </li></ul>Ciclo de Vida
    10. 10. Ciclo de Vida Podremos consultar el estado de un Agente mediante el método getAgentState()
    11. 11. Diagrama
    12. 12. Creación de Agentes
    13. 13. <ul><li>Tareas que se producen cuando se crea un agente: </li></ul><ul><ul><li>Se llama al constructor del agente. </li></ul></ul><ul><ul><li>Se crea un identificador del agente (AID). </li></ul></ul><ul><ul><li>Se registra el agente en el AMS. </li></ul></ul><ul><ul><li>Se ejecuta el método setup(). </li></ul></ul><ul><ul><ul><li>Debe contener el código relativo a las tareas de inicialización. </li></ul></ul></ul><ul><ul><ul><li>Puede modificar el registro del AMS </li></ul></ul></ul><ul><ul><ul><li>Puede registrar el agente de forma explícita en el DF. </li></ul></ul></ul><ul><ul><ul><li>Añade las tareas/comportamientos que ejecutará el agente. </li></ul></ul></ul>Creación
    14. 14. <ul><li>Ejemplo de un agente JADE: </li></ul><ul><li>import jade.core.Agent; </li></ul><ul><li>public class MiAgente extends Agent { </li></ul><ul><li>protected void setup() { </li></ul><ul><li>System.out.println( &quot;El agente se ha iniciado.&quot; ); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>Creación
    15. 15. <ul><li>public class BookBuyerAgent extends Agent { </li></ul><ul><li>private String targetBookTitle; // Almacena el Título del libro que se quiere comprar </li></ul><ul><li>private AID[] sellerAgents; // Almacena la lista de los agentes conocidos que son vendedores de libros </li></ul><ul><li>protected void setup() { // Código de inicialización del agente </li></ul><ul><li>// Escribe un mensaje de bienvenida </li></ul><ul><li>// Mediante el método getAID() se obtiene el AID del Agente, (ej.: peter@fipa.org) </li></ul><ul><li>// getAID().getName() obtendremos el GUID del Agente (ej.: peter@fipa.org:50/JADE ) </li></ul><ul><li>// getLocalName() nos devuelve el nombre del Agente </li></ul><ul><li>(ej.:peter) </li></ul><ul><li>System.out.println( &quot;Hallo! Buyer-agent &quot; +getAID().getName() + ” is ready.&quot; ); </li></ul><ul><li>// . . . resto del código de inicialización del agente </li></ul><ul><li>} // Fin de setup() </li></ul><ul><li>// . . . resto del código de la clase (otros métodos, comportamientos) </li></ul><ul><li>} // Fin de la clase BookBuyerAgent </li></ul>BookBuyerAgent
    16. 16. Ejecución de Agentes
    17. 17. Gui de JADE
    18. 18. Gui de JADE
    19. 19. Consola
    20. 20. Forma Remota
    21. 21. Terminación de la ejecución de un Agente
    22. 22. Gui de JADE
    23. 23. Consola
    24. 24. <ul><li>public void doDelete() </li></ul><ul><ul><li>Método de la clase Agent que realiza una transición de los estados activo, suspendido o en espera al estado borrado, destruyendo al agente. </li></ul></ul><ul><ul><li>Se suele usar para finalizar agentes que están en ejecución continua. </li></ul></ul><ul><ul><li>Este método llama automáticamente al método takeDown() ( protected void takeDown()) </li></ul></ul><ul><ul><ul><li>Se usa para realizar tareas de limpieza, por ejemplo, para dar de baja el agente del DF. </li></ul></ul></ul>doDelete()
    25. 25. <ul><li>public class BookBuyerAgent extends Agent { </li></ul><ul><li>protected void setup() { </li></ul><ul><li>if (args != null . . .) { // … } </li></ul><ul><li>else { // si no se ha introducido el argumento título del libro finaliza </li></ul><ul><li>System.out.println( &quot;No se ha especificado el título del libro&quot; ); </li></ul><ul><li>doDelete(); // llamada al método para la destrucción del agente </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>protected void takeDown() { //aquí se definen las operaciones de limpieza </li></ul><ul><li>System.out.println( &quot;Agente comprador &quot; +getAID().getName ()+ &quot; terminando.&quot; ); // sólo realiza una despedida </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>BookBuyerAgent
    26. 26. <ul><li>public class BookSellerAgent extends Agent { </li></ul><ul><li>protected void setup() { // . . . } </li></ul><ul><li>protected void takeDown() { // Aquí se ponen las operaciones de limpieza de recursos </li></ul><ul><li>try { </li></ul><ul><li>DFService.deregister( this ); // Intenta darse de baja del registro de las páginas amarillas </li></ul><ul><li>} </li></ul><ul><li>catch (FIPAException fe) { // Captura la excepción FIPA </li></ul><ul><li>fe.printStackTrace(); // Dirige la excepción al terminal de salida </li></ul><ul><li>} </li></ul><ul><li>myGui.dispose(); // Cierra la interfaz de usuario </li></ul><ul><li>System.out.println( &quot;Seller-agent &quot; +getAID().getName()+ &quot; terminating.&quot; ); // Se despide </li></ul><ul><li>} </li></ul><ul><li>// . . . resto del código </li></ul><ul><li>} </li></ul>BookSellerAgent
    27. 27. <ul><li>// el vendedor no llama por sí solo al método doDelete ya que su comportamiento es cíclico. La llamada a takeDown por parte del método doDelete sólo se produce si se cierra la interfaz o la consola. doDelete se utiliza en la clase BookSellerGui </li></ul><ul><li>public class BookSellerGui extends JFrame { </li></ul><ul><li>private BookSellerAgent myAgent; </li></ul><ul><li>// . . . </li></ul><ul><li>BookSellerGui(BookSellerAgent a) { // constructor </li></ul><ul><li>// . . . </li></ul><ul><li>myAgent = a; </li></ul><ul><li>// . . . </li></ul><ul><li>addWindowListener ( new WindowAdapter() { </li></ul><ul><li> // comportamiento de la ventana de interfaz </li></ul><ul><li>public void windowClosing(WindowEvent e) { </li></ul><ul><li>// recoge el evento de cerrar la ventana </li></ul><ul><li>myAgent.doDelete(); // llamada al método encargado de la limpieza </li></ul><ul><li>} </li></ul><ul><li>}); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>BookSellerAgent
    28. 28. Identificador de un Agente
    29. 29. <ul><li>Cada agente tiene que estar identificado de forma única en la plataforma. </li></ul><ul><li>Estructura: </li></ul><ul><ul><li>nombre_agente@host:puerto/JADE </li></ul></ul><ul><li>Mediante el método getAID() se obtiene el AID del Agente </li></ul><ul><ul><li>(ej.: [email_address] ) </li></ul></ul><ul><li>getAID().getName() obtendremos el GUID del Agente </li></ul><ul><ul><li>(ej.: peter@fipa.org:50/JADE ) </li></ul></ul><ul><li>getLocalName() nos devuelve el nombre del Agente </li></ul><ul><ul><li>(ej.:peter) </li></ul></ul><ul><li>import jade.core.Agent; </li></ul><ul><li>import jade.core.AID; </li></ul><ul><li>public class MiAgente extends Agent { </li></ul><ul><li>protected void setup() { </li></ul><ul><li>System.out.println( &quot;Hola! El agente&quot; +getAID().getName()+ &quot; está listo.&quot; ); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>AID Agente
    30. 30. Paso de argumentos
    31. 31. <ul><li>public class BookBuyerAgent extends Agent { </li></ul><ul><li>private String targetBookTitle; // Título del libro que se quiere </li></ul><ul><li>private AID[] sellerAgents; // Lista de los agentes vendedores de libros conocidos </li></ul><ul><li>protected void setup() { </li></ul><ul><li>System.out.println( &quot;Hallo! Buyer-agent &quot; +getAID().getName() + &quot; is ready.&quot; ); // Saludo comprador </li></ul><ul><li>Object[] args = getArguments(); // Obtiene los argumentos dados en la inicialización del comprador </li></ul><ul><li>if (args != null && args.length > 0 ) { // Tiene que haber al menos un argumento </li></ul><ul><li>targetBookTitle = (String) args[ 0 ]; // Obtiene el título del libro a comprar que se pasó como primer argumento </li></ul><ul><li>System.out.println( &quot;Target book is &quot; +targetBookTitle); // visualiza el título que quiere comprar </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>} Cierre de la clase BookBuyerAgent </li></ul>getArguments()
    32. 32. Consola
    33. 33. Gui JADE
    34. 34. Ejercicio Propuesto
    35. 35. <ul><li>Introducción a un SMA en un entorno JADE </li></ul><ul><li>La finalidad de este ejercicio es aprender a crear un agente JADE y que este realice tareas. </li></ul><ul><li>Objetivo: crear 5 agentes, 4 de ellos con nombres de balnearios (ej. Arnoia) y nombre del servicio, lo que ofrecen (ejemplos: SPA, Alojamiento, Alojamiento_Y_SPA), el quinto agente, se corresponderá con un cliente que desea un listado de los servicios disponibles, (ej. El Balneario Arnoia , ofrece las siguientes posibilidades: Alojamiento_Y_SPA, …). </li></ul><ul><li>Para crear estos agentes, serán necesarias dos clases diferentes: una clase para los agentes que ofrecen servicios y otra clase para los agentes que solicitan servicios. </li></ul><ul><li>Los agentes que ofrecen servicios deberán realizar las siguientes tareas: </li></ul><ul><li>Mostrar por pantalla un saludo, su nombre, su AID y su estado. </li></ul><ul><li>Pasar como argumentos el tipo y nombre de servicio, capturar estos argumentos y asignárselos al servicio. </li></ul><ul><li>Registrar su servicio en las páginas amarillas. </li></ul>Ejercicio
    36. 36. <ul><li>El agente que solicita servicios deberá realizar las siguientes tareas: </li></ul><ul><li>Mostrar por pantalla un saludo, su nombre, su AID y su estado. </li></ul><ul><li>Buscar y listar los tipos y nombres de los servicios que ofrecen los agentes y mostrar el AID del agente que ofrece ese servicio. </li></ul><ul><li>Finalmente, este agente se despide y se elimina su registro de las páginas amarillas. </li></ul><ul><li>Para realizar el ejercicio se deben seguir los siguientes pasos: </li></ul><ul><li>Crear una carpeta llamada ”Ejercicio&quot; en &quot;C:jadesrcexamples&quot;. </li></ul><ul><li>Copiar y pegar el código proporcionado en cada una de las plantillas en un nuevo fichero con nombre igual al de la clase (estos archivos se situarán en la carpeta creada anteriormente). </li></ul><ul><li>Completar el código del ejercicio sustituyendo los &quot; ... &quot; por lo que se considere adecuado. </li></ul><ul><li>Compilar el código desde una consola en el directorio especificado en el primer punto con la sentencia &quot;javac *.java&quot;. </li></ul><ul><li>Abrir una nueva consola para ejecutar el RMA. </li></ul><ul><li>Lanzar desde consola los 5 agentes que se piden en el ejercicio. </li></ul>Ejercicio
    37. 37. ¿Preguntas?

    ×