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
170sur
Carrera 7Calle
134 Carrera 7Calle
170occident
e
Carrera AutopistaCalle
170Carrera 7
Calle
134norte
Carrera 7Calle
170 Carrera 7Calle
134sur
Carrera 7Calle
127 Carrera 7Calle
134occident
e
Carrera AutopistaCalle
134Carrera 7
Calle
127occident
Carrera 7
Calle
127norte
Carrera 7Calle
134 Carrera 7Calle
127sur
Carrera 7Calle
116 Carrera 7Calle
116sur
Carrera 7Calle
100Tabla 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 2Carrera 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