mates -estudio distancia más corta

14
Trabajo Matemáticas II: Ingeniera Multimedia Estudio de los algoritmos de evacuación / algoritmo del camino más cortos Dijkstra Jaume Lloret Enríquez

Upload: jaume-lloret-enriquez

Post on 10-Sep-2015

232 views

Category:

Documents


6 download

DESCRIPTION

trabajo mates ua distancia mas corta

TRANSCRIPT

  • Trabajo Matemticas II: Ingeniera Multimedia

    Estudio de los algoritmos de evacuacin / algoritmo del camino ms

    cortos Dijkstra

    Jaume Lloret Enrquez

  • Jaume Lloret Enrquez Matemticas II

    Introduccin

    El siguiente trabajo esta pensado para el estudio de posibles mtodos para el desarrollo de

    software para la evacuacin de lugares en caso de emergencia y el estudio de como deberan

    construir los edificios para reducir los posibles riesgos de peligros por aglomeracin de gente.

    En la actualidad existen diferentes software que realizan esta funcin uno de los mas conocidos

    es Simulex que se usa para calcular los riesgos en edificios cuando se dan casos de

    evacuaciones masivas.

    El modelo SIMULEX

    Se trata de un programa para la simulacin de la evacuacin de edificios desarrollado por P.

    Thompson en la compaa Integrated Environmental Solutions, el cual simula el movimiento

    individual de las personas travs de unos espacios geomtricamente definidos y complejos.

    Una primera parte del programa permite definir minuciosamente la geometra del edificio, a

    partir de datos numricos del mismo, o bien mediante diferentes rutinas es posible incorporar la

    geometra directamente desde programas de CAD, una vez se han definido todos los datos se

    efecta el clculo de las distancias mnimas, las anchuras y las capacidades de paso.

    A los ocupantes es posible asignarles una velocidad de circulacin aleatoria segn una

    2

  • Jaume Lloret Enrquez Matemticas II

    distribucin uniforme o bien una distribucin normal. Esta velocidad se ve afectada por la

    proximidad de otras personas y por la densidad de ocupacin. El programa representa a las

    personas mediante tres crculos. El modelo tambin considera la rotacin del cuerpo, la

    posibilidad de dar pasos laterales, y pequeos pasos de espaldas.

    El modelo tiene una estructura de red fina. El plano y la escalera se dividen en una cuadrcula

    de bloques. El programa tiene un algoritmo que permite calcular la distancia de cada bloque en

    el que esta dividi el plano a la salida ms cercana. Este algoritmo guarda la informacin que

    3

  • Jaume Lloret Enrquez Matemticas II

    obtiene en una tabla de distancias. Esto permite que el software disponga de diferentes

    herramientas, por ejemplo ofrece la posibilidad de realizar el denominado mapa distancias en

    el cual se representan con un mismo color los puntos situados a una cierta distancia de cada

    salida. Otra posibilidad consiste en determinar la ruta ms corta desde cualquier punto de la

    planta mediante una lnea se representa el recorrido que debera efectuar un ocupante situado

    en dicha dependencia. Y todo esto lo consigue mediante la utilizacin de la mencionada tabla

    de distancias y su algoritmo.

    En este programa considera individualmente a cada persona dentro del edificio. La salida del

    modelo rastrea las posiciones de los individuos a travs de la evacuacin y los ocupantes tienen

    una visin individual del edificio porque la eleccin de la ruta puede consistir en la ruta ms

    corta calculada por el mapa de distancias predefinido o una ruta definida por el usuario.

    Simulex modela una conducta implcita del ocupante, y el movimiento viene dado por una

    combinacin de los resultados de varios estudios en base a videos que analizan el movimiento

    individual, as como de resultados adicionales proporcionados por investigadores de

    conductismo humano. La empresa considera que su programa es el nico que modela

    exactamente la posicin coordinada de cada persona a una fraccin de un milmetro y tambin

    la relacin entre la distancia entre-personas y cambios en la velocidad de marcha.

    El programa usa para marcar la velocidad de marcha de cada ocupante la distancia entre las

    personas que pueda tener delante el ocupante y dice que la distancia entre personas es la

    distancia entre los centros de los cuerpos de dos individuos. Para esta funcin usan esta

    formula:

    V=V nsin(90(dbt db

    )) Cuando b

  • Jaume Lloret Enrquez Matemticas II

    que la velocidades de cada ocupante cambien segn estos parmetros.

    Mediante este programa se simula el movimiento de las personas y la visualizacin se realiza en

    intervalos de 0,1 segundos, puede observarse toda la planta en la cual se opera o bien

    mediante un zoom pueden observarse las zonas de inters. Tambin es posible estudiar

    alternativas de evacuacin de forma detallada y contemplar el efecto de las colas como

    consecuencia de diferentes velocidades de circulacin y de la congestin de las salidas.

    Mi programa en Geogebra

    Mi intencin en este estudio es intentar desarrollar mediante el programa Geogebra una

    funcin o programa que me sirviese para el estudio de las condiciones de evacuacin de

    edificios o lugares pblicos para poder reducir los posibles riesgos que estas situaciones

    provocan en lugares como en convenciones o fiestas.

    Al estudiar software como es el caso del comentado en el punto anterior el programa Simulex

    de IES podemos observar este tipo de software para el estudio de desalojo de gente dispone

    de diferentes capas. Estas son diferentes algoritmos que realizan la funciones necesarias para

    poder realizar los movimientos de las personas en esas circunstancias.

    5

  • Jaume Lloret Enrquez Matemticas II

    Podemos observar tres claros algoritmos en el caso de Simulex uno de ellos seria los

    algoritmos que dividen en mapa o plano en el cual los ocupantes van a estar en el caso de este

    programa estudiado divide el plano en cuadrados de 20cm2 para poder usar su algoritmo de

    calculo de distancias ms cortas. Yo en este caso he pensado que mediante los diagramas de

    Voronoi podra dividir el plano que un usuario quisiese que estudiramos y utilizar el punto

    central de cada uno de las diferentes celdas creadas mediante Voronoi como punto de un grafo

    y calcular la distancia que hay desde cada punto del grafo a otro.

    En mi caso otro punto importante sera construir el grafo aunque mediante los diagramas de

    Voronoi ya haya separado el mapa me faltara marcar cuales vrtices de los grafos no son

    accesible entre ellos aunque estn prximos debido por ejemplo a la existencia de paredes y

    tambin deber encontrar o marcar cual seria el vrtice final o de salida evidentemente me

    estoy refriendo en donde esta ubicada la salida o salidas del edificio o zona.

    Como ya he comentado en pargrafos anteriores otro de los algoritmos ms importantes que

    usan los software de evacuacin son los de calculo de distancias en mi coso creo interesante

    usar un algoritmo del camino ms corto como es por ejemplo el algoritmo de Dijkstra. Con este

    algoritmo calculare cual es el camino mas cercano a la posible salida del edificio o salidas.

    Tambin podemos observar que uno de los focos en el cual se centran los programas de

    escape es en la velocidad de los ocupantes de los edificios as como se debe modificar la

    velocidad de estos segn el espacio que haya entre dos o ms personas. En mi caso creo que

    esto podra calcularlo mediante la distancia entre dos objetos que se movieran dentro del plano

    6

  • Jaume Lloret Enrquez Matemticas II

    pero las velocidades en mi caso serian ficticias ya que no dispongo de estudios de velocidades

    de personas en situaciones de desalojo as que utilizare la velocidad estndar de paseo de un

    adulto.

    Por ultimo hay un punto muy importante que es el estudio del comportamiento de las personas

    en situaciones de riesgo y este estudio solo es posible observarlo mediante la recopilacin de

    datos y el estudio estadstico de estos. Por desgracia yo no dispongo de estos datos por lo

    tanto mi modelo obviara los posibles comportamientos que pudieran hacer los humanos en

    estas situaciones y mis objetos se comportaran ms como posibles robots.

    Por lo tanto quiero marcar que mi objetivo es desarrollar mediante el uso de diagramas de

    Voronoi, el uso de grafos y del algoritmo de Dijkstra un software que intente emular lo que

    ocurrir en el caso de una evacuacin de un edificio. O mejor dicho cual seria el camino que los

    ocupantes del edificio realizacin o seria el ms optimo si no hubiese un plan de evacuacin

    para si poder realizar nuestro propio plan o estudiar el riesgo de este.

    Diagramas de Voronoi

    Un diagrama de Voronoi es uno de los mtodos de interpolacin ms sencillos y que puede ser

    una de las herramientas matemticas ms verstiles despus de la suma y la resta. Consiste en

    la subdivisin de un plano en regiones formadas por los lugares ms prximos a cada uno de

    los puntos, es una construccin geomtrica que nos permite asignar a cada punto una regin,

    de forma que todo lo que contiene esa regin est ms cerca de este punto que de cualquier

    otro. Estn basados en la distancia euclidiana y son realmente interesantes cuando representan

    datos cualitativos. La distancia entre dos puntos se obtiene mediante la frmula deducida a

    partir del teorema de Pitgoras descrita ms abajo. Como dato representativo, al colocar sobre

    un plano dos puntos, la lnea que equidista de ambos sera el lmite que separa ambas regiones.

    7

  • Jaume Lloret Enrquez Matemticas II

    Por estas caractersticas, es una estructura fundamental dentro de la Geometra Computacional.

    Pero no slo se limita su uso en la Geometra Computacional. Este sencillo tipo de diagrama

    tiene infinidad de usos que repasaremos a continuacin, desde su uso en geografa, pasando

    por qumica y biologa, e incluso en el arte de la animacin digital y los videojuegos.

    Este es un ejemplo de diagrama de Voronoi realizado mediante puntos puestos aleatoriamente

    y utilizando la herramienta Geogebra mediante su funcin Voronoi[Lista de puntos]. Como se

    puede ver se calcula obteniendo las mediatices entre los diferentes puntos.

    8

  • Jaume Lloret Enrquez Matemticas II

    Tambin podemos observar que al trazar una circunferencia entre tres puntos se forma un

    tringulo. Pero cmo podemos conseguir Voronoi? Hay algn tipo de algoritmo que nos

    lleve a l de forma fcil? Si existen diferentes algoritmos que nos pueden ayudar a calcular el

    diagrama de Voronoi como son:

    Interseccin de semiplanos: Podemos construir cada regin de Voronoi por

    separado mediante la interseccin de n-1 semiplanos.

    Algoritmo Incremental: mediante una red de tringulos que cumplen la condicin

    de Delaunay.

    Divide y Vencers: el algoritmo sigue estas pautas del artculo La estrategia

    divide-y-vencers

    El Algoritmo de Fortune: Es el algoritmo ms complicado de todos pero tiene un

    gran uso en la informtica. El creador Fortune hizo la inteligente observacin de

    que poda calcularse el diagrama de Voronoi mediante barrido del plano

    construyendo una versin distorsionada de ste pero que es topolgicamente

    equivalente. Esta versin distorsionada del diagrama se basa en una

    transformacin que modifica la forma en que las distancias son medidas en el

    plano. El diagrama resultante tiene la misma estructura topolgica que el

    9

  • Jaume Lloret Enrquez Matemticas II

    diagrama de Voronoi, pero sus aristas son arcos parablicos, en vez de

    segmentos de lnea recta. Estas despus son corregidas.

    ALGORITMO DE DIJKSTRA

    El algoritmo de Dijkstra consiste en ir explorando todos los caminos ms cortos que parten del

    vrtice origen y que llevan a todos los dems vrtices. Cuando se obtiene el camino ms corto

    desde el vrtice origen, al resto de vrtices que componen el grafo, el algoritmo se detiene. Por

    lo tanto el algoritmo determina la ruta ms corta desde un nodo origen hacia los dems nodos

    para ello es requerido como entrada un grafo cuyas aristas posean pesos. Como observacin

    hay que sealar que los pesos de las aristas no pueden ser negativos si queremos usar el

    algoritmo de Dijkstra.

    Para trabajar con el primero creamos una tabla habr tantas columnas como vrtices haya y

    comenzamos marcando todos los vrtices como no utilizados. El algoritmo parte de un vrtice

    origen que ser ingresado (en nuestro caso sera donde digamos que esta ubicado el ocupante

    del edificio que debera ser aleatorio), a partir de ese vrtices evaluaremos sus adyacentes,

    como Dijkstra usa una tcnica greedy (La tcnica greedy utiliza el principio de que para que un

    camino sea ptimo, todos los caminos que contiene tambin deben ser ptimos) entre todos

    los vrtices adyacentes, buscamos el que est ms cerca de nuestro punto origen, lo tomamos

    como punto intermedio y vemos si podemos llegar ms rpido a travs de este vrtice a los

    dems. Despus escogemos al siguiente ms cercano (con las distancias ya actualizadas) y

    repetimos el proceso. Esto lo hacemos hasta que el vrtice no utilizado ms cercano sea

    nuestro destino. Al proceso de actualizar las distancias tomando como punto intermedio al

    nuevo vrtice se le conoce como relajacin. Para realizar Dijkstra usaremos una Cola de

    Prioridad o Heap, este Heap debe tener la propiedad de Min-Heap es decir cada vez que

    extraiga un elemento del Heap me debe devolver el de menor valor, en nuestro caso dicho

    valor ser el peso acumulado en los nodos.

    10

  • Jaume Lloret Enrquez Matemticas II

    El modelo de uso del algoritmo de Dijkstra sera este como entrada utilizaremos un Grafo

    ponderado dirigido de N vrtices con pesos positivos. Todos los vrtices (o - f) son distintos

    tales que existe algn camino entre los distintos vrtices desde el origen hasta el final . Y como

    salida obtendremos el peso de un camino de coste mnimo entre el punto de origen y el final

    del recorrido.

    Como primer paso definimos S0=0, T0=V . Asignamos a cada vrtice v en V una etiqueta L(v)=0

    si v=a y L(v)= para va. Para el segundo paso cuando i=1, 2, . . . , n. Suponiendo que hemos

    construido los conjuntos S0, S1, ..., Si1. Hacemos T i1=vSi1 . Si z S i1, definimos S = Si1 y

    detenemos la construccin. En caso contrario, escogemos el primer vrtice u en T i1 con la

    menor etiqueta, es decir, L(u)=min {L(v)vT i1} Definimos ui1 = u,

    S i=Si1{u i1}={u0 , u1 ,... , ui 1} (decimos que u entra), T i1=vSi1 y para cada vrtice v

    en Ti adyacente a u cambiamos su etiqueta L(v) por la nueva etiqueta

    L(v )min {L(v) , L(u)+ p(u ,v)} , es decir, actualizamos la etiqueta de los adyacentes de u

    por fuera de Si . Por ultimo el paso seria si i=n, definimos S=Sn y nos detenemos. Si i

  • Jaume Lloret Enrquez Matemticas II

    hacemos i=i+1 y volvemos al segundo paso. El algoritmo de Dijkstra termina en el momento en

    que encontramos el primer indice m para el cual z S m.

    Cmo lo he hecho?Primero de nada he puesto en el rea de trabajo grfica de Geogebra el plano sobre el cual

    quera estudiar el proceso de rutas de evacuacin ms prximas al ocupante del lugar. En este

    mapa he puesto una serie de puntos aleatorios que simulan el espacio que ocupa cada persona

    que estuviese en el edificio en mi modelo realmente he puesto muchas menos personas que las

    que realmente ocuparan el edificio. Creo que para realizar una estimacin lo ms prxima a la

    realidad abra que saber el numero exacto de ocupantes que pueden haber as como clculos

    proporcionales del volumen que ocuparan las diferentes tipos de personas.

    Para dividir el espacio que tenemos en el plano para poder as dibujar un grafo con el

    obtenemos una matriz de adyacencia entre espacios utilizo el diagrama de Voronoi partiendo la

    superficie mediante la interseccin de semiplanos que esta actualmente bien desenrollada en la

    biblioteca de Geogebra y mediante la introduccin de una serie de puntos esta te realiza el

    diagrama automticamente.

    12

  • Jaume Lloret Enrquez Matemticas II

    Como ya he comentado mediante la matriz de Voronoi puedo obtener que celdas son

    adyacentes entre ellas para poder hacer as mi matriz de adyaciencia. Por otro lado tambin

    gracias a Voronoi y a los puntos puedo calcular la distancia entre el centro de dos celdas

    adyacentes esto lo hay creando utilizando los puntos unindolos mediante un segmento de

    punto a punto. Una vez que tengo ya estas distancias puedo hacer mi matriz de distancias entre

    nodos adyacentes.

    Estas dos matrices las he construido ya que me sern necesarias para poder calcular luego el

    camino ms corto hasta la salida mediante el algoritmo de Dijkstra.

    Para realizar la ruta utilizo el algoritmo de Dijkstra este va dando iteraciones hasta llegar al

    objetivo yendo siempre por el camino ms corto posible. Para realizar esto he tenido que

    programar una pequea funcin en la que se van guardando las distancias y los nodos

    previamente visitados. Se ha programado en Java.

    La aplicacin funciona pulsando el botn [Hacer Camino] una vez que se pulsa este boton

    primero se marca el vector de la direccin del camino y a volver a pulsarlo es cundo se hace el

    camino siguiendo los nodos.

    13

  • Jaume Lloret Enrquez Matemticas II

    Conclusiones

    Por concluir me gustara sealar que este proyecto es muy interesante ya que mediante el

    podemos hacer una gran cantidad de estudios sobre posibles problemas. Pero como me he

    dado cuenta para realizar el proyecto en una ndole ms profesional y as poder obtener de

    verdad resultados interesantes seria necesario poder implementar algoritmos de

    comportamiento humano (inteligencia artificial) ya que en mi aplicacin solo se encuentra la

    ruta ms cercana segn los nodos que yo haya decidido marcar.

    Otra cosa importante a comentar trata de que al trabajar con Geogebra con gran cantidad de

    datos este tiende a ralentizarse mucho incluso al punto de bloquearse y morir provocandote

    perdidas en los datos almacenados que no hayas guardado he incluso en mi caso me ha

    corrompido un archivo guardado.

    En un futuro espero poder desarrollar ms funciones para este software ya que lo encuentro

    muy til e interesante.

    14