La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ENTORNO DE SIMULACIÓN BASADO EN AGENTES Carolina Puyuelo César Esandi

Presentaciones similares


Presentación del tema: "ENTORNO DE SIMULACIÓN BASADO EN AGENTES Carolina Puyuelo César Esandi"— Transcripción de la presentación:

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

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

9 Punto de referencia

10 ¿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.

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

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

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 ?
Modelado del comportamiento: Definición de Reglas Sencillas

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

17 Objetivos

18 Objetivos Desarrollar una plataforma de simulación genérica cuyos 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

19 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

20 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

21 SIMS: Entorno de Simulación basado en agentes

22 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

23 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

24 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); }

25 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

26 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...

27 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

28 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 { }

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

30 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;

31 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

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

33 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();

34 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

35 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

36 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();

37 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

38 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 Parado Andando Rojo Ámbar Parar Semáforo Coche Verde Andar Cuando encuentres... En estado... Realizar acción...

39 Entorno de simulación basado en Agentes Clase 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

40 Entorno de simulación basado en Agentes Clase 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

41 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); }

42 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.

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

44 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)

45 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());

46 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))))

47 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)) )

48 Herramientas para SIMS

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

50 Herramientas para SIMS
Paisaje.txt OBJETO ESCENARIO NOMBRE PaisajeRural CASILLAS_ANCHO 15 CASILLAS_ALTO 10 ANCHO_TOTAL 600 ALTO_TOTAL 400 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

51 Herramientas para SIMS
Otros aspectos Paquete com.next.gt [GAMELET] Agiliza la visualización de imágenes en la ventana Basado en Applets Soporte para juegos tipo Arcade en dos dimensiones Paquete JESS [JESS] Integra en Java toda la funcionalidad que ofrece CLIPS Ofrece su notación para escribir reglas La sintaxis nos recuerda a LISP

52 Herramientas para SIMS
Otros aspectos Trabajo anterior [FAB2000]  Correcto enfoque del problema  Resultado vistoso  Integración de los paquetes anteriores  Intento de generalizar a n dimensiones Estructuras de datos ineficientes Dificultad para seguir el código Imposibilidad de visualizar más de 2 dim.  Muy escaso uso de los paquetes

53 Ampliaciones

54 Ampliaciones Función tick() del Agente implementada en JESS
Facilidad para “ver” el entorno en un radio de varias casillas Flexibilidad para programar la forma de percibir Potencia: se puede extraer muchísima información del entorno

55 Ampliaciones Más atributos propios de cada agente
Coche: nivel de gasolina, color, nº pasajeros... Comportamiento Simple (Actual) Acción simple (Terreno + Otros Agentes) + Estado propio Comportamiento Complejo (Terreno + Otros Agentes) + Estado propio Acción simple Acción simple Acción Compuesta Ej: Adelantamiento, ir a gasolinera, montar “autoestopista” Acción simple

56 Conclusiones

57 Conclusiones SIMS: Características Campo abierto
Entorno de simulación basado en agentes (reactivos) Definición y edición rápida y sencilla de escenarios Modelado del comportamiento Integración con JESS

58 Conclusiones Campo abierto SIMS: Puntos a favor
Comenzando con unidades sencillas, surgen simulaciones complejas A partir de reglas sencillas se pueden modelar comportamientos muy complejos Grandes posibilidades de ampliación (en la línea de los comportamientos de los agentes Configuración mediante ficheros: Posibilidad de intercambiar escemarios, agentes, comportamientos... (Ver AgentSheets [AS2000])  SIMS: Puntos en contra Consumo de recursos proporcional al nº de agentes Movimiento discreto: Ciclos de reloj El resultado depende a veces de qué agente ejecuta su tick() antes

59 Referencias

60 Referencias [HN96] “Software Agents: An Overview”, Hyacinth S. Nwana, Knowledge Engineering Review, Vol 11, No 3, pp.1-40, Sept 1996 [AS2000] AgentSheets [FAB2000] “Simulación con agentes”, Luis Fabiani Bendicho, ISBC Enero 2000 [ARJA96] “Tactile Programming: A Unified Manipulation Paradigm Supporting Program Comprehension, Composition and Sharing”, Alexander Repenning and James Ambach, in Proceeding of Visual Languages 1996, Boulder, Colorado: IEEE Computer Society. [JESS] Jess, The Java Expert System Shell, [GAMELET] GAMELET, Mark G. Tacchi,


Descargar ppt "ENTORNO DE SIMULACIÓN BASADO EN AGENTES Carolina Puyuelo César Esandi"

Presentaciones similares


Anuncios Google