• No se han encontrado resultados

Capítulo 2. Estado del Arte:

5. Capítulo Modelo Propuesto

5.12. Definición de Algoritmo de enrutamiento

Basado en los parámetros descritos en el ITEM 5.4. los cuales estarán

almacenados en la base de datos y teniendo en cuenta el requerimiento del

usuario (origen - destino), el algoritmo de enrutamiento definido en la parte de

programación de la aplicación se guía por una serie de reglas para determinar a

su criterio la mejor ruta, este algoritmo fue diseñado basado en el algoritmo de la

ruta más corta llamado Dijkstra, y el funcionamiento y características del protocolo

OSPF para aplicarlo a enrutamiento de tráfico vehicular, el sistema define una

serie de capas de malla vehicular con las diferentes orientaciones, Norte-Sur,

Sur-Norte, Oriente-Occidente y Occidente-Oriente, cada nodo tiene predefinido el

nombre de su nodo vecino en todas las orientaciones, ver ANEXO 1 DIAGRAMA

DE NODOS.

Para determinar la ruta óptima el aplicativo toma el nodo origen y el nodo destino,

y verifica la orientación de la ruta, posteriormente procede a comenzar a hacer el

barrido teniendo en cuenta la orientación, desde el nodo origen, es decir si voy

desde el nor-oriente para el sur-occidente, entonces el algoritmo verifica los

vecinos del nodo origen que quedan al sur y al occidente de este, posteriormente

comienza a realizar la misma operación con los nodos vecinos de los nodos

vecinos originales y así hasta llegar al nodo destino, el algoritmo realiza un

cálculo de la rutas para verificar cual tiene algún inconveniente, puede que

algunas rutas no sean recomendadas por tener bloqueo en algún tramo, o puede

que salgan varias rutas propuestas con buenos puntajes, el sistema recomendará

la ruta origen-destino de mejor puntaje.

Teniendo en cuenta que el algoritmo para realizar el cálculo general de la ruta

antes de proponer la definitiva, debe hacer una serie de operaciones y revisar

todos los parámetros de los tramos por los que pasa la ruta, se hizo una

asignación de puntaje a los diferentes parámetros, ya que por ejemplo no es lo

mismo transitar por una vía de 5 carriles que no tiene semáforos que por una vía

de 5 carriles que tiene “n” semáforos, ya que como nos hemos dado cuenta un

semáforo nos hace por un lado disminuir velocidad en la intersección y por otro

quedar estático entre 30 segundos y 240 segundos, en esos 240 segundos a una

velocidad promedio de 50 km/hora podemos avanzar poco más de 3 kilómetros lo

que traducido a cuadras promedio dará más de 20 cuadras. Igualmente el

sistema no debe dar el mismo puntaje a una vía en perfecto estado que a una vía

en pésimo estado, entendiendo ESTADO DE VIA como al estado del pavimento y

a la cantidad de huecos que en él puede haber.

La ruta que más puntaje tenga es la ruta más opcionada a ser la mejor, mientras

que la ruta que presente muchos inconvenientes y demoras será la ruta con

menor puntaje, también se puede presentar que no hay una ruta disponible para

llegar de un origen a un destino, para estos casos el sistema le dirá al usuario que

se requiere modificar Origen, esto se puede dar cuando por ejemplo el algoritmo

encuentre bloqueo en todas las posibles rutas, por cualquier razón como por

ejemplo velocidad promedio cero, vías cerradas, bloqueo de vías, etc. Para este

caso el algoritmo desplazara el punto de origen hacia la orientación opuesta y de

nuevo buscara la mejor ruta, se el origen no tiene como desplazarse es decir,

está ubicado en nodos extremos, se muestra en pantalla un mensaje donde se

dice que no hay rutas para proponer.

Comenzamos entonces a describir el paso a paso del algoritmo de enrutamiento:

1. El usuario debe registrar en la aplicación un origen y un destino que se

encuentre dentro de la malla vial seleccionada para el prototipo.

2. La aplicación almacenara temporalmente en una variable la información

del punto origen y la información del punto destino.

3. La aplicación determina la orientación por medio de una comparación

numérica de mayor, menor, por ejemplo si mi origen es en la calle 170 y

voy a la calle 26, se sabe que voy de norte a sur realizando comparación

numérica entre la calle origen y la calle destino, dado que el valor numérico

de la calle origen es mayor que el valor numérico de la calle destino, si por

el contrario encuentro que el valor numérico del origen es menor que el

valor numérico del destino, numéricamente hablando, se determina que la

orientación es de sur a norte, igualmente ocurre con las carreras donde si

voy de valor numérico mayor a valor numérico menor significa que voy de

occidente a oriente y si voy de valor numérico menor a valor numérico

mayor significa que voy de oriente a occidente. Se determina la orientación

de la ruta.

4. De acuerdo a la orientación determinada el algoritmo busca los nodos

inmediatamente vecinos al origen que se encuentren en la orientación

hacia el destino, y almacena esta información de manera temporal, cada

nodo tiene almacenado en la tabla de vecinos los nodos en cada una de

las orientaciones, por ejemplo un nodo central tendrá vecinos hacia el

norte, hacia el sur, hacia el oriente y hacia el occidente, un nodo final por el

contrario no contara con vecinos en todas las orientaciones.

5. Para cada nodo vecino encontrado, el algoritmo aplica nuevamente buscar

los vecinos en la orientación que se haya determinado, siendo las

posibilidades de orientación las siguientes: hacia el norte, hacia el sur,

hacia el oriente, hacia el occidente, hacia el sur-oriente, hacia el sur-

occidente, hacia el nor-oriente o hacia el nor-occidente,

6. Cada vez que el algoritmo ubica un nodo vecino hacia la orientación

determinada, compara este nuevo vecino con el destino para validar si

llego al punto final y realiza nuevamente comparación de orientación para

saber que ruta debe tomar.

7. Cada vez que el algoritmo encuentra los vecinos del nodo en cualquier

orientación, almacena en una tabla temporal las rutas que ha encontrado,

es decir si de un punto A a un punto B contamos con 3 posibles rutas, en la

tabla temporal almacena las rutas tramo a tramo para estas tres rutas.

8. Cuando el algoritmo encuentra igualdad entre en punto destino y el nodo

vecino evaluado, se almacena la ruta.

9. Se valora el costo de las rutas almacenadas aplicando la fórmula que toma

todos los valores de las variables definidas para la métrica.

10. Se realiza comparación numérica para encontrar la ruta que mayor valor

de costo tiene.

11. Se muestra al usuario la ruta de mayor valor, la cual es la sugerencia.

12. Para los casos donde alguna de las variables definidas para la métrica

poseen en ese momento un valor cero, estos tramos son imposibilitados y

las rutas que tengan estos tramos no serán sugeridas.

A continuación se muestra el diagrama de flujo del algoritmo aplicado para

determinar la ruta óptima:

INICIO Ingresa Origen y Destino Determina orientaciones Busca nodos vecinos en la orientaciones Algun Nodo vecino = Destino Almacena en tabla temporal informacion rutas Almacena Origen y Destino en Temporal Consulta tabla de nodos Muestra ruta en pantalla Asigna codigo de ruta a cada nodo

vecino Calcula puntaje de rutas y los almacena Algun Nodo vecino = Destino Consulta tabla de vias y almacena en tabla temporal Calcula puntajes de rutas Almacena en tabla temporal

Busca los ultimos nodos

almacenados Tabla temporal

NO

SI

Finaliza Algoritmo Visualiza la ruta

de mejor puntaje Hay rutas para

proponer SI Despliega mensaje de modificar Origen NO SI NO Modifica origen desplazandolo hacia la orientacion opuesta Tiene nodos hacia orientacion opuesta SI NO

No hay rutas para proponer Tabla temporal de

Ilustración 28- Diagrama de flujo algoritmo de enrutamiento. Fuente: propia

Puntuación de parámetros:

Tipo Evento Observación Puntaje Observaciones Puntaje

Contraflujo horario 0 Tramo vetado – No se recomienda ruta Estado

Excelente 4 Tiene el mejor puntaje

Bueno 3 Tiene puntaje bueno pero no es el mejor Regular 2 Tiene puntaje bajo

Malo 1 Tiene puntaje muy bajo

Imposible 0 Tramo vetado – No se recomienda ruta Obstáculo

Varado 1 Puntaje bajo por obstaculizar vía Obra Civil 1 Puntaje bajo por obstaculizar vía Choque 1 Puntaje bajo por obstaculizar vía Congestión 1 Puntaje bajo por obstaculizar vía Reten 1 Puntaje bajo por obstaculizar vía Daño semaforo 1 Puntaje bajo por obstaculizar vía via cerrada 0 Tramo vetado – No se recomienda ruta Velocidad

0 a 10 0

Tramo vetado – pero puede recomendarse ruta

10 a 30 1 Puntaje bajo por baja velocidad 30 a 50 2 Puntaje medio por velocidad media 60 a 100 4 Puntaje alto por maxima velocidad

Semáforos

0 3 Puntaje alto por no tener semáforos 1 2 Puntaje medio por pocos semáforos 2 1 Puntaje bajo por muchos semáforos

3 o mas 0

Puntaje nulo por tener demasiados semáforos

2 2 Puntaje medio por 2 carriles 3 3 Buen puntaje por 3 carriles

4 4 Excelente puntaje por ser autopista 5 5 Excelente puntaje por ser autopista 6 6 Excelente puntaje por ser autopista Longitud vía

1 7 Excelente puntaje por tramo corto 2 6 Excelente puntaje por tramo corto 3 5 Excelente puntaje por tramo corto

4 4 Buen puntaje por tramo medio

5 3 Buen puntaje por tramo medio

6 2 Puntaje bajo por larga distancia 7 1 Puntaje malo por larga distancia

Tabla 7 - Puntaje definidos para eventos. Fuente: propia

TABLA DE VECINOS

La tabla de vecinos define e identifica para cada nodo (intersección calle-carrera)

el vecino que corresponde según orientación, siendo las orientaciones posibles,

hacia el norte, hacia el sur, hacia el oriente y hacia el occidente. Si un nodo es

central posee vecinos hacia las cuatro orientaciones, y si es un nodo de borde

posee vecinos hacia tres o dos orientaciones.

Tipo vía 1 Nombre Vía 1 Tipo vía 2 Nombre vía 2 Orientaci ón vecino vecino Tipo vía 1 vecino Nombre Vía 1 vecino Tipo vía 2 vecino Nombre vía 2

Carrera 7

Calle

170

sur

Carrera 7

Calle

134 Carrera 7

Calle

170

occident

e

Carrera Autopista

Calle

170

Carrera 7

Calle

134

norte

Carrera 7

Calle

170 Carrera 7

Calle

134

sur

Carrera 7

Calle

127 Carrera 7

Calle

134

occident

e

Carrera Autopista

Calle

134

Carrera 7

Calle

127

occident

Carrera 7

Calle

127

norte

Carrera 7

Calle

134 Carrera 7

Calle

127

sur

Carrera 7

Calle

116 Carrera 7

Calle

116

sur

Carrera 7

Calle

100

Tabla 8- Encabezado tabla vecinos – Fuente: propia

Ver Anexo 1 – tabla completa

Estructura de tabla

Ilustración 29- Orientación de nodos. Fuente: Propia

Nodo A Calle80 – Carrera 68 Nodo C Calle53- Carrera68 VECINO HACIA EL NORTE

VECINO HACIA EL SUR VECINO HACIA EL ORIENTE VECINO HACIA EL OCCIDENTE Nodo D Calle80 – Carrera boyaca Nodo E Calle100 – Carrera 68 Nodo B Calle80 – Carrera 30

VECINO HACIA EL NORTE

VECINO HACIA EL SUR

VECINO HACIA

TABLA DE VECINOS

Tipo vía 1 Nombre Vía 1 Tipo vía 2 Nombre vía 2 Orientaci ón vecino vecino Tipo vía 1 vecino Nombre Vía 1 vecino Tipo vía 2 vecino Nombre vía 2

Carrera 7 Calle 170 sur Carrera 7 Calle 134 Carrera 7 Calle 170 occidente Carrera Autopista Calle 170 Carrera 7 Calle 134 norte Carrera 7 Calle 170 Carrera 7 Calle 134 sur Carrera 7 Calle 127 Carrera 7 Calle 134 occidente Carrera Autopista Calle 134 Carrera 7 Calle 127 occidente Carrera Autopista Calle 127 Carrera 7 Calle 127 norte Carrera 7 Calle 134 Carrera 7 Calle 127 sur Carrera 7 Calle 116 Carrera 7 Calle 116 sur Carrera 7 Calle 100 Carrera 7 Calle 116 norte Carrera 7 Calle 127 Carrera 7 Calle 116 occidente Carrera Autopista Calle 116 Carrera 7 Calle 100 norte Carrera 7 Calle 116 Carrera 7 Calle 100 sur Carrera 7 Calle 93 Carrera 7 Calle 100 occidente Carrera Autopista Calle 93 Carrera 7 Calle 93 norte Carrera 7 Calle 100 Carrera 7 Calle 93 sur Carrera 7 Calle 80 Carrera 7 Calle 93 occidente Carrera Autopista Calle 93 Carrera 7 Calle 80 norte Carrera 7 Calle 93 Carrera 7 Calle 80 sur Carrera 7 Calle 53 Carrera 7 Calle 80 occidente Carrera Autopista Calle 80 Carrera 7 Calle 53 norte Carrera 7 Calle 80 Carrera 7 Calle 53 sur Carrera 7 Calle 26 Carrera 7 Calle 53 occidente Carrera Autopista Calle 53 Carrera 7 Calle 26 norte Carrera 7 Calle 53 Carrera 7 Calle 26 occidente Carrera Autopista Calle 26 Carrera Autopista Calle 170 sur Carrera Autopista Calle 170 Carrera Autopista Calle 170 occidente Carrera Autopista Calle 134 norte Carrera Autopista Calle 170 Carrera Autopista Calle 134 sur Carrera Autopista Calle 127 Carrera Autopista Calle 134 oriente Carrera 7 Calle 134

Carrera Autopista Calle 134 occidente Carrera Boyaca Calle 170 Carrera Autopista Calle 127 norte Carrera Autopista Calle 134 Carrera Autopista Calle 127 sur Carrera Autopista Calle 116 Carrera Autopista Calle 127 oriente Carrera 7 Calle 127 Carrera Autopista Calle 127 occidente Carrera Boyacá Calle 127 Carrera Autopista Calle 116 norte Carrera Autopista Calle 127 Carrera Autopista Calle 116 sur Carrera Autopista Calle 100 Carrera Autopista Calle 116 oriente Carrera 7 Calle 116 Carrera Autopista Calle 116 occidente Carrera Boyacá Calle 116 Carrera Autopista Calle 100 norte Carrera Autopista Calle 116 Carrera Autopista Calle 100 sur Carrera Autopista Calle 93 Carrera Autopista Calle 100 oriente Carrera 7 Calle 100 Carrera Autopista Calle 100 occidente Carrera 68 Calle 100 Carrera Autopista Calle 93 norte Carrera Autopista Calle 100 Carrera Autopista Calle 93 sur Carrera Autopista Calle 80 Carrera Autopista Calle 93 oriente Carrera 7 Calle 93 Carrera Autopista Calle 93 occidente Carrera 30 Calle 93 Carrera Autopista Calle 80 norte Carrera Autopista Calle 93 Carrera Autopista Calle 80 sur Carrera Autopista Calle 53 Carrera Autopista Calle 80 oriente Carrera 7 Calle 80 Carrera Autopista Calle 80 occidente Carrera 30 Calle 80 Carrera Autopista Calle 53 norte Carrera Autopista Calle 80 Carrera Autopista Calle 53 sur Carrera Autopista Calle 26 Carrera Autopista Calle 53 oriente Carrera 7 Calle 53 Carrera Autopista Calle 53 occidente Carrera 30 Calle 53 Carrera Autopista Calle 26 norte Carrera Autopista Calle 53 Carrera Autopista Calle 26 oriente Carrera 7 Calle 26 Carrera Autopista Calle 26 occidente Carrera 30 Calle 26 Carrera 30 Calle 93 sur Carrera 30 Calle 80 Carrera 30 Calle 93 oriente Carrera Autopista Calle 93 Carrera 30 Calle 80 norte Carrera 30 Calle 93 Carrera 30 Calle 80 sur Carrera 30 Calle 53 Carrera 30 Calle 80 oriente Carrera Autopista Calle 80 Carrera 30 Calle 80 occidente Carrera 68 Calle 80

Carrera 30 Calle 53 norte Carrera 30 Calle 80 Carrera 30 Calle 53 sur Carrera 30 Calle 26 Carrera 30 Calle 53 oriente Carrera Autopista Calle 53 Carrera 30 Calle 53 occidente Carrera 68 Calle 53 Carrera 30 Calle 26 norte Carrera 30 Calle 53 Carrera 30 Calle 26 oriente Carrera Autopista Calle 26 Carrera 30 Calle 26 occidente Carrera 68 Calle 26 Carrera 68 Calle 100 sur Carrera 68 Calle 80 Carrera 68 Calle 100 oriente Carrera Autopista Calle 100 Carrera 68 Calle 80 norte Carrera 68 Calle 100 Carrera 68 Calle 80 sur Carrera 68 Calle 53 Carrera 68 Calle 80 oriente Carrera 30 Calle 80 Carrera 68 Calle 80 occidente Carrera Boyaca Calle 80 Carrera 68 Calle 53 norte Carrera 68 Calle 80 Carrera 68 Calle 53 sur Carrera 68 Calle 26 Carrera 68 Calle 53 oriente Carrera 30 Calle 53 Carrera 68 Calle 26 norte Carrera 68 Calle 53 Carrera 68 Calle 26 oriente Carrera 30 Calle 26 Carrera 68 Calle 26 occidente Carrera Boyaca Calle 26 Carrera Boyaca Calle 170 sur Carrera Boyaca Calle 134 Carrera Boyaca Calle 170 oriente Carrera Autopista Calle 170 Carrera Boyaca Calle 170 occidente Carrera cali Calle 170 Carrera Boyaca Calle 134 norte Carrera Boyaca Calle 170 Carrera Boyaca Calle 134 sur Carrera Boyaca Calle 127 Carrera Boyaca Calle 134 oriente Carrera Autopista Calle 134 Carrera Boyaca Calle 134 occidente Carrera cali Calle 134 Carrera Boyaca Calle 127 norte Carrera Boyaca Calle 134 Carrera Boyaca Calle 127 sur Carrera Boyaca Calle 116 Carrera Boyaca Calle 127 oriente Carrera Autopista Calle 127 Carrera Boyaca Calle 127 occidente Carrera cali Calle 127 Carrera Boyaca Calle 116 norte Carrera Boyaca Calle 127 Carrera Boyaca Calle 116 sur Carrera Boyaca Calle 80 Carrera Boyaca Calle 116 oriente Carrera Autopista Calle 116 Carrera Boyaca Calle 116 occidente Carrera cali Calle 116 Carrera Boyaca Calle 80 norte Carrera Boyaca Calle 127

Carrera Boyaca Calle 80 sur Carrera Boyaca Calle 26 Carrera Boyaca Calle 80 oriente Carrera 68 Calle 80 Carrera Boyaca Calle 80 occidente Carrera cali Calle 80 Carrera Boyaca Calle 26 norte Carrera Boyaca Calle 80 Carrera Boyaca Calle 26 oriente Carrera 68 Calle 26 Carrera Boyaca Calle 26 occidente Carrera cali Calle 26 Carrera Cali Calle 170 sur Carrera Cali Calle 134 Carrera Cali Calle 170 oriente Carrera Boyaca Calle 170 Carrera Cali Calle 80 norte Carrera Cali Calle 170 Carrera Cali Calle 80 sur Carrera Cali Calle 26 Carrera Cali Calle 80 oriente Carrera Boyaca Calle 80 Carrera Cali Calle 26 norte Carrera Cali Calle 80 Carrera Cali Calle 26 oriente Carrera Boyaca Calle 26

Tabla 9- Definición de vecinos – Fuente: propia

Documento similar