Download TraficoUrbano - Facultad de Ingeniería
Document related concepts
no text concepts found
Transcript
Informe del Trabajo Práctico: Simulación de Tráfico Urbano. Materia: 66.26 Arquitecturas Paralelas. Profesor: Dr. Ricardo, D. Pantazis. Integrantes del grupo: Federico Marino, 75.530 ( Ingeniería en Informática ). Diego Montaldo, 75.300 ( Ingeniería en Informática ). Andrés Pollitzer. 69.104 ( Ingeniería en Informática ). Fecha de entrega : marzo / 2002 Facultad de Ingeniería. Universidad de Buenos Aires, Argentina. - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Indice de temas: Abstract 2 Motivación 3 Etapas del trabajo práctico 4 De JPVM a RMI ( Comunicación ) 5 Descripcion sintética de la simulación 6 Modelo de la simulación 10 Diseño de la simulación 12 Java 13 Distribución del problema 13 Evaluación de performance : pruebas de Speed Up 14 Conclusiones 15 Propuesta de mejoras 16 Bibliografía, Sitios, Referencias 17 - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 1 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Abstract El Sistema de Simulación de Tráfico Urbano consta de un mapa o grafo que modela la estructura de una area urbana. La simulación consiste en poblar el mapa con vehículos de diferentes caraterísticas. Los cuales siguen rumbos y planes individuales, debiéndose calcular la interacción de cada uno con el resto de los vehículos en un lapso de tiempo. Un módulo permite visualizar en tiempo real la evolución del sistema en determinado sector del mapa. La finalidad del trabajo práctico es construir un sistema distribuido que utiliza n computadoras en forma paralela para llevar a cabo la simulación, implementeandolo en JAVA y comunicando los diferentes componentes mediante RMI ( Remote Method Invocation). RMI provee los mecanismos para registrar objetos remotos como recursos computacionales utilizables en un sistema distribuido y permite alocar tareas en estos objetos remotos, e invocar métodos remotos en forma transparente para el usuario sin modificar el código JAVA original. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 2 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Motivación: La idea surgio al buscar algun tipo de aplicación de calculo intensivo en donde el problema, por su naturaleza sea paralelilzable. Es decir, la evoluvion del sistema dependa de la evolución de n elementos individuales que interactuen. Se eligió como problema a resolver la Simulación de Tráfico Urbano, porque al ser un sistema multiagentes, su característica es adecuada para un sistema distribuido necesario para la simulación. Luego de investigar PVM ( Parallel Virtual Machine ), pensamos que podría ser factible utilizarlo como software de base. Encontramos una versión de PVM implementada en JAVA (JPVM : Java Parallel Virtual Machine ) que resulto interesante. Consideramos la posibilidad de utilizar la misma. Java es una tecnología orientada a objetos multiplataforma. Lo que da flexibilidad para utilizar distintos sistemas operativos como linux o windows, y facilidad para modelar el problema en cuestión si se piensa en objetos interactuando en lugar de procedimientos con entrada y salida de datos. Junto con PVM permitiría distribuir nuestro sistema en máquinas de diversas características para ejecutar la simulación. Finalmente comprendimos, a nuestro criterio, que RMI simplifica la programación, ya que es más versatil en cuanto a funcionalidad para la comunicación. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 3 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Etapas del trabajo práctico En base al análisis del problema a resolver, se planificaron las siguientes etapas: 1. Análisis y factibilidad del uso de JAVAPVM. 2. Modelado del tráfico urbano. 3. Diseño de clases y métodos. 4. Codificación del sistema en java ( Visualizador, Simulador, y Agentes ). Tareas complementarias: Codificación de una clase vector para facilitar el manejo de vectores. 5. Construcción de un módulo para visualizar los estados de la simulación. 6. Programación del generador del mapa de calles. 7. Testeo del sistema en una sola PC. 8. Paralelización del sistema en más de una máquina. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 4 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. De JPVM a RMI ( Comunicación ) JPVM ( Java Parallel virtual Machine ) es una interfaz que permite lanzar tareas remotas desarrolladas en Java. Básicamente usa conexión por sockets en todas las máquinas que integren el ambiente JPVM. La idea de JPVM es proporcionar una interfaz análoga al tradicional PVM, pero en el ambiente de desarrollo de Java, debido a que muchas aplicaciones están desarrolladas en ese ambiente. La ventaja principal reside en que aquellos programadores habituados a la plataforma PVM puedan fácilmente abordar PVM en Java. La curva de aprendizaje es rápida en este caso. Sin embargo, posee varias desventajas debido al hecho de tratar de implementar una plataforma que presenta un diseño estructurado en un lenguaje de programación orientado a objetos. Las desventajas residen en que no hace uso de las características de herencia y polimorfismo de Java en su implementación. Otra de las desventajas importantes es que no aprovecha las facilidades de comunicación en red que presenta Java tal como lo dice su filosofía “la computadora es la red y la máquina virtual (JVM) es la computadora”; implementadas en mecanismos de JRMI (Java Remote Method Invocation), CORBA y otros que brindan al desarrollador una interfaz de alto nivel para comunicaciones en redes de computadoras, en una forma muy transparente, prácticamente como si las tareas residieran en la misma computadora física. Estos mecanismos primitivos del lenguaje permiten realizar de manera mucho más eficiente y genérica lo que se haría bajo JPVM y aún más; sin las restricciones que presenta dicha interfaz, por lo que no existe un argumento favorable para el uso de JPVM al usar Java como plataforma de desarrollo. De todas formas se deja en claro que la idea básica de PVM, de reemplazar una computadora multiprocesador por varias monoprocesador en red; se utilizará en el diseño del presente trabajo práctico pero usando las facilidades que provee la plataforma de desarrollo, en lugar de JPVM. Articulos interesantes relativos al tema: Tema: Network Parallel Computing in Java. ( JPVM ). Archivo: jpvm.pdf , y jpvm-java98.pdf Autor: Adam J. Ferrari, University of Virginia, USA. Tema: Communication Performance of Java based Parallel Virtual Machines. Archivo: passing-java98.pdf Autor: Narendar Yalarnanchilli, y William cohen. University of Alabama, USA. Tema: JPVM Link: http://www.cs.virginia.edu/~ajf2j/jpvm.html Tema: An N-body method based on collaborative system model. (JRMI ). Archivo: distributed N-body method.pdf Autor: Yudong Sun - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 5 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Descripcion sintética de la simulación Introducción: sistemas multiagentes El objetivo del trabajo es resolver un problema conocido como “problema de N-cuerpos (N-Body problem) ó sistema multiagentes” mediante un sistema de colaboración distribuido. Es un problema que estudia la evolución de cada cuerpo bajo la influencia de todo el resto. En este caso particular, se buscará estudiar un modelo que simula la evolución de “móviles” dentro de una red de calles en un lapso de tiempo dado. Cada móvil posee una Inteligencia independiente que lo controla con el objetivo de alcanzar un punto de destino dentro del mapa de calles. Para implementar el sistema se utilizará el lenguaje JAVA como plataforma; y la tecnología RMI ( Remote Method Invocation ) para la comunicación de N workstations conectadas mediante una red. Simulación : La simulación consiste de “S” iteraciones (Steps), donde cada iteración representa un avance en el tiempo de “T” milisegundos. Un intervalo de tiempo “T” tipico utilizado ronda los 25 mseg. En cada iteración los móviles evaluan su entorno y definen sus futuras acciones. Hay 2 clases principales de objetos: Calles Móviles Diagrama 1: Calles con móviles. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 6 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Calle : Funciona como un contenedor de moviles que se encuentran dentro del espacio fisico que abarca la calle. Todo movil está incluido en una sola calle. Móvil : Consta de los siguientes componentes MOVIL Radar Conductor Volante Motor Diagrama 2: Componentes de un móvil. Radar : Genera una “vista de radar” del entorno del móvil, indicando la distancia al objeto más cercano a lo largo del perímetro. Para generar la vista, el móvil solicita a la calle en la que se encuentra una lista de los móviles que se encuentran dentro del radio de alcance de su radar. Luego para cada uno de estos, proyecta su influencia sobre el vector de distancias. A modo de simplificación de los cálculos se considera cada móvil como un círculo. Diagrama 3: Radar de un móvil. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 7 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Conductor : El objetivo final es alcanzar un punto de destino ( calle destino ). El objetivo parcial es alcanzar el centro de la “calle próxima”. Cuando el móvil es generado o alcanza un waypoin, ejecuta un algoritmo para determinar hacia cuál de las calles vecinas ( objetivo parcial ), con respecto a la calle actual, le conviene ir para alcanzar el objetivo final. Este algoritmo memoriza las calles recorridas para evitar pasar por lugares que ya recorrió. El conductor en ningún momento dispone de un mapa completo que le indique la ruta. Solo utiliza como datos de entrada, el vector distancia al punto destino y conoce cuales son las calles aledaneas a la calle actual. Una vez decidida cual será la calle próxima (waypoint), el conductor evalua que dirección y velocidad tomar para alcanzar la misma evitando chocar con otros móviles. df Diagrama 4: Objetivos posibles. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 8 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Distribución del sistema : Tráfico Urbano SIMULADOR Mapa de la Ciudad C2 C1 C3 C4 ... Cc Servidor AGENTE 1 AGENTE 2 AGENTE N M2 M4 M3 M1 ... Cliente 1 Cliente 2 M5 Mx Cliente N Diagrama 5: Simulador en servidor, y Agentes en clientes. Pseudocódigo del Algoritmo Simulación de Tráfico Urbano: El Simulador de la Ciudad con las Calles corre en el Servidor. Los Agentes que contienen los Móviles corren en los n Clientes. Tanto las Calles como los Móviles están publicados en el RMI Registry. Es posible invocar a los métodos de los móviles mediante: ip:objeto.metodo(); La Ciudad ejecuta dar un STEP. Las Calles ejecutan dar un STEP. Los Móviles ejecutan dar un STEP. El Móvil pide a la Calle actual, qué Móviles están cerca. La Calle dá al Móvil una Lista de Móviles cercanos al mismo. El Móvil pide a la Calle actual, qué Calle es vecina. El Móvil evalua el entorno y “decide” velocidad y dirección: pide a la Calle actual, Agregarlo ó quitarlo de la Calle. La calle pide a cada móvil su nueva posición. Pseudocódigo del Algoritmo Móvil-Conductor: Actualizar plan con respecto a objetivo final. Si no tiene w Actualizar calles vecinas y recorridas. Else Decide waypoint próximo. Obtener móviles cercanos. Generar vista de radar. Decidir velocidad y dirección. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 9 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Modelo de la simulación Clase Calle Calle vecina 2 Vertice A2 longitud Calle vecina A ancho Dirección POSICION Vertice B2 Vertice A1 Calle vecina B Calle vecina 1 Vertice B1 Clase Móvil: Vertice A2 longitud ancho velocidad POSICION Vertice B2 Vertice A1 Vertice B1 - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 10 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Las calles llevan una lista de los móviles que estan dentro. Hay un objeto ciudad que les avisa a las calles que modifiquen su estado T msegundos. A su vez las calles piden a los móviles que calculen su nueva posición T msegundos en el futuro. Una idea importante es que el objeto móvil va a decir cual es su nueva posición sin restricciones, Para tomar esta decisión, la idea es que el móvil simule la inteligencia de un conductor, o sea: El movil tendra inercia, o sea la velocidad no puede variar mas alla de cierto X por unidad de tiempo ( excepto en un choque ). Para tomar la decisión de cuál será su nueva posición, tendrá en cuenta la situación de los vehículos cercanos y debera estimar cual será la reacción de estos, para obtener los datos necesarios, el móvil pregunta a la calle actual quiénes estan en un radio de su posición, luego con estos datos, el móvil puede preguntar a los otros móviles cuál es su posición y velocidad actual, en base a eso puede predecir en que dirección se va a mover y asi evitar un choque. Además la velocidad no podra cambiar de ángulo más alla de cierto límite ( radio de giro de las ruedas ). El móvil no puede salir de la calle por los lados donde no hay vecinos ( o sea, no puede subir a las veredas) Aprovechando la herencia del lenguaje JAVA se generalizó las clases Calle y Móvil, en la clase Bloque para optimizar el código y reutilizarlo. Clase Bloque: Representa un rectangulo oritentado en un plano, con una posicion,dirección, ancho y largo. largo Vertice 2 ancho dirección Vertice 3 posición Vertice 1 Vertice 4 - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 11 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Diseño de la simulación Bloque Calle Móvil posición : vector dirección : vector longitud : real ancho : real posición : vector longitud : real ancho : real velocidad : vector peso : real radioDeGiro : real ( max angulo / tiempo ) getVertices( ) incluyePunto( vector ) agregarMovil( móvil, posición ) quitarMovil( móvil ) getMovilesCercanos( móvil, radio ) getCallesVecinas( ) update( t : time ) getVertices( ) avanzarPosicion( tiempo ) detenerPorChoque( tiempo ) getPosicion( ) getDirección( ) Diagrama de Clases en UML. Métodos de la Calle: getVertices( ) : devuelve los 4 vertices. incluyePunto( vector ) : indica si un punto cae dentro de la calle. agregarMovil( movil,posición ) : agrega un móvil a la calle en una posición. quitarMovil( movil ) : cuando el móvil sale de la calle. getMovilesCercanos( movil,radio ) : indica móviles en un radio r. getCallesVecinas( ) : indica las calles vecinas a la calle actual. Métodos del móvil: getVertices( ) : devuelve los 4 vertices. avanzarPosicion( tiempo ) : avanza el móvil a una posición en función del tiempo. detenerPorChoque( tiempo ) : detiene el móvil por un tiempo luego de un choque. getPosicion( ) : obtiene posición del móvil. getDirección( ) : obtiene dirección del móvil. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 12 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Diagrama de Secuencia del Móvil rdp :Conductor m5: Móvil c1 :Calle HacerStep( ) getMovilesCercanos( ) getCallesVecinas( ) avanzarPosicion( T ) quitarMovil( móvil ) Diagrama de Secuencia en UML. Java El código del sistema se encuentra en el disquette adjunto a la carpeta del informe. Distribución del problema La distribución de la carga es estática y el sistema es sincronizado en cada step. Las variables que determinan el tamaño del problema están dadas por la granularidad del tiempo y la cantidad de autos. La cantidad de mensajes intercambiados entre los objetos crece según n al cuadrado siendo n la cantidad de moviles y crece según (1/dt)*n siendo dt la cantidad de tiempo que representa cada step - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 13 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Evaluación de performance: Pruebas Speed Up Tiempo Total para 50 Iteraciones = 1250 milisegundos. Tiempo Total para 100 Iteraciones = 2500 milisegundos. Step Móviles Agentes 50 Iteraciones 100 Iteraciones 25 108 Versión standalone 100 seg 198 seg 25 108 1 89 seg 180 seg 25 108 2 121 seg 243 seg 25 108 4 230 seg 455 seg 25 108 8 260 seg 521 seg 600 500 segundos 400 50 iteraciones 300 100 iteraciones 200 100 0 1 2 4 8 agentes - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 14 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Consideraciones técnicas: 8 workstations ( 6 con red de 100Mbps. y 2 con 10 Mbps. ) 1 workstation más para el server ( Duron 1.2 Ghz 256 Ram y 100Mbps de red ) El uso de CPU es muy bajo en todos los Agentes : 5 a 15%. La máquina más potente es un 200% más rápida que la más lenta. Teniendo en cuenta esto, se repartió la cantidad de Móviles a calcular por cada Agente. Para la prueba de 4, se dividió las 8 en 2 grupos de similares a caraceristicas ( 4 grupos de pares de pcs del mismo modelo, 2 Celeron 1.7, 2 Celeron 500 Mhz, 2 Duron 1000 Mhz, y 2 Celeron 466 Mhz ) Observaciones Se puede observar que el sistema no funciona de la manera esperada. Al aumentar la cantidad de procesadores el tiempo de ejecución aumenta en lugar de reducirse. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 15 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Segunda Evaluación de performance: Pruebas Speed Up Se corrigieron errores de diseño de la versión incial. Se detectó que el procesamiento realizado por los agentes no se estaba ejecutando realmente en forma paralela, sino de manera secuencial, sumando a eso el Overhead propio de la comunicación entre agentes, lo cual incrementa los tiempos de ejecución. Solucionado este problema, se consiguió un speed UP positivo como lo muestra la siguiente tabla: Móviles Agentes (PCs) 50 iteraciones 100 Iteraciones Speed UP 40 1 54 segundos 112 segundos 1 40 2 (20 moviles c/u) 40 segundos 83 segundos 1,34 40 4 (10 moviles c/u) 34 segundos 72 segundos 1,55 40 8 (5 moviles c/u) 31 segundos 65 segundos 1,72 120 100 segundos 80 50 iteraciones 60 100 iteraciones 40 20 0 1 2 4 8 agentes (PCs) - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 16 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Propuesta de mejoras Distribución de la carga de procesamiento: 1) Estudiar el uso de Algoritmo de distribución de la carga dinámico 2) Repartir Tareas mediante Colas de trabajos 3) Un módulo que controle las tareas a realizar en cada máquina ajustando según del tiempo de respuesta de cada una. 4) Revisar politica de distribución: 1. Autos de calles cercanas en un mismo procesador. 2. Particionar mapa en forma dinámica según densidad de autos Mejora en performance: 1) Darle capacidad de memorización a las calles, para que almacenen los ultimos cálculos realizados que generalmente son reiterativos. 2) Optimizar tamaño de mensajes entre nodos para reducir el Ovehead de comunicación y reducir la frecuencia de mensajes. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 17 - Simulación de tráfico Urbano Federico Marino, Diego Montaldo, Andrés Pollitzer. Bibliografía, Sitios, Referencias Multiagent Systems ( A Modern Approach to Distributed Artificial Intelligence ) Gerhard Weiss, 2000. The MIT Press. PVM http://www.csm.ornl.gov/pvm/pvm_home.html JAVA PVM http://www.cs.virginia.edu/~ajf2j/jpvm.html Simulation of Traffic Systems - An Overview http://publish.uwo.ca/~jmalczew/gida_5/Pursula/Pursula.html#Con Tema: Dynamical systems,Individual-based modeling, and self organization. Archivo: dynamical systems, individual based Modeling.pdf . Punto 7.6 traffic. Autor: Edwin D. de Jong, y Bart G. de Boer. Artificial Intelligence Laboratory, Vrije Universiteit Brussel. http://arti.vub.ac.be Archivo: performance of particle tracking system.pdf Tema: evaluacion de performance de java en simulacion de control de particulas Autor: Ryoichi Hajima, Univ.Tokyo, Hongo 7-3-1, Bunkyo-ku, Tokyo,113-8656 Japan. - Ingeniería en Informática, Universidad de Buenos Aires. Argentina, Noviembre de 2003. 18