SlideShare a Scribd company logo
1 of 23
2.Comportamientos Agentes Jade
2.1 ¿Qué es un comportamiento? Un comportamiento (behavior) es una funcionalidad o conducta que tiene un agente. Especifican tareas o servicios enfocados a un objetivo Tareas simples Enviar un mensaje Comprar libro Comportamientos compuestos
Cada tarea es una instancia de una clase que debe heredar de la clase Behaviour class MiComportamiento extends Behaviour{…} El código java que implementa la funcionalidad ha de importar el paquete, o simplemente la clase Behaviour jade.core.behaviours.* jade.core.behaviours.Behaviour 2.1 ¿Qué es un comportamiento?
Descripción de los métodos de la clase Behaviour Los comportamientos son la base de la programación de agentes. Pasos para la programación de agentes: Determinar las capacidades del agente Asociar funcionalidades a comportamientos Elegir tipo de comportamientos Jade se encarga de la planificación (scheduling) En cada instante de tiempo sólo un comportamiento se está ejecutando 2.1 ¿Qué es un comportamiento?
2.2 Añadir y eliminar Los métodos para añadir y borrar comportamientos los provee la clase Agent addBehaviour(Behaviour) removeBehaviour(Behaviour) Gestionan la entrada y salida de los objetos Behaviour en la cola del planificador  Cola FIFO y política Round-Robin
2.2 Añadir y eliminar Los comportamientos se añaden o eliminar en cualquier momento de la vida del agente Se usará el método setup() o cualquier otro comportamiento u otros agentes Crear un comportamiento Es crear una clase privada dentro de la clase del agente Asociarlo al agente mediante el método addBehaviour(Behaviour) Debe considerarse el añadir un comportamiento como la ejecución de un nuevo hilo dentro del agente
2.2 Añadir y eliminar Ejemplo de cómo añadir un comportamiento desde el método setup() importjade.core.Agent;  importjade.core.behaviours.*;    publicclass MiAgente extends Agent {    protectedvoidsetup() {  	//Aqui es donde se añade el comportamiento.  addBehaviour(new MiComportamiento1());  }  	//Este es el comportamiento.  privateclass MiComportamiento1 extends Behaviour {  publicvoidaction(){  System.out.println("Mi nombre es: "+getName() ); System.out.println("Soy el comportamiento del agente");    	}  publicboolean done(){  returntrue;  		} } }
2.2 Añadir y eliminar Ejemplo de cómo añadir un comportamiento desde otro comportamiento Usamos la variable myAgent de la clase Behaviour. Funciona como una referencia al agente que está ejecutando el comportamiento. importjade.core.Agent;  importjade.core.behaviours.*;    publicclass MiAgente extends Agent { protectedvoidsetup() {  	//Aqui es donde se añade el comportamiento.  addBehaviour(new MiComportamiento1());  }  //Este es el comportamiento.  privateclass MiComportamiento1 extends Behaviour { publicvoidaction(){  System.out.println("Mi nombre es: "+getName() );  System.out.println("Soy el primer comportamiento");
2.2 Añadir y eliminar Ejemplo de cómo añadir un comportamiento desde otro comportamiento (continuación) myAgent.addBehaviour(new MiComportamiento2());  			} publicboolean done(){ return true;  } 	} //Este es el otro comportamiento  private class MiComportamiento2 extends Behaviour { publicvoidaction()v{  System.out.println("Soy el segundo comportamiento");  			} publicboolean done(){ return true;  			}  		}  	}
2.2 Añadir y eliminar Un comportamiento también puede ser eliminado de un agentecon el método removeBehaviour(Behaviour) En el ejemplo anterior, se puede borrar el primer comportamiento desde el segundo con una llamada a removeBehaviour() dentro del método action del segundo comportamiento (Ver código)
2.2 Añadir y eliminar package examples.practica2;    importjade.core.Agent; importjade.core.behaviours.*;   publicclass Ejemplo1 extends Agent{ privateBehaviour comp; 	// Inicialización del agente  protectedvoidsetup() { 			//Creamos un comportamiento: un objeto de la clase MiComportamiento1 comp = new MiComportamiento1();  	//Aqui es donde se añade el comportamiento. addBehaviour(comp);  } //Definición de un comportamiento privateclass MiComportamiento1 extends Behaviour { // define la acción a ser ejecutada cuando se ejecute el comportamiento.  publicvoidaction(){  System.out.println("Mi nombre es: "+getName() );  System.out.println("Soy el primer comportamiento");  // Añade un comportamiento desde otro comportamiento. myAgent.addBehaviour(new MiComportamiento2()); }
2.2 Añadir y eliminar 	// Determina si el comportamiento ha sido completado o no.  	// Si el comportamiento ha finalizado, éste se elimina de la cola de comportamientos activos.  publicboolean done(){  returntrue;  		}  	}    	//Definición de un segundo comportamiento privateclass MiComportamiento2 extends Behaviour{  publicvoidaction() {  System.out.println("Soy el segundo comportamiento"); myAgent.removeBehaviour(comp);//Borramos el primer 	comportamiento;  } publicboolean done() { returntrue;  		} 	} }
2.3 Métodos Toda clase heredada de Behaviour debe implementar: Método Action(): Define la acción que define el comportamiento. Incluye el código de las acciones a realizar. Se invoca con el evento asociado al comportamiento Es recomendable que sean de rápida ejecución ya que no pueden ser interrumpidos por otro comportamiento. Método done() Se invoca cuando finaliza el método action() Determina con un boolean si se ha finalizado el comportamiento. En caso afirmativo, el comportamiento se elimina de la cola de comportamientos activos Marca opcional que se activa cuando se quiere que finalice el comportamiento Es evaluada en el método done()
2.3 Métodos Ejemplo del funcionamiento de action() y done() importjade.core.Agent;  importjade.core.behaviours.*; publicclass Ejemplo2 extends Agent {    	// Inicialización del agente protectedvoidsetup() { 	// Añade un comportamiento addBehaviour(new MiComportamiento()); } // Finalización del agente protectedvoidtakeDown() { System.out.println("La escala ha terminado");  }
2.3 Métodos 	// Definición de un comportamiento privateclass MiComportamiento extends Behaviour { privateint estado = 0;  // Función que realiza MiComportamiento publicvoidaction() { switch(estado) { case 0: System.out.println("Do"); break;  				{…} 		case 6: System.out.println("Si"); break; 		case 7:{  System.out.println("Do");  myAgent.doDelete();  			break;  		} }  	estado++;  }   // Comprueba si el comportamiento ha finalizado. publicboolean done() { return (estado > 7); } } }
2.3 Métodos Para bloquear un comportamiento usamos el método block() Bloquea un comportamiento hasta algún evento No afecta a los demás comportamientos del agente Al finalizar el método action(), block() coloca el comportameinto en la cola de comportamientos bloqueados Un objeto de la clase Behaviour puede bloquearse temporalmente Se le pasa el valor al método block() en milisegundos No es igual al método sleep() de los hilos Block() espera a la finalización de action(), si el comportamiento no termina, pasa a la lista de comportamientos bloqueados durante el tiempo indicado en el método block() o hasta que ocurra el evento que espera dicho bloqueo.
2.3 Métodos package examples.practica2; importjade.core.Agent; importjade.core.behaviours.*; publicclass Ejemplo3 extends Agent{ 	// Inicialización del agente protectedvoidsetup() 	{ addBehaviour( new MiComportamiento() );  	} 	// Finalización del agente protectedvoidtakeDown() { 				System.out.println("****Agente finalizado****"); }
2.3 Métodos // Definición de un comportamiento privateclass MiComportamiento extends Behaviour { intnumeroEjecuciones = 1; // // Función que realiza MiComportamiento publicvoidaction() { System.out.println("Esta es la ejecucion "+numeroEjecuciones); 	//lo bloqueamos durante un segundo block(1000); System.out.println("Despues de 1000 milisengundos"); numeroEjecuciones++; } // Comprueba si el comportamiento ha finalizado publicboolean done(){ if(numeroEjecuciones>10){ myAgent.doDelete(); returntrue;  	}  elsereturn false; } } }
2.3 Métodos Un comportamiento se desbloquea cuando: El agente al que pertenece recibe un mensage ACL Sale de la cola de bloqueados y se coloca al final de la cola de activos Para cada mensaje todos los objetos de la cola de bloqueados deben comprobar si son los destinatarios, y en cas contrario vuelven a bloquearse Termina la interrupción asociada al comportamiento por el método block() Termina el tiempo Si se llama al método restart() desde el comportamiento. Behaviour también nos proporciona los métodos onStart() y onEnd() onStart(): Se ejecuta justo antes del método action() onEnd(): Se ejecuta antes de finalizar el comportamiento (cuando done() ha devuelto true). Devuelve un un entero que representa un valor de terminación para el comportamiento.
2.3 Métodos packageexamples.practica2; importjade.core.Agent;  importjade.core.behaviours.*; publicclass Ejemplo4 extends Agent{ // Inicialización del agente protectedvoidsetup() { 	// Añadir un comportamiento. addBehaviour(new MiComportamiento()); }   // Definición de un comportamiento privateclass MiComportamiento extends Behaviour { // Este método se ejecuta justo antes de la ejecución del método action() publicvoidonStart() { System.out.println("Esto se hace cada vez que se inicia el comportamiento"); }
2.3 Métodos // Funcion a realizar por el comportamiento publicvoidaction() { System.out.println("Hola a todos."); //Lo bloqueamos durante un segundo block(1000); System.out.println("Despues de 1 segundo");  } // Comprueba si el comportamiento ha finalizado publicboolean done(){ return true;  } 	// Se ejecuta antes de finalizar el comportamiento publicintonEnd() {	 // Hace que el comportamiento se reinicie al finalizar. reset(); myAgent.addBehaviour(this); return0; } } }
2.4 Ejecución Cada agente tiene un scheduler propio. Planificación preemptiva. No existe concurrencia real dentro de un mismo agente. Ahorro de CPU y memoria. Un comportamiento puede bloquearse cuando termina action(). Se coloca en la cola de comportamientos bloqueados. Al desbloquear se quita de comportamientos bloqueados y se pone coloca al final de la cola de comportamientos activos. Mientras action() se ejecuta no se puede ejecutar ningún otro método.
2.4 Flujo de control doDelete() Si takeDown() Setup() No No Eliminar comportamiento de activos Done() Siguiente comportamiento de activos Si Action()

More Related Content

Viewers also liked

Synthese sondage crowdfunding easi 31dec13
Synthese sondage crowdfunding easi 31dec13Synthese sondage crowdfunding easi 31dec13
Synthese sondage crowdfunding easi 31dec13
570 easi
 
flash code compu training
flash code compu trainingflash code compu training
flash code compu training
Marie Mjg
 
Bilan de la délinquance et de la sécurité routière 2011 Département de la...
Bilan de la délinquance etde la sécurité routière 2011 Département de la...Bilan de la délinquance etde la sécurité routière 2011 Département de la...
Bilan de la délinquance et de la sécurité routière 2011 Département de la...
BienPublic
 
Intervention Adetem du 21 janvier 2014 - Les RSE dans la distribution
Intervention Adetem du 21 janvier 2014 - Les RSE dans la distributionIntervention Adetem du 21 janvier 2014 - Les RSE dans la distribution
Intervention Adetem du 21 janvier 2014 - Les RSE dans la distribution
Matthias VIRY
 
Enquête Cap'Com sur la distribution des publications territoriales
Enquête Cap'Com sur la distribution des publications territorialesEnquête Cap'Com sur la distribution des publications territoriales
Enquête Cap'Com sur la distribution des publications territoriales
Cap'Com
 
Comité technique et fonctionnel présentation privée notifications & pac 2012 ...
Comité technique et fonctionnel présentation privée notifications & pac 2012 ...Comité technique et fonctionnel présentation privée notifications & pac 2012 ...
Comité technique et fonctionnel présentation privée notifications & pac 2012 ...
jguivarch
 
Bd(élirant) 2011
Bd(élirant) 2011Bd(élirant) 2011
Bd(élirant) 2011
laviellep
 

Viewers also liked (20)

Offre Dooblecare Salariés
Offre Dooblecare SalariésOffre Dooblecare Salariés
Offre Dooblecare Salariés
 
Synthese sondage crowdfunding easi 31dec13
Synthese sondage crowdfunding easi 31dec13Synthese sondage crowdfunding easi 31dec13
Synthese sondage crowdfunding easi 31dec13
 
Diapo bonnenouvelle
Diapo bonnenouvelleDiapo bonnenouvelle
Diapo bonnenouvelle
 
Seminario didacti cs2013.-4to encuentro
Seminario didacti cs2013.-4to encuentroSeminario didacti cs2013.-4to encuentro
Seminario didacti cs2013.-4to encuentro
 
Ppt mcni - gooplan
Ppt   mcni - gooplanPpt   mcni - gooplan
Ppt mcni - gooplan
 
Artimag de décembre
Artimag de décembreArtimag de décembre
Artimag de décembre
 
flash code compu training
flash code compu trainingflash code compu training
flash code compu training
 
Bilan de la délinquance et de la sécurité routière 2011 Département de la...
Bilan de la délinquance etde la sécurité routière 2011 Département de la...Bilan de la délinquance etde la sécurité routière 2011 Département de la...
Bilan de la délinquance et de la sécurité routière 2011 Département de la...
 
Ines
InesInes
Ines
 
Ya , Maria Corina, Ya!
Ya , Maria Corina, Ya!Ya , Maria Corina, Ya!
Ya , Maria Corina, Ya!
 
Presentación del grupo 5 power 1
Presentación del grupo 5 power 1Presentación del grupo 5 power 1
Presentación del grupo 5 power 1
 
Intervention Adetem du 21 janvier 2014 - Les RSE dans la distribution
Intervention Adetem du 21 janvier 2014 - Les RSE dans la distributionIntervention Adetem du 21 janvier 2014 - Les RSE dans la distribution
Intervention Adetem du 21 janvier 2014 - Les RSE dans la distribution
 
Transmedia en 2014 : rapport de mission au Forum Blanc
Transmedia en 2014 : rapport de mission au Forum BlancTransmedia en 2014 : rapport de mission au Forum Blanc
Transmedia en 2014 : rapport de mission au Forum Blanc
 
Modèles numériques coûteux : de la quantification des incertitudes la planifi...
Modèles numériques coûteux : de la quantification des incertitudes la planifi...Modèles numériques coûteux : de la quantification des incertitudes la planifi...
Modèles numériques coûteux : de la quantification des incertitudes la planifi...
 
Sci-Plug
Sci-PlugSci-Plug
Sci-Plug
 
E-Shop Expo 2015 CIRB Geert Royberghs
E-Shop Expo 2015 CIRB Geert RoyberghsE-Shop Expo 2015 CIRB Geert Royberghs
E-Shop Expo 2015 CIRB Geert Royberghs
 
Enquête Cap'Com sur la distribution des publications territoriales
Enquête Cap'Com sur la distribution des publications territorialesEnquête Cap'Com sur la distribution des publications territoriales
Enquête Cap'Com sur la distribution des publications territoriales
 
Comité technique et fonctionnel présentation privée notifications & pac 2012 ...
Comité technique et fonctionnel présentation privée notifications & pac 2012 ...Comité technique et fonctionnel présentation privée notifications & pac 2012 ...
Comité technique et fonctionnel présentation privée notifications & pac 2012 ...
 
Bd(élirant) 2011
Bd(élirant) 2011Bd(élirant) 2011
Bd(élirant) 2011
 
Hacia la educación y participación comunitaria en salud
Hacia la educación y participación comunitaria en saludHacia la educación y participación comunitaria en salud
Hacia la educación y participación comunitaria en salud
 

Similar to Tema 2 sma

SMA1011_BUBAL_Tipos de comportamiento
SMA1011_BUBAL_Tipos de comportamientoSMA1011_BUBAL_Tipos de comportamiento
SMA1011_BUBAL_Tipos de comportamiento
xoanGz
 
2 desarrollo interfaz_grafico-capitulo1-02otroseventos
2 desarrollo interfaz_grafico-capitulo1-02otroseventos2 desarrollo interfaz_grafico-capitulo1-02otroseventos
2 desarrollo interfaz_grafico-capitulo1-02otroseventos
Camilo Herreño
 
Codigo De Las Clases Del Proyecto
Codigo De Las Clases Del ProyectoCodigo De Las Clases Del Proyecto
Codigo De Las Clases Del Proyecto
nahun1385
 

Similar to Tema 2 sma (19)

Sma
SmaSma
Sma
 
SMA1011_BUBAL_Tipos de comportamiento
SMA1011_BUBAL_Tipos de comportamientoSMA1011_BUBAL_Tipos de comportamiento
SMA1011_BUBAL_Tipos de comportamiento
 
Tipos De Comportamiento
Tipos De ComportamientoTipos De Comportamiento
Tipos De Comportamiento
 
Jade Agentes inteligentes básico
Jade Agentes inteligentes básicoJade Agentes inteligentes básico
Jade Agentes inteligentes básico
 
SMA_Agentes
SMA_AgentesSMA_Agentes
SMA_Agentes
 
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
 
Clase 5 struts2
Clase 5 struts2Clase 5 struts2
Clase 5 struts2
 
Jade1 agentes
Jade1 agentesJade1 agentes
Jade1 agentes
 
Flow layout
Flow layoutFlow layout
Flow layout
 
Curso de Desarrollo Web 2
Curso de Desarrollo Web 2Curso de Desarrollo Web 2
Curso de Desarrollo Web 2
 
Eventos
EventosEventos
Eventos
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
Curso de Struts 2: Unidad Didáctica 02 Acciones
Curso de Struts 2: Unidad Didáctica 02 AccionesCurso de Struts 2: Unidad Didáctica 02 Acciones
Curso de Struts 2: Unidad Didáctica 02 Acciones
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
2 desarrollo interfaz_grafico-capitulo1-02otroseventos
2 desarrollo interfaz_grafico-capitulo1-02otroseventos2 desarrollo interfaz_grafico-capitulo1-02otroseventos
2 desarrollo interfaz_grafico-capitulo1-02otroseventos
 
Introducción a akka
Introducción a akkaIntroducción a akka
Introducción a akka
 
Codigo De Las Clases Del Proyecto
Codigo De Las Clases Del ProyectoCodigo De Las Clases Del Proyecto
Codigo De Las Clases Del Proyecto
 
Introduccion a Android
Introduccion a AndroidIntroduccion a Android
Introduccion a Android
 

Recently uploaded

🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
amelia poma
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 

Recently uploaded (20)

Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 

Tema 2 sma

  • 2. 2.1 ¿Qué es un comportamiento? Un comportamiento (behavior) es una funcionalidad o conducta que tiene un agente. Especifican tareas o servicios enfocados a un objetivo Tareas simples Enviar un mensaje Comprar libro Comportamientos compuestos
  • 3. Cada tarea es una instancia de una clase que debe heredar de la clase Behaviour class MiComportamiento extends Behaviour{…} El código java que implementa la funcionalidad ha de importar el paquete, o simplemente la clase Behaviour jade.core.behaviours.* jade.core.behaviours.Behaviour 2.1 ¿Qué es un comportamiento?
  • 4. Descripción de los métodos de la clase Behaviour Los comportamientos son la base de la programación de agentes. Pasos para la programación de agentes: Determinar las capacidades del agente Asociar funcionalidades a comportamientos Elegir tipo de comportamientos Jade se encarga de la planificación (scheduling) En cada instante de tiempo sólo un comportamiento se está ejecutando 2.1 ¿Qué es un comportamiento?
  • 5. 2.2 Añadir y eliminar Los métodos para añadir y borrar comportamientos los provee la clase Agent addBehaviour(Behaviour) removeBehaviour(Behaviour) Gestionan la entrada y salida de los objetos Behaviour en la cola del planificador Cola FIFO y política Round-Robin
  • 6. 2.2 Añadir y eliminar Los comportamientos se añaden o eliminar en cualquier momento de la vida del agente Se usará el método setup() o cualquier otro comportamiento u otros agentes Crear un comportamiento Es crear una clase privada dentro de la clase del agente Asociarlo al agente mediante el método addBehaviour(Behaviour) Debe considerarse el añadir un comportamiento como la ejecución de un nuevo hilo dentro del agente
  • 7. 2.2 Añadir y eliminar Ejemplo de cómo añadir un comportamiento desde el método setup() importjade.core.Agent; importjade.core.behaviours.*;   publicclass MiAgente extends Agent {   protectedvoidsetup() { //Aqui es donde se añade el comportamiento. addBehaviour(new MiComportamiento1()); } //Este es el comportamiento. privateclass MiComportamiento1 extends Behaviour { publicvoidaction(){ System.out.println("Mi nombre es: "+getName() ); System.out.println("Soy el comportamiento del agente");   } publicboolean done(){ returntrue; } } }
  • 8. 2.2 Añadir y eliminar Ejemplo de cómo añadir un comportamiento desde otro comportamiento Usamos la variable myAgent de la clase Behaviour. Funciona como una referencia al agente que está ejecutando el comportamiento. importjade.core.Agent; importjade.core.behaviours.*;   publicclass MiAgente extends Agent { protectedvoidsetup() { //Aqui es donde se añade el comportamiento. addBehaviour(new MiComportamiento1()); } //Este es el comportamiento. privateclass MiComportamiento1 extends Behaviour { publicvoidaction(){ System.out.println("Mi nombre es: "+getName() ); System.out.println("Soy el primer comportamiento");
  • 9. 2.2 Añadir y eliminar Ejemplo de cómo añadir un comportamiento desde otro comportamiento (continuación) myAgent.addBehaviour(new MiComportamiento2()); } publicboolean done(){ return true; } } //Este es el otro comportamiento private class MiComportamiento2 extends Behaviour { publicvoidaction()v{ System.out.println("Soy el segundo comportamiento"); } publicboolean done(){ return true; } } }
  • 10. 2.2 Añadir y eliminar Un comportamiento también puede ser eliminado de un agentecon el método removeBehaviour(Behaviour) En el ejemplo anterior, se puede borrar el primer comportamiento desde el segundo con una llamada a removeBehaviour() dentro del método action del segundo comportamiento (Ver código)
  • 11. 2.2 Añadir y eliminar package examples.practica2;   importjade.core.Agent; importjade.core.behaviours.*;   publicclass Ejemplo1 extends Agent{ privateBehaviour comp; // Inicialización del agente protectedvoidsetup() { //Creamos un comportamiento: un objeto de la clase MiComportamiento1 comp = new MiComportamiento1(); //Aqui es donde se añade el comportamiento. addBehaviour(comp); } //Definición de un comportamiento privateclass MiComportamiento1 extends Behaviour { // define la acción a ser ejecutada cuando se ejecute el comportamiento. publicvoidaction(){ System.out.println("Mi nombre es: "+getName() ); System.out.println("Soy el primer comportamiento"); // Añade un comportamiento desde otro comportamiento. myAgent.addBehaviour(new MiComportamiento2()); }
  • 12. 2.2 Añadir y eliminar // Determina si el comportamiento ha sido completado o no. // Si el comportamiento ha finalizado, éste se elimina de la cola de comportamientos activos. publicboolean done(){ returntrue; } }   //Definición de un segundo comportamiento privateclass MiComportamiento2 extends Behaviour{ publicvoidaction() { System.out.println("Soy el segundo comportamiento"); myAgent.removeBehaviour(comp);//Borramos el primer comportamiento; } publicboolean done() { returntrue; } } }
  • 13. 2.3 Métodos Toda clase heredada de Behaviour debe implementar: Método Action(): Define la acción que define el comportamiento. Incluye el código de las acciones a realizar. Se invoca con el evento asociado al comportamiento Es recomendable que sean de rápida ejecución ya que no pueden ser interrumpidos por otro comportamiento. Método done() Se invoca cuando finaliza el método action() Determina con un boolean si se ha finalizado el comportamiento. En caso afirmativo, el comportamiento se elimina de la cola de comportamientos activos Marca opcional que se activa cuando se quiere que finalice el comportamiento Es evaluada en el método done()
  • 14. 2.3 Métodos Ejemplo del funcionamiento de action() y done() importjade.core.Agent; importjade.core.behaviours.*; publicclass Ejemplo2 extends Agent {   // Inicialización del agente protectedvoidsetup() { // Añade un comportamiento addBehaviour(new MiComportamiento()); } // Finalización del agente protectedvoidtakeDown() { System.out.println("La escala ha terminado"); }
  • 15. 2.3 Métodos // Definición de un comportamiento privateclass MiComportamiento extends Behaviour { privateint estado = 0; // Función que realiza MiComportamiento publicvoidaction() { switch(estado) { case 0: System.out.println("Do"); break; {…} case 6: System.out.println("Si"); break; case 7:{ System.out.println("Do"); myAgent.doDelete(); break; } } estado++; }   // Comprueba si el comportamiento ha finalizado. publicboolean done() { return (estado > 7); } } }
  • 16. 2.3 Métodos Para bloquear un comportamiento usamos el método block() Bloquea un comportamiento hasta algún evento No afecta a los demás comportamientos del agente Al finalizar el método action(), block() coloca el comportameinto en la cola de comportamientos bloqueados Un objeto de la clase Behaviour puede bloquearse temporalmente Se le pasa el valor al método block() en milisegundos No es igual al método sleep() de los hilos Block() espera a la finalización de action(), si el comportamiento no termina, pasa a la lista de comportamientos bloqueados durante el tiempo indicado en el método block() o hasta que ocurra el evento que espera dicho bloqueo.
  • 17. 2.3 Métodos package examples.practica2; importjade.core.Agent; importjade.core.behaviours.*; publicclass Ejemplo3 extends Agent{ // Inicialización del agente protectedvoidsetup() { addBehaviour( new MiComportamiento() ); } // Finalización del agente protectedvoidtakeDown() { System.out.println("****Agente finalizado****"); }
  • 18. 2.3 Métodos // Definición de un comportamiento privateclass MiComportamiento extends Behaviour { intnumeroEjecuciones = 1; // // Función que realiza MiComportamiento publicvoidaction() { System.out.println("Esta es la ejecucion "+numeroEjecuciones); //lo bloqueamos durante un segundo block(1000); System.out.println("Despues de 1000 milisengundos"); numeroEjecuciones++; } // Comprueba si el comportamiento ha finalizado publicboolean done(){ if(numeroEjecuciones>10){ myAgent.doDelete(); returntrue; } elsereturn false; } } }
  • 19. 2.3 Métodos Un comportamiento se desbloquea cuando: El agente al que pertenece recibe un mensage ACL Sale de la cola de bloqueados y se coloca al final de la cola de activos Para cada mensaje todos los objetos de la cola de bloqueados deben comprobar si son los destinatarios, y en cas contrario vuelven a bloquearse Termina la interrupción asociada al comportamiento por el método block() Termina el tiempo Si se llama al método restart() desde el comportamiento. Behaviour también nos proporciona los métodos onStart() y onEnd() onStart(): Se ejecuta justo antes del método action() onEnd(): Se ejecuta antes de finalizar el comportamiento (cuando done() ha devuelto true). Devuelve un un entero que representa un valor de terminación para el comportamiento.
  • 20. 2.3 Métodos packageexamples.practica2; importjade.core.Agent; importjade.core.behaviours.*; publicclass Ejemplo4 extends Agent{ // Inicialización del agente protectedvoidsetup() { // Añadir un comportamiento. addBehaviour(new MiComportamiento()); }   // Definición de un comportamiento privateclass MiComportamiento extends Behaviour { // Este método se ejecuta justo antes de la ejecución del método action() publicvoidonStart() { System.out.println("Esto se hace cada vez que se inicia el comportamiento"); }
  • 21. 2.3 Métodos // Funcion a realizar por el comportamiento publicvoidaction() { System.out.println("Hola a todos."); //Lo bloqueamos durante un segundo block(1000); System.out.println("Despues de 1 segundo"); } // Comprueba si el comportamiento ha finalizado publicboolean done(){ return true; } // Se ejecuta antes de finalizar el comportamiento publicintonEnd() { // Hace que el comportamiento se reinicie al finalizar. reset(); myAgent.addBehaviour(this); return0; } } }
  • 22. 2.4 Ejecución Cada agente tiene un scheduler propio. Planificación preemptiva. No existe concurrencia real dentro de un mismo agente. Ahorro de CPU y memoria. Un comportamiento puede bloquearse cuando termina action(). Se coloca en la cola de comportamientos bloqueados. Al desbloquear se quita de comportamientos bloqueados y se pone coloca al final de la cola de comportamientos activos. Mientras action() se ejecuta no se puede ejecutar ningún otro método.
  • 23. 2.4 Flujo de control doDelete() Si takeDown() Setup() No No Eliminar comportamiento de activos Done() Siguiente comportamiento de activos Si Action()