La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

M.C. Juan Carlos Olivares Rojas

Presentaciones similares


Presentación del tema: "M.C. Juan Carlos Olivares Rojas"— Transcripción de la presentación:

1 M.C. Juan Carlos Olivares Rojas
Agentes Inteligentes M.C. Juan Carlos Olivares Rojas @jcolivares Febrero, 2010

2 Competencia Específica
Conoce los fundamentos teóricos de la teoría de agentes y poderla aplicar en la práctica.

3 Agentes Es un software (que puede incluir hardware) que trabaja de manera autónoma y es capaz de realizar una serie de problemas de forma razonada. Los agentes se caracterizan por tener bien delimitados sus alcances. Generalmente reciben entrada a través de estímulos y realizan acciones hacia el exterior.

4 Arquitectura de Agentes

5 Agentes Inteligentes Un agente es algo que razona (agente viene del latín agere, hacer). Aparte de la autonomía y la racionalidad un agente debe de ser adaptable y en muchos casos “sociable”; es decir, poderse comunicar con otros agentes e incluso con el hombre mismo. Algunos autores a los agentes les llaman softbot.

6 Agentes Inteligentes

7 Aplicación de los Agentes
Inteligencia y Conocimiento Patrones Agentes Coordinación y Sincronización Robótica Móvil Robótica de Manipuladores Procesamiento de Imágenes Redes Neuronales

8 Agentes Inteligentes Se trata de emular la inteligencia natural
Aprendizaje Memoria Abstracción Razonamiento Solución de problemas Medio ambiente Percepción Imaginación Libre albedrio Actuación Conciencia Creatividad

9 Áreas de la Teoría de Agentes
IA Distribuida Ingeniería de software NOCION DE AGENCIA Sistemas distribuidos y redes POO

10 Cerebro Humano como Máquina
¿Una computadora biológica? 1011 Neuronas (procesadores) Poder desconocido 1000 – conexiones por neurona Capacidad basada en las conexiones. Cada neurona es muy compleja. Almacenamiento redundante. No binario, no estable y no asíncrono.

11 “Sensores Humanos” Neuronas Conexiones información acciones Sonido
Color Sabor Olor Tersura acciones

12 “Sensores Humanos” Sonido 102 Hz, 104 Hz Color 1015 Hz
Sabor ¿es una onda? Olor ¿es una reacción química? Tersura ¿es una onda? 104 Hz 102 Hz

13 MAS Multi-Agent System (Sistemas Multi Agentes) son una colección de agentes generalmente distribuidos geográficamente y que pueden trabajar en conjunto para el logro de objetivos. Se caracterizan por que no hay un control global del sistema (recordar que cada agente es autónomo), por lo que los datos están descentralizados y la comunicación es asíncrona.

14 MAS Los agentes pueden ser reactivos o proactivos.
Se dice que es un agente es reactivo cuando dado un estímulo es capaz de procesar la respuesta. Un agente es proactivo cuando antes de percibir estímulos se encuentra trabajando.

15 MAS Algunos ejemplos de agentes:
Un demonio en unix (poca racionalidad) Un sistema de calefacción/aire acondicionado automatizado (poca racionalidad) Un agente planificador de vuelos Un agente para recomendaciones en sistemas de comercio electrónico.

16 MAS Se considera que para que un agente inteligente esté realmente completo se necesita de las siguientes actitudes: Conocimientos Creencias Intenciones Obligaciones Emociones

17 MAS En los sistemas multiagente se hace sumamente necesario la movilidad. Existen diversas clasificaciones de MAS: COLABORATIVOS/ APRENDEN COOPERATIVOS AGENTES INTELIGENTES COLABORATIVOS AGENTES DE INTERFAZ AUTONOMOS APRENDEN

18 Actividad Para un Taxi con piloto automático (taximetro reemplazado por un agente inteligente ) Determine lo siguiente: Percepciones Acciones Metas Ambiente

19 Ejemplo de MAS

20 Ambientes Dependiendo del tipo de ambiente, la inteligencia del agente varía. Actualmente se maneja el concepto de AMI (Ambientes Inteligentes) para describir el cómputo generalmente ubicuo que puede interactuar con su entorno. Es una variante de la domótica y del cómputo automatizado. A continuación se muestran los diferentes tipos de ambientes.

21 Cómputo Ubicuo y AMI Inteligencia Ambiental
Las tendencias actuales en computación son a tener dispositivos cada vez más pequeños embebidos en el entorno que nos nueva forma de interactuar con el medio que nos rodea, por lo que se necesita que dichos elementos puedan comunicarse entre sí para formar Ambientes Inteligentes (AMI) Inteligencia Ambiental

22 ¿Qué se necesita para AMI?
¿Qué? WHAT ¿Donde? WHERE Consciencia del dispositivo Realizar servicios solos Realizar servicios coordinados ¿Quién? WHO ¿Cómo? HOW ¿Cuándo? WHEN Context-Aware y SOA

23 Ambientes Accesible/Inaccesible: Si los sensores proporcionan todo lo que hay que saber sobre el estado completo del ambiente. Determinístico/No-determinístico (estocástico): Si el estado siguiente del ambiente está determinado plenamente por el estado presente del mismo, y por la acción del agente.

24 Ambientes Episódico/No-episódico: Un ambiente episódico implica que los episodios siguientes no dependen de las acciones que ocurrían en episodios previos. Estático/Dinámico: Será estático todo ambiente que no cambie mientras el agente está pensando.

25 Ambientes Discreto/Continuo: se es discreto cuando existe un escaso número de percepciones y acciones en el ambiente. Continuo en el otro caso. Sin adversario/con adversarios racionales: los ambientes de estudio generalmente son contrincarios, aunque la realidad es más compleja, como la bolsa o los juegos deportivos.

26 Ejercicio de Ambientes

27 Tipos de Ambientes De acuerdo con Russell & Norving se tienen los siguientes tipos de agentes: De reflejo simple: se basan en reglas condición/acción. Carecen de memoria referente a estados pasados del mundo. Bien informado de lo que pasa: con un estado interno usado para almacanar estados pasados del mundo.

28 Tipos de Ambientes Basados en meta (proactivos): además de disponer de información sobre el estado, tienen una meta que describe situaciones deseables. Basados en Utilidad: basan su decisión en la teoría de la utilidad para actuar racionalmente.

29 Agente Reactivo (Reflejo)

30 Agentes bien informados

31 Agentes basados en Metas

32 Agentes basados en Utilidad

33 BDI Es una forma de representar agentes: Belief (creencias), Desire (deseos), Intentions (intenciones). Las creencias representan la base de conocimientos, los deseos los logros a obtener y las intenciones son la serie de acciones a realizar para lograr los objetivos. Todo esto se debe explicitar de alguna forma.

34 Ejemplo de BDI Ejemplo: TERMOSTATO D = mantener temperatura en T
B = { t (A), OK(T) } I = { Calentar, Enfriar, nada} Filtro: - Si A > T entonces I = Enfriar - Si A < T entonces I = Calentar - Si A = T entonces I = Nada

35 Ejemplo de BDI Acción: Case I de Enfriar Acción = bajar temp
Calentar Acción = subir temp Nada Acción = nada Después de todo esto el principal reto en teoría de agentes es el lenguaje de comunicación entre los agentes y su entorno.

36 Lenguajes de Agentes Existen diversos lenguajes de comunicación entre agentes la gran mayoría propietarios aunque en los últimos años se han estandarizado dos: KQML FIPA ACL En este curso se trabajará con la plataforma de agentes JADE. Los agentes se han hecho tan populares que ha surgido el paradigma de programación orientado a agentes AOP por sus siglas en inglés.

37 AOP Programación Orientada a Agentes Nuevo paradigma computacional
Especialización de la OOP Elemento central: Agentes BDI Agente: creencias + capacidades + compromisos

38 AOP Característica OOP AOP Unidad Básica Objecto Agente
Unidad Básica de Estados Sin restricciones Creencias, compromisos, … Proceso de cálculo Métodos de Respuesta y Paso de Mensajes Tipo de mensajes Informe, solicitud, oferta, promesa, declinación Limitaciones en métodos Ninguna Honestidad, Consistencia, …

39 <<agent>> agent-name
AOP Modelado de Agentes <<agent>> agent-name Role role 1, role 2, …, role n role dynamic 1, role dynamic 2, …, role dynamic n Organization organization 1, organization 2, ., organization n org dynamic 1, org dynamic 2, ., org dynamic n

40 Plataformas de Agentes
Existen muchas plataformas MAS como: Concordia FIPA-OS Zeus Gossip JATLite Odyssey Aglets Voyager

41 JADE Java Agent DEvelopment Framework fue desarrollado en Italia por Telecom (formalmente CSELT) junto con la Universidad de Parma en Julio de 1998. El objetivo fue crear una implementación concreta de la especificación FIPA. Actualmente es la plataforma de agentes más utilizada en el mundo.

42 FIPA Es un estándar para el manejo de agentes para poderlos hacer interoperables define una arquitectura básica así como un lenguaje de agentes: ACL basado en KQML. En el caso de JADE se tiene la característica de manejar agentes móviles donde si no se le define “inteligencia” simplemente funcionan como un middleware de aplicaciones distribuidas.

43 JADE Es un marco de trabajo de software para facilitar el desarrollo de sistemas multiagentes inteligentes e interoperables. Constituye un midelware para el desarrollo y un ambiente de ejecución para aplicaciones punto a punto que siguen el paradigma de agentes. Jade está basado en Java.

44 Arquitectura de JADE

45 Arquitectura JADE Cada instancia del ambiente de ejecución se llama Contenedor, dado que puede contener varios agentes. El conjunto de contenedores activos se llama Plataforma. Debe existir un contenedor denominado como principal (Main Container), en el cual todos los demás contenedores deben registrarse tan pronto inicien su ejecución en el sistema.

46 Arquitectura JADE El primer contenedor en iniciar en una plataforma debe ser el principal. Los demás contenedores deben saber dónde localizar al principal (host:port) Si existe otro contenedor principal, entonces este constituye otra plataforma. Los contenedores puede registrarse en cualquiera de las plataformas disponibles.

47 Arquitectura JADE El contenedor principal maneja dos agentes especiales: AMS (Agent Management System) Provee el servicio de nombres y representa la autoridad en el sistema (crear o eliminar agentes en un contenedor remoto). DF (Directory facilitator) Provee las páginas amarillas de servicios a través del cuál un agente puede encontrar a otros que proveen los servicios que requiere para completar sus metas.

48 Arquitectura JADE JADE cuenta con una interfaz gráfica para el manejo de los agentes. Para poder ejecutar JADE se requiere actualizar la variable de entorno classpath. En sistemas *X a través de export CLASSPATH=$CLASSPATH:/rutabibliotecas/jade.jar:/rutabibliotecas/otrosarchivos.jar

49 Arquitectura JADE En el caso de sistemas Windows puede hacer a través de línea de comandos o a través de la opción de variable de entorno dentro de la configuración principal del equipo. Una vez instalada la máquina virtual de Java se ejecuta: java jade.Boot para correr en modo texto JADE o bien java jade.Boot –gui para correrlo en modo gráfico.

50 Arquitectura JADE Interfaz Gráfica RMA (Remote Agent Management)

51 Arquitectura JADE Se cuenta con algunos agentes de utilidad como el agente sniffer que permite rastrear el paso de mensajes entre los agentes.

52 Arquitectura JADE El agente instrospector permite visualizar los mensajes y comportamientos de los agentes.

53 Arquitectura JADE El agente Dummy permite interactuar con otros agentes mandando y recibiendo mensajes.

54 Arquitectura JADE Para la comunicación se utiliza el protocolo IIOP utilizando RMI (con compatibilidad nativa con CORBA). La comunicación se puede dar: Entre agentes en el mismo contenedor Entre agentes en distintos contenedores pero en la misma máquina Entre agentes en distintas máquinas utilizando JADE Entre agentes en distintas plataformas

55 Ciclo de Vida de Agente en JADE

56 Modelo de Ejecución JADE usa la abstracción de Behavior o comportamiento para modelar las tareas que un agente debe realizar. JADE usa el modelo de concurrencia de hilo-por-agente en lugar de hilo-por-comportamiento para mantener pocos hilos en concurrencia.

57 Modelo de Ejecución Cada agente posee un programador de comportamientos que implementa una política “round-robin non-preemptive”. Se utilizan dos métodos para manejar la cola de comportamientos de agente: addBehaviour(Behaviour) y removeBehaviour(behaviour).

58 Hola Mundo en JADE En el caso de contar con un IDE como NetBeans se deberán incluir todos los archivos de biblioteca *.jar en el proyecto. Para poder ejecutarlo se necesitará modificar las propiedades del proyecto para que la clase principal sea jade.Boot y en los argumentos de ejecución la opción –gui seguida del nombre del agente y de la clase agente. Por ejemplo agente1:Comprador

59 Modelo de Ejecución

60 Programación en JADE El proyecto en su totalidad se puede bajar de la liga AgenteSimple.zip del sitio Web de la asignatura. import jade.core.*; import javax.swing.*; public class AgenteSimple extends Agent { @Override public void setup(){ System.out.println("Ejemplo de Agente Simple!!!");

61 Programación en JADE JOptionPane.showMessageDialog(null, "El nombre del agente es:"+getAID().getName()); public void takeDown(){ JOptionPane.showMessageDialog(null, "Se murió el agente");

62 Programación en JADE Un agente de manera predeterminada no recibe datos a través de su constructor por lo que debe pasárselos a través de línea de comandos. import jade.core.Agent; public class Parametros extends Agent { private String titulo; @Override protected void setup() { System.out.println("Prueba de

63 Programación en JADE Object[] args = getArguments();
if (args != null && args.length > 0) { titulo = (String) args[0]; System.out.println("Comprando CD:"+titulo); } else { System.out.println("No se recibieron parámetros. El agente morirá"); doDelete(); } @Override protected void takeDown() { System.out.println("El agente:"+getAID().getName()+" está colgando los tennis");

64 Programación en JADE @Override protected void takeDown() { System.out.println("El agente:"+getAID().getName()+" está colgando los tennis"); } Para ejecutarse sería algo así como: java jade.Boot –gui agente:MiClaseAgente(“Parametro1”, parametro2, etc…)

65 Programación en JADE Aunque se pueden crear agentes a partir de otra clase que por ejemplo tenga o no un método main() su funcionamiento no es el adecuado. Por ejemplo si quisiéramos que un agente tuviese una interfaz gráfica, sería el agente el cual debiera de crear la interfaz.

66 Programación en JADE Otra de las características fundamentales de los agentes es la programación de los comportamientos. Un comportamiento no es otra cosa que un método que ejecuta de manera constante (en forma concurrente un hilo). A continuación se muestra un ejemplo de definición de comportamiento de un agente con interfaz gráfica.

67 Programación en JADE import jade.core.Agent; import jade.core.behaviours.*; import java.util.*; public class Comportamiento extends Agent { private Hashtable catalogo; private Interfaz protected void setup() { setCatalogo(new Hashtable());

68 Programación en JADE i = new Interfaz(this); i.setVisible(true); protected void takeDown() { i.dispose(); public Hashtable getCatalogo() { return catalogo;

69 Programación en JADE public void setCatalogo(Hashtable catalogo) {
this.catalogo = catalogo; } En la interfaz se diseña una forma con un cuadro de texto y dos botones: uno para agregar el texto (implementa el comportamiento del agente) y otro para listar los datos.

70 Programación en JADE La clase que define el comportamiento tiene la siguiente estructura class comportamientoAgregar extends Behaviour{ private String titulo; private int precio; private Hashtable catalogo; public comportamientoAgregar(String t, int p, Hashtable h){ titulo = t;

71 Programación en JADE precio = p; catalogo = h; } public void action() { catalogo.put(titulo, precio); public boolean done() { return true;

72 Programación en JADE En lo que respecta al botón de agregar en la interfaz que manda llamar al comportamiento del agente se tiene: public void actualizarCatalogo() { agente.addBehaviour(new comportamientoAgregar(titulo.getText(), Integer.parseInt(precio.getText()), agente.getCatalogo())); }

73 Comportamientos en JADE
Existen algunos tipos de comportamientos básicos predefinidos para extender el uso de comportamientos: SimpleBehaviour: Es un comportamiento simple en el cual el usuario debe definir dentro del método onEnd() la condiciones sobre las cuales el comportamiento debe terminar.

74 Comportamientos en JADE
OneShotBehaviour: Es un comportamiento simple que se ejecuta sólo una vez y no puede ser bloqueado. Por lo tanto el método done() siempre retorna verdadero. La función done() retorna verdadero o falso para definir si el comportamiento finalizó o no. CyclicBehaviour: Este comportamiento simple puede ser ejecutado infinitamente, por lo que el método done() siempre retorna falso.

75 Comportamientos en JADE
FSMBehaviour.- Es un comportamiento compuesto que se ejecuta de acuerdo a una máquina de estado finito cuyos estados son definidos por el usuario. SequentialBehaviour.- Este comportamiento compuesto ejecuta secuencialmente varios subcomportamientos y termina cuando todos los subcomportamientos hayan terminado.6. ParallelBehaviour.- Es un comportamiento compuesto que ejecuta subcomportamientos concurrentemente y termina cuando una condici ́on particular en estos subcomportamien- tos se cumple.

76 Comportamientos en JADE
ParallelBehaviour: Es un comportamiento compuesto que ejecuta subcomportamientos concurrentemente y termina cuando una condición particular en estos subcomportamientos se cumple. TickerBehaviour: es un comportamiquento que se hace cada x tiempo predeterminado.

77 Comportamientos en JADE
public class AgenteMonitor extends Agent { ... addBehaviour(new TickerBehaviour(this,2000) { public void onTick() { //Instrucciones de monitoreo System.out.println(“ya casi es hora de salir”) }} }); ...

78 Clonación Los agentes se pueden clonar, para ello se deberán redefinir los métodos afterClone y beforeClone para definir funcionalidades básicas. Los agentes se pueden crear en tiempo de ejecución para ello se deberá importar la clase jade.core.RunTime. Runtime rt = Runtime.instance();

79 Clonación AgentContainer ac = getContainerController(); AgentController agente1= ac.createNewAgent("AgenteRecolector",”paquete.X",args); Agente1.start();

80 Ontologías en JADE Se pueden definir ontologías para un manejo homogéneo del vocabulario de los agentes. Las ontologías se basan en jade.content.onto.Ontologyy deben de definir tres dominios de conceptos: PredicateSchema, AgentActionSchema y ConceptSchema incluidas en el paquete jade.content.schema.

81 Ejemplo de Ontología package conexionOntology; import jade.content.onto.*; import jade.content.schema.*; public class conexionOntology extends Ontology { public static final String ONTOLOGY_NAME = "ontología de conexión”; public static final String URL_ = "Url”; public static final String URL_IP = "ip"; public static final String URL_PUERTO =

82 Ejemplo de Ontología "puerto"; public static final String CONEXIONA = "ConexionA"; public static final String CONEXIONA_URL = "url"; public static final String CONECTA = "Conecta"; public static final String CONECTA_URL = "url”; private static Ontology laInstancia = new conexionOntology();

83 Ejemplo de Ontología public static Ontology getInstance() {return laInstancia;} private conexionOntology() { super(ONTOLOGY_NAME, BasicOntology.getInstance()); try { add(new ConceptSchema(URL_), Url.class); add(new PredicateSchema(CONEXIONA), ConexionA.class); add(new AgentActionSchema(CONECTA),

84 Ejemplo de Ontología Conecta.class); U RL_ConceptSchema cs = (ConceptSchema) getSchema(URL_); cs.add(URL_IP, (PrimitiveSchema) getSchema(BasicOntology.STRING),ObjectSchema.OPTIONAL); cs.add(URL_PUERTO, (PrimitiveSchema) getSchema(BasicOntology.INTEGER)); PredicateSchema ps = (PredicateSchema) getSchema(CONEXIONA);

85 Ejemplo de Ontología ps.add(CONEXIONA_URL, (ConceptSchema) getSchema(URL_)); AgentActionSchema as = (AgentActionSchema) getSchema(CONECTA); as.add(CONECTA_URL, (ConceptSchema) getSchema(URL_)); }catch (OntologyException oe) {oe.printStackTrace(); }

86 Concepto de Ontología package conexionOntology; import jade.content.Concept; public class Url implements Concept { private String ip; private int puerto; public String getIp() {return ip;} public void setIp(String i) {ip = i;} public int getPuerto() {return puerto;} public void setPuerto(int p) {puerto = p;}}

87 Ejemplo deOntologías package conexionOntology; import jade.content.Predicate; public class ConexionA implements Predicate { private Url url; public Url getUrl() { return url;} public void setUrl(Url u) { url = u;}}

88 Ejemplo de Ontologías package conexionOntology; import jade.content.AgentAction; public class Conecta implements AgentAction { private Url url; public Url getUrl() { return url;} public void setUrl(Url u) { url = u; }}

89 Programación en JADE Como puede observarse en algunos casos da lo mismo implementar un comportamiento que definir un método cuando el comportamiento no es inteligente. La parte más interesante de los sistemas de agentes móviles es la comunicación entre los agentes. A continuación se muestra un ejemplo de cómo implementar el envío de mensajes

90 Programación en JADE import jade.core.*; import jade.lang.acl.*; import java.io.*; public class Mensajero extends Agent { private String nombre; private String contenido; public Mensajero(){ nombre = ""; contenido = ""; }

91 Programación en JADE @Override public void setup() { ACLMessage msg = new ACLMessage(ACLMessage.INFORM); BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduce el nombre del agente a enviar mensaje?"); try { nombre = bf.readLine();

92 Programación en JADE } catch (IOException ioe) { ioe.printStackTrace(); } msg.addReceiver(new AID(nombre, AID.ISLOCALNAME)); msg.setLanguage("Español"); System.out.println("Introduce el contenido del mensaje?"); try { contenido = bf.readLine();

93 Programación en JADE } catch (IOException ioe){ ioe.printStackTrace();
msg.setContent(contenido); send(msg); System.out.println("Contenido Enviado");

94 Programación en JADE import jade.core.*; import jade.lang.acl.*; public class ReceptorRespuesta extends public void setup(){ //receive es no bloueante... //ACLMessage msg = receive(); //Hasta que llegue un mensaje aquí se queda

95 Programación en JADE ACLMessage msg = blockingReceive(); if (msg != null) { System.out.println("Llego mensaje..."); String nombre = msg.getSender().getLocalName(); System.out.println("Mensaje enviado por:"+nombre); String contenido = msg.getContent();

96 Programación en JADE System.out.println("El contenido del mensaje es:"+contenido); ACLMessage reply = msg.createReply(); reply.setPerformative(ACLMessage.PROPOSE); String respuesta = String.valueOf(Math.random()*100); System.out.println("La respuesta a enviar es:"+respuesta); reply.setContent(""+respuesta);

97 Programación en JADE send(reply); } else {
System.out.println("No llegó mensaje");

98 Programación en JADE import jade.core.*; import jade.domain.*; import jade.domain.FIPAAgentManagement.*; public class Registro extends public void setup(){ System.out.println("Registrando Agente en la sección amarilla..."); DFAgentDescription dfd = new DFAgentDescription();

99 Programación en JADE dfd.setName(getAID()); ServiceDescription sd = new ServiceDescription(); sd.setType("Venta-Libros"); sd.setName("Agente-Vendedor"); dfd.addServices(sd); try { DFService.register(this, dfd); } catch (FIPAException fe) { fe.printStackTrace(); } }

100 Programación en JADE @Override protected void takeDown() { try {
DFService.deregister(this); } catch (FIPAException fe) { fe.printStackTrace(); } System.out.println("Desregistrando servicios en el DF"); }}

101 Prácticas Agente para Transacciones de Comercio Electrónico (“carrito de compras”) Un MAS que permita tener un agente para tomar pedido, recolectar pedido, cancelar pedido. Un buscador Web de páginas semánticas en dispositivos móviles

102 Bibliografía Winston, P. (1992) Artificial Intelligence, 3ra. Edición, Addison-Wesley. Fabio Bellifemine, Giovanni Caire, Agostino Poggi, Giovanni Rimassa, 2008, JADE: A software framework for developing multi-agent applications. Lessons learned, Information and Software Technology, 50(1):

103 ¿Preguntas, dudas y comentarios?


Descargar ppt "M.C. Juan Carlos Olivares Rojas"

Presentaciones similares


Anuncios Google