1 / 60

ENTORNO DE SIMULACIÓN BASADO EN AGENTES

ENTORNO DE SIMULACIÓN BASADO EN AGENTES. Carolina Puyuelo César Esandi Ingeniería de los Sistemas Basados en el Conocimiento Curso 2000-2001. Entorno de simulación basado en Agentes. Índice. Introducción AgentSheets Objetivos SIMS: Entorno de simulación basado en Agentes

lolita
Download Presentation

ENTORNO DE SIMULACIÓN BASADO EN AGENTES

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ENTORNO DE SIMULACIÓN BASADO EN AGENTES Carolina Puyuelo César Esandi Ingeniería de los Sistemas Basados en el Conocimiento Curso 2000-2001

  2. Entorno de simulación basado en Agentes Índice • Introducción • AgentSheets • Objetivos • SIMS: Entorno de simulación basado en Agentes • Herramientas para SIMS • Ampliaciones • Conclusiones

  3. Introducción

  4. Introducción Qué es un Simulador Simulacrum  retrato Simular  representar alguna cosa, fingiendo lo que no es • Simulador Herramienta que intenta reproducir • la evolución de un sistema. • Requerimientos: • Estado inicial • Leyes de evolución • Aplicaciones: • Meteorología, grupos de individuos, ingeniería...

  5. Introducción Qué es un Agente Agens, agentis agere  actuar La informática actual está haciendo un uso abusivo del término “Agente” utilizándolo en disciplinas muy dispares, desde el intercambio de datos en programación distribuida hasta el estudio de roles de comportamiento. Algunas características de los agentes : - Autonomía - Adaptabilidad / Aprendizaje - Orientados a un objetivo - Flexibles - .......

  6. Introducción Qué es un Agente En el presente estudio se ha trabajado con una categoría especial de agentes: los Agentes Reactivos Agentes Reactivos (Reactive Agents) [HN96] • Los agentes se encuentran embebidos en un entorno • Los agentes pueden captar el estado actual de dicho entorno. (O al menos, una parte del mismo) • Cada agente tiene definido un comportamiento: unas reglas que le dictan cómo actuar ante una situación determinada.

  7. Introducción Clasificación de los agentes software según Nwana Cooperación Aprendizaje Agentes Colaborativos Autonomía Agentes Reactivos (Reactive Agents) [HN96]

  8. Punto de referencia http://www.agentsheets.com

  9. ¿Qué ofrece AgentSheets ? • Un entorno de desarrollo de simulaciones muy potente orientado a los usuarios finales. Se pueden construir simulaciones interactivas para la web sin ningún conocimiento de programación en Java. • “Programación Tactil”[ARJA96]. • Construcción de escenarios desde un entorno visual • Definición del comportamiento de los agentes a través de la definición de un conjunto de reglas creado visualmente • Se permite a los usuarios crear sus propios agentes imponiéndoles un comportamiento mendiante reglas. • Los agentes creados pueden ser compartidos entre los usuarios de AgentSheets mediante un fórum en la Web.

  10. ¿Qué ofrece AgentSheets ? • Desarrollo de escenarios • Agentes “Pasivos” (Hierba) • Agentes “Activos” (Coche)

  11. ¿Qué ofrece AgentSheets ? Piezas: Agentes, Percepción, Eventos, Acciones

  12. ¿Qué ofrece AgentSheets ? Modelado del comportamiento: Definición de Reglas Sencillas

  13. ¿Qué ofrece AgentSheets ? Modelado del comportamiento: Definición de Reglas Sencillas

  14. ¿Qué ofrece AgentSheets ? Modelado del comportamiento: Definición de Reglas Sencillas

  15. ¿Qué ofrece AgentSheets ? Generación de todo tipo de escenarios

  16. Objetivos

  17. ObjetivosDesarrollar una plataforma de simulación genéricacuyos elementos sean agentes reactivos.Cada agente actuará de forma autónoma, interaccionando con el entorno.El conjunto de las actuaciones de todos los agentes constituirá la evolución del sistema.Desarrollar un método que permita definir el comportamiento de cada agente

  18. Objetivos Desarrollar un método que permita definir el comportamiento de cada agente [AS2000] • Flexible: Definición del comportamiento para cualquier agente • Potente: Definición de comportamientos relativamente complejos • Sencillo: de fácil aprendizaje

  19. Objetivos Desarrollar un conjunto de herramientas visuales [AS2000] [ARJA96] • Creador de Escenarios • Permite diseñar un escenario (para simular) concreto, con su entorno, sus agentes y los comportamientos de los mismos. • Simulador de Escenarios • Permite contemplar la evolución de los agentes de un escenario concreto. • Implementar un escenario concreto

  20. SIMS: Entorno de Simulación basado en agentes

  21. Entorno de simulación basado en Agentes Características • Escenarios en 2D • Geometría reticular: Mapas en cuadrícula • Evolución por ciclos • Plataforma JAVA 2 • Swing • Pretende cumplir todos los objetivos anteriores

  22. Entorno de simulación basado en Agentes Clase Mundo • Se trata de un mapa del terreno • El mapa está dividido en casillas rectangulares • Cada unidad de terreno se denomina “Posición” • Publica información sobre sí mismo: • Posiciones vecinas a una dada • Croquis (plano esquemático) del mapa

  23. Entorno de simulación basado en Agentes Clase Mundo public class Mundo { private Vector posiciones; Mundo (); private void borrarMundo (); public void size (int x, int y); public Posicion posicionDe(int xAbs, int yAbs); public Vector posicionesVecinasDe (Posicion pos); public int[][] croquis(Vector tipoInformaciones); }

  24. Entorno de simulación basado en Agentes Clase Posición • Representa una celda del tablero (Mundo) • Debe ser de un tipo determinado: Carretera, río, hierba... • Los agentes “caminan” sobre las distintas Posiciones del Mundo • Cada Posición anota los agentes que actualmente se encuentran sobre ella Agente Posición Mundo

  25. Entorno de simulación basado en Agentes Clase Posición (1): Ubicación public class Posicion { Posicion (Mundo mundo, int nuevaPosX, int nuevaPosY, int anchoEspacio, int altoEspacio); public int posX(); public int posY(); public void nuevaDescripcion (String d); // A partir de d se extrae la imagen correspondiente public String descripcion(); // Tipo de posición: Carretera, hierba, río...

  26. Entorno de simulación basado en Agentes Clase Posición (2): Ayudas a los agentes • Dibuja cada uno de los agentes situados sobre la posición • Indica a cada uno de los agentes que actúe public Vector agentes = new Vector (); //Agentes sobre esta posición public void draw (); public void dibujar (Image frame, int xFrame, int yFrame, int anchoFrame, int altoFrame); // 1º La posición se dibuja a sí misma // 2º Se dibujan todos los agentes del vector agentes public void tick(); //Pide a los agentes de esta posición que actúen

  27. Entorno de simulación basado en Agentes Clase Agente: Características • Clase abstracta • Soporte para implementaciones concretas como coches, personas, semáforos... • Cada agente se sitúa sobre una posición • La función tick() hace que el agente se mueva según el entorno actual y su comportamiento • La función draw() dibuja al agente en la pantalla periódicamente Public abstract class Agente { }

  28. Percepción del mundo Ejecución de acciones Entorno de simulación basado en Agentes Clase Agente: Características Aplicación de las reglas de comportamiento

  29. Entorno de simulación basado en Agentes Clase Agente: Estructuras de datos (I) protected int orientacionAgente; private Posicion posicion; public Posicion nuevaPosicion; public int frecuencia; //cada cuántos turnos actuamos. public int turnoActual; protected Vector mensajes; //tipos de mensajes a recibir public abstract int framesTotal (); public abstract int framesHorizontal (); // Identicacion del tipo de agente. Ej: Persona, Coche... protected String tipo; // Nombre del agente en particular. Ejemplo: Carlos, Rubén protected String nombre;

  30. Entorno de simulación basado en Agentes Clase Agente: Estructuras de datos (II) • Lista de posiciones sobre las que puede estar un agente • Lista de acciones que puede realizar un agente • Lista de estados que puede tomar un agente • Pila de objetivos pendientes que debe realizar el agente • Estado actual del agente • Tabla de comportamiento • Entradas: Estado del agente y agente cercano • Devuelve: acción a realizar ante esa situación protected Vector posicionesPermitidas; protected Vector accionesPosibles; protected Vector estadosPosibles; private Vector pilaObjetivos; protected String estado; protected Hashtable tablaComportamientos

  31. Cuando encuentres... En estado... Realizar acción... Coche Parado Pitar Andando Parar Semáforo Rojo Parar Ámbar Parar Verde Andar Entorno de simulación basado en Agentes Clase Agente: Estructuras de datos (III) Funcionamiento de la tabla de Comportamientos de ...

  32. Entorno de simulación basado en Agentes Clase Agente: Funciones //Gestión de los objetivos a alcanzar por el agente void apilaObjetivo(Accion accion); void desapilaObjetivo(); int calculaOrientacion(Posicion pIni, Posicion pFin); boolean estaEnfrente(Posicion pos); void reorientarse(); // toma la orientación correspondi. void recibeMensaje(Vector mensaje); //desde el exterior protected void ejecutaSiguienteAccion(); //ag. concreto void actualizarPosicion();//Actualiza después del tick() void draw(Graphics g); void tick();

  33. Entorno de simulación basado en Agentes Clase Agente: Función tick() public void tick(){ if(turnoActual != 0) return; else... // Espera turno Vector accionesARealizar = new Vector(); // ENTORNO + COMPORTAMIENTO = ACCION para cada posición vecina p { para cada agente a que se encuentra en p { Accion accion = getAccion(a.getTipo(), a.getEstado()); accionesARealizar.addElement(accion);//Comportam. } } Operaciones posteriores: -Ordenar las acciones por prioridades -Reorientar el agente -Apilar una o varias acciones en la pila de objetivos ejecutaSiguienteAccion(); // Agente Concreto }

  34. Entorno de simulación basado en Agentes Clase Simulador: Integración de lo anterior • (Posible inicialización a partir de un fichero de texto) • Mundo (escenario de n x m Posiciones) • Agentes • Sistema de visualización

  35. Entorno de simulación basado en Agentes Clase Simulador: Integración de lo anterior • Por ser un applet:void init(); void start(); void stop(); void run(); • Para la ejecución: void elegirModo (String s); • //"CONTINUO" => por tiempo cada SLEEP_MILLIS milisegundos //"TECLADO" => por pulsación de ENTER. • String modoActual (); // Devuelve el modo actual • Gestión de los agentes: • void addAgente (Agente);void removeAgente (Agente);boolean handleRequestedEvent (Event); • void clickRaton(Point p); //El usuario selecciona un agente • void seleccionarAgente(Agente a); • void deSeleccionarAgente();

  36. Entorno de simulación basado en Agentes Clase Concreta Semáforo • Implementación de la clase Agente • Estructura de datos personalizada class Semaforo extends Agente Tipo = “Semáforo” Posiciones permitidas = {“road”,”cebra”} Estados = {“rojo”,”ámbar”,”verde”} Acciones = {“Intermitencia”} Comportamiento: {} (No reacciona ante ningún agente) Representación = semaforo.gif

  37. Cuando encuentres... En estado... Realizar acción... Coche Parado Parar Andando Parar Semáforo Rojo Parar Ámbar Parar Verde Andar Entorno de simulación basado en Agentes Clase Concreta Coche • Implementación de la clase Agente • Estructura de datos personalizada class Coche extends Agente Tipo = “Coche” Posiciones permitidas = {“road”,”cebra”} Estados = {“andando”,”parado”} Acciones = {“Ir_a”,”parar”,”andar”} Comportamiento: Representación = coche.gif

  38. Entorno de simulación basado en AgentesClase Concreta Persona Implementación de la clase Agente Estructura de datos personalizada class Persona extends Agente Tipo = “Persona” Posiciones permitidas = {“acera”,”cebra”} Estados = {“andando”,”parado”} Acciones = {“Ir_a”,”parar”,”andar”,”coger”} Comportamiento: Representación = persona.gif

  39. Entorno de simulación basado en AgentesClase Concreta Tesoro Implementación de la clase Agente Estructura de datos personalizada class Tesoro extends Agente Tipo = “Tesoro” Posiciones permitidas = {“acera”} Estados = {“activado”,”oculto”} Acciones = {“Intermitencia”} Comportamiento: No reacciona ante ningún agente Representación = tesoro.gif

  40. Entorno de simulación basado en Agentes Clase Concreta CarreteraAutoCarga • Permite simular un escenario almacenado previamente en un fichero Public class CarreteraAutoCarga extends Simulador{ CarreteraAutoCarga(); // Solicita al usuario un escenario previamente almacenado // Extrae datos (Parser) de dicho fichero // Inicializa el objeto Mundo con las Posiciones adecuadas // Crea los agentes correspondientes y les asigna Posición boolean cargaEscenario(); //Dado el nombre de un agente, devuelve una instancia //del mismo Agente creaAgentePorNombre(String nombre); }

  41. Entorno de simulación basado en Agentes Clase ResuelveRutasJESS • El usuario selecciona un agente con el ratón • El usuario ordena al agente que se desplace hacia una posición determinada • Esta clase halla el camino más corto para ir de la posición actual del agente a otra dada • Los cálculos se realizan sobre un croquis del terreno con las posiciones sobre las que se puede mover el agente • Se introduce el objetivo (IR_A) en la pila del agente • El agente se va desplazando hacia esa posición, teniendo en cuenta objetivos más prioritarios, como por ejemplo, parar ante un semáforo.

  42. Entorno de simulación basado en Agentes Clase ResuelveRutasJESS 2º Fijo destino 1º Selecciono agente...

  43. Entorno de simulación basado en Agentes Clase ResuelveRutasJESS: Implementación • Integración de JAVA con JESS (CLIPS) • Algoritmo de RETE • Procedimiento: • 2º.- JESS • Extraer parámetros de la tabla de intercambio a la memoria de trabajo • Ejecutar acciones • 1º.- JAVA • Crear motor Rete • Especificar fichero .clp • Introducir parámetros (Objetos) en una tabla de intercambio • 3º.- JAVA • Ejecutar fichero .clp • rete.run(); • 4º.- JESS • Ejecución del fichero CLIPS tal y como se ha estudiado en el curso • Colocar resultados en tabla de intercambio • 5º.- JAVA • Extracción de resultados • Eliminar objeto Rete (si procede)

  44. Entorno de simulación basado en Agentes Clase ResuelveRutasJESS: Implementación (II) 1º JAVA String ficheroJESS = "(batch \"ir_a.clp"\)"; String bindAltoTablero = "(bind ?*alto-tablero*” +tablero.length + " )"; ...Más parámetros iniciales... Rete rete = new Rete(); rete.store ("RUTA-SOLUCION", sol); // Sol es Vector 2º JESS rete.executeCommand(ficheroJESS); rete.executeCommand(bindAltoTablero);// ...Más.. rete.executeCommand ("(assert (ruta-solucion (fetch RUTA-SOLUCION)))"); rete.executeCommand(“(reset)”); 3º JAVA rete.run (); 4º JESS: Ejecución del fichero .clp 5º JAVA Value val = rete.fetch ("RUTA-SOLUCION"); sol = (Vector)val.externalAddressValue( rete.getGlobalContext());

  45. Entorno de simulación basado en Agentes Clase ResuelveRutasJESS: Implementación (III) (defrule inicial (initial-fact) => ... (assert (nodo (estado ?*inicial*) (camino ?indice-inicial) (heuristica (heuristica ?*inicial*)) (coste 0) (clase abierto))) (assert (encontrada no))) (defrule paso-arriba; También reglas paso-abajo, paso-izquierda... (nodo (estado ?x ?y&:(and (> ?y 0) (= ?*ok* (valor-de (create$ ?x (- ?y 1)))))) (camino $?cam) (coste ?cost) (clase cerrado)) => (bind ?punto (create$ ?x (- ?y 1))) (assert (nodo (estado ?punto) (camino $?cam (indice-de ?punto)) (heuristica (heuristica ?punto)) (coste (+ 1 ?cost)) (clase abierto))))

  46. Entorno de simulación basado en Agentes Clase ResuelveRutasJESS: Implementación (IV) ; Expandimos el nodo mas prometedor (defrule pasa-el-mejor-a-cerrado (declare (salience -10)) ?nodo <- (nodo (clase abierto) (heuristica ?h1)) (not (nodo (clase abierto) (heuristica ?h2&:(< ?h2 ?h1)))) => (modify ?nodo (clase cerrado))) (defrule borra-repetido ... ) ; Borra nodos repetidos (defrule borra-costoso ...) ; Borra nodos con coste mayor que la mejor heurística (defrule encontrada-solucion (declare (salience 50)) ... (ruta-solucion ?rs) ; Vector colocado desde java => ; Rellenamos el vector solución para que se pueda rescatar desde java (while (<= ?i ?lon) do (bind ?coor-x (nth$ 1 (coordenadas-de (nth$ ?i $?pasos)))) (bind ?coor-y (nth$ 2 (coordenadas-de (nth$ ?i $?pasos)))) ;Añadimos las coordenadas de la casilla al vector solucion (call ?rs addElement (implode$ (create$ ?coor-x)) ) (call ?rs addElement (implode$ (create$ ?coor-y)) ) (bind ?i (+ ?i 1)) ) )

  47. Herramientas para SIMS

  48. Herramientas para SIMS Generador de Escenarios • Permite generar o editar un escenario • Interfaz gráfica Creación OBJETO ESCENARIO ALTO_TOTAL 400 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 TIPOS_SUELO 3 tree NUMERO_AGENTES 3 6 13 0 TIPOS_AGENTE 2 coche Edición

  49. Paisaje.txt Herramientas para SIMS OBJETO ESCENARIO NOMBRE PaisajeRural CASILLAS_ANCHO 15 CASILLAS_ALTO 10 ANCHO_TOTAL 600 ALTO_TOTAL 400 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 1 1 1 11 0 1 1 1 1 0 0 0 1 1 0 1 0 0 1 0 0 2 0 1 1 0 0 1 1 0 1 0 0 1 0 0 2 0 0 1 1 1 1 1 1 1 0 0 1 0 0 2 0 0 0 0 0 1 0 2 1 1 1 1 0 TIPOS_SUELO 3 ground road tree NUMERO_AGENTES 3 6 13 0 7 3 0 7 10 1 TIPOS_AGENTE 2 coche semaforo Descripción de escenarios: ficheros de texto • Tamaño del mapa • Descripción del mapa • Leyenda que permite averiguar a qué tipo de Posición pertenece cada código • Coordenadas y tipo de los agentes • Leyenda que resuelve el tipo de agentes

More Related