Vous êtes sur la page 1sur 327

UNIVERSIDAD DE SEVILLA

ESCUELA SUPERIOR DE INGENIEROS INGENIERA SUPERIOR DE TELECOMUNICACION

DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL Y GESTIN DE EMPRESAS

DISEO E IMPLEMENTACIN DE ALGORITMOS DE EXTRAPOLACIN DE MATRICES ORIGEN-DESTINO MEDIANTE ASIGNACIN DE TRFICO

ALVARO DE LA CRUZ MALDONADO

ndice

NDICE
NDICE .........................................................................................................................................3 LISTA DE FIGURAS ..................................................................................................................7 LISTA DE TABLAS ..................................................................................................................11 1 1.1 1.2 INTRODUCCIN Y OBJETIVOS DEL PROYECTO................................................13 INTRODUCCIN ...............................................................................................................13 EXTRAPOLACIN TEMPORAL DE MATRICES ORIGEN-DESTINO (O-D) ..............................15 Descripcin del viario ..........................................................................................15 Matrices origen-destino (O-D).............................................................................20 Modelos de calibracin O-D................................................................................21
Anlisis convencional................................................................................................... 21 Modelos de trfico basado en contadores ..................................................................... 22

1.2.1 1.2.2 1.2.3

1.2.3.1 1.2.3.2

1.3 2 2.1 2.2

OBJETIVOS DEL PROYECTO .............................................................................................25 MODELO DE CALIBRACIN MEDIANTE ALGORITMO DE ASIGNACIN ...28 INTRODUCCIN ...............................................................................................................28 ALGORITMO DE ASIGNACIN DE TRFICO.......................................................................29 Introduccin .........................................................................................................29 Funciones volumen-retraso y tiempo de viaje......................................................32 Las condiciones de Wardrop................................................................................33
Demanda fija ................................................................................................................ 36 Demanda variable ......................................................................................................... 37

2.2.1 2.2.2 2.2.3

2.2.3.1 2.2.3.2

2.2.4 2.2.5 2.2.6 2.3 2.3.1 2.3.2 2.3.3 2.3.4 3 3.1

Formulacin matemtica del modelo de equilibrio..............................................39 Caracterizacin de la funcin de equilibrio.........................................................40 Procedimiento de linealizacin de Frank-Wolfe ..................................................42 Algoritmo de Dijkstra bsico ...............................................................................50 Algoritmo de Dijkstra con montculos..................................................................54 Algoritmo de Dijkstra con giros ...........................................................................58 Algoritmo de los K caminos mnimos (K-mn) .....................................................63

ALGORITMOS DE RUTAS MNIMAS ...................................................................................50

MODELADO ORIENTADO A OBJETOS....................................................................63 INTRODUCCIN A UML ..................................................................................................63 Breve historia de UML .........................................................................................63 Qu es UML? Por qu usar UML? ..................................................................63 Diagramas de casos de uso ..................................................................................63

3.1.1 3.1.2 3.2 3.2.1

ESPECIFICACIN FUNCIONAL DEL ALGORITMO DE CALIBRACIN ....................................63

ndice
3.2.1.1 3.2.1.2 Algoritmo de calibracin basado en porcentajes .......................................................... 63 Algoritmo de calibracin basado en algoritmo K-mn.................................................. 63

3.2.2

Diagramas de paquetes ........................................................................................63


Diagramas de paquetes del algoritmo de calibracin basado en porcentajes ................ 63 Algoritmo de calibracin basado en el clculo K-mn.................................................. 63

3.2.2.1 3.2.2.2

3.2.3

Diagramas de clases ............................................................................................63


Paquetes de datos comunes........................................................................................... 63 Paquetes de datos propios del algoritmo basado en porcentajes ................................... 63 Paquetes de datos propios del algoritmo basado en el clculo K-mn........................... 63

3.2.3.1 3.2.3.2 3.2.3.3

3.2.4

Diagramas de Secuencia ......................................................................................63


Notacin ....................................................................................................................... 63 Diagrama de secuencia del algoritmo ........................................................................... 63

3.2.4.1 3.2.4.2

4 4.1 4.2

DISEO DE UN MODELO DE CALIBRACIN MEDIANTE ASIGNACIN.......63 INTRODUCCIN ...............................................................................................................63 MODELO DE CALIBRACIN MEDIANTE PORCENTAJES......................................................63 Diseo del algoritmo ............................................................................................63 Ejemplo de calibracin basada en porcentajes....................................................63 Diseo del algoritmo ............................................................................................63 Ejemplo de calibracin basada en algoritmo K-mn............................................63

4.2.1 4.2.2 4.3 4.3.1 4.3.2 4.4 4.5

MODELO DE CALIBRACIN BASADO EN EL ALGORITMO K-MN .......................................63

PROCEDIMIENTO DE MEJORA DE LA EFICIENCIA DEL ALGORITMO ...................................63 DISEO DE LA INTERFAZ GRFICA ..................................................................................63 Interfaz del algoritmo K-mn................................................................................63 Interfaz del algoritmo de calibracin...................................................................63

4.5.1 4.5.2 5 5.1 5.2

PRUEBAS DEL SISTEMA .............................................................................................63 PRUEBAS DE INTEGRACIN DEL ALGORITMO K-MN .......................................................63 PRUEBAS DE INTEGRACIN DE LOS ALGORITMOS DE CALIBRACIN ................................63 Prueba de calibracin basada en porcentajes .....................................................63 Prueba de calibracin basada en clculo K-mn .................................................63 Comparativa de mtodos......................................................................................63

5.2.1 5.2.2 5.2.3 6 6.1 6.2 7

CONCLUSIONES Y EXTENSIONES ...........................................................................63 CONCLUSIONES ..............................................................................................................63 POSIBLES EXTENSIONES ..................................................................................................63 BIBLIOGRAFA ..............................................................................................................63

ANEXO I. INFORMES GENERADOS EN LAS PRUEBAS DEL SISTEMA.....................63 1. INFORMES GENERADOS EN LA PRUEBA DE VALIDACIN DEL ALGORITMO DE CALIBRACIN

BASADO EN PORCENTAJES. .....................................................................................................................63

ndice

2. 3. 4.

INFORMES GENERADOS EN LA PRUEBA DE VALIDACIN DEL ALGORITMO DE CALIBRACIN INFORMACIN GENERADA DURANTE EL ALGORITMO DE CALIBRACIN BASADO EN INFORMACIN GENERADA DURANTE EL ALGORITMO DE CALIBRACIN BASADO EN

BASADO EN CLCULO K-MN. .................................................................................................................63

PORCENTAJES. ESCENARIO REAL. ...........................................................................................................63

CLCULO K-MN. ESCENARIO REAL........................................................................................................63

Lista de Figuras

LISTA DE FIGURAS
Figura 1.2-1. Representacin del viario......................................................................................................16 Figura 1.2-2. Tramos y Nodos....................................................................................................................18 Figura 1.2-3. Representacin de giros. .......................................................................................................19 Figura 1.2-4. Ejemplo de matriz O-D.........................................................................................................20 Figura 2.2-1. Procedimientos en el proceso de asignacin de trfico.........................................................29 Figura 2.2-2. Funcin Volumen-Retraso ....................................................................................................33 Figura 2.2-3. Solucin grfica al problema de asignacin de trfico .........................................................42 Figura 2.2-4. Algoritmo de Asignacin. Mtodo de Frank-Wolfe .............................................................45 Figura 2.2-5. Mtodo de Frank-Wolfe. Inicializacin. ...............................................................................46 Figura 2.2-6. Mtodo de Frank-Wolfe. Asignacin de viajes.....................................................................48 Figura 2.2-7. Mtodo de Frank-Wolfe. Obtener direccin de mejora ........................................................49 Figura 2.2-8. Mtodo de Frank-Wolfe. Actualizacin de Flujos................................................................49 Figura 2.3-1. Grafo del algoritmo de Dijkstra bsico .................................................................................52 Figura 2.3-2. Algoritmo de Dijkstra ...........................................................................................................53 Figura 2.3-3. Elementos de los montculos. ...............................................................................................55 Figura 2.3-4. Representacin en rbol de montculo ..................................................................................56 Figura 2.3-5. Algoritmo de Dijkstra con giros ...........................................................................................61 Figura 2.3-6. Coste de tramos y giros.........................................................................................................62 Figura 2.3-7. Algoritmo de los K caminos mnimos ..................................................................................63 Figura 2.3-8. Resultados del algoritmo K-mn ...........................................................................................63 Figura 3.2-1. Notacin de actores...............................................................................................................63 Figura 3.2-2. Notacin de casos de uso. .....................................................................................................63 Figura 3.2-3. Notacin de relaciones..........................................................................................................63 Figura 3.2-4. Casos de uso de nivel 0.........................................................................................................63 Figura 3.2-5. Casos de uso de nivel 1........................................................................................................63 Figura 3.2-6. Casos de uso de nivel 2. Proceso de asignacin....................................................................63 Figura 3.2-7. Casos de uso de nivel 0.........................................................................................................63 Figura 3.2-8. Diagrama de casos de uso de nivel 1 ....................................................................................63 Figura 3.2-9. Diagramas de casos de uso de nivel 2. Clculo de las k rutas mnimas ................................63 Figura 3.2-10. Diagramas de casos de uso de nivel 3. Marcado de rutas ...................................................63 Figura 3.2-11. Diagramas de casos de uso de nivel 2. Ajuste de matriz.....................................................63 Figura 3.2-12. Diagramas de paquetes del algoritmo de calibracin basado en porcentajes ......................63 Figura 3.2-13. Diagrama de paquetes del algoritmo de calibracin basado en clculo K-mn.................63 Figura3.2-14. Ejemplo de clase ..................................................................................................................63 Figura 3.2-15. Diagrama de clases del paquete Red...................................................................................63 Figura 3.2-16. Clase Contexto....................................................................................................................63 Figura 3.2-17. Clase Mapa .........................................................................................................................63 Figura 3.2-18. Clase Punto .........................................................................................................................63

Lista de Figuras

Figura 3.2-19. Clase Tramo........................................................................................................................63 Figura 3.2-20. Clase Giro ...........................................................................................................................63 Figura 3.2-21. Diagrama de clases del paquete Listas................................................................................63 Figura 3.2-22. Clase Lista_inf ....................................................................................................................63 Figura 3.2-23. Clase MiLista......................................................................................................................63 Figura 3.2-24. Diagrama de clases del paquete Algoritmo de calibracin .................................................63 Figura 3.2-25. Clase Matriz_adyacencia ....................................................................................................63 Figura 3.2-26-Clase Datos_iteracion..........................................................................................................63 Figura 3.2-27. Clase Matriz_virtual ...........................................................................................................63 Figura 3.2-28. Clase Giro_Red...................................................................................................................63 Figura 3.2-29. Clase Vertices .....................................................................................................................63 Figura 3.2-30. Clase Tramos_Red..............................................................................................................63 Figura 3.2-31. Clase Caminos ....................................................................................................................63 Figura 3.2-32. Diagrama de clases del paquete VCL .................................................................................63 Figura 3.2-33. Diagrama de clases del paquete Interfaz Grfica ................................................................63 Figura 3.2-34. Diagrama de clases del paquete Estructuras de datos de calibracin basada en porcentajes ..........................................................................................................................................................63 Figura 3.2-35. Clase Tramo_calibracion ....................................................................................................63 Figura 3.2-36. Clase Pm .............................................................................................................................63 Figura 3.2-37. Clase PM_porcentaje ..........................................................................................................63 Figura 3.2-38. Diagrama de clases del paquete Algoritmo de ruta mnima K-mn ....................................63 Figura 3.2-39. Clase node_acm ..................................................................................................................63 Figura 3.2-40. Clase tramo_acm ................................................................................................................63 Figura 3.2-41. Clase giro_acm ...................................................................................................................63 Figura 3.2-42. Clase path_acm ...................................................................................................................63 Figura 3.2-43. Clase info_caminos_acm ....................................................................................................63 Figura 3.2-44. Diagrama de clases del paquete Estructura de datos de calibracin basada en algoritmo Kmn ....................................................................................................................................................63 Figura 3.2-45. Clase Calibracion_Kmin.....................................................................................................63 Figura 3.2-46. Clase Pm_Kmin ..................................................................................................................63 Figura 3.2-47. Clase Path_Kmin ................................................................................................................63 Figura 3.2-48. Ejemplo diagrama de secuencia..........................................................................................63 Figura 3.2-49. Interfaz grfica....................................................................................................................63 Figura 4.2-1. Algoritmo de calibracin basado en porcentajes ..................................................................63 Figura 4.2-2. Calibracin basada en porcentajes. Actualizacin de porcentajes ........................................63 Figura 4.2-3. Calibracin matriz.................................................................................................................63 Figura 4.2-4. Ejemplo de calibracin basada en porcentajes. Grafo...........................................................63 Figura 4.2-5. Calibracin basada en porcentajes. Flujos de asignacin .....................................................63 Figura 4.3-1. Representacin parcial del grafo...........................................................................................63 Figura 4.3-2. Calibracin basada en algoritmo k-mn ................................................................................63

Lista de Figuras

Figura 4.3-3. Calibracin matriz.................................................................................................................63 Figura 4.3-4. Calibracin basada en clculo K-mn. Flujos de asignacin.................................................63 Figura 4.3-5. Calibracin basada en clculo K-mn. Flujos K-mn ............................................................63 Figura 4.5-1. Interfaz del algoritmo K-mn ................................................................................................63 Figura 4.5-2. Opciones ...............................................................................................................................63 Figura 4.5-3. Interfaz del algoritmo de calibracin. ...................................................................................63 Figura 4.5-4. Zona de informacin.............................................................................................................63 Figura 4.5-5. Zona de configuracin ..........................................................................................................63 Figura 5-1. Escenario de las pruebas de integracin ..................................................................................63 Figura 5.1-1. Rutas [40, 209] de orden 2 y [177, 216] de orden 1..............................................................63 Figura 5.1-2. Rutas [83, 37] de orden 1 y [122, 25] de orden 3..................................................................63 Figura 5.1-3. Tiempo empleado en algoritmo K-mn.................................................................................63 Figura 5.2-1. Zonificacin del escenario ....................................................................................................63 Figura 5.2-2. Cdigo de colores .................................................................................................................63 Figura 5.2-3. Resultados de la calibracin basada en porcentajes. Zona 1.................................................63 Figura 5.2-4. Resultados de la calibracin basada en porcentajes. Zona 2.................................................63 Figura 5.2-5. Resultados de la calibracin basada en porcentajes. Zona 3.................................................63 Figura 5.2-6. Resultados de la calibracin basada en porcentajes. Zona 4.................................................63 Figura 5.2-7. Resultados de la calibracin basada en porcentajes. Zona 5.................................................63 Figura 5.2-8. Resultados de la calibracin basada en porcentajes. Zona 6.................................................63 Figura 5.2-9. Resultados de la calibracin basada en porcentajes. Zona 7.................................................63 Figura 5.2-10. Resultados de la calibracin basada en porcentajes. Zona 8...............................................63 Figura 5.2-11. Resultados de la calibracin basada en porcentajes. Zona 9...............................................63 Figura 5.2-12. Resultados de la calibracin basada en porcentajes. Zona 10.............................................63 Figura 5.2-13. Resultados de la calibracin basada en porcentajes. Zona 11.............................................63 Figura 5.2-14. Calibracin basada en porcentajes. Resultados Avda de la Palmera Repblica Argentina. ..........................................................................................................................................................63 Figura 5.2-15. Calibracin basada en porcentajes. Resultados Ronda del Tamarguillo.............................63 Figura 5.2-16. Calibracin basada en porcentajes. Resultados Puente Cristo de la Expiracin .................63 Figura 5.2-17. Calibracin basada en porcentajes. Resultados Rep. Argentina Lopez de Gomara .........63 Figura 5.2-18. Zonificacin del escenario ..................................................................................................63 Figura 5.2-19. Cdigo de colores ...............................................................................................................63 Figura 5.2-20. Resultados de la calibracin basada en algoritmo K-mn. Zona 1. .....................................63 Figura 5.2-21. Resultados de la calibracin basada en algoritmo K-mn. Zona 2. .....................................63 Figura 5.2-22. Resultados de la calibracin basada en algoritmo K-mn. Zona 3. .....................................63 Figura 5.2-23. Resultados de la calibracin basada en algoritmo K-mn. Zona 4. .....................................63 Figura 5.2-24. Resultados de la calibracin basada en algoritmo K-mn. Zona 5. .....................................63 Figura 5.2-25. Resultados de la calibracin basada en algoritmo K-mn. Zona 6. .....................................63 Figura 5.2-26. Resultados de la calibracin basada en algoritmo K-mn. Zona 7. .....................................63 Figura 5.2-27. Resultados de la calibracin basada en algoritmo K-mn. Zona 8. .....................................63

Lista de Figuras

Figura 5.2-28. Resultados de la calibracin basada en algoritmo K-mn. Zona 9. .....................................63 Figura 5.2-29. Resultados de la calibracin basada en algoritmo K-mn. Zona 10. ...................................63 Figura 5.2-30. Resultados de la calibracin basada en algoritmo K-mn. Zona 11. ...................................63 Figura 5.2-31. Calibracin basada en clculo K-mn. Resultados Avda de la Palmera Repblica Argentina. .........................................................................................................................................63 Figura 5.2-32. Calibracin basada en clculo K-mn. Resultados Ronda del Tamarguillo ........................63 Figura 5.2-33. Calibracin basada en clculo K-mn. Resultados Puente Cristo de la Expiracin ............63 Figura 5.2-34. Calibracin basada en clculo K-mn. Resultados Rep. Argentina Lopez de Gomara ....63

10

Lista de Tablas

LISTA DE TABLAS
Tabla 2.3-1. Matriz de viajes......................................................................................................................52 Tabla 2.3-2. Evolucin del algoritmo de Dijkstra bsico ...........................................................................53 Tabla 2.3-3. Representacin vectorial de montculo ..................................................................................55 Tabla 2.3.4. Giros del Grafo.......................................................................................................................63 Tabla 2.3.5. Tramos del Grafo....................................................................................................................63 Tabla 2.3-6. Evolucin del algoritmo de Dijkstra con giros.......................................................................63 Tabla 2.3-7. Resultados del algoritmo de Dijkstra con giros......................................................................63 Tabla 2.3-8. Evolucin del algoritmo K-mn..............................................................................................63 Tabla 4.2-1. Calibracin basada en porcentajes. Matriz de demanda.........................................................63 Tabla 4.2-2. Calibracin basada en porcentajes. Tiempos de viaje ............................................................63 Tabla 4.2-3. Calibracin basada en porcentajes. Puntos de medida ...........................................................63 Tabla 4.2-4. Calibracin basada en porcentajes. Porcentajes en el tramo 1 ...............................................63 Tabla 4.2-5. Calibracin basada en porcentajes. Porcentajes en el tramo 2 ...............................................63 Tabla 4.2-6. Calibracin basada en porcentajes. Porcentajes en el tramo 4 ...............................................63 Tabla 4.2-7. Calibracin basada en porcentajes. Porcentajes en el tramo 7 ...............................................63 Tabla 4.2-8. Calibracin basada en porcentajes. Porcentajes en el tramo 11 .............................................63 Tabla 4.2-9. Calibracin basada en porcentajes. Porcentajes en el tramo 14 .............................................63 Tabla 4.2-10. Calibracin basada en porcentajes. Matriz calibrada ...........................................................63 Tabla 4.3-1. Calibracin basada en clculo K-mn. Matriz de demanda ....................................................63 Tabla 4.3-2. Calibracin basada clculo K-mn. Tiempos de viaje ............................................................63 Tabla 4.3-3. Calibracin basada en porcentajes. Puntos de medida ...........................................................63 Tabla 4.3-4. Calibracin basada en clculo K-mn. Rutas en el tramo 1....................................................63 Tabla 4.3-5. Calibracin basada en clculo K-mn. Rutas en el tramo 2....................................................63 Tabla 4.3-6. Calibracin basada en clculo K-mn. Rutas en el tramo 4....................................................63 Tabla 4.3-7. Calibracin basada en clculo K-mn. Rutas en el tramo 7....................................................63 Tabla 4.3-8. Calibracin basada en clculo K-mn. Rutas en el tramo 11..................................................63 Tabla 4.3-9. Calibracin basada en clculo K-mn. Rutas en el tramo 14..................................................63 Tabla 4.3-10. Calibracin basada en clculo K-mn. Marcado de rutas para el par [2, 3]..........................63 Tabla 4.3-11. Calibracin basada en clculo K-mn. Matriz Calibrada......................................................63 Tabla 5.1-1. Dimensin y uso del montculo..............................................................................................63 Tabla 5.2-1. Valores de los detectores de flujo del algoritmo de calibracin basado en porcentajes .........63 Tabla 5.2-2. Tramos detectores incluidos en las zonas representadas ........................................................63 Tabla 5.2-3. Calibracin basada en porcentajes. Tramos detectores en la zona 1 ......................................63 Tabla 5.2-4. Calibracin basada en porcentajes. Tramos detectores en la zona 2 ......................................63 Tabla 5.2-5. Calibracin basada en porcentajes. Tramos detectores en la zona 3 ......................................63 Tabla 5.2-6. Calibracin basada en porcentajes. Tramos detectores en la zona 4 ......................................63 Tabla 5.2-7. Valores de los detectores de flujo del algoritmo de calibracin K-mn..................................63 Tabla 5.2-8. Tramos detectores incluidos en las zonas representadas ........................................................63

11

Lista de Tablas

Tabla 5.2-9. Calibracin basada en clculo K-mn. Tramos detectores en la zona 1 .................................63 Tabla 5.2-10. Calibracin basada en clculo K-mn. Tramos detectores en la zona 2 ...............................63 Tabla 5.2-11. Calibracin basada en porcentajes. Tramos detectores en la zona 3 ....................................63 Tabla 5.2-12. Calibracin basada en clculo K-mn. Tramos detectores en la zona 4 ...............................63 Tabla 5.2-13. Comparativa de tiempo de ejecucin ...................................................................................63

12

Introduccin y objetivos del proyecto

1 Introduccin y objetivos del proyecto


1.1 Introduccin

La mayora de la actividad desarrollada en las reas urbanas concierne al desplazamiento de personas y mercancas entre diferentes zonas, a travs del viario. Por ello disponer de infraestructuras y un sistema eficiente de transporte es esencial para la salud econmica y la calidad de vida en las regiones urbanas. Cuando se analizan la infraestructura presente para futuras inversiones y polticas operacionales, los estudios del sistema de transporte son entre otras operaciones uno de los componentes ms importante en el proceso de planificacin. Despus de la segunda guerra mundial la demanda de movilidad ha sufrido un gran auge. La mayor parte del aumento de la demanda es debido al incremento en el transporte personal, a causa del crecimiento urbano y de los niveles de vida estndar. El desarrollo de la movilidad tiene, sin embargo, asociados serios problemas en las regiones urbanas, tales como contaminacin, incremento de las tasas de incidentes, efectos sociales sobre la vida urbana debido a la expansin de autopistas y un uso poco eficiente de los sistemas de transporte a causa de la alta congestin. En los estudios de planificacin urbana las modificaciones y ampliaciones del sistema de transporte existente son evaluadas con el objetivo de aliviar los problemas mencionados anteriormente, permitiendo la utilizacin de una gran rango de modos de transportes. El proceso de planificacin del trfico urbano ha sido un proceso evolutivo. Los primeros estudios se basaban en un nmero pequeo de entrevistas realizadas a los habitantes de una ciudad para estudiar el comportamiento de los viajeros. El concepto de un nmero pequeo de entrevista fue posteriormente combinado con procedimiento de deteccin para determinar patrones de comportamiento en el viaje urbano. La utilizacin futura de las nuevas autopistas proyectada era estimada manualmente mediante asignaciones origen-destino(O-D) sobre rutas planificadas. A principio de la

13

Introduccin y objetivos del proyecto

dcada de los 50 se realizaron estudios sobre utilizacin del suelo y su relacin con el trfico urbano como consecuencia de la necesidad de disponer de mejores mtodos de estimacin para predecir los viajes producidos en le futuro. En la actualidad son empleados mtodos que relacionan la evolucin de la poblacin, distribucin y anlisis de generacin y extraccin de viajes con caractersticas de las zonas y una planificacin sobre un viario completo. Los primeros estudios de transporte se centraban exclusivamente al estudio del trfico en autopistas, solucionando el problema mejorando la capacidad del viario para que pueda acoger el incremento de la demanda obtenida en los estudios. Desde la dcada de los 50, se considera que el transporte no es una actividad aislada, sino que la demanda de viajes es una funcin de la actividad humana. Los estudios de transportes reciente integran partes de todo el proceso de planificacin conocido como la filosofa de las tres C, de continuacin comprensin y cooperacin en la planificacin del transporte que caracteriza el estado actual del proceso. El sistema de transporte es muy complejo, y el desarrollo depende de las decisiones tomadas en varios niveles de la sociedad (los objetivos y propsitos pueden entrar en conflicto entre s). En casi todas las aplicaciones de planificacin de transporte, los datos ms difciles y costosos de obtener son los necesarios para confeccionar la matriz origen/destino. Como la demanda no puede ser observada directamente, los datos necesarios deben ser obtenidos a partir de encuestas muy elaboradas y caras, realizadas en los hogares y en la propia calzada. Por otra parte y gracias a la evolucin de la tecnologa (donde el trfico rodado no se encuentra apartado) es posible obtener con gran precisin el volumen de trfico que circula por determinadas calles o tramos mediante el empleo de dispositivos de deteccin de vehculos. Muchos modelos han sido desarrollados para contemplar la posibilidad de incluir los datos de volumen de vehculos, obtenidos mediante los dispositivos de deteccin, en los modelos de asignacin. Estos modelos han tenido muy poca relevancia debido a que el tiempo de computacin y necesidades de almacenamiento necesarias se incrementaba en la medida que aumentaba el tamao del problema.

14

Introduccin y objetivos del proyecto

La motivacin del proyecto se debe a la necesidad de obtener informacin sobre los desplazamientos origen-destino (O-D) en las grandes reas urbanas, pues a partir de esta informacin es posible mejorar tanto la gestin del trfico como la planificacin del transporte, intentando aportar por tanto informacin que se utilice para subsanar uno de los problemas cotidianos de la sociedad actual, la congestin del trfico. Este trabajo queda integrado en una aplicacin ms general, TRAMOS (Traffic and tRansport Anlisis, Modeling and Optimization System), que comprende diversas herramientas para la gestin del trfico y la planificacin del transporte.

1.2 Extrapolacin temporal de matrices origen-destino (O-D)


1.2.1 Descripcin del viario

La descripcin del viario consiste en la definicin de los elementos que lo componen, de forma que posteriormente se puedan disear las estructuras de datos apropiadas para contener toda la informacin necesaria para el desarrollo del modelo. La mayora de los modelos definen el viario como un grafo, G (V , A) (dirigido o no dirigido) donde las calles estn representadas mediante los arcos del grafo y las intersecciones o cruces estn representados mediante nodos del grafo.

15

Introduccin y objetivos del proyecto

Figura 1.2-1. Representacin del viario.

Esta descripcin, si bien es correcta y en general suficiente, no comprende a la totalidad de los componentes de un viario, ya que este no slo est formado por calles y cruces, sino que existe otra serie de elementos como los contadores de vehculos, giros definidos... etc. Este apartado pretende recoger los elementos ms importantes que componen el viario.

Nodos El viario est representado por un grafo G (V , A) que contiene un conjunto

de vrtices y arcos. Los vrtices tambin llamados nodos, representan las intersecciones del viario. Los atributos contenidos en nodos son:

16

Introduccin y objetivos del proyecto

o Cdigo del nodo. Cada nodo est identificado en la red por un cdigo nico que lo diferencia del resto de nodos. o Tipo de nodo. Se han considerado dos tipos de nodos: Normales. Son nodos que representan las intersecciones o cruces existentes en el viario. Centroides. Nodos especiales definidos en el viario que no se corresponden con intersecciones de calle. Son puntos desde donde parte y llega la demanda de viajes de una determinada zona. o Posicin. Para representar grficamente el viario es necesario dotar a los nodos del atributo posicin, que contendr a las coordenadas del nodo.

Tramos. Los tramos representan a las calles del viario. Los atributos que

caracterizan a los tramos son: o Cdigo del tramo. Identificacin de cada calle del viario. Los tramos suelen ser unidireccionales, es decir, representan un solo sentido de circulacin. Para representar una calle con dos sentidos sern necesarios dos tramos. o Nodo origen. Todos los tramos parten de un nodo, al que denominamos nodo origen. o Nodo destino. Los tramos finalizan en una interseccin representada por el nodo destino. o Nmero de carriles. Espacios disponibles para el desplazamiento de vehculos. o Modos de transporte. Cada tramo permite la circulacin de unos tipos de vehculos (peatonal, vehculos... etc.).

17

Introduccin y objetivos del proyecto

o Funcin volumen retraso. A cada tramo se le asocia una funcin que devuelva el tiempo que emplea un vehculo en recorrer el tramo en funcin de la intensidad de la circulacin. o Longitud. La longitud del tramo.

Nodo

Tramo

Figura 1.2-2. Tramos y Nodos.

Giros Las intersecciones son puntos de unin de los tramos y son empleadas por

los vehculos como medio de seleccin del tramo que conduce a su destino final. Las intersecciones representan el punto de unin entre tramos, pero no todos los tramos que llegan a una interseccin estn comunicados a travs de ella. Las posibilidades de acceso de unos tramos a otro en una interseccin estn indicadas por los giros que se definen en el nodo. Un giro habilita la

18

Introduccin y objetivos del proyecto

posibilidad de circulacin de vehculos entre dos tramos que llegan y parten de un nodo.

En un giro se definen los siguientes atributos:

o Nmero de giro. Nmero secuencial creciente que identifica al giro. o Cdigo del nodo. Nodo que identifica al movimiento. o Tramo origen. Tramo de donde proceden los vehculos. o Tramo destino. Tramo a donde se dirigen los vehculos. o Funcin volumen retraso. A veces se incluye una funcin volumen retraso para obtener el tiempo empleado en realizar el giro.

Figura 1.2-3. Representacin de giros.

Detectores Los detectores son elementos situados en los carriles de los tramos del

viario que proporcionan datos sobre la intensidad del trfico en dichos tramos. Los atributos que contiene son: o Cdigo del detector. Cdigo que identifica unvocamente al detector. o Cdigo del tramo. Cdigo del tramo en el que est el detector. o Tipo de detector. Los detectores pueden ser de varios tipos, desde cmaras de televisin hasta los contadores por espiras.

19

Introduccin y objetivos del proyecto

o Flujo de vehculos. Nmero de vehculos que han pasado por el detector en un intervalo de tiempo. o Posicin del detector. Posicin del detector relativa al comienzo del tramo. o Estado del detector. Especifica si el detector est en funcionamiento, averiado o pasivo.

1.2.2

Matrices origen-destino (O-D)

Una matriz O-D, es una matriz de dos dimensiones, en la que filas y columnas representan zonas de origen y destino respectivamente, y el valor de sus elementos indica el nmero de viajes o desplazamientos realizados desde cada una de las zonas de origen a las de destino en un periodo de tiempo (por ejemplo tendremos una matriz OD para una determinada hora punta, otra indicativa de la media diaria, etc...).

1 1 2 3 4 5 0 243 900 123 543

2 143 0 234 187 423

3 254 334 0 412 867

4 1345 987 324 0 124

5 987 124 976 1234 0

Figura 1.2-4. Ejemplo de matriz O-D.

As, por ejemplo observando la figura anterior, podemos decir que entre el origen 2 y el destino 3, se van a producir 334 desplazamientos, para el periodo de

20

Introduccin y objetivos del proyecto

tiempo del que se trate. Como podemos observar, en estas matrices, la diagonal es cero, pues no interesan aqu los desplazamientos internos dentro de una zona, sino los desplazamientos interzonales. Se han desarrollado muchos modelos para sintetizar matrices O-D, a partir de la informacin disponible, desde la dcada de los setenta. Nuestro objetivo es desarrollar un modelo de estimacin de matrices O-D, usando como informacin el flujo observado en algunos arcos, partiendo de una matriz O-D no optima, que nos pueda servir como gua de la solucin. En el siguiente apartado se presentan algunas tcnicas existentes de calibracin de matrices O-D.

1.2.3

Modelos de calibracin O-D

Este apartado trata de presentar una serie de teoras, algoritmos, tcnicas y mtodos usados para la estimacin de las matrices O-D. As comenzaremos la resea con una discusin del desarrollo histrico general relacionado con el tema. Se comentarn un conjunto de modelos para el establecimiento de matrices O-D basados en los volmenes de trfico observados.

1.2.3.1 Anlisis convencional

Antes de 1970, las matrices O-D, eran obtenidas mediante medidas estadsticas, tales como entrevistas en las casas, medidas oficiales y medidas a pie de carretera. Los mtodos que usan esas medidas como dato para determinar las distribuciones reales de trfico se denominan mtodos de anlisis convencional. Adems, la mayora de estas aproximaciones conllevan la realizacin de muestreos estadsticos, con el consecuente error asociado. As, con la evolucin de la sociedad y con los rpidos cambios en las demandas de transporte, esas medidas eran ms difciles de realizar, y adems cada vez resultaba ms costoso tanto en tiempo y esfuerzo, como desde el punto de vista econmico.

21

Introduccin y objetivos del proyecto

Otro inconveniente de los anlisis convencionales, es que como las infraestructuras y el propio trfico cambian, esos datos rpidamente quedan anticuados y obsoletos. Adems, en la mayora de los casos, una asignacin de esta matriz a la red, puede no reproducir los flujos observados. Los tres tipos ms importantes de modelos considerados como anlisis convencional son: modelos Fratar, modelos de Oportunidad y modelos Gravitatorios. El nfasis en el desarrollo de los sistemas de transporte a principio de los 70 creci por la necesidad de estudiar pequeas reas urbanas en detalle. Desde entonces se han venido desarrollando mtodos para sintetizar tablas de trfico, a partir de la informacin ms conveniente, buscando que estos mtodos fueran lo ms rpidos y econmicos posible. 1.2.3.2 Modelos de trfico basado en contadores

En realidad, el problema de una red dada, es un sistema dinmico en cunto a la dependencia con el tiempo. El proceso de analizar el flujo del trfico en dichas redes, se puede simplificar estudiando algunas funciones de densidad, que satisfagan ciertas ecuaciones diferenciales de tipo continuo ( Lyrintzis et al. 1994, Zhang et al.1995), o puede ser tratado mediante aproximaciones de programacin dinmica DP (Dynamic Programming, Janson 1995). En la prctica, sin embargo, este sistema dinmico es muy complicado de estudiar para obtener la solucin deseada. Para derivar matrices O-D a partir de la informacin contabilizada (basada en contadores) , el flujo de trfico se considera normalmente estacionario esttico, es decir , independiente del tiempo. Primero, el estudio de matrices O-D est motivado por el propsito de reducir el problema de la congestin. En el caso de la congestin, sin embargo, la distribucin del flujo de trfico est dominada por el principio de equilibrio-usuario, que se discutir en el siguiente apartado. Adems puede demostrarse que el patrn de flujo es independiente del tiempo si el sistema satisface una condicin de equilibrio.

22

Introduccin y objetivos del proyecto

Segundo, si el sistema se considera durante un corto intervalo de tiempo, se puede aproximar como un sistema esttico. Es ms, el tratamiento estacionario de sistemas dinmicos puede considerarse como el primer paso hacia la simplificacin del problema, y frecuentemente, esto revela una estructura ms detallada del problema. De todos los modelos de obtencin de informacin de trfico, tal vez, la contabilizacin del trfico (volmenes de trfico en los arcos de una red), contenga la informacin ms importante sobre distribuciones O-D. Se ha desarrollado una gran variedad de modelos para construir matrices O-D, basados en conteos de trfico junto con otra informacin. Segn la teora usada, esos modelos se pueden dividir en los siguientes tipos: I. Modelos Gravitatorios Estos modelos, a veces son llamados de Calibracin de Parmetros, y

representan la idea original de establecer distribuciones de trfico. En estos modelos, las entradas de la matriz O-D son consideradas como una funcin del trfico contabilizado y otros parmetros. Se aplican tcnicas de regresin y la ley de conservacin del flujo, para calibrar los parmetros, buscando que las diferencias entre los volmenes observados y los volmenes establecidos sean minimizadas. Se dividen los modelos de regresin, en lineales (Low [Low1972], Hola [Hol1976], Gaudry and Lamarre 1978, Smith and McFarlane 1978) y no lineales (Rolillhard 1975, Hogbag 1976). II. Modelos de Equilibrio Estos modelos estn basados en el principio de optimizacin del flujo del trfico por parte del usuario, llamado Principio de Equilibrio-Usuario Principio de Wardrop (Wardrop 1952). Aqu se incluyen los modelos: LINKOD (Nguyen [Ngu1977], Gur [Gur1980]), SMALD (Kurth [Kur1979]), y LP (Sivanandan [Siv1991], Sherali [She1994a], [She1994b]). III. Modelos de Entropa

23

Introduccin y objetivos del proyecto

Los modelos de Mnima Informacin y Mxima Entropa estn incluidos en este grupo y pueden convertirse en el tipo de modelo Gravitatorio. En estos modelos, la probabilidad de que ocurra una determinada distribucin de trfico es considerada proporcional al nmero de estados (entropa o desorden) del sistema. La matriz O-D que se deriva aparenta ser la ms probable, en cunto a la consistencia de la informacin tal como la longitud y velocidad libre en los arcos. Los pioneros de estos modelos, ME2, son Willumsen [Wil1978] y Van Zuylen [Van1978]. Desde entonces se han realizado muchas mejoras y combinaciones con otras teoras, y se han mejorado una gran parte de las pruebas de esos modelos. Estos resultados se recogen [Eas1993a] y CTR (1995). IV. Modelos Estadsticos Estos modelos tienen en cuenta la inexactitud de los flujos O-D observados. Este grupo incluye el modelo CGLS (Constrained Generalized Least Squares, McNeil 1983), y modelos CML (Constrained Maximum-likelihood, Geva 1983, Spiess 1987, Walting and Maher 1988, Walting and Grey 1991). Otro modelo, llamado MEUSE (Matriz Estimation Using Structure Explicity, Bierlaire and Toint 1995), usa tanto datos histricos como datos recogidos en la entrada de aparcamientos, y puede ser parcialmente incluido en este subgrupo. Los modelos estadsticos no son tan populares en la prctica como los modelos de equilibrio o los de entropa. V. Modelos de Redes Neuronales Muller y Reinbardt introdujeron en 1990, la aproximacin de red neuronal, para determinar matrices O-D a partir de conteos del trfico. En cierto sentido, esta aproximacin est basada en los conceptos derivados de la investigacin del cerebro humano. El procedimiento en esta aproximacin incluye componentes de aprendizaje y optimizacin. El modelo puede ser descrito matemticamente como un diagrama directo con tres caractersticas: en las revistas Easa

Un estado de variable asociado a cada nodo. Un peso asignado a cada arco.

24

Introduccin y objetivos del proyecto

Una funcin de transferencia definida para determinar el estado de cada nodo como una funcin de sus tendencias y de los pesos de sus arcos entrantes.

Yang, Akiyamma y Sasaki [Yan1992] adoptaron una red neuronal para sintetizar flujo O-D en una interseccin de cuatro caminos. Chin, Hwang y Pei [Chi1994] describieron un modelo de red neuronal para generacin de informacin O-D a partir de los volmenes de flujo. Estos modelos todava estn en un proceso embrionario. VI. Modelos Fuzzy En lugar de la suposicin del todo o nada hecha en la mayora de los modelos, estos modelos aplican cierto grado de borrosidad a los datos en los arcos (Xu and Chan 1992 a-b). La borrosidad, indica probabilidad, pero es bastante diferente en realidad. Se han realizado pruebas con diferentes tipos de borrosidad en la red de Eastern Highway Corridor (Estados Unidos). El modelo es relativamente nuevo, por lo que sera recomendable realizar estudios de casos adicionales y experimentar.

1.3 Objetivos del Proyecto

Este proyecto tiene como objetivo el diseo y la implementacin de un algoritmo de calibracin de matrices O-D partiendo de una asignacin de trfico. El algoritmo emplea una matriz O-D inicial y realiza una asignacin de trfico en la red. Partiendo de la diferencia de volmenes observada en ciertos tramos en los que se tiene constancia del volumen real que poseen, se pretende calibrar la matriz original con vistas a obtener una nueva matriz O-D que se ajuste a los volmenes reales. Por tanto, el algoritmo se divide en dos partes: una asignacin previa y una calibracin basada en los resultados de la asignacin. El trabajo realizado comprende dos algoritmos diferentes, uno basado en el clculo de los porcentajes de flujo que recorren los tramos y un segundo algoritmo que realizar una calibracin basndose en el clculo de los k caminos mnimos (K-mn) en

25

Introduccin y objetivos del proyecto

la red. En la implementacin del segundo algoritmo, es necesario el desarrollo de un algoritmo de obtencin de los k caminos mnimos, dado que no se dispone de esa herramienta. Cada uno de los algoritmos aportar unas ventajas e inconvenientes frente al otro, las cuales se detallarn en captulos sucesivos. En cuanto a la asignacin previa, se emplea un algoritmo ya implementado en la aplicacin TRAMOS, basado en el algoritmo de Frank-Wolfe. La implementacin de los algoritmos desarrollados requiere del diseo de una estructura de datos, adems de las correspondientes funciones que operen sobre los mismos datos. Ambas partes han de ser convenientemente diseadas y documentadas. El documentado est estructurado en seis captulos. El primero consiste en una introduccin a la extrapolacin de matrices O-D. Tambin se especifican algunos de los elementos que se usan a lo largo de este documento. En el captulo 2 se analizar el algoritmo de asignacin utilizado en la calibracin. Este algoritmo se basa en el algoritmo de Frank-Wolfe. As mismo se har una descripcin de diferentes algoritmos de encaminamiento, partiendo del algoritmo de Dijkstra bsico y que concluir con el diseo de un algoritmo de bsqueda de k caminos mnimos. La implementacin de los algoritmos realizados ha sido realizada en el lenguaje C++, y se ha seguido una metodologa orientada a objetos denominada UML (Unified Modeling Language). Dicho lenguaje se basa principalmente en la definicin de diagramas de casos de uso, diagramas de paquetes, diagramas de clases y diagramas de secuencia. Estos diagramas se incluyen en la documentacin del proyecto en el captulo 3. En el captulo 4 se detallarn los dos mtodos de calibracin que se proponen en este proyecto, analizando el proceso que llevan a cabo sobre la matriz origen-destino. Se analizarn las diferencias entre ambos algoritmos y las ventajas e inconvenientes que ambos aportan. Se presentan unos ejemplos sobre escenarios sencillos para ilustrar el

26

Introduccin y objetivos del proyecto

funcionamiento de los algoritmos. Tambin se analizarn las interfaces grficas diseadas para la aplicacin. Con vistas a probar el funcionamiento de los algoritmos implementados se realizar una serie de pruebas sobre varios escenarios, ficticios y reales. Se realizarn pruebas de validacin y de integracin de los algoritmos. Todas ellas, con su correspondiente documentacin se encuentran detalladas en el captulo 5. Finalmente se presentarn las conclusiones a las que se ha llegado tras el anlisis de los resultados obtenidos y se propondrn modificaciones y extensiones que pudieran mejorar el algoritmo. No hay que olvidar que el objetivo es obtener una estimacin de la matriz origen-destino que se ajuste mejor a la realidad, por lo cual las soluciones son infinitas.

27

Modelo de Calibracin mediante algoritmo de asignacin

2 Modelo de calibracin mediante algoritmo de asignacin


2.1 Introduccin

Entre las numerosas aplicaciones de planificacin de trfico que existen, la determinacin de la demanda de trfico es una de las ms estudiadas. De hecho, en la mayora de las aplicaciones de modelado del trfico, la obtencin de los datos de viajes origen/destino es en la mayora de los casos difcil, caro y como consecuencia resultan datos incompletos. No es pues difcil comprender el motivo de buscar algoritmos que nos permitan estimar la matriz origen/destino a partir de datos ms asequibles. Nosotros vamos a ofrecer una variante a los mtodos existentes. Entre los algoritmos que se han desarrollado hasta ahora, destacan especialmente los que se basan en tcnicas de optimizacin lineal (maximizacin de la entropa o minimizacin de la informacin) como se realiza, por ejemplo, en maximum likelihood methods (Spiess [Spi1987], 1987), A method to Enhance the Perfonmance of Synthetic OriginDestination (O-D) Trip Table Estimation Models (Dhruv Nanda [Nan 1997], 1997) o Mathematical models transportation demand analysis (Michel Bierlaire [Bie1995], 1995). Este trabajo se basa en el uso de un algoritmo de asignacin como herramienta de apoyo. El mtodo de calibracin mediante asignacin de trfico que vamos a desarrollar, realiza una estimacin de la matriz de viajes a partir de la observacin de los flujos de trfico que se generan en los tramos como consecuencia de una asignacin en el viario y su posterior comparacin con los datos de volmenes reales de la red. Es pues necesario disponer de una relacin de datos con los flujos reales en los tramos de la red. Estos datos se obtienen mediante contadores electrnicos situados en puntos estratgicos situados en el viario. Para la implementacin del modelo se requiere disponer de un algoritmo que nos permita realizar una asignacin de trfico en la red a partir de la matriz de viajes con el fin de obtener los flujos en los tramos con puntos de medida. Este

28

Modelo de Calibracin mediante algoritmo de asignacin

algoritmo ya implementado con anterioridad al desarrollo de este proyecto en la aplicacin TRAMOS. El algoritmo es descrito en el siguiente punto. Asimismo para la implementacin de los mtodos de calibracin se requiere de un algoritmo de clculo de los k caminos mnimos, descrito en el apartado 2.3.

2.2 Algoritmo de asignacin de trfico


2.2.1 Introduccin

La asignacin de trfico es el proceso que distribuye un conjunto conocido de viajes a una red de transporte. El proceso de asignacin requiere como entrada una completa descripcin del sistema de transporte existente y una matriz que describa los desplazamientos que se producen. La salida del procedimiento difiere del nivel de sofisticacin del procedimiento de asignacin, pero siempre incluye una estimacin del volumen de trfico y los tiempos o coste de viajes en cada tramo del sistema de transporte; algunas tcnicas de asignacin incluyen informacin en el interior de las intersecciones mediante la inclusin de giros.

Figura 2.2-1. Procedimientos en el proceso de asignacin de trfico

29

Modelo de Calibracin mediante algoritmo de asignacin

Los objetivos de la asignacin de trfico como parte del proceso de planificacin son conocer las deficiencias en el actual sistema de transporte, mediante la asignacin de la previsin futura de viajes al sistema actual, evaluar los efectos de las mejoras y las extensiones al sistema de transporte actual asignando a la red ampliada la previsin futura de viajes y establecer las prioridades de construccin asignando estimaciones de viajes para aos intermedios. Los conceptos bsicos de asignacin de trfico surgieron a principios de los aos 40 y conjuntamente con los primeros estudios sobre movilidad realizados en 100 ciudades de los EEUU despus de la finalizacin de la segunda guerra mundial. (Los estudios consistan en determinar origen y destino y el desplazamiento de vehculos entre zonas) Los primeros trabajos en asignacin consistieron principalmente en la estimacin de la diversificacin del trfico desde las calles y carreteras existentes hacia las nuevas y mejoradas arterias o autopista, basando en el tiempo de viaje y costes. La primera asignacin realizada asuma que el tiempo de viaje y coste era independiente del flujo sobre los tramos, esto es conocido como asignacin todo o nada que se describir en el siguiente punto. Esta tcnica ofrece resultados poco reales, no solo por que falla en reconocer que el tiempo de viaje y coste se incrementa cuando aumenta el flujo de vehculos sobre los tramos, sino que principalmente el hecho que todos los viajeros estn localizados sobre rutas basndose en una media simple. Posteriormente se realizaron estudios que pretenda relacionar la seleccin de ruta con los factores de tiempo y distancia, y como resultado la Asociacin Oficial de Autopista (Federal Highway Administration) desarrollaron una curva de diversificacin de trfico estndar como sugerencia para la determinacin de la utilizacin futura de las vas urbanas. Las curvas desarrolladas estaban basadas en los datos obtenidos de la observacin en diferentes localizaciones con dos caractersticas similares, y estimacin del porcentaje de flujo sobre las rutas tradicionales que seran transferida a las nuevas vas en estudio. Las asignaciones realizadas mediante esta metodologa se reduca al estudio de pequeas zonas donde eran definidos varias rutas en paralelo (estudios de corredores de trfico), esta tcnica se denomina asignacin en dos rutas y asignacin proporcional.

30

Modelo de Calibracin mediante algoritmo de asignacin

Posteriormente, a principios de la dcada de los 50 el conocimiento de como el conductor selecciona la ruta para desplazarse entre dos zonas estaba basado en la experiencia del ingeniero de transporte y el tiempo empleado en el desplazamiento. El anlisis detallado del presente y futuro del transporte en reas urbanas requera una mayor precisin y efectividad de los resultados obtenidos de la asignacin, que necesitaba una gran cantidad de operaciones, y por ello era necesario disponer de ordenadores de gran potencia o bien procedimientos generales que redujeran el costo de la realizacin de la asignacin. Sobre 1957 surgen los primeros algoritmos eficientes para calcular caminos mnimos en un grafo, es decir encontrar solucin al problema de ruta mnima, con coste en arcos. Simultneamente el rea de transporte de Chicago contrat el desarrollo de un programa de ordenador que permitiera realizar asignaciones de trfico sobre grandes redes urbanas. Las investigaciones condujeron a al desarrollo de un programa para encontrar la ruta mnima en tiempos de una red. El procedimiento estaba basado en el algoritmo de Moore con coste en arcos especificado por el tiempo medio de viaje. Posteriormente la General Electric conjuntamente con el distrito de Columbia desarrollaron un modelo de asignacin donde se incorporaban la posibilidad de prohibicin de giros. J.G. Wardrop [War1952], del laboratorio de desarrollo de carreteras publica un artculo donde se describe los dos principios de distribucin de flujo en red: El principio de equilibrio de usuario, basado en el supuesto de Todos los conductores selecciona la ruta que minimiza su coste de viaje y El principio de optimalidad del sistema que indica que el tiempo total de viaje para todos los conductores es aquel que minimiza el tiempo total del sistema. Estos dos principios han sido ampliamente aceptados y se conoce como los principios de Wardrop. M. J. Beckmann [Bec1956], formul en problema de asignacin de trfico mediante modelos matemticos. Empleando teora de optimizacin no lineal, el modelo cumple las dos condiciones de Wardrop ofreciendo una solucin convexa al problema de optimizacin no lineal.

31

Modelo de Calibracin mediante algoritmo de asignacin

En 1956, M. Frank y P. Wolfe [Fra1956] desarrollaron un algoritmo iterativo para obtener la solucin convexa a problemas de optimizacin cuadrtica. Cuando aplicaron los modelos de asignacin de trfico al algoritmo desarrollado, emplearon una asignacin inicial Todo o nada, basndose en los tiempos de viaje, el volumen de trfico existente y minimizar la funcin objetivo. Actualmente este algoritmo es un estndar en la planificacin del transporte y lo describiremos en los siguientes apartados. Despus de estos pasos se han desarrollado y mejorado los algoritmos de asignacin. Una de las mejoras fue la introduccin de funciones aritmticas que relacionan el volumen de trfico que circula por un tramo con el tiempo de viaje empleado y velocidad desarrollada. Estas funciones son denominadas funciones volumen-retraso y funciones de tiempo de viaje.

2.2.2

Funciones volumen-retraso y tiempo de viaje

Como resultado del crecimiento del volumen de trfico, la velocidad de desplazamiento de los vehculos tiende a disminuir, al principio el descenso de velocidad es muy pequeo pero aumenta en la medida que las colas producidas en el tramo aumentan. En el anlisis de los sistemas de trfico el tiempo medio de viaje en el tramo es modelado como una funcin no positiva, lineal y creciente del volumen de vehculos. Los parmetros incluidos en la expresin suelen ser la capacidad y los factores de medida como por ejemplo el tiempo de viaje. Diferentes estudios han desarrollado sus propias frmulas de retraso. Existen dos mtodos de obtencin:

Obtencin de una serie de parmetros a partir de un conjunto de medidas. Desarrollo de las expresiones a partir de estudios sobre velocidad y tiempo de viajes caractersticos de la red.

32

Modelo de Calibracin mediante algoritmo de asignacin

Los parmetros bsicos del tramo, en relacin con el tiempo de viaje t a sobre el
0 tramo a con flujo f a son el tiempo de viaje en flujo libre, t a , es el tiempo empleado por

un vehculo cuando no existe ningn otro vehculo en el tramo, y la capacidad del tramo, c a , es una medida de flujo, a partir de la cual el tiempo de viaje sobre el tramo se incrementar muy rpidamente. A continuacin mostramos una grfica que representa una curva VolumenRetraso:
Volumen de trfico
2000,00 1800,00 1600,00 Tie 1400,00 mp 1200,00 o 1000,00 800,00 600,00 400,00 200,00 0,00 0 100 200 Intensidad 300 400 500

Intensidad

Figura 2.2-2. Funcin Volumen-Retraso

La grfica muestra la evolucin del tiempo de viaje cuando la intensidad (nmero de vehculos) en el tramo aumenta, es destacable observar como las funciones deben presentar una asntota (diferente a cada curva y tramo) que coincide con el valor de saturacin del tramo (medido en nmero de vehculos que circula en 1 hora).

2.2.3

Las condiciones de Wardrop

El problema de asignacin de trfico pretende determinar el flujo de trafico que circula por los tramos a partir de la demanda de viaje entre un conjunto de par de nodos y funciones de retraso definidas. Las dos condiciones de asignacin ptima fueron consideradas y descrita por Wardrop, aunque Pigou formul la primera nocin sobre

33

Modelo de Calibracin mediante algoritmo de asignacin

equilibrio de trfico con una descripcin del comportamiento del trfico rodado bajo congestin. En el anlisis de los modelos de asignacin, la congestin es fundamental. Como resultado del crecimiento del volumen de trfico, la velocidad media de desplazamiento de los vehculos sobre el tramo desciende, primero lentamente, para que despus crezca rpidamente como consecuencia del incremento de la cola producida en el tramo, hasta que el tramo entra en un estado de saturacin donde el flujo por el tramo es muy bajo. En el anlisis de los sistemas de trfico, el tiempo medio de desplazamiento es modelado a partir de las funciones volumen-retraso. Kohl [War1952] reconoci que las rutas seleccionadas por los viajeros eran aquellas rutas considerada como mas corta por el viajante bajo las condiciones de trfico existente, es decir, cada viajero selecciona aquella ruta que minimiza el tiempo empleado en su desplazamiento. Aunque se ha observado que, adems del tiempo de viaje, existen otros parmetros que influyen sobre la decisin del conductor en el proceso de seleccin de ruta, este todava es considerado como el principal componente del coste de viaje. Las dos condiciones descritas por Wardrop [War1952] son la condicin de equilibrio de usuario y la condicin de optimalidad del sistema. El principio de equilibrio de usuario corresponde con la seleccin de rutas minimizando el tiempo total de viaje del conductor. El segundo principio hace referencia a minimizar el coste total del sistema, es decir minimizar el coste total incurrido por todos los conductores. El resultado de tales decisiones tomadas por todos los conductores dirige el problema a una situacin donde ningn conductor puede reducir su tiempo de viaje seleccionando una ruta en detrimento de otra, esto es conocido como Situacin ptima de usuario. La situacin ptima de usuario est caracterizada por que todas las rutas utilizadas entre un origen y un destino tienen el mismo tiempo de viaje medio. Este ptimo puede ser establecido por que se considera que existe informacin perfecta y detallada sobre todos los caminos disponibles, as como de las caractersticas de cada camino, es decir, todos los usuarios conocen los tiempos de viajes empleados en cada

34

Modelo de Calibracin mediante algoritmo de asignacin

ruta. Supngase que existen dos rutas entre un origen y un destino, donde el tiempo medio de viaje de una de ellas es inferior, el usuario o viajante observar la existencia de una nueva ruta donde su tiempo de viaje es inferior al tiempo actual, esto provoca un cambio de ruta y por consiguiente un aumento del tiempo medio de viaje en la ruta seleccionada, el proceso prosigue hasta que a los usuarios les sea indiferente seleccionar cualquier ruta. El resultado de los patrones de viaje procedentes de la seleccin de rutas es conocido como flujo ptimo del sistema. La situacin ptima para el sistema est caracterizada por que el tiempo marginal empleado entre un origen y un destino es el mismo independiente de la ruta seleccionada. Si el tiempo de viaje marginal fuera inferior en una ruta que en otra sera posible una redistribucin de los flujos de las rutas con mayor tiempo de viaje hacia rutas con menor tiempo de manera que se alcance un nuevo equilibrio. Existen dos alternativas para obtener el flujo ptimo en el sistema. La primera es la imposicin de las rutas a los usuarios (Sistema ptimo involuntario). Existen sistemas donde un controlador central influye en la toma de decisiones sobre los viajes, donde esta opcin puede ser razonable, por ejemplo en distribucin de mercancas. La segunda alternativa es intentar persuadir a los conductores a seleccionar su ruta eficientemente. Este sistema voluntario es conocido como estrategia de congestin. Dada las funciones describiendo las relaciones entre el volumen de trfico, coste del viaje y demanda de transporte, el trfico puede ser asignado sobre el viario acorde con dos principales principios: El principio de igualdad de tiempos de viajes independiente de la ruta seleccionada de forma eficiente, tambin llamado asignacin

descriptiva, siendo uno de los mas empleados, o el principio de mnimo coste total, el
cual es denominado asignacin normativa. La demanda de transporte es normalmente considerada como la media de los viajes realizados, es decir frecuencia media de viajes durante un periodo de tiempo determinado. El equilibrio debe ser visto como un estado estable que es alcanzado

35

Modelo de Calibracin mediante algoritmo de asignacin

despus de un nmero de pasos donde los conductores han ajustado sus rutas segn las condiciones descritas anteriormente. Los dos principios descritos anteriormente son atribuibles a J. G. Wardrop del Road Research Laboratory [War1952], que posteriormente fueron conocidos como las dos condiciones de Wardrop.

El primer principio de Wardrop. El tiempo de viaje en todas las rutas utilizadas es igual y menor que

aquellos tiempos que pueden ser experimentados por un vehculo en cualquier otra ruta.

El segundo principio de Wardrop. El tiempo de viaje medio es mnimo.

En los modelos de asignacin la demanda de viajes puede ser fija o variable, apliquemos el principio de Wardrop para cada tipo de demanda.

2.2.3.1 Demanda fija

Para formular matemticamente las condiciones de equilibrio de usuario, considrese un par origen y destino ( p, q) C . Sea c pqr el tiempo de viaje empleado en la ruta r que conecta el nodo origen p con el nodo destino q. Se asume que las rutas estn ordenadas por volumen de circulacin, por ello las rutas que presentan flujo cumplen:

c pq1 = c pq 2 = c pq 3 = ... = c pql , y las rutas no empleadas para cada par origen-destino (l+1..) tienen tiempos de viaje que son al menos iguales o superiores a las rutas anteriores. c pq1 = c pq 2 = c pq 3 = ... = c pql c pqi i = l + 1,....

36

Modelo de Calibracin mediante algoritmo de asignacin

Sea R pq el conjunto de ndices para rutas no cclicas entre un par ( p, q) C ,

h pqr el flujo que circula por la ruta r que conecta el par ( p, q) C y pq el tiempo de viaje en la ruta mas corta. Las condiciones de equilibrio de usuario de Wardrop son equivalentes a: h pqr > 0 c pqr = pq h pqr = 0 c pqr pq r R pq r R pq (1a) (1b)

Estas restricciones pueden ser resumidas como: h pqr ( c pqr pq ) = 0 ( c pqr pq ) 0


rR pq

r R pq , ( p, q) C r R pq , ( p, q) C ( p, q) C r R pq , ( p, q) C ( p, q) C

(2a) (2b) (2c) (2d) (2e)

pqr

= d pq

h pqr 0

pq 0

donde (2a)-(2b) es una estructuracin de (1), (2c) asegura la adminisibilidad con respecto a la demanda prefijada y (2d) y (2e) aseguran la no negatividad del flujo en la ruta as como del correspondiente coste de viaje.

2.2.3.2 Demanda variable

Normalmente el problema de asignacin de trfico es formulado como un problema con demanda variable, donde los viajes entre un origen y un destino son modelados como funciones del menor coste de viaje entre el origen y el destino. La premisa bsica detrs de tales modelos es que los viajeros tienen un nmero de posibles rutas que seleccionan segn consideraciones econmicas, tales como el coste del viaje.

37

Modelo de Calibracin mediante algoritmo de asignacin

En el supuesto de que la demanda sea elstica, la interpretacin del problema de asignacin del trfico en trminos econmicos es ms natural que con demanda fijada. Si la red de transporte es considerada como un mercado econmico, la demanda corresponde a las necesidades de viajes. La oferta corresponde con la propia red o viario que se ofrece a los usuarios y que tiene un coste asociado al propio viaje. El equilibrio de mercado se alcanza cuando el nmero de viajes entre un par origen-destino es igual a la demanda de viajes a un coste determinado. Para extender las condiciones de equilibrio de usuario a demanda elstica se considera que sta viene determinada como funcin del coste mas bajo en una ruta, es decir: d pq = g pq ( ) , ( p, q) C

Las condiciones de Wardrop para demanda elstica se escriben: h pqr > 0 c pqr = pq h pqr = 0 c pqr pq d pq > 0 d pq = g ( ) d pq = 0 g ( ) 0 r R pq r R pq ( p, q) C ( p, q) C (3a) (3b) (3c) (3d)

Las condiciones (3a)-(3b) corresponden a las condiciones de la demanda fijada expuesta en el (1). Las condiciones (3c) y (3d) establecen que la demanda de transporte en un par origen destino es igual al valor de la funcin de la demanda en la ruta de menor coste y que la demanda es cero si el coste de viaje es muy elevado. Nosotros vamos a centrarnos en el caso de demanda fija, por lo que a partir de aqu slo hablaremos de ese caso.

38

Modelo de Calibracin mediante algoritmo de asignacin

2.2.4

Formulacin matemtica del modelo de equilibrio.

El modelo bsico trata de representar el problema de asignacin, de forma que el anlisis y solucin del mismo conduzca a una distribucin de flujos que satisfaga las condiciones de equilibrio de Wardrop. Las restricciones del modelo son las correspondientes al envo de flujo en una red urbana. Las restricciones se expresan en las siguientes ecuaciones con las siguientes consideraciones: La red est fuertemente conectada, es decir todo par origen-destino esta conectado por una ruta.
( p, q) C R pq 1

La demanda d pq es no negativa para cada par ( p, q) C

La funcin que especifica el tiempo de viaje t a : + + + es positiva y continua para cada tramo a A . El modelo bsico queda:
Min t a ( s )ds
aA 0 fa

(4a)

sujeto a:

rR pq

pqr

= d pq

( p, q) C
r R pq , ( p, q) C

(4b) (4c) (4d)

h pqr 0
( p , q )C rR pq

pqra

h pqr = f a

a A

La ecuacin (4a) correspondiente a la funcin objetivo describe que el tiempo

39

Modelo de Calibracin mediante algoritmo de asignacin

total empleado por todos los viajeros en el desplazamiento sobre el viario es mnimo. A continuacin la ecuacin (4b) establece que el nmero de viajes que se producen entre cada par origen-destino es la suma de los viajes realizados por cada una de las posibles rutas que conectan el origen con el destino, el grupo de ecuaciones (4c) corresponde a la no negatividad de la cada ruta, por ltimo la ecuacin (4d) implica que el nmero de viajes que circula por un tramo es la suma del nmero de vehculos que emplean la ruta que contiene el tramo especificado. La mayora de los autores representan el problema de asignacin mediante caminos para todos los pares de zonas Origen-Destino. Las restricciones que describen la admisibilidad de los flujos queda:

rR pq

pqr

= d pq ,

( p.q) C

h pqr 0

( p.q) C , r R pq

siendo h pqr el flujo correspondiente al camino r que conecta los nodos p y q, la relacin con las variables xa mediante la ecuacin:

( p , q )C rR pq

pqra

h pqr = f a

a A

La funcin objetivo del problema de asignacin debe permitir que la solucin obtenida cumpla las condiciones de optimalidad y las condiciones de equilibrio de Wardrop.

2.2.5

Caracterizacin de la funcin de equilibrio

El paradigma de Wardrop especifica que los viajeros se desplazan por aquellas rutas que minimizan el tiempo individual de desplazamiento. Caracterizando el modo de comportamiento queda:

40

Modelo de Calibracin mediante algoritmo de asignacin

Sea urs el tiempo mnimo de recorrido que experimenta una unidad de demanda al desplazarse entre el origen r R y el destino s S . Por tanto, urs Min ckrs : k K rs

Las condiciones de equilibrio se reescriben como:

[c

rs k

u rs f krs = 0 para todo r R , s S y k K rs

Por definicin, los tiempos ckrs de desplazamiento sobre los caminos no son superiores al tiempo mnimo, u rs . Por lo tanto la expresin indica que solo puede haber flujo positivo en aquellos caminos k por los que el tiempo de recorrido es mnimo. La funcin objetivo adecuada debe permitir que las condiciones de optimalidad del modelo corresponda con las condiciones de equilibrio de Wardrop. Las condiciones de optimalidad de este modelo coinciden con las condiciones de Kuhn-Tucker [Lar1997] que expresan que la direccin de mxima mejora de la funcin objetivo sin restricciones ha de pertenecer al cono descrito por las direcciones de mxima inadmisibilidad de las restricciones. La funcin objetivo del modelo queda: G ( x) = t a ( s )ds
a A
0

fa

donde t a es funcin que indica el tiempo empleado en recorrer un tramo con un volumen de trfico especfico. La solucin para el problema de asignacin de trfico es equivalente a resolver un problema donde el rea bajo la curva volumen-retraso es minimizada. Por ejemplo:

41

Modelo de Calibracin mediante algoritmo de asignacin

Figura 2.2-3. Solucin grfica al problema de asignacin de trfico

La grfica de la izquierda muestra la asignacin de trfico no es ptima ya que existe un punto donde el rea por debajo de la funcin es inferior

2.2.6

Procedimiento de linealizacin de Frank-Wolfe

El mtodo de Frank y Wolfe [Fra1956] fue desarrollado inicialmente para la resolver problemas cuadrticos convexo, pero es aplicable a cualquier problema de optimizacin cuya funcin objetivo sea pseudoconvexa y diferenciable. El algoritmo de Frank-Wolfe aplicado al problema de asignacin es: f 0 una solucin admisible para el problema de

1.- Inicializacin. Sea

asignacin, LDB=0, > 0 , y k=0.


2.- Bsqueda de la direccin que mejora la solucin actual. Sea

42

Modelo de Calibracin mediante algoritmo de asignacin

T ( f ) = T ( f k ) + T ( f k ) T ( f f k )

Resolver el subproblema de programacin lineal

Min T ( f ) sujeto a:
rR pq

pqr

= d pq

( p, q) C
r R pq , ( p, q) C

h pqr 0
( p , q )C rR pq

pqra

h pqr = f a

a A

Sea y k la solucin del modelo, y p k = y k f solucin

la direccin de bsqueda de

3.- Comprobacin de convergencia. Sea

LDB = max LDB, T ( y k ) . Si


k

T ( f k ) LDB < , entonces finalizar el procedimiento con f LDB En otro caso continuar al siguiente paso.

solucin aproximada.

4.- Bsqueda del incremento a la nueva solucin. Buscar el incremento, l k , el

cual resuelve el problema de una sola dimensin:


min T ( f k + lp k ) 0 l 1

5.- Actualizacin.

k +1

= f k + lp k

6.- Comprobacin de convergencia. Si

T( f

k +1

) LDB < , entonces finalizar LDB

43

Modelo de Calibracin mediante algoritmo de asignacin

el procedimiento con f

k +1

solucin aproximada. En otro caso k=k+1 y volver al paso 1.

La solucin inicial f 0 puede ser obtenida mediante una asignacin Todo o nada considerando que en todos los tramos se circula en flujo libre. El problema de programacin lineal a resolver en el paso dos puede ser desagregado en C problemas independientes. Cada problema corresponde a la obtencin del camino mnimo entre un par de nodos. El coste asociado a cada arco para el clculo del camino mnimo es t a ( f ak ) . La resolucin del problema de asignacin mediante el algoritmo de Frank-Wolfe conlleva la resolucin de una gran cantidad de problemas de ruta mnima, es decir en el paso dos el procedimiento debe calcular el camino mnimo desde todos los nodos origen hacia todos los nodos destinos. La mayor parte de los clculos realizados en el algoritmo son efectuados por la resolucin del problema de ruta mnima (sobre el 90%) en el paso 1. La importancia de seleccionar e implementar un algoritmo eficiente en la obtencin de la ruta mnima es esencial. A continuacin se expone con mayor detalle del procedimiento de Frank-Wolfe aplicado al modelo de asignacin de trfico.

44

Modelo de Calibracin mediante algoritmo de asignacin

Inicio

Obtener Matriz Distancias A(i,j)

Obtener Camino Mnimo

Obtener Yk como Asignacin Todo o Nada

Iteracin Inicial

Si

No Calcular Factor Ponderacin Factor Ponderacin=1

Actualiza Matriz Asignacin

Matriz Asignacin = Yk

No Fin

Si Fin

Figura 2.2-4. Algoritmo de Asignacin. Mtodo de Frank-Wolfe

La figura anterior muestra el procedimiento empleado en la obtencin de una solucin admisible mediante el algoritmo de Frank-Wolfe. Sea A(i,j) la matriz que representa los viajes entre cada par de zonas definidas en el viario, Yk direccin de mejora de la funcin objetivo del modelo, corresponder con el camino mnimo entre un

45

Modelo de Calibracin mediante algoritmo de asignacin

par origen-destino, el factor de ponderacin es una variable utilizada para la redistribucin de flujos y la matriz de asignacin corresponde a la estructura de datos donde se almacenarn los resultados obtenidos en cada iteracin. El procedimiento comienza inicializando todos los valores la matriz de asignacin a 0, a continuacin comienza el proceso iterativo calculando la matriz de distancias o coste:

Inicio

Hay tramos (i,j) sin asignar distancia

Fin

Volumen(i,j)=Matriz Asignacin (i,j)

Matriz Distancia (i,j)=F(Volumen(i,j))

Figura 2.2-5. Mtodo de Frank-Wolfe. Inicializacin.

La matriz de distancias contiene, para cada arco de la red, el tiempo o coste que emplea un vehculo en el desplazamiento. Los arcos o tramos estn caracterizados por una funcin Volumen-Retraso, continua y creciente que es empleada para obtener el tiempo necesario para desplazarse por el tramo. El procedimiento se encarga de actualizar el tiempo empleado en cada tramo mediante la aplicacin de la funcin Volumen-Retraso correspondiente a cada tramo.

46

Modelo de Calibracin mediante algoritmo de asignacin

Conocido el flujo de vehculos que circula por cada tramo es posible obtener el valor de la funcin objetivo y calcular la direccin de mejora que nos conduce a una nueva solucin mejor a la actual. El procedimiento de obtener la direccin de mejora se realiza mediante una asignacin Todo o Nada en el camino mnimo calculado previamente. El procedimiento para calcular el camino mnimo debe ser eficiente y ptimo ya que el 90% del tiempo de computacin del procedimiento de asignacin es consumido por el clculo de la ruta mnima. Los algoritmos eficientes para la obtencin de una ruta mnima son los algoritmos de etiquetado, en especial se utiliza el algoritmo de Dijkstra cuyo orden de computacin es O(n log m) , donde n representa el nmero de nodos y m el nmero de aristas.
Inicio

Hay Centroides Origen

No

Fin

Si

No

Hay Centroides Destino

Dijstrak (i,j)

Ai , j Pmn Ai , j Ai , j + Matriz _ viajes (i , j )

Figura 2.2-6. Mtodo de Frank-Wolfe. Asignacin de viajes

47

Modelo de Calibracin mediante algoritmo de asignacin

El mtodo debe calcular los caminos mnimo entre cada par de zona OrigenDestino y asignarle la matriz de viaje a la ruta que conecta dicho par. Una vez obtenida la direccin de mejora de la funcin objetivo se obtiene el factor de ponderacin que permite redistribuir los flujos en el viario. El factor de ponderacin toma valores entre 0 y 1, ya que especifica que porcentaje de demanda se redistribuye. En la primera iteracin del algoritmo el factor de ponderacin toma como valor la unidad siendo equivalente a la asignacin todo o nada. El factor de ponderacin es el porcentaje en que se minimiza la funcin objetivo es decir: Min G ( ) =
a A

(1 ) va y a

t a ( s )ds

Para asegurar la estabilidad numrica, es necesario anular el gradiente de la funcin: G ( ) = dG ( ) . d

Inicio

F ((1 )M
a A i

Mtodo dicotomia
asig

(i , j ) + Ya )(Ya M asig (i , j ) )

Devolver Factor de Ponderacin

Figura 2.2-7. Mtodo de Frank-Wolfe. Obtener direccin de mejora

48

Modelo de Calibracin mediante algoritmo de asignacin

Los valores del factor de ponderacin se encuentran acotados entre 0 y 1. Para calcular el valor de que anula el gradiente se emplea el mtodo de clculo de races de una ecuacin, como por ejemplo el mtodo de dicotoma. Por ltimo el algoritmo se encarga de la actualizacin de la matriz de Asignacin, que recoge el volumen de vehculos que circula por cada tramo. La nueva matriz de asignacin es una redistribucin de flujos de la matriz anterior.

Inicio

M asig ( i , j ) = M asig ( i , j ) + (Yk M asig ( i , j ) )

Fin

Figura 2.2-8. Mtodo de Frank-Wolfe. Actualizacin de Flujos

Al final se comprueba las condiciones de salida del procedimiento, entre las posibles causas de salida del procedimiento son:

El nmero de iteraciones realizadas. El usuario especifica el nmero mximo de iteraciones que el procedimiento debe realizar.

El factor de ponderacin toma valor 0, por lo que no existe una redistribucin de flujos.

49

Modelo de Calibracin mediante algoritmo de asignacin

La funcin objetivo mejora muy poco con respecto a la iteracin anterior.

2.3 Algoritmos de rutas mnimas

En los problemas de asignacin de trfico una gran parte del proceso consiste en el clculo del camino mnimo entre cada par de centroides del grafo. Todo problema de asignacin tiene como ncleo del cdigo un algoritmo de optimizacin, el cual suele usarse de forma recurrente. De hecho, el 90% del tiempo empleado en el procedimiento de asignacin, consiste en el clculo del camino mnimo entre cada par de centroides. Por ello el tiempo total de clculo del algoritmo de asignacin depende fuertemente de la rapidez del cdigo de bsqueda de dichos caminos. Debido a que nuestro mtodo de calibracin se basa en una preasignacin, tambin va a ser para nosotros importante disponer de un buen algoritmo de optimizacin. En este punto vamos a estudiar diferentes algoritmos. Para la realizacin de dichos clculos se recurre a una serie de algoritmos llamados voraces entre los que se encuentran los algoritmos de obtencin de rboles de expansin mnima (Kruskal y Prim) y los algoritmos de ruta mnima (Dijkstra y Floyd [Dij1959]). En concreto se estudia el algoritmo de Dijkstra y varias modificaciones y mejoras sobre el algoritmo base. El algoritmo de Dijkstra as mejorado ser el empleado en nuestro algoritmo de asignacin y calibracin.

2.3.1

Algoritmo de Dijkstra bsico

En la realizacin de este algoritmo, partiremos de un grafo G = {N, A} donde la longitud de los arcos es conocida en forma de matriz de distancias. En el desarrollo del algoritmo se utilizaran dos conjuntos de nodos. Uno estar comprendido por los nodos candidatos C y otro por el conjunto de nodos seleccionados S. El algoritmo de Dijkstra es un algoritmo de etiquetacin en nodos, lo cual quiere decir que los nodos irn marcndose conforme se vayan seleccionando, de forma que no se seleccione un nodo ms de una vez. Al inicio del algoritmo la lista de nodos seleccionados estar integrada nicamente por el nodo origen. El resto de nodos estarn en la lista de nodos candidatos. El algoritmo ira traspasando los nodos de la lista de candidatos a la de seleccionados, de

50

Modelo de Calibracin mediante algoritmo de asignacin

forma que al finalizar este la lista de candidatos este vaca. El modelo de minimizacin que se pretende resolver con la aplicacin del algoritmo de Dijkstra viene determinado por el siguiente grupo de ecuaciones: Min t a ( s )ds
aA fa

sujeto a:
rR pq

pqr

= d pq

( p, q) C r R pq , ( p, q) C

h pqr 0
( p , q )C rR pq

pqra

h pqr = f a

a A

Se denomina camino especial a aquel camino, desde el origen a otro vrtice, que solo pasa por vrtices del conjunto de nodos seleccionados S. Un vector D mantiene la longitud del camino especial ms corto para cada uno de los nodos excepto el origen. Una vez que un nodo es trasladado del conjunto C al conjunto S, el camino especial de dicho nodo coincide con el camino mnimo. Para ilustrar los algoritmos se van a presentar los resultados aplicados al siguiente grafo:

Figura 2.3-1. Grafo del algoritmo de Dijkstra bsico

51

Modelo de Calibracin mediante algoritmo de asignacin

La matriz de distancias asociada al grafo permite introducir fcilmente los datos a la implementaron informtica del algoritmo. En ella cada elemento de la matriz L[i, j] representa la distancia entre los nodos i y j. La matriz que usaremos es la siguiente: O/D Nodo 1 Nodo 2 Nodo 3 Nodo 4 Nodo 5 Nodo 6 Nodo 1 Nodo 2 10 Nodo 3 5 15 5 Nodo 4 20 5 Nodo 5 10 Nodo 6 15 1 -

Tabla 2.3-1. Matriz de viajes A continuacin se muestra el algoritmo en forma de diagrama de flujo.

52

Modelo de Calibracin mediante algoritmo de asignacin


Inicio Inicializacin

C = { 2 , 3,...n} j=2

D [ j ] = L [1, j ]

Si

jn
No

F in

C
Si

Si

C: conjunto candidatos.
p C

v = vk

uk u p

S: conjunto seleccionados.
Si

C = C {v} S = S {v}

L[i,j]: distancia entre los nodos i y j D[]: vector de distancias. ui: elemento i-simo del vector D

Si

m C

D [ w ] = M in ( L [ v , w ] + D [ v ], D [ w ])
w = elemento nmero m de C

m = m +1

Figura 2.3-2. Algoritmo de Dijkstra

A continuacin se muestran los resultados de la iteracin del algoritmo sobre el grafo anteriormente mostrado. Se toma como origen el nodo 1.
Iteracin 1 2 3 4 5 Final Seleccionados {1} {1, 3} {1, 2, 3} {1, 2, 3,4} {1, 2, 3, 4, 5} {1, 2, 3, 4, 5, 6} Candidatos {2, 3, 4, 5, 6} {2, 4, 5, 6} {4, 5, 6} {5, 6} {6} {-} Nodo selec (v) 3 2 4 5 6 Distancias D [10, 5, 20, -, -] [10, 5, 10, -, 20] [10, 5, 10, -, 20, ] [10, 5, 10, 20, 20, ] [10, 5, 10, 20, 20, ] [10, 5, 10, 20, 20, ]

Tabla 2.3-2. Evolucin del algoritmo de Dijkstra bsico

53

Modelo de Calibracin mediante algoritmo de asignacin

La mayor perdida de tiempo del algoritmo de Dijkstra es la bsqueda del nodo v tal que su distancia al nodo origen sea mnima. Para ello se usa el vector de distancias D. La bsqueda implica recorrer un vector de N posiciones, lo cual, para grafos de un cierto tamao, puede ser realmente importante. Por ello, parece lgico tratar de disminuir este tiempo, con vistas a acelerar el algoritmo. En concreto, la inicializacin del algoritmo emplea un tiempo O(n), siendo n el nmero de nodos. La seleccin de un vrtice v implica un tiempo O(n2). El algoritmo tiene un coste de tiempo total de O(n2). Se buscarn mtodos que aceleren el proceso. Ello se consigue cambiando el vector D por una estructura en forma de rbol llamada montculo. Esta modificacin ser explicada con detalle en el siguiente paso.

2.3.2

Algoritmo de Dijkstra con montculos

Un montculo es un rbol binario, representado por un vector, sin necesidad de punteros. La principal propiedad de este tipo de rbol es la sencillez y el coste computacional de aadir un nodo, de forma que se mantenga ordenado. Un rbol binario se llama casi completo si cada uno de sus nodos internos posee exactamente dos hijos, izquierdo y derecho, excepto posiblemente un nodo especial situado en el nivel 1, que puede tener un solo hijo, el izquierdo. Adems todas las hojas (nodos sin hijos) se encuentran en el nivel 0 o en el nivel 1. El nodo especial, si existe, estar a la derecha de todos los nodos internos de nivel 1. Se puede representar este rbol sobre un vector T, en el cual los nodos de profundidad k se sitan en las posiciones T(2k-1),..., T(2k-1), k=1, ...., sabiendo que las posiciones del rbol son T(1), T(2),... Un montculo es un rbol binario casi completo en el que cada nodo tiene una informacin asociada, denominada valor del nodo. La propiedad del montculo exige que el valor de cada nodo interno sea mayor o igual que el valor de sus hijos. El padre del nodo representado por T(i) se halla en T(i div 2), y sus hijos en las posiciones T(2i) y T(2i+1).Las propiedades especiales de los montculos hacen que este

54

Modelo de Calibracin mediante algoritmo de asignacin

se pueda representar mediante un vector.

T(1)

Nodos Internos
T(2)

Nivel 2

T(3)

T(4)

T(5)

Nivel1

T(6)

T(7)

Hojas

T(8)

T(9)

T(10)

Nivel 0

Figura 2.3-3. Elementos de los montculos.

El siguiente ejemplo ilustra lo explicado anteriormente:

T(1) 10

T(2) 7

T(3) 9

T(4) 4

T(5) 7

T(6) 5

T(7) 2

T(8) 2

T(9) 1

T(10) 6

Tabla 2.3-3. Representacin vectorial de montculo La estructura que representa el montculo es extremadamente til cuando se usa para la ordenacin de valores. La raz siempre contiene el elemento con el valor mas alto (tambin se pueden modificar los mtodo para que sea el mas pequeo). Adems las propiedades del montculo, que se veran afectadas al modificar el valor de un elemento o aadir uno nuevo a la estructura, son fcilmente restauradas, sin que el proceso implique una comparacin entre todos los elementos. Si un elemento aumenta su valor hasta superar el de su padre, basta con intercambiarlo con ste y proseguir con este proceso hasta que se reubique el nodo modificado. Este proceso recibe el nombre

55

Modelo de Calibracin mediante algoritmo de asignacin

de flotar el elemento. Igualmente existe un mtodo equivalente llamado hundir que intercambia un nodo con el mayor de sus hijos si el padre ha modificado su valor.

Figura 2.3-4. Representacin en rbol de montculo

Es necesario por tanto la implementacin de una serie de mtodos asociados al montculo que nos van a permitir el manejo y uso de este. Se asegura que con estos mtodos se podr sacar total provecho del montculo de forma transparente al resto del cdigo. Los mtodos son los siguientes, expresados en notacin de pseudocdigo.

Mtodo crear_monticulo(T[1...n])

Para i n mod 2 hasta 1 hacer hundir(T, i)

Mtodo quitar_raiz(T[1...n])

Intercambiar T[1]T[n] hundir(T[1..n-1], 1) Devolver T[n] Mtodo modificar_elemento(T[1...n], i, v)

56

Modelo de Calibracin mediante algoritmo de asignacin

x T[i] T[i] v Si x > v entonces hundir(T, i) Si no flotar(T, i)

Mtodo aadir_nodo(T[1...n],v)

T[n+1] v flotar(T[1...n+1], n+1)

Mtodo hundir(T[1...n], i)

ki Repetir jk Si 2*j n Y T[2*j] > T[k] entonces k 2*j Si 2*j +1 n Y T[2*j+1] > T[k] Y T[2*j+1] > T[2*j] entonces k 2*j+1 Hasta j=k

Mtodo flotar(T[1...n], i)

ki Repetir jk Si j>1 Y T[jmod2] > T[k] entonces k jmod2 Intercambiar T[j]T[k] Hasta j=k La primera modificacin que vamos a realizar sobre el algoritmo de Dijkstra va a ser sustituir el vector D de distancias por un montculo que contendr como nodos los

57

Modelo de Calibracin mediante algoritmo de asignacin

vrtices que existan en la lista de candidatos y ordenados segn el valor de D[v]. Para que el funcionamiento del montculo se ajuste a nuestras necesidades es preciso modificar los mtodos para convertirlo en un montculo mnimo, es decir que sea el menor de los nodos el que se encuentre en la raz. La inicializacin del montculo requiere de un tiempo de coste O(n). En cuanto al algoritmo, la inclusin del montculo nicamente implica la sustitucin de la lnea C = C-{v} por la instruccin quitar_raiz. El proceso de eliminacin de la raz tiene un coste de tiempo de O(logn). La actualizacin de las distancias supone comprobar para cada nodo w adyacente a v si se cumple la condicin D[v]+L[v,w]<D[w], en cuyo caso se usara el mtodo modificar_elemento, lo que requiere igualmente un tiempo O(logn). En resumen, para un grafo G(N, A), se tiene que eliminar la raz del montculo n-2 veces y hacer flotar como mximo A nodos, dando un tiempo total O((A+n)logn). Si el grafo es conexo el tiempo empleado sera O(Alogn). Para grafos muy densos es preferible la implementacin bsica del algoritmo bsico, mientras que en grafos poco densos es preferible la utilizacin de montculos.

2.3.3

Algoritmo de Dijkstra con giros

En los problemas reales de asignacin, una representacin del viario mediante un grafo con N vrtices y A aristas no es suficiente para la inclusin de todas las caractersticas de ste. Si pensamos en un grafo que represente el viario de una ciudad, nos encontramos con el problema de que ciertos giros no estarn permitidos para los usuarios. Se presenta la necesidad de modificar nuestros algoritmos de forma que representen ms fielmente nuestro problema. Los algoritmos hasta ahora contemplados no incluyen esta circunstancia, generndose rutas mnimas las cuales no son vlidas ya que incluyen giros prohibidos. Es necesario pues que el algoritmo tenga en cuenta tambin estas caractersticas del viario y encuentre la ruta mnima permitida por las normas de circulacin. Adems, esta circunstancia nos permite incluir un coste para esos giros, los cuales pueden ser como en el caso de los tramos, funciones del volumen de trfico que cursa el giro. Debemos tener una relacin pues de esos costes. Ello se incluye en una matriz cuadrada G de dimensiones iguales al numero de tramos del

58

Modelo de Calibracin mediante algoritmo de asignacin

grafo, cuyos valores sern el coste en tiempo si el giro esta permitido e infinito si el giro no existe o no est permitido. En cuanto al algoritmo, el hecho de incluir los giros obliga a modificar las estructuras que usamos para la bsqueda de caminos mnimos. Ase tendr que trabajar con tramos en lugar de nodos. Esto quiere decir que en vez de buscar el camino mnimo a un nodo, lo que vamos a buscar es el camino ms corto para llegar a un tramo. La distancia a un nodo ser la menor distancia de todos los tramos que llegan a dicho nodo. Esto, desde el punto de vista de la implementacin, nos obliga a realizar una etiquetacin en tramos en lugar de en nodos como venamos haciendo hasta ahora, es decir, que el montculo va a estar compuesto por tramos en lugar de nodos. Seguimos usando montculos como estructura de ordenacin ya que los motivos para elegirlos en implementaciones anteriores siguen mantenindose. La inclusin de los giros en nuestra representacin del viario, hace que el modelo de asignacin vea modificadas sus ecuaciones, quedando como se muestra a continuacin:

Min t a ( s )ds +
fa a A 0

lI a1 Ai a2 Ai+

f a1 , a 2

g a1 ,a2 ( s )ds

sujeto a:
rR pq

pqr

= d pq

( p, q) C r R pq , ( p, q) C

h pqr 0
( p ,q )C rR pq

pqra

h pqr = f a

a A

El modelo es muy similar, excepto la incorporacin del tiempo empleado en cruzar el giro en la funcin objetivo y la restriccin que indica que el volumen de

59

Modelo de Calibracin mediante algoritmo de asignacin

vehculos que pasa por un giro es igual a la suma de todos los vehculos que utilizan el giro en concreto en su ruta. En la siguiente notacin se han incluido una serie de elementos que pasamos a detallar. es el conjunto de intersecciones que tienen definidos giros, Ai- es el conjunto de tramos cuyo nodo final es el nodo i, Ai+ el conjunto de tramos con nodo inicial igual a i y g a1,a2 (s) la funcin Volumen-Retraso del giro que conecta los tramos a1 y a2. En el siguiente diagrama de flujo se muestra el algoritmo que nos permite realizar el proceso anteriormente explicado. En el siguiente diagrama se sigue la siguiente notacin:
Q: conjunto de nodos destino. : conjunto de nodos que tienen definidos los giros p: nodo origen. ui: distancia al tramo i-simo. bi: tramo que precede al tramo i-simo en la ruta mnima. uq: distancia a un nodo destino. a y : tramos genricos. ca: coste del giro que conecta los tramos a y . ca: coste del tramo a. Aj+: conjunto de tramos que parten del nodo j. Aj-: conjunto de tramos que llegan al nodo j.

60

Modelo de Calibracin mediante algoritmo de asignacin

Inicio

u q = , bq = , q Q
+ u a = , ba = , a A p + u a = c a , ba = 0 , a A p
+ A = Ap

Inicializacin

Si

No

A
Si Seleccionar

Fin

a = ( i , j ) A tal que

ua ua a A

A = A {a }

Si

jQ

Si

uq = ua

A = A {a }

bq = a

No

No

Si

Si
Si

j I
No Si

a = ( j, l ) A + j

No

l 0
Si Si

a = ( j, l ) A + j li
Si Si Si

No

u a + caa + ca < u a
Si

u a = u a + ca

u a + ca < u a

No

j = i
u a = u a + c aa + c a

A = A + {a} ba = a

A = A + {a} ba = a

Figura 2.3-5. Algoritmo de Dijkstra con giros

61

Modelo de Calibracin mediante algoritmo de asignacin

El algoritmo mostrado en este diagrama de flujo obtiene el camino mnimo entre un nodo origen p y un conjunto de nodos destino denominado Q. La variable ua contiene la distancia entre el nodo origen y el tramo a. Para finalizar con la descripcin del algoritmo as como ilustrar el funcionamiento del proceso, obsrvese el siguiente ejemplo. La siguiente red consta de 6 nodos y 16 tramos. Al nodo central, nodo 6, se le han definido los giros permitidos con sus respectivos costes. Para los dems nodos, los giros estarn permitidos desde cualquier tramo entrante hacia cualquier tramo saliente, con coste igual a cero.

Figura 2.3-6. Coste de tramos y giros

Como siempre, representaremos el grafo en forma matricial, en este caso una matriz para las distancias y otra matriz para definir los costes de los giros en el nodo 6. as matrices son las siguientes: 5 4 5 8 1 8 1 1 7 3 4 7 2 1 3 2

4 2 6

Coste de giros

Coste de tramos

62

Modelo de Calibracin mediante algoritmo de asignacin

Como ya se ha comentado, el algoritmo funciona con un etiquetado en tramos, por lo que pasamos a definir los cdigos de tramos:

Tabla 2.3.4. Giros del Grafo

Tabla 2.3.5. Tramos del Grafo


iter 0(init) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 U1 5 5 X X X X X X X X X X X X X X X U2 4 X X X X X X X X X X X X X X X X U3 10 10 10 10 10 10 X X X X X X X X X U4 13 13 13 13 13 13 13 13 13 13 13 X X X X U5 6 6 X X X X X X X X X X X X X U6 19 19 19 19 19 19 X U7 12 12 X X X X X U8 11 11 11 X X X X X X X U9 17 17 17 17 17 17 17 17 X X U10 13 13 13 13 13 13 13 X X X U11 8 8 8 8 X X X X X X X X X X X X U12 11 11 11 11 11 11 11 11 X X X X X X X X U13 6 6 X X X X X X X X X X X X X X U14 9 9 9 X X X X X X X X X X X U15 15 10 10 10 X X X X X X X X X X U16 11 11 11 11 11 11 11 X X X X X X

Tabla 2.3-6. Evolucin del algoritmo de Dijkstra con giros

63

Modelo de Calibracin mediante algoritmo de asignacin

Una vez hemos obtenido las distancias mnimas a los tramos, para conocer la distancia mnima a los nodos, seleccionamos para cada nodo la distancia del tramo que tiene una distancia ms pequea. Haciendo esto, obtenemos los siguientes resultados: Nodo destino 2 3 4 5 6 Coste 5 11 10 4 6 Secuencia de nodos 12 1 2 6 4 3 1 2 6 4 1 5 1 5 6

Tabla 2.3-7. Resultados del algoritmo de Dijkstra con giros.

2.3.4

Algoritmo de los K caminos mnimos (K-mn)

Una modificacin lgica sobre el algoritmo del camino mnimo, consiste en encontrar no slo ese camino mnimo, sino los k caminos mnimos entre un nodo origen y un nodo destino. Esta modificacin sobre el algoritmo puede ser muy til en problemas de encaminamiento. Se diferencian dos tipos de problemas, segn los caminos encontrados deban cumplir o no con una serie de condiciones. Hablamos as de problemas k-min con y sin condiciones de contorno. Posibles condiciones de contorno podran ser la de no tener bucles, ser disjuntos, etc.. Nosotros vamos a centrarnos en el problema sin condiciones de contorno y en concreto en el principio de optimalidad, como todos los algoritmos de encaminamiento presentados hasta ahora. En realidad va a ser una modificacin del algoritmo de Dijkstra ya presentado, en particular del algoritmo de Dijkstra con giros. Este algoritmo de los K caminos mnimos va a ser despus utilizado como ncleo de la segunda propuesta de calibracin de matrices origen/destino.

64

Modelo de Calibracin mediante algoritmo de asignacin

Tanto el algoritmo de Dijkstra como el algoritmo de los K caminos mnimos, son algoritmos de etiquetacin, en nodos si no tenemos en cuenta los giros y en tramos en caso contrario. No obstante, mientras que en el algoritmo de Dijkstra cada nodo (o tramo) posee una nica etiqueta, en el caso del algoritmo k-mn es necesario tener ms de una etiqueta por elemento. As, para cada nodo (o tramo) tendremos, para cada uno de los K caminos, una etiqueta indicando la distancia al nodo origen. Es decir, dispondremos de un conjunto de parmetros ik indicando la distancia del nodo (o tramo) i para el camino k-simo. Existen dos tipos de algoritmos de etiquetacin, algoritmos de etiquetacin correctores y permanentes. En los primeros, slo obtenemos el conjunto de los K caminos una vez concluido el algoritmo, mientras que en el segundo grupo, los caminos van siendo obtenidos conforme el algoritmo va ejecutndose. En cuanto a la ejecucin del algoritmo es idntica al caso de Dijkstra con giros, pero ahora cuando se saca la raz del montculo, se aade al montculo un elemento por cada tramo que parta del nodo destino del tramo que se encontraba en la raz del montculo. Es decir, si el elemento raz es el tramo (i, j), se aade un elemento por cada tramo de la forma (j, l). Por ello, cada tramo puede ser aadido al montculo ms de una vez, por lo que para diferenciarlos, se aade un segundo identificador que los diferencie, siendo elementos totalmente diferentes a efectos del algoritmo. Para determinar los caminos encontrados, cada elemento del montculo debe mantener como caracterstica los identificadores (numero de tramo y subidentificador) del tramo que le precede.

65

Modelo de Calibracin mediante algoritmo de asignacin

Inicio

Inicializacin u q = , bq = , q Q
+ u a = , ba = , a A A p + u a = 0, ba = 0, a A p
+ A = Ap

si A No

Si

Fin

Seleccionar a = (i, j ) A tq ua < ua a A

A = A {a}

si j Q No

Si

uq = ua
' ba = a, ba = Na + 1

A = A {a}

si j I

Si

si a = ( j , l ) A+ j

No

No
si a = ( j , l ) A+ j li

Si No
si N a < K

No

Si ua = ua + caa + ca
Sa = N a + 1

Si
u a = u a + ca

Si

Sa = N a + 1

si N a < K

No

A = A + {a}
' ba = a, ba = Sa

A = A + {a}
' ba = a, ba = Sa

Figura 2.3-7. Algoritmo de los K caminos mnimos

66

Modelo de Calibracin mediante algoritmo de asignacin

Notacin empleada en el diagrama de flujo anterior:


Q: conjunto de nodos destino. : conjunto de nodos que tienen definidos los giros p: nodo origen. ui: distancia al tramo i-simo. Sa: subndice del tramo. Etiqueta que diferencia elementos del montculo que

representen al mismo tramo.


bi: tramo que precede al tramo i-simo en la ruta mnima. bi: subndice del tramo que precede al tramo i-simo en la ruta mnima. Na: nmero de elementos representantes del tramo a que se han aadido al

montculo.
uq: distancia a un nodo destino. a y : tramos genricos. ca: coste del giro que conecta los tramos a y . ca: coste del tramo a. Aj+: conjunto de tramos que parten del nodo j. Aj-: conjunto de tramos que llegan al nodo j.

El algoritmo utiliza las variables Na que almacena el nmero de elementos con cdigo de tramo igual a a que han sido incluidos en el montculo. Hay que notar que el algoritmo slo incorporar un tramo al montculo como mximo K veces, siendo K el nmero de caminos que se desea encontrar. Esto se debe a que para encontrar los K caminos mnimos a cualquier nodo, slo sern necesarios como mucho K caminos mnimos al resto de los nodos, lo cual se desprende del principio de optimalidad. Esta modificacin acelera enormemente el algoritmo en redes con un alto nmero de nodos y tramos, limitando as el tamao del montculo. Con vistas a aclarar este algoritmo vamos a aplicarlo al grafo anterior, para un valor de K = 3. En este caso vamos a considerar como nodo origen el nodo 1 y como nodo destino el nodo 3. Los dems datos del grafo siguen mantenindose iguales que en el ejemplo anterior.

67

Modelo de Calibracin mediante algoritmo de asignacin

Iteracin 0(init) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Raz del montculo X {20, 00, 4} {10, 00, 5} {130, 20, 6} {50, 10, 6} {110, 20, 8} {140, 130, 9} {151, 50, 10} {51, 140, 10} {30, 10, 10} {120, 20, 11} {81, 151, 11} {161, 50, 11} {82, 120, 12} {21, 110, 12} {72, 81, 12} {101, 151, 13} {132, 161, 13} {11, 110, 13} {40, 10, 13} {152, 51, 14}

Elementos aadidos al montculo {10, 00, 5} ; {20, 00, 4} {110, 20, 8} ; {120, 20, 11}; {130, 20, 6} {30, 10, 10} ; {40, 10, 13} ; {50, 10, 6} {140, 130, 9} ; {150, 130, 15} {151, 50, 10} ; {161, 50, 11} {11, 110, 13} ; {21, 110, 12} {31, 140, 14} ; {41, 140, 17} ; {51, 140, 10} {81, 151, 11} ; {91, 151, 17} ; {101, 151, 13} {152, 51, 14} ; {162, 51, 15} {12, 30, 15} ; {22, 30, 14} {82, 120, 12} ; {92, 120, 18} ; {102, 120, 14} {62, 81, 19} ; {72, 81, 12} {112, 161, 15} ; {122, 161, 18} ; {132, 161, 13} ---------

Notacin: {ab, cd, e}


a: cdigo del tramo. b: subidentificador del tramo. c: cdigo del tramo procedente. d: subidentificador del tramo procedente. e: distancia al tramo.

Tabla 2.3-8. Evolucin del algoritmo K-mn.

68

Modelo de Calibracin mediante algoritmo de asignacin

El algoritmo acaba cuando el montculo queda vaco. No obstante, tambin se podra dar por terminado una vez se han encontrado K caminos mnimos a tramos con nodo destino el nodo 3. A continuacin mostramos las soluciones encontradas:

Camino K = 1, longitud 11

Camino K = 2, longitud 12

Camino K = 3, longitud 13

Figura 2.3-8. Resultados del algoritmo K-mn

69

Modelado orientado a objetos

3 Modelado orientado a objetos


3.1 Introduccin a UML

En este apartado se va a hacer una revisin de cmo surge, qu es y por qu se utiliza el Lenguaje de Modelado Unificado (UML). Este lenguaje es una especificacin de notacin orientada a objetos y se emplea ara modelar el sistema y representar las distintas relaciones entre los componentes del mismo.

3.1.1

Breve historia de UML

Los lenguajes de modelados orientados a objetos aparecieron a mediados de los 70 y finales de los 80, influidos por tcnicas como los modelos de Entidad/Relacin y el

Specifications & Description Language (SDL, circa 1976, CCITT), como diversas
metodologas que se aproximaban al anlisis y diseo orientado a objetos. El nmero de lenguajes de modelado sufri un espectacular incremento entre los aos 1989 y 1994, llegando a identificarse hasta 50 lenguajes diferentes con los problemas que esto conllevaba para los usuarios. A mediados de los 90 aparecieron nuevas interacciones entre los diferentes mtodos, destacando el Booch93, la evolucin del OMT (Object Modeling Techniques) y Fusion. Los mtodos empezaron a incluir tcnicas unos de los otros, predominando un pequeo grupo de ellos, incluyendo el OOSE (Object Oriented Software Engineering), OMT-2 y el Booch93. Cada uno de ellos era un mtodo completo con sus puntos fuertes y flaquezas. Simplificando, OOSE era un lenguaje que se orientaba hacia los casos de uso, dando un excelente soporte para los anlisis de requerimientos en la ingeniera. OMT-2 era especialmente adecuado para el anlisis de sistemas de informacin y bases de datos. Finalmente Booch93 destacaba por su utilidad en las fases de diseo y construccin de proyectos, llegando a ser muy popular para el desarrollo de proyectos de ingeniera.

70

Modelado orientado a objetos

Con este panorama, en Octubre del 94, comenz el desarrollo del UML cuando Grady Booch y Jim Rumbaugh, del grupo Rational Software Corporation, comenzaron un trabajo conjunto para unificar los mtodos Booch y OMT. Se daba el caso de que los mtodos Booch y OMT estaban conocidos en todo el mundo como los lderes entre los mtodos de modelado orientados a objetos, por lo que Booch y Rambaugh unieron sus esfuerzos para unificar sus trabajos. Un primer boceto (versin 0.8) del Unified Method, como fue llamado entonces, se dio a conocer en Octubre del 95. A finales de 1995, Ivar Jacobson y su compaa de unieron a Rational y a su esfuerzo por unificar el lenguaje, aportando lo ya desarrollado en el OOSE. Los autores de los mtodos Booch, OMT y OOSE (Grady Booch, Jim Rumbaugh e Ivar Jacobson), estaban por lo tanto decididos a crear un lenguaje unificado de modelado por tres razones:

En

primer

lugar,

los

mtodos

se

estaban

desarrollando

unos

independientemente de los otros. Era de sentido comn continuar la evolucin conjuntamente mejor que por separado, eliminando la posibilidad de crear diferencias innecesarias que posteriormente podran confundir a los usuarios.

Por otro lado, unificar la nomenclatura y la semntica traera estabilidad al mercado de los lenguajes orientados a objetos, permitiendo que los proyectos se centraran en un solo lenguaje, dejando a los desarrolladores de herramientas crear mejor aplicaciones.

Finalmente, ellos esperaban que su colaboracin pudiera conllevar importantes mejoras en los tres mtodos, de forma que se pudieran abarcar nuevos problemas que ninguno de los tres mtodos originales resolva adecuadamente.

71

Modelado orientado a objetos

Cuando de comenz la unificacin, se establecieron cuatro objetivos primordiales en los que centrar sus esfuerzos:

Permitir el modelado de sistemas, y no solo de software, usando conceptos de la orientacin hacia objetos.

Modelar el sistema, desde el concepto hasta los artefactos ejecutables, utilizando tcnicas orientadas a objetos.

Cubrir las cuestiones relacionadas con el tamao inherente a los sistemas complejos y crticos.

Crear un lenguaje de modelado utilizable tanto por las personas como por las maquinas.

En Junio de 1996 se publicaron las versiones 0.9 y 0.91. Durante ese ao los autores invitaron, y recibieron respuesta, de toda la comunidad internacional relacionada con el tema. Adems, varias corporaciones vieron el UML como un punto estratgico en el desarrollo de sus actividades. Algunas de las empresas contribuyeron a la aparicin de la versin 1.0 en Enero de 1997 fueron IBM, Hewlet-Packard, Dell, Texas Instruments... Esta versin fue ofrecida a la OMG (Object Management Group) para su estandarizacin, en respuesta a su solicitud de propuestas para un lenguaje estndar de modelado. Entre Enero y Julio de 1997, el grupo inicial de colaboradores se ampli para incluir prcticamente a todas las organizaciones que haban aportado algo al proyecto, crendose un grupo de trabajo liderado por Cris Kobryn para trabajar en la semntica. Como resultado se le entreg a la OMG la versin 1.1 para su estandarizacin en Julio de 1997. Esta versin se acept el 14 de Noviembre de 1997 por la OMG. El control del mantenimiento de UML fue asumido por la OMG Revision Task

72

Modelado orientado a objetos

Force, dirigida por Cris Kobryn. La RTF public una revisin editorial, UML 1.2, en
Junio de 1998. En otoo de 1998 la RTF public UML 1.3, que es la versin utilizada en este proyecto.

3.1.2

Qu es UML? Por qu usar UML?

UML es un lenguaje estndar para escribir planos de software. Se puede utilizar para especificar, construir y documentar los artefactos de un sistema que involucran una gran cantidad de software. UML es apropiado para modelar desde sistemas de informacin de empresas, hasta aplicaciones distribuidas basadas en la web, e incluso para sistemas empotrados de tiempo real muy exigentes. Es un lenguaje expresivo, que cubre todas las vistas necesarias para desarrollar y luego desplegar tales sistemas. UML es slo un lenguaje, por lo tanto es tan slo una parte de un mtodo de desarrollo de software. Es independiente del proceso, aunque para utilizarlo ptimamente se debera usar en un proceso que fuese dirigido por los casos de uso, centrado en la arquitectura, iterativo e incremental. En general, UML es un lenguaje para visualizar, especificar, construir y documentar los artefactos de un sistema con gran cantidad de software. Como lenguaje, UML proporciona un vocabulario y unas reglas para combinar las palabras de dicho vocabulario con el objetivo de posibilitar la comunicacin. Un lenguaje de modelado es un lenguaje cuyo vocabulario y reglas se centran en la representacin conceptual y fsica del sistema. Un lenguaje de modelado como es UML es, por tanto, un lenguaje estndar para los planos de software. El modelado proporciona una comprensin de un sistema. Nunca es suficiente un nico modelo. Ms bien, para comprender cualquier cosa, a menudo se necesitan mltiples modelos conectados entre s, excepto en los casos ms triviales. Para sistemas

73

Modelado orientado a objetos

con gran cantidad de software, se requiere un lenguaje que cubra las diferentes vistas de la arquitectura de un sistema mientras evoluciona a travs del ciclo de vida del desrrollo del software. El vocabulario y las reglas de un lenguaje como UML indican cmo crear y leer modelos bien formados, pero no dicen qu modelos se deben crear ni cundo se deberan crear. sta es la tarea del proceso del desarrollo del software. Un proceso bien definido guiar a su usuario a decidir qu artefactos producir, qu actividades y personal se emplean para crearlos y gestionarlos, y cmo usar estos artefactos para medir y controlar el proyecto de forma global. Para muchos programadores, la distancia entre pensar en una implementacin y transformarla en cdigo es casi nula. Lo piensas, lo codificas. De hecho, algunas cosas se modelan mejor directamente en cdigo. En este caso, el programador todava est haciendo mentalmente algo de modelado, si bien lo hace de forma totalmente mental. No obstante, esta manera de proceder plantea algunos problemas:

Primero, la comunicacin de estos modelos conceptuales se torna complicada y est sujeta a errores, salvo que las dos partes hablen el mismo lenguaje. Normalmente, los proyectos y las organizaciones desarrollan su propio lenguaje, y es difcil comprender lo que est pasando para alguien ajeno al grupo.

Segundo, hay algunas cuestiones en un sistema de software que no se pueden entender amenos que se construyan sobre modelos que trasciendan el lenguaje de programacin textual. Por ejemplo, el significado de una jerarqua de clases puede inferirse, pero no capturarse completamente inspeccionando el cdigo de todas las clases en la jerarqua.

Tercero, si el desarrollador que escribi el cdigo no dej documentacin escrita de los modelos que haca de forma mental, esa informacin se perder para siempre, o como mucho, ser slo parcialmente reproducible a

74

Modelado orientado a objetos

partir de la implementacin una vez que el desarrollador se haya marchado.

Al escribir modelos UML, se afronta el tercer problema: un modelo explcito para facilitar la comunicacin. Algunas cosas se modelan mejor textualmente, otras se modelan mejor de forma grfica. En realidad, en todos los sistemas interesantes hay estructuras que trascienden lo que puede ser representado mediante un lenguaje de comunicacin. UML es uno de esos lenguajes grficos. As afronta el segundo problema mencionado anteriormente. UML es algo ms que un simple compendio de smbolos grficos. Ms bien, detrs de cada smbolo en la notacin UML hay una semntica bien definida. De manera que un desarrollador puede escribir un modelo en UML, y otro desarrollador, o incluso otra herramienta, pude interpretar ese modelo sin ambigedad. As afronta el primer problema mencionado con anterioridad. En este contexto, especificar significa construir modelos precisos, no ambiguos y completos. En particular, UML cubre la especificacin de todas las decisiones de anlisis, diseo e implementacin que se deben realizar al desarrollar y desplegar un sistema con gran cantidad de software. UML no es un lenguaje de programacin visual, pero sus modelos pueden conectarse a gran variedad de lenguajes de programacin. Esto significa que es posible establecer correspondencias desde un modelo UML a un lenguaje de programacin como C++, Java o Visual Basic, o incluso tablas en una base de datos relacional o almacenamiento persistente en una base de datos orientada a objetos. Las cosas que se expresan mejor grficamente tambin se representan grficamente con UML, mientras que las cosas que se representan mejor textualmente se plasman con un lenguaje de programacin. Esta correspondencia permite la ingeniera directa: generacin de cdigo a partir de un modelo UML en un lenguaje de programacin. Lo contrario tambin es posible: se puede reconstruir un modelo en UML a partir de una implementacin. Pero este

75

Modelado orientado a objetos

proceso no es automtico, a menos que se codifique esa informacin en l a implementacin, la informacin se pierde cuando se pasa del modelo al cdigo. La ingeniera inversa requiere, por lo tanto, de herramientas que la soporten e intervencin humana. La combinacin de estas dos vas de generacin de cdigo y de ingeniera inversa produce una ingeniera de ida y vuelta, entendiendo por eso la posibilidad de trabajar en una vista grfica o textual, mientras que las herramientas mantienen la consistencia de las dos vistas. Adems de esta correspondencia directa, UML es lo suficientemente expresivo y no ambiguo como para permitir la ejecucin directa de modelos, la simulacin de sistemas y la instrumentacin de sistemas en ejecucin. UML cubre la documentacin de la arquitectura de un sistema y todos sus detalles. UML tambin proporciona un lenguaje para expresar requisitos y pruebas. Finalmente, UML proporciona un lenguaje para modelar las actividades de planificacin de proyectos y gestin de versiones.

3.2 Especificacin funcional del algoritmo de calibracin

Los mtodos de calibracin que en este proyecto se han desarrollado han sido implementados en un lenguaje de programacin orientado a objetos como es C++. Por ello, resulta adecuado el uso de UML para explicar su diseo. A continuacin se muestran los diagramas que forman parte del lenguaje de modelado unificado del proyecto, as como una breve introduccin a los mismos, con el fin de que su interpretacin sea de utilidad a la hora de entender los algoritmos aqu diseados.

3.2.1

Diagramas de casos de uso

Los casos de uso permiten describir el comportamiento de un sistema desde el

76

Modelado orientado a objetos

punto de vista del usuario basndose en un conjunto de acciones y reacciones. Es por lo tanto una tcnica que permite capturar los requisitos funcionales del sistema. De esta forma queda delimitado el alcance del sistema y cul es su relacin con el entorno. E estos diagramas, el sistema queda reducido a una caja negra, ya que no interesa cmo lleva a cabo sus funciones, sino simplemente qu acciones visibles desde el exterior son las que realiza. Los casos de uso estn basados en lenguaje natural, lo que los hace accesibles a cualquier usuario. Adems, aquellos casos de uso que resulten muy complejos pueden descomponerse en nuevos casos de uso de un nivel inferior, hasta llegar a un nivel tal que resulten fciles de analizar. Los casos de uso guan todo el proceso de desarrollo del sistema, lo que quiere decir que en momentos determinados de dicho proceso, el sistema debe ser validado comprobando que se ajusta al diagrama de casos de uso. Los diagramas de casos de uso estn formados por tres elementos fundamentales:

Actores. Los actores son los participantes de os casos de uso, se corresponden con los usuarios que interactan con el sistema. Estos actores pueden ser humanos, dispositivos externos que interacten con el sistema, o incluso temporizadores que enven eventos al mismo. Un actor se caracteriza por la forma de interaccionar con el sistema, por lo que un mismo usuario puede ejercer de varios actores, y un actor puede representar a varios usuarios.

Casos de uso. Son los escenarios de interaccin de los actores. Representan el comportamiento del sistema en relacin con los usuarios. De esta forma, un caso de uso define la secuencia de interacciones entre uno o ms usuarios y el sistema.

77

Modelado orientado a objetos

Relaciones. Representan el flujo de informacin intercambiada entre los actores y los casos de uso, o entre diferentes casos de uso. Normalmente, se emplean para que un caso de uso obtenga la informacin necesaria para llevar a cabo alguna accin, o para que el proceso proporcione algn resultado. Estas relaciones pueden ser unidireccionales o bidireccionales.

Los diagramas de casos de uso se clasifican en diferentes niveles, en funcin del grado de detalle con el que se represente el funcionamiento del sistema. De esta forma, los diagramas de nivel 0 o contexto representan el sistema completo con un nivel de detalle muy bajo, mientras que al aumentar el nivel, el grado de detalle va incrementndose.
Notacin

A continuacin de muestra la notacin empleada para la representacin de los distintos elementos que forman los diagramas de casos de uso. Los actores son representados mediante figuras de hombre de palo, con su correspondiente nombre debajo de la figura.

Viario

Figura 3.2-1. Notacin de actores

Los casos de uso, o procesos, se representan mediante una elipse, con su nombre correspondiente debajo de la misma.

78

Modelado orientado a objetos

Modelo de Calibracin basada en porcentajes

Figura 3.2-2. Notacin de casos de uso.

Por ltimo, las relaciones se representan mediante flechas que unen los casos de uso, o el caso de uso y el actor, entre los que existe un flujo de informacin.

Figura 3.2-3. Notacin de relaciones

Debido a la similitud de los dos algoritmos implementados, los diagramas de diseo UML de ambos mtodos se irn presentando de forma paralela y conjunta. No en vano, ambos algoritmos poseen partes en comn que sern ms fcilmente identificables si se muestran a la vez.

3.2.1.1 Algoritmo de calibracin basado en porcentajes 3.2.1.1.1 Diagramas de caso de uso de nivel 0 o de contexto

En este diagrama se muestra la aplicacin con el menor grado de detalle, permitiendo una visin global de su comportamiento.

Usuario

Modelo de Calibracin basada en porcentajes

Viario

Figura 3.2-4. Casos de uso de nivel 0

79

Modelado orientado a objetos

El usuario es la persona que se encuentra realizando la calibracin de la matriz O-D. Su relacin con el modelo de calibracin es bidirecional, dado que proporciona la informacin necesaria para su ejecucin y recibe los resultados del proceso. El otro actor que aparece es el viario. Es un agente externo y su relacin es unidireccional con el modelo. En concreto, se encarga de proporcionar al modelo los datos necesarios del viario relativos a configuracin del grafo que sirve de representacin del mismo. Entre la informacin que suministra se encuentran la longitud, nmero de carriles y numero de funcin volumen-retraso de cada tramo, giros permitidos, matrices O-D iniciales,...

3.2.1.1.2 Diagramas de casos de uso de nivel 1

En este nivel se pretende profundizar en el funcionamiento interno del modelo

de calibracin basado en porcentajes.

Estadstica y generacin de datos

Asignacin de v iajes

Clculo de porcentajes

Ajuste matriz

Figura 3.2-5. Casos de uso de nivel 1

80

Modelado orientado a objetos

En este diagrama se divide el modelo en 4 procesos que se relacionan entre s e intercambian informacin. El proceso de asignacin de viajes se encarga de calcular las rutas por las que los usuarios van a desplazarse, partiendo de la matriz origen-destino. Por tanto, este proceso necesita toda la informacin concerniente al viario, con vistas a calcular las rutas mnimas que los usuarios elegirn a la hora de desplazarse. El proceso obtendr unas rutas que le sern entregadas al proceso de clculo de porcentajes y unos volumenes en tramos que le sern entregados al proceso ajuste de matriz. Asimismo, toda la informacin en forma de resultados que el usuario haya decidido obtener del proceso de asignacin ser enviada al proceso estadstica y generacin de datos, para que sea entregada al usuario. El proceso de clculo de porcentajes se encarga de obtener para cada tramo con detector, el porcentaje del flujo total que corresponde a cada ruta que utiliza dicho tramo en su camino. Estos datos sern de suma importancia a la hora de realizar el ajuste de la matriz origen-destino. Los datos son pues entregados al proceso ajuste de matriz. El proceso ajuste de matriz recibe los resultados de la asignacin de trfico realizada por el proceso asignacin de viajes as como todos los datos de porcentajes de flujo en los tramos con datos reales de flujo. Tambin recibe la relacin de flujos reales del elemento externo viario. A partir de todos estos datos, se realiza la calibracin de la matriz origen-destino. Los resultados son entregados al proceso de estadstica y

generacin de datos para ser entregados al usuario como resultados del proceso.

3.2.1.1.3 Diagramas de caso de uso de nivel 2

Se ha credo necesario profundizar ms en el proceso de asignacin de trfico. Hay que hacer notar que este proceso es iterativo y se ejecuta tantas veces como el usuario decida en el formulario asociado a la aplicacin. En el siguiente diagrama se especifica su funcionamiento en mayor detalle.

81

Modelado orientado a objetos

<<include>>
Dijkstra

Clculo de costes de tramos y giros

Clculo de rutas mnimas

Clculo del parametro lambda

Actaulizacin de los v olmenes

Figura 3.2-6. Casos de uso de nivel 2. Proceso de asignacin

El proceso de clculo de costes en tramos y giros se encarga de calcular los costes en tiempo de recorrer los tramos, as como de el tiempo empleado en efectuar un giro permitido. Debido a ello, debe tener acceso a todos os datos del viario. El coste en tramos y giros vendr dado por una expresin matemtica que tendr como variables el volumen de trfico en el elemento, nmero de carriles,... Estos datos le sern entregados al proceso de clculo de rutas mnimas. El proceso de clculo de rutas mnimas recibe los datos de coste en tiempo de la red viaria, as como los datos del grafo que caracterizan la red. Con ellos y haciendo uso del proceso Dijkstra, el proceso calcular las rutas mnimas por las que se encauzarn los viajes de la matriz O-D. Estas nuevas rutas (en cada iteracin se calculan nuevas rutas), le sern entregadas al mdulo de clculo del parmetro lambda. El proceso de clculo del parmetro lambda decide el valor del parmetro lambda, que indica en que proporcin los usuarios decidirn modificar las rutas que venan usando en la iteracin anterior, en beneficio de las nuevas rutas calculadas en el proceso precedente. Este clculo se realiza mediante un clculo de minimizacin de una funcin objetivo. Una vez obtenido este parmetro de ponderacin, le es entregado al mdulo de actualizacin de los volmenes.

82

Modelado orientado a objetos

Por ltimo, el mdulo de actualizacin de los volmenes se encarga de modificar los datos de flujo en los tramos acorde con la sustitucin de los caminos establecidos por los calculados en esta iteracin, ponderados por el factor lambda. Con todo este proceso, estamos intentando distribuir la demanda de viajes a travs de la red, de forma que los tiempos de viajes se minimicen. Esta asignacin ser la base de la calibracin basada en porcentajes.

3.2.1.2 Algoritmo de calibracin basado en algoritmo K-mn 3.2.1.2.1 Diagramas de casos de uso de nivel 0 o de contexto

El diagrama que define el nivel 0 del algoritmo de calibracin basado en el clculo de los K caminos mnimos es idntico al caso del algoritmo basado en porcentajes.

Usuario

Modelo de Calibracin basada en porcentajes

Viario

Figura 3.2-7. Casos de uso de nivel 0

Es necesario bajar de nivel para apreciar las diferencias existentes entre ambos mtodos. En cuanto al diagrama, los elementos son equivalentes al caso ya visto para el otro algoritmo. El usuario es quien esta usando la aplicacin y el viario ofrece todos los datos concernientes a la red viaria.

83

Modelado orientado a objetos

3.2.1.2.2 Diagramas de casos de uso de nivel 1

Pasamos a profundizar en el proceso de calibracin. Aqu es donde se empiezan a observar diferencias con el algoritmo anterior. Se observa como aparecen nuevos mdulos relacionados con el nuevo mtodo de calibracin.

Estadstica y generacin de datos

Clculo de las k rutas mnimas

Asignacin de v iajes

Ajuste matriz

Marcardo de rutas

Figura 3.2-8. Diagrama de casos de uso de nivel 1

El proceso de asignacin de viajes es exactamente igual al integrante del primer algoritmo. Se encarga de calcular las rutas por las que se encauza la demanda de trfico, as como calcular los flujos de trfico en los tramos del viario debido a dicho proceso. Adems de las funciones que ya se comentaron anteriormente, ahora debe entregar esos datos de flujo al mdulo de clculo de la k rutas mnimas. El mdulo de clculo de las k rutas mnimas se encargar de obtener las k rutas mnimas en el grafo partiendo de las condiciones que la asignacin predetermine debido a la distribucin de trfico. Requiere tambin de los datos ofrecidos por el viario que caracterizan la red. Estas rutas sern entregadas al mdulo de marcado de rutas. El proceso de marcado de rutas se encarga de obtener una relacin de las rutas que utilizan cada uno de los tramos con detectores. Es decir, para cada tramo con

84

Modelado orientado a objetos

detector, obtendr una relacin de cuales de las k rutas obtenidas utilizan dicho tramo en su recorrido. Esto servir para calibrar la matriz, por lo que los resultados sern entregados al mdulo ajuste de matriz. En el proceso de ajuste de matriz se parte de los datos de flujo reales obtenidos del agente externo viario, de los datos de flujo que resultan del proceso de asignacin

de viajes y de la relacin de transito de rutas por tramos con detector generado por el
proceso de marcado de rutas. Con estos datos se proceder a la calibracin de la matriz mediante una serie de clculos que pretenden asignar la variacin de demanda de trfico entre los elementos de la matriz O-D, en base al uso que hacen de los tramos. El mdulo de estadstica y generacin de datos se encarga de recopilar los datos generados a lo largo del proceso y entregrselos al usuario en el caso de que ste los haya solicitado.

3.2.1.2.3 Diagramas de casos de uso de nivel 2

Se ha credo conveniente entrar a explicar con mayor grado de detalle algunos de los procesos que se han aadido al diagrama de casos de uso de nivel 1. En concreto el proceso de clculo de las k rutas mnimas, el marcado de rutas y el mdulo de ajuste de

matriz.

Clculo de las k rutas mnimas

En este proceso se pretenden obtener para cada par de centroides, los k caminos de menor distancia que los une a travs de la red. Se partir de los volmenes de trfico obtenidos por el proceso de asignacin de trfico.

85

Modelado orientado a objetos

Obtencin de un par origen-destino

Clculo de coste de tramos y giros

Obtencin de k rutas entre un par de centroides

Clculo de porcentajes

Figura 3.2-9. Diagramas de casos de uso de nivel 2. Clculo de las k rutas mnimas

El proceso de clculo de costes de tramos y giros obtiene del viario los datos del grafo y calcula el retardo correspondiente a los tramos y giros usando las funciones de volumen-retraso. Estos datos son entregados al mdulo de obtencin de las rutas

mnimas para su procesamiento.


El mdulo de obtencin de los pares origen-destino entrega una relacin de pares de centroides que son origen y destino de demandas de trfico al mdulo de

obtencin de las rutas mnimas para calcular las rutas. Necesita tener acceso a los datos
del grafo que obtiene del agente externo viario. El mdulo de clculo de los k porcentajes se encarga de calcular en que medida los k caminos sern utilizados, es decir, que proporcin de demanda se encauzar a travs del camino de orden uno, que proporcin en la ruta de orden 2, etc. El mdulo de obtencin de las rutas obtiene todos los datos necesarios de los dems mdulos y los elementos de la red del viario y calcula las rutas mnimas que sern usadas en el algoritmo de calibracin.

86

Modelado orientado a objetos

Marcado de rutas

Este proceso se encarga de generar para cada tramo con detector una lista, donde cada entrada de la misma es un registro que se corresponde con un camino que incluye ese tramo en su secuencia.

Recorrer los tramos en cada ruta

Comprobacin de existencia de detector en tramo

Aadir registro al tramo con detector

Figura 3.2-10. Diagramas de casos de uso de nivel 3. Marcado de rutas

El proceso recorrer los tramos en cada ruta obtiene los tramos que componen las rutas y se los entrega al siguiente proceso. Obtiene las rutas directamente del mdulo de clculo de las k rutas mnimas. El proceso de comprobacin de existencia de detectores se encarga de comprobar para cada tramo si posee datos concernientes a flujos reales como consecuencia de la existencia de detectores que controlen el flujo. Debe pues tener acceso a la informacin del viario que guarda relacin de los tramos que tienen esa clase de informacin disponible en el agente externo viario. El proceso aadir registro al tramo con detector almacena una entrada para los tramos que permiten comparacin de flujos, haciendo referencia al cdigo de tramo que lo recorre.

Ajuste de matriz

El proceso de ajuste de matriz puede descomponerse en una serie de subprocesos que clarifican su proceso.

87

Modelado orientado a objetos

Obtencin de las dif erencias de f lujo

Clculo de v ariaciones

Ponderacin de las v ariaciones

Modif icacin de la matriz

Figura 3.2-11. Diagramas de casos de uso de nivel 2. Ajuste de matriz

Podemos apreciar cuatro procesos que intercambian informacin. El proceso de

obtencin de las diferencias de flujo se encarga de calcular las diferencias que existen
entre los flujos reales y los producidos por el proceso de asignacin de trfico. Estos datos son entregados tanto al proceso de clculo de variaciones como al proceso de

ponderacin de las variaciones. Estas diferencias son las que van a dictar las
modificaciones en la matriz de demanda de viajes. El mdulo de clculo de variaciones se encarga de calcular las variaciones que cada elemento de la matriz de viajes debe experimentar para minimizar las diferencias de flujo en los tramos. Cada tramo con detector dictar variaciones en algunos de estos elementos. Estas variaciones son entregadas al mdulo de ponderacin de las

variaciones. Este mdulo tambin necesita dispones del marcado de rutas que recibe del
proceso correspondiente. El mdulo de ponderacin de variaciones es el ms importante de este proceso de calibracin. La principal diferencia de este algoritmo frente al basado en porcentajes radica en el hecho de que no trata cada tramo de forma independiente, partiendo del hecho que los tramos no son entidades aisladas, sino que estn relacionados con los tramos que le rodean. Una variacin en el flujo de un tramo, implica necesariamente la variacin de los flujos en los tramos adyacentes. Por ello, partiendo de las modificaciones que cada tramo necesitara, el proceso llega a una solucin de

88

Modelado orientado a objetos

compromiso de la variacin de la matriz de viajes que intenta minimizar las desviaciones de flujo en los tramos. Es evidente que no se va a poder satisfacer a todos los tramos, por lo que se realiza una ponderacin de las variaciones, primando a los tramos que aportan una mayor correccin en la matriz O-D. El mdulo de modificacin de la matriz se encarga de ajustar la matriz de viajes en base a las variaciones que el mdulo de ponderacin de desviaciones le indique. Esta matriz ser el resultado del algoritmo y le ser entregada al usuario.

3.2.2

Diagramas de paquetes

El objetivo de este tipo de diagramas es obtener una visin mucho ms clara del sistema de informacin orientado a objetos, organizndolo en diferentes subsistemas, agrupando los elementos del anlisis, diseo o construccin y detallando las relaciones de dependencias entre ellos. El mecanismo de agrupacin utilizado se denomina

paquete.
Estrictamente hablando, los paquetes y sus dependencias son elementos de los diagramas de casos de uso, de clases y de componentes, por lo que se podra decir que el diagrama de paquetes es una extensin de stos. En estos diagramas de pueden diferenciar dos tipos de elementos:

Paquetes: Un paquete es la agrupacin de elementos, bien sea casos de uso, clases o componentes. Los paquetes pueden contener a su vez otros paquetes anidados que en ltima estancia contendrn alguno de los elementos anteriores.

Dependencia entre paquetes. Existe una dependencia cuando une elemento de un paquete requiere de otro que pertenece a un paquete distinto. Es importante resaltar que las dependencias no son transitorias.

89

Modelado orientado a objetos

Los paquetes se van a representar mediante un smbolo en forma de carpeta, en el cual se coloca el nombre del paquete correspondiente. Por su parte, las dependencias entre paquetes se representan con una flecha discontinua con inicio en el paquete que depende del otro. A continuacin se adjuntan los diagramas de paquetes de ambos algoritmos de calibracin. Algunos elementos son comunes a ambos procesos, otros son exclusivos de cada uno de ellos.

3.2.2.1 Diagramas de paquetes del algoritmo de calibracin basado en porcentajes

En el siguiente grfico se pueden observar los paquetes que componen el primer algoritmo de calibracin.

Red

Estructuras de datos de calib basada en porcentajes

Interfaz grfica

Listas

Algoritmo de calibracin

VCL

Figura 3.2-12. Diagramas de paquetes del algoritmo de calibracin basado en porcentajes

90

Modelado orientado a objetos

En el diagrama se observan seis paquetes o elementos, que estn relacionados entre s. Los paquetes son los siguientes:

Red: Este paquete contiene las clases utilizadas para describir el viario. Por lo tanto, contendr toda la informacin referente a los tramos y nodos existentes en el escenario de simulacin, es decir, todo lo que hace referencia a los componentes estticos del modelo.

Calibracin basada en porcentajes: Este paquete es el elemento principal del algoritmo, ya que contiene las clases que se encargan de recopilar los datos, aplicar el algoritmo y obtener los resultados. Incluye adems las estructuras que permiten llevar a cabo la asignacin de trfico.

Estructuras de datos de calibracin basada en porcentajes: Dentro de este paquete se encuentran las estructuras que permiten realizarla calibracin. En las clases q la componen, se almacenan los datos referentes a porcentajes de utilizacin de tramos que son el resultado de la asignacin y sern necesarios para la calibracin de la matriz de demanda de trfico.

Listas: Este paquete contiene dos clases parametrizadas que sern usadas para la implementacin de listas de estructuras de las clases definidas en otros paquetes. Es pues un paquete auxiliar, y sus clases no tienen un significado propio dentro del algoritmo, aunque son tremendamente tiles a la hora del procesamiento de los datos.

VCL (Visual Component Library): Este paquete engloba a todos los elementos visuales de la librera de Borland que se utilizan en la aplicacin.

91

Modelado orientado a objetos

Interfaz grfica: En este paquete se incluyen las clases que componen los formularios visuales que permiten la interaccin entre la aplicacin y el usuario. Estas clases hacen uso de los elementos VCL propios de Borland.

3.2.2.2 Algoritmo de calibracin basado en el clculo K-mn

Mostramos ahora el diagrama de paquetes de la segunda implementacin de calibracin. El diagrama es muy parecido al del algoritmo anterior. Slo se comentarn aquellos paquetes que no estuviesen incluidos en el diagrama del primer algoritmo.

Red

Estucturas de datos de calib basada en algoritmo K-mn

Algori tmo de ruta mni ma K-mn

Interfaz grfica

Listas

Algoritmo de calibracin

VCL

Figura 3.2-13. Diagrama de paquetes del algoritmo de calibracin basado en clculo K-mn

92

Modelado orientado a objetos

Veamos los nuevos paquetes:

Estructuras de datos de calibracin basada en algoritmo K-mn: Este paquete es equivalente al paquete que apareca en el diagrama anterior. Sustituimos las estructuras que posibilitaban la calibracin basada en porcentajes, por otras estructuras que sirven de apoyo a la calibracin basada en el clculo de las k rutas mnimas. Estas estructuras sern igualmente usadas por el algoritmo de calibracin y por el de clculo de dichas rutas.

Algoritmo de ruta mnima K-mn: Este paquete contiene las estructuras que permiten obtener las k rutas mnimas entre cada par de centroides del grafo. Es pues el mdulo ms importante de esta calibracin.

3.2.3

Diagramas de clases

El objetivo principal de este modelo es la representacin de los aspectos estticos del sistema, utilizando diversos mecanismos de abstraccin (clasificacin, generalizacin, agregacin). El diagrama de clases recoge las clases existentes en los paquetes y sus correspondientes asociaciones. En este diagrama se representa la estructura y comportamiento de cada uno de los objetos del sistema y sus relaciones con los dems objetos, pero no se muestra ninguna informacin temporal. Con el fin de facilitar la comprensin del diagrama, se pueden incluir paquetes como elementos del mismo, donde cada uno de ellos agrupa un conjunto de clases que tienen algn tipo de relacin. Este diagrama no refleja los comportamientos temporales de las clases, aunque para representarlos puede usarse un diagrama de transicin de estados. Los elementos bsicos del diagrama son:

93

Modelado orientado a objetos

Clases. Una clase describe un conjunto de objetos con propiedades (atributos) similares y un comportamiento comn. Los objetos son instancias de las clases. No existe un procedimiento inmediato que permita localizar las clases del diagrama de clases. stas suelen corresponderse con sustantivos que hacen referencia al mbito del sistema de informacin y que se encuentran en los documentos de las especificaciones de requisitos y de los casos de uso. Dentro de la estructura de una clase se definen los atributos, que representan los datos asociados a los objetos instanciados por esa clase, y los mtodos, que representan las funciones o procesos propios de los objetos de una clase, caracterizando a dichos objetos. Dentro de las clases es importante destacar un caso especial, las plantillas o

templates. stas son clases que estn parametrizadas, es decir, que


necesitan de un parmetro a la hora de formarse.

Relaciones. Los tipos ms importantes de relaciones estticas entre clases son las siguientes:

o Asociacin. Las relaciones de asociacin representan un conjunto de

enlaces entre objetos o instancias de clases. Es el tipo de relacin ms general, y denota bsicamente una dependencia semntica. Por ejemplo un Carril pertenece a un Tramo. Cada asociacin puede representar elementos adicionales que doten de mayor detalle al tipo de relacin:

Rol, o nombre de la asociacin, que describe la semntica de la

relacin en el sentido indicado. Por ejemplo, la asociacin entre Carril y Tramo recibe el nombre de pertenece a, como rol en ese sentido.

94

Modelado orientado a objetos

Multiplicidad, que describe la cardinalidad de la relacin, es decir,

especifica cuntas instancias de una clase estn asociadas a una instancia de la otra clase. Los tipos de multiplicidad son: uno a uno, uno a muchos, muchos a muchos...
o Herencia. Las jerarquas de generalizacin / especializacin se conocen

como herencia. La herencia es el mecanismo que permite a una clase de objetos incorporar atributos y mtodos de otra clase, aadindolos a los que ya posee. Con la herencia se refleja una relacin es-un entre clases. La clase de la cual se hereda se denomina superclase, y la que lo hereda

subclase.
o Agregacin. La agregacin es un tipo de relacin jerrquica entre un

objeto que representa la totalidad de ese objeto y las partes que lo componen. Permite el agrupamiento fsico de estructuras relacionadas lgicamente. Los objetos son-parte-de otro objeto completo.
o Composicin. La composicin es una forma de agregacin donde la

relacin de propiedad es ms fuerte, e incluso coinciden el tiempo de vida del objeto y las partes que lo componen.
o Dependencia. Una relacin de dependencia se utiliza entre dos clases o

entre una clase y una interfaz, e indica que una clase requiere de otra para proporcionar alguno de sus servicios.

A continuacin se va a dar una explicacin de la notacin seguida para la representacin de estos diagramas. Una clase se representa por una caja, separada en tres zonas por lneas horizontales. En la zona superior se muestra el nombre de la clase y propiedades generales como el estereotipo. Si la clase es abstracta el nombre aparece en cursiva. El nombre es nico y sirve para diferenciarlo del resto de las clases.

95

Modelado orientado a objetos

La zona central contiene una lista de atributos, uno en cada lnea. La notacin utilizada para representarlos incluye, dependiendo del detalle, el nombre del atributo, su tipo y su valor por defecto, con el formato: Visibilidad nombre: tipo = valor_inicial
Nombre de la clase Tipo
caminos
nodo_ori gen : unsi gned int nodo_fi nal : unsigned int nodos : T List* Crear_li sta() Add_nodo(u : unsigned int) Destruir_camino() Ori gen() : unsi gned i nt Final() : unsi gned i nt Numero_el ementos() : unsi gned int Elemento(i ndi ce : unsigned i nt) : unsigned int

Visibilidad

Atributos

Nombre del atributo

Mtodos

Parmetros Mtodo Tipo devuelto

Figura3.2-14. Ejemplo de clase

Debido a que existen paquetes comunes a los dos algoritmos, y con la intencin de no repetir definiciones, se va a dividir la documentacin de las clases en tres grupos. Primero se definirn los paquetes que son comunes a los dos procesos, y posteriormente los paquetes que son propios de cada uno de ellos. En las clases existen una serie de mtodos que permiten la obtencin y modificacin de los valores de los atributos. Igualmente existen unos mtodos de sobrecarga de operadores que son necesarios para su implementacin en listas. Ambas clases de mtodos, dado que se repiten en la mayora de las clases y que su interpretacin es sencilla, sern comentadas slo en las primeras apariciones.

96

Modelado orientado a objetos

3.2.3.1 Paquetes de datos comunes 3.2.3.1.1 Paquete de datos Red

Este paquete es utilizado para representar todos los componentes que conforman el viario de una ciudad. Dicho viario ser representado por un grafo formado por nodos y tramos. En concreto existir un tramo para cada sentido de circulacin que tengan las calles del viario, mientras que los nodos representan los cruces o intersecciones entre las diferentes calles. El siguiente diagrama muestra las clases que componen el paquete, as como su interrelacin.

Giro 1
0..*

incluye 1 Mapa Permitir 1 1 1 Contexto 2 0..* 2 Comunica 0..* 1..* Tramo 1 Conecta

3 Punto

Figura 3.2-15. Diagrama de clases del paquete Red

97

Modelado orientado a objetos

3.2.3.1.1.1 Clase Contexto

Esta clase agrupa todos los datos referentes al escenario de trabajo. De el se extraen toda la informacin necesaria para representar el viario sobre el que vamos a trabajar. Posee muchos atributos y mtodos. Nosotros nos hemos centrado en los ms importantes.

Contexto
mapa : Mapa ancho : float alto : float Ancho() : float Alto() : float

Figura 3.2-16. Clase Contexto

Atributos de la clase Contexto:


o Mapa: instancia de la clase Mapa que contiene los datos referentes al

viario, entindanse nodos, tramos, longitudes,.... Es el atributo ms importante de la clase. Tiene visibilidad pblica, por lo que es accesible desde fuera de la clase.
o Ancho: mantiene el ancho del mapa, para la representacin grfica del

viario.
o Alto: contiene el alto del mapa, para la representacin grfica del viario.

Mtodos de la clase Contexto:


o float Ancho(void): devuelve el valor de la variable ancho. o float Alto(void): devuelve el valor de la variable alto.

98

Modelado orientado a objetos

3.2.3.1.1.2 Clase Mapa

Como ya se ha dicho, es la clase que contiene los datos de la red viaria. La clase se muestra en el siguiente grfico.

Mapa
cod_mapa : unsigned int nombre_mapa : char[255] Lista_nodos : Lista_inf<Punto> Lista_tramos : Li sta_inf<T ramo> Lista_pm : TLi st* Codi go() : unsi gned int Nombre_M apa() : char* Actual iza_codi go(codigo : int) Actual iza_nombre_mapa(nombre : char*) Obtener_nodo(i : i nt) : Punto Obtener_tramo(i : int) : T ramo Lectura_pm(fichero : char*) Leer_nodos(nombre_fichero : char*) Leer_tramos(nombre_fi chero : char*) Buscar_nodo(cod_nodo : unsigned int) : Punto Buscar_tramo(cod_tramo : unsigned int) : T ramo

Figura 3.2-17. Clase Mapa

Atributos de la clase Mapa:


o cod_mapa: Cdigo que identifica el mapa que esta siendo utilizado. o nombre_mapa: Nombre del mapa. Es una informacin aclaratoria del

mapa y complementaria al cdigo del mapa.


o Lista_nodos: lista de los nodos que componen la red viaria. o Lista_tramos: lista de los tramos que componen la red viaria y unen los

nodos de la misma.
o Lista_pm: lista de los tramos que poseen detectores magnticos de

trfico.

99

Modelado orientado a objetos

Mtodos de la clase Mapa:


o unsigned int Codigo(void): devuelve el valor del atributo cod_mapa. o char*

Nombre_Mapa(void):

devuelve

el

valor

del

atributo

nombre_mapa.
o void Actualiza_codigo(int codigo): modifica el valor del atributo

cod_mapa.
o void Actualiza_nombre_mapa(char* nombre): modifica el valor del

atributo nombre_mapa.
o Punto Obtener_nodo(int i): devuelve el elemento i-simo de la lista de

nodos.
o Tramo Obtener_tramo(int i): devuelve el elemento i-simo de la lista de

tramos.
o void Lectura_pm(char* fichero): lee de un archivo de nombre fichero la

lista de tramos con detectores y la guarda en el atributo Lista_pm.


o void Leer_nodos(char*fichero): carga la lista de nodos del archivo de

nombre fichero.
o void Leer_tramos(char*fichero): carga la lista de tramos del archivo de

nombre fichero.
o Punto Buscar_nodo(unsigned int cod_nodo): devuelve el nodo con

cdigo de nodo igual a cod_nodo.


o Tramo Buscar_tramo(unsigned int cod_tramo): devuelve el tramo con

cdigo de nodo igual a cod_tramo.


3.2.3.1.1.3 Clase Punto

La clase Punto instancia objetos que representan a las intersecciones del viario. Es junto con la clase Tramo el principal componente del grafo.

100

Modelado orientado a objetos

Punto
cod_nodo : unsi gned int descripcion : char[255] cod_estructura : unsigned int ti po : unsigned i nt coord_x : fl oat coord_y : fl oat Cod_Nodo() : unsi gned i nt Descri pcion() : char * Cod_Estructura() : unsigned int Tipo() : unsigned int Coord_X() : float Coord_Y() : float Actual iza_Cod_Nodo(u : unsi gned int) Actual iza_Descripci on(cadena : char*) Actual iza_Cod_Estructura(u : unsigned int) Actual iza_T i po(u : unsigned i nt) Actual iza_Coord_X(f : float) Actual iza_Coord_Y(f : float) operator=(p : Punto) : Punto operator==(p : Punto) : bool

Figura 3.2-18. Clase Punto

Atributos de la clase Punto:


o cod_nodo: cdigo del nodo que representa el objeto y lo diferencia del

resto de nodos de la red.


o descripcion: cadena de texto que sirve de identificacin del nodo. Es

informativa.
o cod_estructura: estructura actual de funcionamiento del nodo. o tipo: variable que indica si el nodo es un centroide o no. Slo los

centroides son origen o destino de viaje. El resto son de trnsito.


o coord_x: Variable que indica la coordenada x del nodo para su

representacin grfica.
o coord_y: Variable que indica la coordenada y del nodo para su

representacin grfica.

101

Modelado orientado a objetos

Mtodos de la clase Punto: Los mtodos de esta clase son los correspondientes a la obtencin y modificacin de los valores de los atributos, por lo que su significado es suficientemente claro y no se detallar. La sobrecarga de los operadores posibilita la implementacin de listas con objetos de esta clase como elementos de la misma.

3.2.3.1.1.4 Clase Tramo

La clase tramo instancia a objetos que representan las calles del viario. La estructura de la clase se detalla a continuacin.
Tramo
cod_tramo : unsigned int descripcion : char[255] nodo_inicio : unsi gned i nt nodo_fi n : unsigned int longitud : float funcion_vol_retraso : unsi gned int saturaci on : float numero_carriles : unsigned int Cod_T ramo() : unsi gned i nt Descri pcion() : char* Nodo_Ini ci o() : unsi gned i nt Nodo_Fin() : unsigned int Longitud() : float Funcion_Vol _Retraso() : unsigned int Saturacion() : float Numero_Carril es() : unsigned int Actual iza_Cod_T ramo(u : unsigned int) Actual iza_Descripcion(cadena : char*) Actual iza_Nodo_Inicio(u : unsi gned i nt) Actual iza_Nodo_Fi n(u : unsigned int) Actual iza_Longitud(f : fl oat) Actual iza_Funci on_Vol_Retraso(u : unsigned int) Actual iza_Saturaci on(f : fl oat) Actual iza_Numero_Carri les(u : unsigned int) operator=(t : T ramo) : T ram o operator==(t : Tramo) : bool

Figura 3.2-19. Clase Tramo

102

Modelado orientado a objetos

Atributos de la clase Tramo:


o cod_tramo: cdigo del tramo que representa y que es nico entre los

tramo.
o descripcion: descripcin textual del tramo, como pudiera ser el nombre

de la calle que representa. Es informativo.


o nodo_inicio: cdigo del nodo que es inicio del tramo. o nodo_fin: cdigo del nodo que es trmino del tramo. o longitud: longitud en metros del tramo. o funcion_vol_retraso: ndice de la funcin que representa la relacin

existente entre el volumen del tramo y el coste en tiempo que implica su recorrido.
o saturacion: saturacin media del tramo en vehculos/hora. o numero_carriles: variable que indica el nmero de carriles que posee el

tramo.

Mtodos de la clase Tramo: Los mtodos de la clase Tramo son, al igual que en el caso de la clase Punto

los habituales para el manejo de los datos, por lo que se omitir su explicacin.

3.2.3.1.1.5 Clase Giro

La clase Giro instancia objetos que definen los giros permitidos en la red viaria. Su estructura es la siguiente:

103

Modelado orientado a objetos

Giro
numero_gi ro : unsigned int tramo_ori gen : unsi gned int tramo_destino : unsigned int descripcion : char[255] longitud : float porcentaj e : float saturaci on : float fl ujo : fl oat col a : float Numero_Giro() : unsigned int Tramo_Ori gen() : unsigned int Tramo_Desti no() : unsi gned int Descri pcion() : char* Longitud() : float Porcentaj e() : float Saturacion() : float Flujo() : fl oat Cola() : fl oat Actual iza_Numero_Giro(u : unsigned int) Actual iza_T ram o_Origen(u : unsigned int) Actual iza_T ram o_Destino(u : unsigned int) Actual iza_Descripci on(cadena : char*) Actual iza_Longitud(f : fl oat) Actual iza_Porcentaje(f : float) Actual iza_Saturacion(f : float) Actual iza_Fl uj o(f : float) Actual iza_Cola(f : float)

Figura 3.2-20. Clase Giro

Atributos de la clase Giro:


o numero_giro: identificador del giro. Es nico y lo diferencia del resto

de giros de la red.
o tramo_origen: cdigo del tramo que incide en el giro. o tramo_destino: cdigo del tramo que es salida del giro. o descripcion: cadena de caracteres que sirve de comentario para el giro.

Es informativo.
o longitud: longitud en metros del giro. o porcentaje: porcentaje de vehculos con respecto al total que circula por

el tramo origen que selecciona el giro en su desplazamiento.

104

Modelado orientado a objetos

o saturacion: saturacin media del giro, medida en vehculos/hora. o flujo: Nmero de vehculos que circulan por el giro. o cola: nmero medio de vehculos que se encuentran detenidos en el

giro.

Mtodos de la clase Giro: Los mtodos son los usuales y no se comentarn.

3.2.3.1.2 Paquete de datos Listas

El paquete de datos Listas contiene dos clases parametrizadas que sirven para crear listas de instancias de otras clases, as como su manipulacin. Entre las funciones que pueden realizarse estn la de aadir elemento, eliminar elemento, modificar

elemento, borrar lista,... En el siguiente grfico se muestra el diagrama de clases de este


paquete. En realidad, cualquier clase que tenga sobrecargados los operadores necesarios, puede ser parmetro de estas clases, por lo que solamente se muestra una relacin para cada una en forma de ejemplo.
Y Lista_inf +le pertenece 1 +pertence a 0..*

Punto
(f rom Red)

Y MiLista 1 +le pertenecen +pertenece a 0..*

Tramos_Red
(f rom Algoritmo de calibracin)

Figura 3.2-21. Diagrama de clases del paquete Listas

A continuacin pasamos a comentar los elementos que componen estas clases parametrizadas.

105

Modelado orientado a objetos

3.2.3.1.2.1 Clase Lista_inf

Esta clase permite la organizacin de objetos de diversos tipos en una lista, de forma que los datos pueden ser manejados con mayor facilidad. Los datos pueden ser modificados, extrados, eliminados,...

Y
Lista_inf
li sta : TLi st* Crea_lista() Add_elemento(inf : Y) Lista() : TLi st* Insertar_elemento(posi ci on : Y, elemento : Y) Insertar_elemento_ind(elemento : Y, i : unsigned) Insertar_elemento_detras(el emento : Y, posi ci on : Y) Borrar_el emento(el e : Y) Borrar_el emento_indice(indice : unsigned int) Borrar_ul timo_elemento() Modifi car_el emento(el e : Y) Modifi car_el emento_indice(ele : Y, i : unsi gned i nt) Borrar_l ista() Destruir_l ista() Elemento(i : unsigned int) : Y Buscar(el : Y) : unsi gned int Buscar(el emento : Y, encontrado : bool *) : Y Numero_el em entos() : unsigned int Grabar_Informacion(fil ename : char*) Grabar_Informacion_cont(F1 : FILE*) Cargar_Inform acion(filename : char*) Cargar_Inform acion_cont(F1 : FILE*) operator=(l : Li sta_i nf) : Lista_inf

Figura 3.2-22. Clase Lista_inf

Atributos de la clase Lista_inf:


o lista: lista de direcciones que mantendr las posiciones de memoria de

los elementos que conformen la lista de objetos. Es una herramienta de Borland que implementa mtodos de insercin, eliminacin y acceso a los elementos, entre otros.

106

Modelado orientado a objetos

Mtodos de la clase Lista_inf:


o void Crea_lista(void): mtodo que inicializa la lista, reservando

memoria para la lista de punteros.


o void Add_elemento(Y inf): aade el elemento inf a la lista al final de la

misma.
o void Lista(void): Devuelve el contenido de la lista de punteros y se usa

para saber si la lista est inicializada.


o void Insertar_elemento(Y posicion, Y elemento): inserta el objeto

elemento en la posicin ocupada por el elemento posicion. ste ltimo


y los posteriores se desplazarn para dejar hueco.
o void Insertar_elemento_ind(Y elemento, unsigned i): inserta el objeto

elemento en la posicin i.
o void Insertar_elemento_detras(Y elemento, Y posicion): inserta el

objeto elemento en la posicin posterior a la ocupada por el elemento

posicion. Los posteriores se desplazarn para dejar hueco.


o void Borrar_elemento(Y ele): elimina de la lista el elemento ele. o void Borrar_elemento_indice(unsigned int indice): elimina de la lista el

elemento que se encuentra en la posicin indice. Los ndices de las listas comienzan en el cero.
o void Modificar_elemento(Y ele): modifica el elemento que es igual al

objeto ele por el nuevo ele. Esto puede parecer que no hace nada, pero se explica con el hecho de que dos elementos para ser iguales, no han de coincidir en cada uno de sus atributos, sino solamente en los definidos en la sobrecarga del operados = =.
o void Modificar_elemento_indice(Y ele, unsigned int i): reemplaza el

elemento con ndice i por el elemento ele.


o void Borrar_lista(void): elimina todos los elementos de la lista, pero al

contrario que el mtodo Destruir_lista la lista sigue estando

107

Modelado orientado a objetos

inicializada.
o void Destruir_lista(void): destruye la lista y cada uno de sus elementos. o Y Elemento(unsigned int i): devuelve el elemento situado en la posicin

i (recordar que el primero est en la posicin cero).


o unsigned int Buscar(Y ele): devuelve el ndice del elemento ele dentro

de la lista. Si no existe, devuelve el nmero de elementos de la lista.


o Y Buscar(Y elemento, bool* encontrado): devuelve el elemento igual al

objeto elemento. La variable encontrado indicar si la bsqueda ha sido realizada con xito o no.
o unsigned int numero_elementos(void): devuelve el nmero de

elementos en la lista.
o void Grabar_informacion(char* filename): almacena la lista en el

archivo con nombre filename. Si el archivo existe, su contenido es eliminado.


o void Grabar_informacion_cont(FILE* F1): almacena la lista en el

archivo ya abierto y que es apuntado con el puntero F1. La informacin se aade al final del archivo.
o void Cargar_informacion(char* filename): recupera la lista del archivo

con nombre filename. El proceso busca los datos al principio del mismo.
o void Cargar_informacion_cont(FILE* F1): recupera la lista del archivo

ya abierto y que es apuntado con el puntero F1. Esta funcin se usa cuando la informacin no esta al inicio del fichero. Es preciso que el archivo se encuentre en la posicin de inicio de la lista.

o Lista_inf operator= (Lista_inf l): este mtodo permite la copia de una

lista en otra lista del mismo tipo. Si la lista destino posea datos (no estaba vaca) los nuevos elementos sern aadidos al final de la misma.

108

Modelado orientado a objetos

3.2.3.1.2.2 Clase MiLista

Esta clase se comporta de forma similar a la clase Lista_inf, por lo que es slo una alternativa a la primera. Su estructura es la siguiente:

Y
MiLista
Lista : TList* Is_Init() : bool Ini t() Close() Get_Count() : i nt Add_Element(inElement : Y) : i nt Add_Element(inElement : Y, inIndex : int) Add_Multiple(inLi sta : MiLista) Delete_Element(i nElem ent : Y) Delete_Element(i nIndex : int) LookUpEl em ent(inElement : Y, outIndex : i nt) : bool LookUpM ul ti pl es(i nElement : Y, outIndex : int*) : i nt RemoveAll () Modify_Element(i nElement : Y, i nIndex : int) Elemento(i nIndex : int) : Y operator[](inIndex : int) : Y operator=(inLista : MiLista) : Mi Li sta

Figura 3.2-23. Clase MiLista

Atributos de la clase MiLista:


o lista: lista de direcciones que mantendr las posiciones de memoria de

los elementos que conformen la lista de objetos. Es una herramienta de Borland que implementa mtodos de insercin, eliminacin y acceso a los elementos, entre otros.

Mtodos de la clase MiLista:


o bool Is_Init(void): devuelve true si la lista est inicializada y false en

caso contrario.
o void Init(void): inicializa la lista, que no es ms que reservar memoria

109

Modelado orientado a objetos

para la lista de punteros.


o void close(void): destruye la lista y todos los elementos integrantes de la

misma.
o int Get_Count(void): devuelve el nmero de elementos que integran la

lista.
o int Add_element(Y inElement): aade el elemento inElement y devuelve

la posicin que ocupa tras haber aadido el elemento.


o void Add_element(Y inElement, int inIndex): aade el elemento

inElement en la posicin inIndex.


o void Add_Multiple(MiLista inLista): aade al final de la lista todos los

elementos de la lista parmetro inLista. Ambas listas han de ser del mismo tipo, es decir, los elementos deben ser de la misma clase.
o void Delete_element(Y inElement): elimina el elemento inElement de la

lista.
o void Delete_element(int inIndex): elimina el elemento que se encuentra

en la posicin inIndex.
o bool LookUpElement(Y inElement, int outIndex): busca en la lista el

elemento inElement. Si la bsqueda es positiva, devuelve true y la posicin en la que se encuentra en la variable outIndex. Si el elemento no se encuentra, se devuelve false.
o Int LookUpMultiples(Y inElement, int* outIndex): busca el elemento

inElement en la lista y devuelve el nmero de instancias que se han


encontrado. Las posiciones se entregan en el vector de enteros outIndex.
o void Remove All(void): elimina todos los elementos de la lista. o void Modify_element(Y inElement, int inIndex): Sustituye el elemento

de la posicin inIndex por el objeto inElement.


o Y Elemento(int inIndex): devuelve el elemento que ocupa la posicin

inIndex.

110

Modelado orientado a objetos

o Y operator[] (int inIndex): sobrecarga del operador []. Devuelve el

elemento de la posicin inIndex.


o MiLista operator= (MiLista inLista): copia una lista origen en una

destino. Si la lista destino no estaba vaca, se eliminan sus elementos.


3.2.3.1.3 Paquete de datos Algoritmo de Calibracin

En este paquete se incluyen las clases principales del algoritmo de calibracin. Dado que el algoritmo de asignacin es parte intrnseca del proceso de ajuste de la matriz de viajes, tambin estarn incluidas en este paquete las clases encargadas de la asignacin. El siguiente diagrama presenta las clases integrantes de este paquete de datos, as como las relaciones existentes entre ellas.

caminos 0..* 0..*

Datos_iteracion
1..* pertenece a Compuesto por

1
Matriz_adyacencia

Compuesto por

4
Matriz_virtual

0..* Giro_Red 1

1
incluye

1
conecta

1
formado por incluye

1..*

1..* 2 1
Compuesto por

3 1..* 2

1..* Vertices

Tramos_Red

Figura 3.2-24. Diagrama de clases del paquete Algoritmo de calibracin

111

Modelado orientado a objetos

Pasamos a comentar cada una de las clases que integran el paquete.

3.2.3.1.3.1 Clase Matriz_adyacencia

Esta es la clase principal del paquete. Las dems clases son clases subordinadas a sta. Los mtodos que realizan los clculos e implementan los algoritmos estn incluidos en esta clase. El resto de las clases son principalmente de datos. Debido al gran nmero de parmetros que tienen los mtodos de esta clase, se ha preferido no incluirlos en el diagrama de la clase.

112

Modelado orientado a objetos

Matriz_adyacencia
Grafo : TLi st* fi c : FILE* fi g : FILE* fct : FILE* fcg : FILE* fi j : FILE* fi j_giros : FILE* Matriz_di stancias : fl oat* Matriz_cal ibrada : fl oat* Matriz_asignaci on : float* Matriz_vi ajes : float* Pij : fl oat* Matriz_costes_giros : M atri z_virtual Matriz_asignaci on_giros : M atriz_virtual Pij _gi ros : Matri z_virtual ListaGiros : Lista_inf<Giro_Red> Nodos_Giros : Lista_inf<bool> Lista_centroides : Li sta_inf<unsigned int> Lectura_gi ros() Generaci on_matriz() Multiples_cami nos() Dij kstrak() Eval ua_expresi on() Eval ua_expresi on_giros() Metodo_di cotom ia() Asi gna_viajes_cami nos() Asi gnacion_iteraci on() Lectura_datos_matri z() Leer_matri z() Abri r_fi cheros() Grabar_datos() Cerrar_ficheros() Cali braci on_MAC() Actualizacion_m atri z_porcentajes() Actualiza_porcentaj es() Init_Num_Paths_Porcentaj es() Algori tmo_Kmin() Inici al iza_estructuras() Apli car_algoritmo() Mostrar_resultados() Gen_l ista_nodos() Gen_Treenode_Index() Save_Paths() Load_Paths() Show_Ti me() Init_Estruct_Cal ibracion_Kmin() Cali braci on_Matriz_Kmin() Grabar_matriz_diferencias()

Figura 3.2-25. Clase Matriz_adyacencia

113

Modelado orientado a objetos

Atributos de la clase Matriz_adyacencia:


o Grafo: lista de punteros que contiene una relacin con todos los vrtices

del viario.
o fic, fig, fct, fcg, fij, fij_giros: conjunto de punteros a archivos que sirven

para el manejo de los ficheros que contendrn resultados y estadsticas del proceso.
o Matriz_distancias: esta matriz contendr el coste en tiempo para cada

tramo de la red. Es una matriz cuadrada de dimensin igual al nmero de nodos del viario.
o Matriz_calibrada: matriz cuadrada que almacenar la matriz de viajes

resultado de la aplicacin del algoritmo. Su dimensin es igual al nmero de centroides de la red.


o Matriz_asignacion: matriz cuadrada de dimensin igual al nmero de

nodos que contendr el flujo de cada tramo.


o Matriz_viajes: matriz cuadrada de dimensin igual al nmero de

centroides que almacenar la demanda de trfico inicial. Esta es la matriz que se pretende optimizar.
o Pij: matriz cuadrada de dimensin igual al nmero de nodos que

almacenar el flujo generado en una iteracin del algoritmo de asignacin. Sirve para clculos intermedios.
o Matriz_costes_giros: matriz cuadrada de dimensin igual al nmero de

tramos que almacena el coste temporal de recorrer los giros del grafo.
o Matriz_asignacion_giros: matriz cuadrada de dimensin igual al

nmero de tramos que almacena el flujo de vehculos en los giros.


o Pij_giros: matriz cuadrada de dimensin igual al nmero de tramos que

almacena el flujo en los giros en cada iteracin del algoritmo de asignacin. Sirve para clculos intermedios.
o ListaGiros: lista que contiene los giros del grafo y sus datos.

114

Modelado orientado a objetos

o Nodos_Giros: lista que permite conocer rpidamente si un nodo tiene

definidos giros entre sus tramos entrantes y salientes.


o Lista_centroides: lista que almacena los cdigos de los nodos que son

centroides.

Mtodos de la clase Matriz_adyacencia:


o void Lectura_giros(void): carga la lista de giros del disco. o void Multiples_caminos (unsigned int numero_centroides, unsigned int

numero_nodos,

TList

*lista_tramos_nodo,

Lista_inf<Tramo>

lista_tramos, Lista_inf<Punto> lista_nodos, unsigned int iteracion, bool generar_caminos) : mtodo que calcula las rutas mnimas entre
cada par de centroides, asigna el trfico y calcula los flujos en los tramos.
o void Generacion_matriz (Lista_inf<Tramo> Lista_tramos, unsigned int

numero_nodos): inicializa la matriz de distancias, con todos sus


elementos tomando el valor infinito.
o bool Dijkstrak (unsigned int codigo_nodo, unsigned int numero_nodos,

unsigned

int

numero_centroides, lista_tramos,

TList

*lista_tramos_nodo, lista_nodos,

Lista_inf<Tramo>

Lista_inf<Punto>

unsigned int iteracion, bool generar_caminos): Este mtodo encuentra


el camino ms corto entre el centroide con cdigo codigo_nodo y el resto de los centroides de la red. Esta funcin es llamada recursivamente por el mtodo Multiples_caminos hasta haber encontrado todos los caminos mnimos para cada par de centroides.
o float

Evalua_expresion(float

Lambda,

char

*variable,

Lista_inf<Tramo> lista_tramos, unsigned int numero_nodos): Este


mtodo permite evaluar expresiones que son necesarias para la implementacin del mtodo de dicotoma.
o float Evalua_expresion_giros(float Lambda, char *variable, unsigned

int numero_nodos, unsigned int numero_tramos): Este mtodo permite

115

Modelado orientado a objetos

evaluar expresiones que son necesarias para la implementacin del mtodo de dicotoma.
o float

Metodo_dicotomia(float

E,

char

*var,

Lista_inf<Tramo>

lista_tramos, unsigned int numero_nodos, float Lambda): permite el


clculo del parmetro lambda que indicar la proporcin en que se modifican los flujos de asignacin respecto a los resultantes en la iteracin anterior durante el algoritmo de asignacin.
o void Asigna_viajes_caminos(unsigned int origen, unsigned int destino,

unsigned

int

cod_origen, L_N,

unsigned

int

cod_destino, S,

MiLista<acm_Vertices> numero_centroides,

MiLista<acm_Tramos_Red> int iteracion,

unsigned int numero_nodos, unsigned int numero_tramos, unsigned int unsigned Lista_inf<Punto> lista_nodos, bool generar_caminos): Esta funcin calcula los flujos en
los tramos como consecuencia de repartir la demanda de trfico acorde con los resultados obtenidos en la iteracin del algoritmo de asignacin.
o bool Asignacion_iteracion(unsigned int iteracion, Lista_inf<Tramo>

lista_tramos,

unsigned

int

numero_nodos,

MiLista<acm_Pm>

lista_pm, unsigned int numero_centroides, TList *lista_tramos_nodo, Lista_inf<Punto> Lista_datos_tramos, lista_nodos, float gap, bool Lista_inf<Datos_tramos> guardar_datos, bool

generar_caminos, bool comienzo): Esta funcin se encarga de llevar a


cabo un iteracin del algoritmo de asignacin. Realiza llamadas a los mtodos Multiples_caminos y Actualiza_porcentajes entre otros. Tambin se encarga de calcular los costes de tramos y giros en funcin del volumen existente en ellos.
o void Leer_matriz (char *nombre, unsigned int numero_centroides):

permite la carga en memoria de la matriz de viajes que est almacenada en el archivo nombre y con dimensin numero_centroides.
o void Lectura_datos_matriz(unsigned int indice_matriz, unsigned int

numero_centroides): Carga en memoria la matriz de viajes nmero indice_matriz del escenario de trabajo. Internamente, realiza una

116

Modelado orientado a objetos

llamada al mtodo Leer_matriz.


o void Abrir_ficheros(char *modo): abre los archivos en el modo

indicado por el parmetro modo que el algoritmo usar para almacenar los datos del proceso.
o void Grabar_datos (unsigned int numero_nodos, Lista_inf<Tramo>

lista_tramos, bool grabar): permite grabar en los archivos de datos, la


evolucin del proceso, as como los resultados del mismo.
o void Cerrar_ficheros (void): cierra los archivos de datos. o void Calibracion_MAC (Lista_inf<Tramo> lista_tramos, unsigned int

numero_nodos, unsigned int numero_iteraciones, MiLista<acm_Pm> lista_pm, unsigned int numero_centroides, TList *lista_tramos_nodo, Lista_inf<Punto> Lista_datos_tramos, lista_nodos, float gap, bool Lista_inf<Datos_tramos> guardar_datos, bool

generar_caminos): este mtodo es el principal del proceso. Desde l se


preparan las estructuras de datos, se realizan las llamadas al mtodo

asignacion_iteracion que realiza las asignaciones de trfico, y se lanza


el proceso de calibracin de la matriz. Es el ncleo del proceso.
o void

Actualizacion_matriz_porcentajes unsigned int

(Lista_inf<Tramo> unsigned int

lista_tramos,

numero_centroides,

numero_nodos): es el proceso encargado de calibrar la matriz a partir de


todos los datos aportados por el proceso de asignacin y los datos de porcentajes de flujo. El resultado es una nueva matriz de viajes que se ajuste mejor a los flujos reales del viario.
o void acm_Actualiza_porcentajes (float Lambda): tras cada iteracin

este mtodo actualiza los datos de porcentajes de flujo en tramos, de forma que se pueda saber del volumen total, qu proporcin es debida a cada uno de los posibles pares origen-destino. Las modificaciones se realizan basndose en el valor del parmetro Lambda, anteriormente calculado.
o

void Init_Num_Paths_Porcentajes(): se inicializa la estructura que

117

Modelado orientado a objetos

permitir una rpida localizacin de los tramos con detectores. Son estructuras que permiten acelerar el desarrollo del proceso.
o void Algoritmo_Kmin(): este mtodo es el encargado de coordinar el

clculo de las k rutas mnimas. Realiza llamadas a aplicar_algoritmo y

mostrar_resultados para cada nodo origen del viario.


o void Inicializa_estructuras(unsigned int *in_long, unsigned int

*in_volau, unsigned int *in_volad, unsigned int *in_carr): en este


mtodo se preparan las listas y estructuras necesarias para el clculo de las k rutas mnimas.
o void Aplicar_algoritmo(unsigned int Nodo_Origen): este es el ncleo

operativo del algoritmo K-mn. Calcula k rutas para todos los destinos que parten del nodo con cdigo Nodo_Origen. Por tanto este mtodo deber ser invocado tantas veces como nodos origen haya.
o void Mostrar_resultados(unsigned int Nodo_Origen): el algoritmo K-

mn no entrega las rutas encontradas, sino que entrega una estructura de datos en la que es posible extraer los caminos mediante el anlisis de los elementos de esa estructura. Este mtodo se encarga de extraer las rutas mediante el anlisis de los elementos del montculo que se genera en dicho algoritmo. Una vez obtenidos los caminos, se almacenan en disco los resultados de la aplicacin de bsqueda de rutas que parten del nodo Nodo_Origen. Los datos se almacenan mediante una llamada al mtodo Save_Paths.
o void Gen_lista_nodos(unsigned int in_long, unsigned int in_volau,

unsigned int in_volad, unsigned int in_carr): en este mtodo se accede


a los datos del viario y se transfieren alas listas propias del algoritmo de clculo K-mn. Se calculan los costes de tramos y giros mediante la aplicacin de las funciones volumen-retraso. En definitiva, se preparan todos los datos que van a ser requeridos para la aplicacin del algoritmo, de forma que sean fcilmente accesibles por el proceso.
o void Gen_Treenode_Index(): se inicializa una estructura de datos para

118

Modelado orientado a objetos

la generacin de los caminos partiendo de los elementos del montculo que se genera durante el ncleo del algoritmo.
o

void Save_Paths(unsigned int Nodo_Origen): Se almacenan en disco


los caminos encontrados que tienen como origen el nodo con cdigo

Nodo_Origen. Los datos se almacenan en un archivo de nombre


caminos_i.acm, donde i es el cdigo Nodo_Origen.
o void Load_Paths(unsigned int Nodo_Origen): realiza la funcin

contraria al mtodo Save_Paths, es decir, recupera del disco las rutas que parten del nodo Nodo_Origen.
o void Show_Time (): permite la inclusin del tiempo de proceso en el

formulario. Se usa para el control del tiempo empleado durante el proceso y para estudiar la rapidez del proceso.
o void Init_Estruct_Calibracion_Kmin(): prepara las estructuras que

permitirn la calibracin basada en algoritmo K-mn.


o void Calibracion_Matriz_Kmin(): lleva a cabo la calibracin basada en

algoritmo K-mn y genera una nueva matriz de viajes.


o void Grabar_matriz_diferencias (float *Matriz, FILE *fic): permite

grabar al disco la matriz Matriz en el archivo abierto que tiene como puntero fic.

3.2.3.1.3.2 Clase Datos_iteracion

En esta clase se almacenan las estadsticas de la iteracin de asignacin. Estos datos se muestran por pantalla para su evaluacin por parte del usuario. La estructura es la siguiente:

119

Modelado orientado a objetos

Datos_iteracion
numero_iteracion : unsigned int lambda : fl oat tempio _medi o_viaje : float ti empo_mi ni mo_vi aje : float diferencia_vol um en : float maxima_di ferencia : fl oat nodo_origen_max : unsi gned i nt nodo_desti no_max : unsigned int mi ni ma_di ferenci a : float nodo_origen_min : unsigned int nodo_desti no_mi n : unsigned i nt ti empo_cpu : float fi n_gap : bool fi n_pm : bool Numero_Iteracion() : unsigned int Lambda() : fl oat Tiempo_Medi o_Vi aje() : float Tiempo_Minimo_Viaje() : float Diferencia_Voum en() : fl oat Maxima_Diferencia() : fl oat Nodo_Origen_Max() : unsigned i nt Nodo_Destino_Max() : unsigned int Mi ni ma_Di ferenicia() : fl oat Nodo_Origen_Min() : unsi gned i nt Nodo_Destino_Mi n() : unsigned int Tiempo_Cpu() : fl oat Fin_Gap() : bool Fin_Pm() : bool Actual iza_Numero_Iteraci on(u : unsigned int) Actual iza_Lambda(f : float) Actual iza_Ti empo_Medio_Viaje(f : fl oat) Actual iza_Ti empo_Mi ni mo_Vi aje(f : float) Actual iza_Di ferencia_Vol umen(f : fl oat) Actual iza_M axim a_Diferenci a(f : float) Actual iza_Nodo_Origen_M ax(u : unsi gned i nt) Actual iza_Nodo_Destino_Max(u : unsigned int) Actual iza_M inima_Diferencia(f : fl oat) Actual iza_Nodo_Origen_M in(u : unsi gned int) Actual iza_Nodo_Destino_Min(u : unsigned i nt) Actual iza_Ti empo_Cpu(f : float) Actual iza_Fi n_Gap(b : bool ) Actual iza_Fi n_Pm(b : bool) operator=(i nf : Datos_iteraci on) : Datos_iteraci on operator==()

Figura 3.2-26-Clase Datos_iteracion

120

Modelado orientado a objetos

Atributos de la clase Datos_iteracion:


o numero_iteracion: identifica la iteracin dentro del proceso de

asignacin. La primera, es la iteracin cero.


o lambda: almacena el parmetro lambda caracterstico de la iteracin. o tiempo_medio_viaje: muestra la media de los tiempos empleados en

todos los caminos encontrados en la iteracin de asignacin.


o tiempo_minimo_viaje: tiempo empleado en la ms corta de las rutas de

la iteracin.
o diferencia_volumen: variable que almacena el promedio de la diferencia

de flujo observada en los tramos con detectores.


o maxima_diferencia: valor que toma la diferencia de volmenes en el

tramo donde la desviacin es ms pronunciada.


o nodo_origen_max: nodo origen del tramo donde se da la mayor

desviacin de volumen.
o nodo_destino_max: nodo destino del tramo donde se da la mayor

desviacin de volumen.
o minima_diferencia: valor que toma la diferencia de volmenes en el

tramo donde la desviacin es ms pequea.


o nodo_origen_min: nodo origen del tramo donde se da la menor

desviacin de volumen.
o nodo_destino_min: nodo destino del tramo donde se da la menor

desviacin de volumen.
o tiempo_cpu: tiempo en segundos empleado en la iteracin. o fin_gap: indica si en esta iteracin se ha producido la finalizacin del

algoritmo como consecuencia de que la variacin en el parmetro lambda es menor que el umbral indicado por el usuario.

121

Modelado orientado a objetos

Mtodos de la clase Datos_iteracion: Se corresponden con los mtodos habituales para el manejo de los atributos,

por los que su explicacin se omitir.

3.2.3.1.3.3 Clase Matriz_virtual

Esta clase permite la organizacin de datos de tipo float en forma de una estructura de matriz, lo que facilita su manejo y ordenacin. La estructura es la siguiente:

Matriz_virtual
li sta_punteros : Li sta_i nf<unsigned int> li sta_valores : Li sta_i nf<float> Ini ci a() T ermi na() Clear() operator[](i ndex : unsigned int) : fl oat operator=(matriz : Matriz_vi rtual) : Matriz_vi rtual Modify(index : unsigned int, el ement : float) Add(index : unsi gned i nt, el ement : fl oat)

Figura 3.2-27. Clase Matriz_virtual

Atributos de la clase Matriz_virtual:


o lista_punteros: cada elemento de la matriz tiene un ndice. Esta lista

contiene esos ndices de los elementos de la matriz. Esto permite que no estn ordenados en la lista.
o lista_valores: lista de los valores de la matriz. No estn ordenados, por

lo que es necesario buscarlos en la lista_punteros.

Mtodos de la clase Matriz_virtual:

122

Modelado orientado a objetos

o void Inicia(void): inicializa la matriz, es decir, ambas listas. o void Termina(void): destruye la matriz. o void Clear(void): borra los elementos de la matriz. o float operator[] (unsigned int index): devuelve el valor de la posicin

index.
o Matriz_virtual operator= (Matriz_virtual matriz): permite la copia de

una matriz en otra.


o void Modify(unsigned int index, float element): sustituye el elemento en

la posicin index por el valor element.


o void Add(unsigned int index, float element): aade un nuevo elemento

de valor element en la posicin index.

3.2.3.1.3.4 Clase Giro_Red

Permite conocer los datos necesarios de los giros del grafo, para su uso en los algoritmos. Su estructura es la siguiente:

Giro_Red
numero : unsigned int origen : unsigned int desti no : unsi gned i nt nodo : unsi gned int funcion : unsigned i nt vol umen : float Obtener_Numero() : unsi gned int Obtener_Origen() : unsigned i nt Obtener_Desti no() : unsigned int Nodo() : unsigned int Obtener_Funcion() : unsi gned i nt Volumen() : float Inici a(num : unsigned i nt, inOri gen : unsigned int, inDestino : unsigned int, inNodo : unsi gned i nt, funcion : unsi gned int) Actual iza_Funci on(u : unsigned i nt) Actual iza_Volumen(f : float) operator=(g : Giro_Red) : Gi ro_Red operator==(g : Giro_Red) : bool

Figura 3.2-28. Clase Giro_Red

123

Modelado orientado a objetos

Atributos de la clase Giro_Red:


o numero: identificador nico del giro. o origen: cdigo del tramo origen del giro. o destino: cdigo del tramo destino del giro. o nodo: nodo en el que se produce el giro. o funcion: ndice de la funcin volumen-retraso que representa al giro. o volumen: flujo de vehculos que recorren el giro.

Mtodos de la clase Giro_Red: Los mtodos son los habituales.

3.2.3.1.3.5 Clase Vertices

Esta clase identifica los nodos del grafo para su uso por el algoritmo de asignacin. Su estructura se muestra ea continuacin:
Vertices
nodo : unsigned int procedente : unsi gned i nt distancia : fl oat giro : bool phi : bool Vertice() : unsigned int Procedente() : unsigned i nt Distancia() : float Tiene_Giros() : bool Phi() : bool Actualiza_nodo(u : unsi gned int) Actualiza_procedente(u : unsigned i nt) Actualiza_Distanci a(f : float) Marcar_Gi ro() Desmarcar_Gi ro() Actualiza_Phi (b : bool) operator=(v : Vertices) : Verti ces operator==(v : Vertices) : bool

Figura 3.2-29. Clase Vertices

124

Modelado orientado a objetos

Atributos de la clase Vertices:


o nodo: cdigo del nodo. o procedente: cdigo del tramo que finaliza en el nodo y que supone

llegar mediante la ruta mnima a dicho nodo. Esto permite a posteriori obtener la ruta mnima, recorriendo el camino en sentido contrario.
o distancia: mnimo coste en tiempo que implica llegar a este nodo desde

el nodo origen.
o giro: variable booleana que indica si el nodo tiene definidos giros entre

sus tramos adyacentes.


o phi: etiqueta del nodo que indica si el nodo ya ha sido alcanzado desde

otro nodo adyacente, lo cual quiere decir que ya se conoce cual es el nodo procedente, y no debe marcarse con uno nuevo. Mtodos de la clase Vertices: Los mtodos son los habituales.

3.2.3.1.3.6 Clase Tramos_red

Los objetos de esta clase representan las calles del viario. Son usadas por el algoritmo de asignacin. La estructura es la siguiente:

125

Modelado orientado a objetos

Tramos_Red
codi go_tramo : unsi gned int nodo_origen : unsigned i nt nodo_desti no : unsi gned int longitud : fl oat distanci a : float procedente : unsigned int pm : bool Obtener_Codigo() : unsigned i nt Obtener_Origen() : unsi gned i nt Obtener_Destino() : unsigned int Obtener_Longitud() : float Distanci a() : float Procedente() : unsigned i nt Posee_pm() : bool Ini ci a(codigo : unsigned int, origen : unsigned int, desti no : unsi gned int, l on : float) Actual iza_Procedente(u : unsi gned int) Actual iza_Di stancia(f : float) Actual iza_pm(b : bool) operator=(t : Tramos_Red) : Tramos_Red operator==(t : T ramos_Red) : bool

Figura 3.2-30. Clase Tramos_Red

Atributos de la clase Tramos_Red:


o codigo_tramo: cdigo del tramo. o nodo_origen: cdigo del nodo que es inicio del tramo. o nodo_destino: cdigo del nodo que es trmino del tramo. o longitud: longitud en metros del tramo. o distancia: mnimo coste en tiempo en llegar a este tramo. El coste se va

actualizando conforme el algoritmo se desarrolla.


o procedente: cdigo del tramo que le precede en el camino ms corto

que llega al tramo desde el nodo inicio. Esto supone que si queremos llegar a este tramo por el camino ms corto, debemos venir por el tramo con cdigo procedente.
o pm: indica si el tramo en cuestin posee medidas de flujo mediante

detectores.

126

Modelado orientado a objetos

Mtodos de la clase Tramos_Red: Los mtodos son los habituales.

3.2.3.1.3.7 Clase Caminos

Esta estructura se usa para almacenar los caminos que se encuentran en el algoritmo de Dijkstra. La estructura es la siguiente:

caminos
nodo_ori gen : unsi gned int nodo_fi nal : unsigned int nodos : T List* Crear_li sta() Add_nodo(u : unsigned int) Destruir_camino() Elemento(i ndi ce : unsigned i nt) : unsigned int Ori gen() : unsi gned i nt Final() : unsi gned i nt Numero_el ementos() : unsi gned int

Figura 3.2-31. Clase Caminos

Atributos de la clase Caminos:


o nodo_origen: cdigo del nodo del que parte el camino. o nodo_destino: cdigo del nodo donde finaliza la ruta. o nodos: lista de enteros que identifica la secuencia de nodos de la ruta.

Mtodos de la clase Caminos:


o void Crear_lista(void): inicializa la lista de nodos. o void Add_nodo(unsigned int u): aade un nodo a la lista de nodos que

127

Modelado orientado a objetos

representa la ruta.
o void Destruir_camino(void): destruye la lista de nodos. o unsigned int Origen(void): devuelve el valor del atributo origen. o unsigned int Final(void): devuelve el valor del atributo destino. o unsigned int Elemento(unsigned int indice): devuelve el elemento

indice de la secuencia de nodos.


o unsigned int Numero_elementos(void): devuelve el nmero de nodos en

la lista de nodos, es decir, el nmero de nodos que componen el camino.

3.2.3.1.4 Paquete de datos VCL

En este paquete se incluyen los componentes visuales de la librera de Borland que se han usado para la generacin de la interfaz grfica. El siguiente diagrama muestra algunos de esos componentes visuales. Todos son parte integrantes de la clase

TForm que representa un formulario. El resto de clases se corresponden con botones,


listas, etiquetas, paneles,...

128

Modelado orientado a objetos

TRadioGroup TButton

TGroupBox TMemo

TEdit

TForm

TCSpinEdit

TLabel TCheckBox TComboBox

TStringGrid

Figura 3.2-32. Diagrama de clases del paquete VCL

3.2.3.1.5 Paquete de datos Interfaz grfica

En este paquete se incluyen las clases que permitirn la comunicacin con el usuario, tanto para mostrar datos y resultados, como para recibir instrucciones del mismo. Las clases de este paquete permiten la interaccin con el usuario. El siguiente diagrama muestra la estructura del paquete.
Se comunica con Calibracion_form 1 1 1 Toma informacin de 1 Contexto
(from Red)

1
Usuario
(from Use Case View)

1 Matriz_adyacenci a
(from Algoritmo de calibracin)

Figura 3.2-33. Diagrama de clases del paquete Interfaz Grfica

129

Modelado orientado a objetos

En el diagrama se muestra como existe una nica clase encargada de llevar a cabo la comunicacin con el usuario y como adquiere la informacin necesaria del

viario que ha de ser entregada al usuario. As mismo incluye una instancia de la clase Matriz_adyacencia que, como ya se ha dicho, organiza y dirige el proceso de
calibracin.

3.2.3.2 Paquetes de datos propios del algoritmo basado en porcentajes

Veamos ahora los paquetes que son nicos de esta implementacin.

3.2.3.2.1 Paquete de datos Estructuras de datos de calibracin basada en porcentajes

En este paquete se almacenan las clases que van a servir de estructuras de datos necesarias para la calibracin basada en porcentajes. Van a ser estructuras pasivas, ya que slo servirn para almacenar datos. Se han incluido en el diagrama otras clases externas al paquete, con el fin de clarificar el papel que estas clases desempean en el algoritmo. Veamos la estructura del diagrama de clases de este paquete:

130

Modelado orientado a objetos

PM_porcentaje

Se corrsponde con

Pm 1 0..1 1

Giro_Red
(f rom Algoritmo de calibracin)

Se corresponde con Se corresponde con

0..*
0..* T ramo_cal ibraci on

0..1

0..1

1 Tramos_Red
(f rom Algoritmo de calibracin)

1 Tramo
(f rom Red)

Figura 3.2-34. Diagrama de clases del paquete Estructuras de datos de calibracin basada en porcentajes

Pasamos ahora a detallar cada una de las clases integrantes del paquete.

3.2.3.2.1.1 Clase Tramo_calibracion

Los objetos de esta clase representan los caminos que atraviesan tramos que disponen de flujos reales. Es una estructura paralela a la de Tramos_Red o Tramo, de forma que cada una de ellas se relaciona con un nmero indeterminado, a priori, de objetos del tipo Tramo_Calibracion, en funcin del nmero de caminos que lo atraviesen. Si un tramo de la red posee cinco objetos de este tipo, eso significa que cinco caminos llevan incorporados este tramo en su ruta. Veamos la estructura para clarificar an ms estos conceptos.

131

Modelado orientado a objetos

Tramo_calibracion
ori gen : unsi gned int desti no : unsigned int porcentaj e : float delta : bool Ori gen() : unsi gned i nt Destino() : unsigned int Porcentaj e() : float Delta() : bool Actualiza_origen(u : unsigned int) Actualiza_destino(u : unsi gned i nt) Actualiza_porcentaje(f : fl oat) Actualiza_delta(b : bool ) operator=(i nf : T ramo_cal ibracion) : T ramo_cal ibracion operator==(inf : T ramo_cali braci on) : bool

Figura 3.2-35. Clase Tramo_calibracion

Atributos de la clase Tramo_calibracion:


o origen: cdigo del nodo que es origen del camino. o destino: cdigo del nodo que es destino del camino. o porcentaje: porcentaje de la demanda de trfico que parte del nodo

origen y que tiene como destino el nodo destino que atraviesa este nodo
o delta: variable interna que la aplicacin usa para saber si en la ltima

iteracin, el flujo que atraviesa el tramo debido a ste par origen-destino se ha visto modificado y por tanto ha de ser actualizado el valor del atributo porcentaje.

Mtodos de la clase Tramo_calibracin: Los mtodos son los habituales.

3.2.3.2.1.2 Clase Pm

Esta clase permite la extraccin de los datos de los detectores del viario del

132

Modelado orientado a objetos

disco. El algoritmo usa esta clase slo para acceder a esa informacin. Despus transfiere los datos a sus propias estructuras. Las estructuras permiten que el detector est situado tanto en un tramo como en un giro. Veamos el diagrama:
Pm
codi go : unsi gned int ti po : bool val or : fl oat Codi go() : unsi gned i nt Tipo() : bool Valor() : fl oat Actual iza_codigo(u : unsigned int) Actual iza_tipo(b : bool ) Actual iza_valor(f : float) operator=(i nf : Pm) : Pm operator==(inf : Pm ) : bool

Figura 3.2-36. Clase Pm

Atributos de la clase Pm:


o codigo: cdigo del tramo o giro que contiene el detector. o tipo: indica si el cdigo pertenece a un tramo o a un giro. o valor: contiene la medida del detector, es decir, el flujo que recorre el

tramo o giro.

Mtodos de la clase Pm: Los mtodos son los habituales.

3.2.3.2.1.3 Clase PM_porcentaje

133

Modelado orientado a objetos

Esta es la estructura que usa el algoritmo de calibracin para sus clculos. Es muy similar a la clase Pm, pero no contempla la posibilidad de detectores en los giros. La estructura es la siguiente:

PM_porcentaje
pm : unsi gned i nt cod_tramo : unsigned int vol umen : float Pm(u : unsigned int) : unsi gned i nt Cod_Tramo() : unsigned int Volumen() : fl oat Actualiza_Pm(u : unsi gned int) Actualiza_cod_tram o(u : unsigned int) Actualiza_vol um en(f : float) operator==(inf : PM_porcentaje) : bool operator=(i nf : PM_porcentaje) : PM_porcentaje

Figura 3.2-37. Clase PM_porcentaje

Atributos de la clase PM_porcentaje:


o pm: cdigo del punto de medida. o cod_tramo: cdigo del tramo en el que est situado el detector. o volumen: volumen real que atraviesa el tramo.

Mtodos de la clase PM_porcentaje: Los mtodos son los habituales.

3.2.3.3 Paquetes de datos propios del algoritmo basado en el clculo K-mn

En este punto se pretende documentar los paquetes que son exclusivos del algoritmo de calibracin que se basa en el clculo de las k rutas mnimas del grafo.

134

Modelado orientado a objetos

3.2.3.3.1 Paquete de datos Algoritmo de ruta mnima K-mn

Aqu se engloban las estructuras que permiten el clculo de las k rutas mnimas. Son estructuras pasivas, lo cual quiere decir que se limitan a tareas de almacenamiento. Veamos el diagrama de paquetes:
Punto
(f rom Red)

Tramo
(f rom Red)

3 compuesto por 1 giro_acm 1

2 formado por 1

1 node_acm

1 tramo_acm

1 identifica

0..*

treenode_acm

1 pertenece a path_acm 1..* 1..* info_caminos_acm

1 Giro
(f rom Red)

compuesto por

Figura 3.2-38. Diagrama de clases del paquete Algoritmo de ruta mnima K-mn

Veamos ahora en detalle cada una de las estructuras que lo componen.

135

Modelado orientado a objetos

3.2.3.3.1.1 Clase node_acm

node_acm
nodo_id : i nt nodo_count : i nt ti po : ui nsigned int q : bool i : bool li sta_tramos : Li sta_inf<tramo_acm> li sta_giros : Lista_inf<giro_acm> li sta_rutas : Lista_inf<path_acm> Nodo_ID() : i nt Nodo_Count() : int Tipo() : unsigned int Q() : bool I() : bool Actualiza_Nodo_ID(i : int) Actualiza_Nodo_Count(i : i nt) Actualiza _Tipo(u : unsi gned int) Actuzal iza_Q(b : bool) Actualiza_I(b : bool) pbLi sta_tramos() : TList* pbDestrui r_li sta_tramos() pbCrea_l ista_tramos() pbBorra_lista_tramos() pbAdd_elemento_tramos(inf : tramo_acm) pbMod_elemento_tramos(i nf : tram o_acm, i : unsi gned int) pbEl emento_tramos(i : unsi gned i nt) : tramo_acm pbNumero_elementos_tramos() : unsi gned i nt pbBuscar_Tram os(i nf : tramo_acm) : unsigned i nt pbLi sta_Gi ros() : TList* pbDestrui r_li sta_Gi ros() pbCrea_l ista_Gi ros() pbBorra_lista_Giros() pbAdd_elemento_Gi ros(inf : gi ro_acm) pbMod_elemento_Giros(i nf : giro_acm, i : unsigned int) pbEl emento_Gi ros(i : unsi gned i nt) : gi ro_acm pbNumero_elementos_Gi ros() : unsi gned i nt pbBuscar_Gi ros(inf : gi ro_acm) : unsigned int pbLi sta_Rutas() : TLi st* pbDestrui r_li sta_Rutas() pbCrea_l ista_Rutas() pbBorra_lista_Rutas() pbAdd_elemento_Rutas(i nf : path_acm) pbMod_elemento_Rutas(i nf : path_acm, i : unsigned int) pbEl emento_Rutas(i : unsigned int) : path_acm pbNumero_elementos_Rutas() : unsigned int pbBuscar_Rutas(i nf : path_acm) : unsigned int operator=(n : node_acm) : node_acm operator==(n : node_acm) : bool

Figura 3.2-39. Clase node_acm

136

Modelado orientado a objetos

Los objetos instanciados por esta clase se corresponde con los nodos de la red. Es equivalente a la clase Punto del paquete de datos Red, como se ve en el diagrama de clases. Veamos los atributos y mtodos:

Atributos de la clase node_acm:


o nodo_id: cdigo del nodo. o nodo_count: se incrementa cada vez que se encuentra un camino que

llega al nodo. Si ya se han encontrado K caminos, se desechan los que se encuentren a partir de ese momento.
o tipo: indica si el nodo es centroide (0) o nodo de transito (1). o q: indica si el nodo es destino de los viajes. o i: indica si el nodo tiene definidos los giros entre sus tramos adyacentes.

Si i = false, quiere decir que todos los giros estn permitidos.


o lista_tramos: contiene los tramos que parten del nodo. o lista_giros: contiene los giros definidos en el nodo. Si i = false, esta

lista se ignorar.
o lista_rutas: almacena los caminos encontrados hasta este nodo. El nodo

origen de estos caminos depender del mtodo que est usando las estructuras, en concreto al mtodo Aplicar_algoritmo perteneciente a la clase Matriz_adyacencia. Estas estructuras se usarn tantas veces como nodos origen haya, y en cada una de las iteraciones, el nodo origen ir cambiando.

Mtodos de la clase node_acm: Los mtodos de esta clase son los habituales, adems de una serie de

funciones que permiten el manejo de las listas que constituyen la clase y que son equivalentes a las definidas en la clase Lista_inf.

137

Modelado orientado a objetos

3.2.3.3.1.2 Clase tramo_acm

Esta clase sirve para instanciar objetos que representan tramos de la red viaria. Son equivalentes a la clase Tramo del paquete Red. Veamos su estructura:
tramo_acm
tramo_i d : int tramo_ori gen : i nt tramo_destino : int tramo_l ast_sid : int tramo_coste : double T ramo_ID() : int T ramo_Ori gen() : int T ramo_Desti no() : i nt T ramo_Last_SID() : i nt T ramo_Coste() : doubl e Actualiza_Tramo_ID(i : int) Actualiza_Tramo_Origen(i : i nt) Actualiza_Tramo_destino(i : int) Actualiza_Tramo_Last_SID(i : int) Actualiza_Tramo_Coste(d : doubl e) operator=(t : tram o_acm) : tramo_acm operator==(t : tramo_acm ) : bool

Figura 3.2-40. Clase tramo_acm

Atributos de la clase tramo_acm:


o tramo_id: cdigo del tramo. o tramo_origen: cdigo del nodo del que parte el tramo. o tramo_destino: cdigo del nodo que es destino del tramo. o tramo_last_sid: ltima etiqueta que ha sido usada al aadir un elemento

al montculo que hace referencia a este tramo. Esto permite que no se repita la dupla codigo_tramo + etiqueta.
o tramo_coste: coste en tiempo que implica el recorrer el tramo.

138

Modelado orientado a objetos

Mtodos de la clase tramo_acm: Los mtodos son los habituales de las estructuras de almacenamiento.

3.2.3.3.1.3 Clase giro_acm

Se usa para definir los giros y es equivalente a la estructura Giro del paquete

Red. Veamos su estructura para entender su funcionamiento:

giro_acm
giro_ori gen : i nt giro_destino : int giro_coste : double Giro_Origen() : int Giro_Desti no() : i nt Giro_Coste() : doubl e Actualiza_Giro_Origen(i : i nt) Actualiza_Giro_Destino(i : int) Actualiza_Giro_Coste(d : doubl e) operator=(g : giro_acm) : giro_acm operator==(g : giro_acm) : bool

Figura 3.2-41. Clase giro_acm

Atributos de la clase giro_acm:


o giro_origen: cdigo del nodo desde el que se accede al nodo. o giro_destino: cdigo del nodo hacia el que se encamina al efectuar el

giro.
o giro_coste: coste en tiempo de ejecutar el giro.

Mtodos de la clase giro_acm: Los mtodos son los habituales de las estructuras de almacenamiento de

datos.

139

Modelado orientado a objetos

3.2.3.3.1.4 Clase path_acm

Forma parte de la clase node_acm y almacena los datos necesarios para generar los k caminos mnimos que tienen como destino el nodo al que pertenecen. Veamos su estructura:

path_acm
path_index : i nt path_subindex : i nt path_length : fl oat Path_Index() : i nt Path_SubIndex() : int Path_Length() : float Actualiza_Path_Index(i : int) Actualiza_Path_SubIndex(i : i nt) Actualiza_Path_Length(f : fl oat) operator=(p : path_acm ) : path_acm operator==(p : path_acm) : bool

Figura 3.2-42. Clase path_acm

Atributos de la clase path_acm:


o path_index: cdigo del elemento del montculo que ha provocado

encontrar un camino al nodo al que el elemento pertenece. Esto, junto al

path_subindex permite la generacin del camino mediante su recorrido


inverso.
o path_subindex: subcdigo del elemento del montculo que ha

provocado encontrar un camino al nodo al que el elemento pertenece. Sirve para identificar dicho elemento a posteriori.
o path_length: longitud en metros del camino.

Atributos de la clase path_acm: Los mtodos son los habituales.

140

Modelado orientado a objetos

3.2.3.3.1.5 Clase info_caminos_acm

Esta clase instancia objetos que van a permitir recuperar los caminos de una lista de enteros que almacena los caminos de forma consecutiva, uno detrs de otro. Las secuencias de nodos se encuentran almacenadas en una lista de enteros, en forma secuencial. Entre los atributos se encuentra el offset y el nmero de elementos, lo que permite sacarlos de lista.

info_caminos_acm
nodo_desti no : unsigned int path_index : unsi gned int path_length : float sec_start : unsi gned i nt sec_length : unsigned int Nodo_Destino() : unsigned int Path_Index() : unsi gned int Path_Length() : fl oat Sec_Start() : unsigned int Sec_Length() : unsigned i nt Actualiza_Nodo_Desti no(u : unsigned int) Actualiza_Path_Index(u : unsigned int) Actualiza_Path_Length(f : float) Actualiza_Sec_Start(u : unsigned int) Actualiza_Sec_Length(u : unsi gned i nt) operator=(p : i nfo_caminos_acm) : i nfo_cami nos_acm operator==(p : info_caminos_acm) : bool

Figura 3.2-43. Clase info_caminos_acm

Atributos de la clase info_caminos_acm:


o nodo_destino: indica el cdigo del nodo destino de la ruta. No es

necesario indicar el nodo origen, dado que estn agrupados en funcin de ese parmetro, por lo que no pueden mezclarse ni confundirse.
o path_index: indica el ndice del camino, el cual puede ir desde 1 hasta

K.
o path_length: indica la longitud del camino en metros. o sec_start: indica el offset en la lista de rutas. Esto permite

141

Modelado orientado a objetos

posicionarnos en el inicio de la ruta y poder as sacarla de la lista.


o sec_length: indica el nmero de elementos que componen la ruta.

Mtodos de la clase info_caminos_acm: Los mtodos son los usuales.

3.2.3.3.2 Paquete de datos Estructura de datos de calibracin basada en algoritmo K-mn

Esta estructura engloba las clases necesarias para mantener la informacin que el algoritmo de calibracin usar para ajustar la matriz de viajes. Bsicamente mantienen una relacin de qu caminos atraviesan los tramos con detectores, con la idea de asignar las diferencias de volmenes entre las rutas que incluyen dichos tramos. Veamos ahora el diagrama de clases:

Path_Kmin

identifica

0..*

PM_Kmin

1 0..*

Compuesto por 1

Calibracion_Kmin

Figura 3.2-44. Diagrama de clases del paquete Estructura de datos de calibracin basada en algoritmo K-mn

Vamos ahora a ver una a una todas las clases que integran el paquete.

142

Modelado orientado a objetos

3.2.3.3.2.1 Clase Calibracion_Kmin

Esta clase organiza los datos de la calibracin, de forma que sean fcilmente accesibles a la aplicacin. Contiene los parmetros lambda de las primeras K iteraciones del algoritmo de asignacin en una lista. As mismo incluye una lista con la referencia a todos los tramos que poseen puntos de medida.

Calibracion_Kmin
li sta_l am bdas : Lista_i nf<fl oat> li sta_pms : Lista_inf<Pm_Kmin> pbLista_l ambdas() : T Li st* pbDestrui r_lista_l ambdas() pbCrea_l ista_lambdas() pbBorra_lista_lambdas() pbAdd_elemento_lambdas(i nf : fl oat) pbMod_elemento_lambdas(i nf : float, i : unsi gned i nt) pbElemento_l ambdas(i : unsigned int) : fl oat pbNumero_elementos_l ambdas() : unsigned int pbBuscar_l ambdas(inf : fl oat) : unsigned i nt pbLista_pms() : T Li st* pbDestrui r_lista_pms() pbCrea_l ista_pm s() pbBorra_lista_pms() pbAdd_elemento_pm s(i nf : PM_Kmi n) pbMod_elemento_pms(inf : PM _Kmi n, i : unsi gned int) pbElemento_pms(i : unsigned int) : PM_Kmin pbNumero_elementos_pms() : unsigned int pbBuscar_pms(i nf : PM_Kmin) : unsigned int

Figura 3.2-45. Clase Calibracion_Kmin

Atributos de la clase Calibracion_Kmin:


o lista_lambdas: lista de elementos del tipo float que se corresponden con

los parmetros lambdas caractersticos de las primeras K iteraciones del algoritmo de asignacin de trfico. Estos valores se usarn para obtener la proporcin en que los usuarios tomarn cada uno de los K caminos encontrados, es decir, qu porcentaje de la demanda total entre un par de nodos ira por el camino mnimo K=1, qu porcentaje ir por el camino K=2, etc. Los porcentajes, que se identifican por el carcter

143

Modelado orientado a objetos

gamma son:

[k ] =

[ k ]

( j)
j =1

k = 1,2,3,..., K

o lista_pms: lista de objetos que hacen referencia a los tramos con puntos

de medida del grafo. Para ms detalle, ver la clase Pm_Kmin.

Mtodos de la clase Calibracion_Kmin: Los mtodos son los mismos que los definidos en la clase Lista_inf , y son

necesarios por el hecho de no ser accesibles al ser los atributos privados.

3.2.3.3.2.2 Clase Pm_Kmin

Como ya se ha comentado, esta clase hace referencia a los tramos con detectores. Es por tanto equivalente a otras clases existentes en otros paquetes, pero se ha preferido crear una nueva, para hacerla independiente de otros paquetes y estructuras que tienen otros fines, a pesar de que la informacin que contienen sea totalmente equivalente.

144

Modelado orientado a objetos

PM_Kmin
pm_id : unsigned int tramo_i d : unsigned i nt tramo_ori gen : unsi gned int tramo_destino : unsigned int vol umen : float Pm_ID() : unsigned int Tramo_ID() : unsigned int Tramo_Ori gen() : unsigned int Tramo_Desti no() : unsi gned int Volumen() : float Actual iza_Pm_ID(u : unsigned int) Actual iza_T ram o_ID(u : unsigned int) Actual iza_T ram o_Origen(u : unsigned int) Actual iza_T ram o_Destino(u : unsigned int) Actual iza_Volumen(f : fl oat) operator=(i nf : PM_Kmin) : PM _Kmi n operator==(inf : PM_Km in) : bool

Figura 3.2-46. Clase Pm_Kmin

Atributos de la clase Pm_Kmin:


o pm_id: identificador del punto de medida. o tramo_id: cdigo del tramo en el que se encuentra situado el detector. o tramo_origen: cdigo del nodo que es origen del tramo. o tramo_destino: cdigo del nodo que es destino del tramo. o volumen: medida de flujo del detector. Servir para calcular la

diferencia de volmenes entre las medidas reales y las producidas por la asignacin.

Mtodos de la clase Pm_Kmin: Los mtodos son los habituales.

145

Modelado orientado a objetos

3.2.3.3.2.3 Clase Path_Kmin

Esta clase instancia objetos que permiten tener una relacin para cada tramo con detector, de los caminos que lo atraviesan. De ese modo, cada punto de medida tendr asignada una coleccin de objetos de esta clase, uno por cada ruta que atraviesa dicho punto de medida. Estos objetos se crean mediante la inspeccin de las k rutas. Veamos su estructura:

Path_Kmin
path_origen : unsigned int path_desti no : unsigned int path_order : unsi gned int Path_Ori gen() : unsi gned i nt Path_Desti no() : unsigned int Path_Order() : unsi gned i nt Actualiza_Path_Origen(u : unsi gned i nt) Actualiza_Path_Desti no(u : unsigned int) Actualiza_Path_Order(u : unsigned int) operator=(i nf : Path_Kmi n) : Path_Kmin operator==(i nf : Path_Kmin) : bool

Figura 3.2-47. Clase Path_Kmin

Atributos de la clase Path_Kmin:


o path_origen: identifica el nodo que es origen del camino. o path_destino: identifica el nodo que es destino del camino. o path_order: indica el orden del camino, que ir desde 1 hasta K como

mximo.

Mtodos de la clase Path_Kmin: Los mtodos son los habituales.

146

Modelado orientado a objetos

3.2.4

Diagramas de Secuencia

El diagrama de secuencia es un tipo de diagrama de interaccin cuyo objetivo es describir el comportamiento dinmico del sistema haciendo nfasis en la secuencia de los mensajes intercambiados por los objetos. Un diagrama de secuencia tiene dos dimensiones, el eje vertical representa el tiempo y el eje horizontal los diferentes objetos. El tiempo avanza desde la parte superior del diagrama hacia la inferior. Normalmente, con relacin al tiempo slo es importante la secuencia de los mensajes, sin embargo, en aplicaciones de tiempo real se podra introducir una escala en el eje vertical. Respecto a los objetos, es irrelevante en que lugar se representen, aunque su colocacin debe poseer la mayor claridad posible. Cada objeto tiene asociado una lnea de vida y focos de control. La lnea de vida indica el intervalo de tiempo durante el cual el objeto existe. Un foco de control o activacin muestra el periodo de tiempo en el cual el objeto se encuentra ejecutando alguna operacin, ya sea directamente o mediante un proceso concurrente.

3.2.4.1 Notacin

Veamos los diferentes componentes que integran estos diagramas y que simbologa siguen.

Objeto y lnea de vida. Un objeto se representa como una lnea vertical, llamada lnea de vida, con

un rectngulo de encabezado con el nombre del objeto en su interior. Tambin se puede incluir a continuacin el nombre de la clase, separando ambos por dos puntos. Si el objeto es creado en el intervalo de tiempo representado en el diagrama, la lnea comienza en el punto que representa ese instante y encimase coloca el objeto. Si el objeto se destruye durante la interaccin que muestra el

147

Modelado orientado a objetos

diagrama, la lnea de vida termina en ese punto y se seala con un aspa del ancho equivalente al foco de control.

La lnea de vida de un objeto puede desplegarse en dos o ms lneas para mostrar los diferentes flujos de mensajes que puede intercambiar un objeto, dependiendo de alguna condicin.

Foco de control o activacin. Se representa mediante un rectngulo delgado superpuesto a la lnea de vida

del objeto. Su largo depender de la duracin de la accin. La parte superior indica el inicio de alguna accin ejecutada por el objeto y la parte inferior su conclusin.

Mensaje. Un mensaje se representa como una flecha horizontal entre las lneas de

vida de los objetos que intercambian el mensaje. La flecha va desde el objeto que enva el mensaje al que lo recibe. Adems, un objeto puede mandarse un mensaje a s mismo. En este caso, la flecha comienza y termina en su propia lnea de vida. La flecha tiene asociada una etiqueta con el nombre del mensaje y los argumentos. Tambin pueden ser etiquetados los mensajes con un nmero de secuencia, sin embargo, este nmero no es necesario, ya que la localizacin fsica de las flechas que representan los mensajes ya indican el orden de los mismos. Los mensajes pueden representar tambin condiciones e iteraciones. Una condicin se representa mediante una expresin booleana encerrada entre corchetes junto a un mensaje, e indica que ese mensaje slo es enviado en caso de ser cierta la condicin. Una iteracin se representa con un asterisco y una expresin entre corchetes, que indica el nmero de veces que se produce.

148

Modelado orientado a objetos

Objeto 1:Clase A

Objeto 2: Clase B

Objeto 3: Clase C

ejecuta()

inicia()

Mensaje

Objeto

Iteracin Foco
calcula()[procesar == true] *

Lnea de vida Condicin

Figura 3.2-48. Ejemplo diagrama de secuencia

3.2.4.2 Diagrama de secuencia del algoritmo

El siguiente diagrama pretende mostrar de forma grfica la evolucin del algoritmo de calibracin. El diagrama se puede dividir en dos fases. Una primera fase se corresponde con la interaccin entre el usuario y el proceso, con el fin de configurar los parmetros de la asignacin. El usuario debe seleccionar para el escenario de trabajo una matriz de viajes inicial, un mtodo de calibracin de entre los dos posibles y configurar los parmetros de dichos procesos. As mismo, el proceso mostrar a travs del formulario informacin del escenario tal como los elementos de la matriz inicial de viajes, datos de puntos de medida, etc. La segunda fase se inicia una vez que el usuario lanza el proceso de calibracin. Durante esta fase la comunicacin entre el usuario y la aplicacin es unidireccional, desde el proceso hacia el usuario. La aplicacin va mostrando informacin acerca de la

149

Modelado orientado a objetos

evolucin del algoritmo y el tiempo empleado. Una vez que el algoritmo ha finalizado, se muestra la matriz resultado en su elemento visual correspondiente. En la siguiente imagen se muestra una instantnea de la interfaz grfica, detallando lo elementos visuales que se nombran en el diagrama de secuencia. Un anlisis ms a fondo de la interfaz se llevar a cabo en el punto 4.2.

Matriz inicial

Matriz calibrada

Puntos de medida

Cuadro de opciones

Lanzar el proceso

Figura 3.2-49. Interfaz grfica

150

Modelado orientado a objetos

Aqu ira el diagrama de secuencia

151

Modelado orientado a objetos

152

Modelado orientado a objetos

En el diagrama se puede apreciar como se va produciendo la evolucin del proceso de calibracin. Inicialmente, el usuario cargara un escenario y iniciar la herramienta de calibracin. La aplicacin genera un formulario donde se muestra al usuario los datos de matrices iniciales y puntos de medida, una vez que el usuario ha seleccionado una de la lista. El proceso se detiene a la espera que el usuario configure el proceso y lance el proceso, lo cual ocurre a travs del objeto Aplicar_Button. A partir de aqu se inicia la segunda fase. En la segunda fase, lo primero que se hace es recopilar las opciones del algoritmo que el usuario ha configurado en el formulario. Una vez que se tienen los parmetros, se lanza la calibracin. El proceso seguir diferentes caminos dependiendo del mtodo de calibracin que se haya seleccionado en el formulario. Esto se recoge en la variable Metodo que puede tomar los valores 0 (calibracin basada en porcentajes) o 1 (calibracin basada en algoritmo K-mn). Si el usuario ha decidido realizar una calibracin basada en el mtodo de los porcentajes, se siguen los siguientes pasos:

Init_Num_Paths_Porcentajes: se inicializan las estructuras de calibracin,


as como unas referencias auxiliares que servirn para acelerar despus los clculos.

Asignacion_Iteracion: Se ejecuta este proceso de forma iterativa. El


nmero de iteraciones viene determinado por dos factores:
o Numero de iteraciones indicadas por el usuario. El usuario decide

cuantas iteraciones se han de realizar. Cuantas ms iteraciones se realicen, ms se distribuyen los flujos por la red y en principio ms realistas son los resultados.
o Umbral de mejora. Existe otro mecanismo, tambin controlado por el

usuario, que permite limitar el nmero de iteraciones. El usuario puede definir un umbral, de forma que si las variaciones que produce una iteracin en los flujos de la red es menor que dicho umbral, no se

153

Modelado orientado a objetos

realicen ms iteraciones, aunque an no se hayan completado el nmero de iteraciones definidas en el formulario.

Actualizacion_matriz_porcentajes: En este proceso se lleva a cabo la


generacin de una nueva matriz calibrada, partiendo de los flujos reales, flujos de asignacin, datos de porcentajes de uso de tramos y la matriz inicial.

Si por el contrario el usuario ha optado por realizar una calibracin mediante algoritmo K-mn (Metodo = 1), el proceso sufre algunas variaciones.

Init_Estruct_Calibracion_Kmin: Es equivalente al proceso del apartado


anterior, pero las estructuras son diferentes y adaptadas a las necesidades de este algoritmo. Tambin se usan estructuras de aceleracin.

Asignacion_iteracion: el proceso es el mismo que en el primer algoritmo y


las condiciones de salida tambin se usan de la misma manera por lo que no se detallarn aqu.

Algoritmo_Kmin: tras haber realizado la asignacin y haber obtenido los


flujos de asignacin de la red, es necesario el clculo de las k rutas mnimas para cada par de centroides. Eso es lo que realiza este proceso, tomando como datos de partida los volmenes que la asignacin produce.

Mostrar_Resultados: se realiza el marcado de rutas, mediante el cual


podemos saber qu caminos atraviesan los tramos con puntos de medida. Esta informacin ser la base de la calibracin de matrices origen-destino basada en el algoritmo K-mn.

Calibracin_Matriz_Kmin: se procede a ajustar la matriz de viajes a partir


de todos los datos obtenidos tanto a lo largo del proceso de asignacin como del de clculo K-mn.

Finalmente, una vez obtenida la matriz de viajes calibrada, sea por el proceso que sea, se muestra en el formulario como resultado del proceso.

154

Diseo de un modelo de calibracin mediante asignacin

4 Diseo de un modelo de calibracin mediante asignacin


4.1 Introduccin

Como ya se ha comentado, necesitamos tener un algoritmo de asignacin que nos permita conocer los flujos que la matriz de viajes de la que partimos genera en los tramos de nuestro viario. El proceso de asignacin no es estrictamente necesario que se realice cada vez que se desee realizar una calibracin, es decir, se puede partir de los resultados de una asignacin que haya sido realizada con anterioridad y que estn almacenados en disco, e incluso haberse obtenido por diferentes medios al algoritmo de asignacin que aqu se ha usado. No obstante la herramienta aqu desarrollada ha sido diseada con el proceso de asignacin integrado, de forma que cada vez que se realiza una calibracin se hace una preasignacin en el viario. Esta es la principal caracterstica del algoritmo que se presenta en este documento, la inclusin de la asignacin en el proceso de calibracin. Esto nos permite analizar la matriz original mediante la diferencia entre los flujos que genera y los flujos reales. A continuacin se detallan los dos algoritmos que se han implementado en este proyecto.

4.2 Modelo de calibracin mediante porcentajes


4.2.1 Diseo del algoritmo

La calibracin mediante porcentajes se basa en repartir el exceso o defecto de flujo en los tramos con puntos de medida, entre todos los caminos que utilizan ese tramo y en proporcin a la cantidad de vehculos que aportan al flujo total asignado. As, cada tramo con detector dicta una modificacin en uno o ms de un elemento de la matriz de viajes, de forma que ese incremento o disminucin de los elementos de la matriz de viajes produzcan una variacin en los flujos tras la asignacin que elimine la diferencia de flujos reales y asignados.

155

Diseo de un modelo de calibracin mediante asignacin

A continuacin se muestra el algoritmo de calibracin basado en porcentajes. Ntese que el algoritmo de asignacin esta integrado en el proceso.

Inicio

Iteracin Asignacin

Actualizacin Porcentajes

Iteracin I

Si

No

Calibracin Matriz

Fin

Figura 4.2-1. Algoritmo de calibracin basado en porcentajes

156

Diseo de un modelo de calibracin mediante asignacin

En cada iteracin, el algoritmo realiza una asignacin basndose en el algoritmo de Frank-Wolfe. Una vez calculada la asignacin, se actualizan los porcentajes k de los caminos, teniendo en cuenta la variacin de flujos en los tramos. En el clculo de los porcentajes interviene tambin el parmetro lambda que dicta la aportacin de los nuevos caminos en la asignacin total en el algoritmo de Frank-Wolfe.

Inicio

No

si l < n
Si

Fin

pij: camino encontrado en la iteracin que va


pij
si iter = 0 si iter 0

tq

pm[l ] pij li , j = ij

del nodo i al nodo j.

li,j: porcentaje de la demanda de trfico ij


que pasa por el detector l.

li , j = li , j * (1 ) +

ij: demanda de trfico total que va del nodo i


al nodo j.

: parmetro caracterstico de la iteracin.

Figura 4.2-2. Calibracin basada en porcentajes. Actualizacin de porcentajes

Si la iteracin es la inicial o si no exista entrada anterior para ese camino en ese tramo controlado, el porcentaje es el total de la demanda de trfico para ese camino. As guardamos constancia para cada tramo con detector de los caminos que usan dicho tramo y el porcentaje con el que contribuyen al flujo en el tramo. Este dato ser el que despus nos sirva para repartir las correcciones en la matriz de viajes. Una vez concluido el nmero de iteraciones de asignacin, se concluye la

157

Diseo de un modelo de calibracin mediante asignacin

calibracin con la modificacin de la matriz de viajes segn el criterio ya comentado. Para cada uno de los tramos con punto de medida, se reparte la diferencia de flujo entre todos los caminos que usen dicho tramo y acorde con los porcentajes calculados en la etapa anterior.
Inicio

No

ln

Fin

Si

li,j: porcentaje de la demanda de trfico ij


i num _ nodos

que pasa por el detector l.

ij: demanda de trfico total que va del


Si

nodo i al nodo j.

Vol_reall: flujo real en el tramo detector l. Vol_asigl: flujo en el tramo detector l


No

como consecuencia de la asignacin.

j num _ nodos

No

ij = ij +

ij * li , j
vol _ asig l

* (vol _ reall vol _ asig l )

Figura 4.2-3. Calibracin matriz

158

Diseo de un modelo de calibracin mediante asignacin

Al analizar el proceso de calibracin basado en porcentajes, vemos cual es el problema fundamental de este algoritmo, y es que trata a los tramos independientemente, sin tener en cuenta que no son componentes aislados y que aumentar el flujo en un tramo en concreto, implica aumentarlo en tramos adyacentes. Por eso puede que modificaciones en diferentes tramos se anulen entre si, o se sumen entre ellas, produciendo un efecto no deseado. Por todo ello, y aunque los resultados son positivos como se ver al evaluar el algoritmo, se ha propuesto una alternativa a este proceso, que es el algoritmo basado en el calculo de los k caminos mnimos.

4.2.2

Ejemplo de calibracin basada en porcentajes

Vamos a aplicar el algoritmo de calibracin mediante porcentajes a una red para ilustrar como funciona el algoritmo. Lo aplicaremos a una red pequea para facilitar la comprensin de la evolucin y que la dimensin de la red no haga imposible seguir el funcionamiento. En el captulo cinco se realizarn pruebas sobre escenarios reales para testar los resultados obtenidos mediante la aplicacin de los algoritmos en redes grandes. La red que nos servir para realizar el ejemplo de calibracin est compuesta por cinco nodos y 14 tramos. No tiene giros definidos, por lo que todas las conexiones entre tramos entrantes y salientes de un nodo son posibles. La red tiene un grafo asociado que se muestra a continuacin: 2 4

3 Figura 4.2-4. Ejemplo de calibracin basada en porcentajes. Grafo

159

Diseo de un modelo de calibracin mediante asignacin

Supondremos que la demanda de viajes para la red en estudio viene determinada por la siguiente tabla. O/D 1 2 3 4 5 50 400 600 387,20 50 40 274,41 40 30 707,84 1 2 500 3 400 50 4 300 1000 40 5 300 300 30 200

Tabla 4.2-1. Calibracin basada en porcentajes. Matriz de demanda Lo primero que se realiza es aplicar las funciones volumen-retraso para obtener los costes en tiempo de los tramos de la red, considerando la red en vaco, es decir, volumen igual a cero. Tramo Tramo (1,2) Tramo (1,3) Tramo (2,1) Tramo (2,3) Tramo (2,4) Tramo (3,1) Tramo (3,2) Tiempo Viaje 6 10 6 7 8 10 7 Tramo Tramo (3,4) Tramo (3,5) Tramo (4,2) Tramo (4,3) Tramo (4,5) Tramo (5,3) Tramo (5,4) Tiempo Viaje 8 10 8 8 5 10 5

Tabla 4.2-2. Calibracin basada en porcentajes. Tiempos de viaje Se ha configurado la asignacin con 25 iteraciones y un umbral de 1E-6. Realizamos la asignacin de trfico y tras las 25 iteraciones, obtenemos los datos de flujo en los tramos detectores que se muestran a continuacin.

160

Diseo de un modelo de calibracin mediante asignacin

843.37 2 1513.86 4

587.54 924.22 427.67

225.78 746.53 551.69 426.14

1369.54

858.23 1 584.26 3

30.00 278.31 5

Figura 4.2-5. Calibracin basada en porcentajes. Flujos de asignacin

Se dispone igualmente de los valores de flujo tomados por los detectores en los tramos. Se disponen de 6 detectores en diferentes tramos. En la siguiente tabla se muestran los datos de flujo reales y los producidos por la asignacin. Se puede observar que existen desviaciones entre ambos datos. El algoritmo de calibracin tratar de obtener una nueva matriz de viajes que se ajuste mejor a los datos reales, consiguiendo que las diferencias sean ms pequeas.

Tramo Volumen real Volumen asignacin Diferencia

1 800 924.22 -124.22

2 700 584.26 115.74

4 655 427.67 227.33

7 100 225.78 -125.78

11 750 746.53 3.47

14 1125 1369.54 -244.54

Tabla 4.2-3. Calibracin basada en porcentajes. Puntos de medida Con el objetivo de valorar la validez de una matriz de viajes, se ha introducido el

161

Diseo de un modelo de calibracin mediante asignacin

parmetro de similitud de dicha matriz, que indica cmo de lejos est nuestra matriz de
la matriz ptima, entendiendo por matriz ptima aquella que hace que la diferencia entre los volmenes sea nula. Se ha usado la siguiente frmula:

1 similitud = 100 1 N

vol _ real

dif _ vol

donde los sumatorios estn extendidos a los N tramos con detectores. Si aplicamos la formula a los resultados obtenidos, obtenemos una similitud del 64.21%. Existe otro parmetro que nos indica el nmero de errores cometidos en los flujos que tambin da una idea de la validez de la matriz. Este parmetro se calcula con la siguiente frmula:

dif _ vol Error = 100 vol _ real


Este parmetro nos da una idea de qu porcentaje de vehculos que recorren la red son errneos, es decir, recorren una camino que no es el real. En este caso el error es del 20,37%. La calibracin basada en porcentajes se basa en variar los elementos de la matriz de viajes para que se eliminen las diferencias de flujos. As, si en un tramo hay un flujo de asignacin menor que el real, se incrementan la demanda de trfico de los viajes que usen dicho tramo y ponderado por la proporcin en que cada camino contribuye al trfico en el tramo. Es necesario tener constancia de por dnde se distribuyen todos los vehculos, para cada tramo con detector, saber para cada vehculo que lo atraviesa de donde sali y hacia donde se dirige. Esta informacin se recoge en los porcentajes de los tramos de calibracin y se recoge en las siguientes tablas:

162

Diseo de un modelo de calibracin mediante asignacin

O/D 1 2 3 4 5

1 -

2 83,8% -

3 -

4 84,6% -

5 83,8% -

Tabla 4.2-4. Calibracin basada en porcentajes. Porcentajes en el tramo 1

O/D 1 2 3 4 5

1 -

2 55,1% -

3 100% 72% -

4 85,98% -

5 55,1% -

Tabla 4.2-5. Calibracin basada en porcentajes. Porcentajes en el tramo 2

O/D 1 2 3 4 5

1 -

2 -

3 83% -

4 61,8% 56% -

5 85,6% 56% -

Tabla 4.2-6. Calibracin basada en porcentajes. Porcentajes en el tramo 4

163

Diseo de un modelo de calibracin mediante asignacin

O/D 1 2 3 4 5

1 -

2 55,1% 100% -

3 -

4 85,98% -

5 55,1% -

Tabla 4.2-7. Calibracin basada en porcentajes. Porcentajes en el tramo 7

O/D 1 2 3 4 5

1 75,77% 100%

2 -

3 100% -

4 -

5 86,89% 69,4% -

Tabla 4.2-8. Calibracin basada en porcentajes. Porcentajes en el tramo 11

O/D 1 2 3 4 5

1 100%

2 100%

3 -

4 100%

5 -

Tabla 4.2-9. Calibracin basada en porcentajes. Porcentajes en el tramo 14

Estas tablas indican de donde provienen los vehculos que atraviesan cada tramo y adnde van, y que proporcin representan de la demanda total de ese par origen-

164

Diseo de un modelo de calibracin mediante asignacin

destino. Cada uno de los elementos de estas matrices diferentes de cero provoca una variacin wij en el elemento de la matriz vij, que sigue la siguiente frmula:

wij = wij +

ij * ij
vol _ asig

dif _ vol

donde ij es un porcentaje de un tramo de calibracin, y vol_asig y dif_vol son el volumen de asignacin y diferencia de volumen, respectivamente, del correspondiente tramo de calibracin. Con todo ello, y tras aplicar las variaciones a la matriz de viajes, se alcanza una nueva matriz de viajes. En nuestro caso, el proceso produce como resultado la siguiente matriz calibrada: O/D 1 2 3 4 5 1 0 50 400 602.11 319.93 2 344.86 0 22.15 40 225.41 3 479.24 79.21 0 40.19 30 4 271.77 1298.87 40 0 581.45 5 344.45 390.87 30 200.64 0

Tabla 4.2-10. Calibracin basada en porcentajes. Matriz calibrada Se ha realizado una nueva asignacin con esta nueva matriz para ver si la matriz ha mejorado, y se ha obtenido un parmetro de similitud del 76.47% y de error del 7.56%. Por tanto, se aprecia una mejora en la matriz de viajes como resultado de la calibracin. No obstante, para poder analizar la bondad del algoritmo, se realizarn pruebas sobre escenarios reales en el captulo 5.

165

Diseo de un modelo de calibracin mediante asignacin

4.3 Modelo de calibracin basado en el algoritmo K-mn


4.3.1 Diseo del algoritmo

Este modelo surge como una modificacin del anterior con la intencin de tratar los tramos de forma organizada en grupos, de forma que ya no sean elementos independientes. En este caso, a la hora de modificar un elemento de la matriz de viajes, se van a examinar todos los tramos con detector en los que dicho valor de la matriz influye. Una vez agrupados los tramos, se escoge el incremento/decremento del nmero de viajes que mejor se adapte a las diferencias de flujo en los tramos. As se pretende modificar la matriz de una forma ms eficiente y conseguir de esta manera mejores resultados. Vamos a ilustrar con un pequeo ejemplo el problema de la primera implementacin. Supongamos la siguiente situacin parcial dentro de un grafo:

30 (80) Ruta 1 Nodo i Ruta 3

50(70) 20 (50)

Ruta 2 10 (20)

Nodo j

30 (20)

Figura 4.3-1. Representacin parcial del grafo

En el dibujo se observan tres posibles caminos entre los nodos i y j. Los tramos en rojo representan tramos detectores. Junto a ellos, se incluye el flujo de asignacin y entre parntesis el flujo real. Parte del trfico que recorre dichos tramos es debido a la demanda de viaje entre los nodos i y j. Por tanto, parece lgico que si queremos reducir las diferencias, halla que modificar dicho elemento de la matriz de viajes. Supongamos, para clarificar el ejemplo, que toda la diferencia de flujo vamos a tratar de corregirla con

166

Diseo de un modelo de calibracin mediante asignacin

la demanda entre los nodos i y j. En el caso real, intervendran ms pares origen-destino, pero las conclusiones seran las mismas. Fijmonos en el primer camino, el de arriba. Existen dos tramos detectores en dicho camino. Uno requiere que el elemento ij se incremente en 50 y el segundo en 20. El primer algoritmo se limitara a incrementarlo en la suma de ambos valores, es decir, sumarle 70 unidades. Esta sin duda no es la mejor solucin y se produce como consecuencia de no tener en cuenta la interdependencia de los tramos. Una solucin ms eficiente sera realizar una ponderacin, que en caso de ser la media, resultara en incrementarlo en 35 unidades, lo cual producir mejores resultados. Igualmente habra tambin que tener en cuenta las otras dos rutas, ponderando igualmente las necesidades de los tramos detectores. El algoritmo que se ha especifica en este punto, trata de realizar un ajuste de la matriz de demanda basndose en este tipo de correccin. El algoritmo realiza una asignacin de trfico como en le caso anterior, con el objetivo de calcular las diferencias de flujo en los tramos con datos de flujo real. Una vez realizado esto, se presupone que todo incremento de viajes en la matriz origen/destino va a encauzarse a travs de los k caminos mnimos del grafo, partiendo de la situacin de saturacin de la red que la asignacin haya determinado. Por tanto necesitamos conocer esos k caminos mnimos lo que haremos con el algoritmo detallado en el punto 1.3.4.

167

Diseo de un modelo de calibracin mediante asignacin

Inicio

Iteracin Asignacin

Iteracin I

Si

No

Clculo kmin

Marcado de caminos

Calibracin Matriz

Fin

Figura 4.3-2. Calibracin basada en algoritmo k-mn

Necesitamos conocer adems en que proporcin los usuarios tomaran el camino ms corto y cuantos optarn por caminos algo ms largos (k=2,3,....) debido a la saturacin. Este dato no es fcil de obtener, pero se ha decidido tomar como parmetros

168

Diseo de un modelo de calibracin mediante asignacin

aproximados los primeros k valores del algoritmo de asignacin. Dado que estos valores estn entre cero y uno, pero no responden a criterios de probabilidad (no suman la unidad), se ha obtenido a partir de ellos unos parmetros que si responden a trminos de probabilidad, y se obtienen con la formula:

[k ] =

[ k ]

( j)
j =1

k = 1,2,3,..., K

Tras la asignacin, tenemos que hacer un marcado de caminos, en el cual se almacenarn en unos conjuntos Sijx una relacin de todos los tramos con detector que usa el camino de orden k que tiene como origen el nodo i y como destino el nodo j. Una vez constituidos los elementos Sijx, se proceder a la calibracin de la matriz, la cual se llevar a cabo segn el siguiente diagrama:

169

Diseo de un modelo de calibracin mediante asignacin

Inicio

Inicializacin [ k ] [k ] = K ( j)
j =1

No

i num _ nodos

Fin

Si

No

j num _ nodos

= f ( ( x)) ij = ij +
Si

No

xK

Si

No

[ x] = 0

pijx P
Si

1 [ x] = [ x] * N

pm[ k ] pijx

[ x] * ij
vol _ k min_ pm[k ]

Figura 4.3-3. Calibracin matriz

170

Diseo de un modelo de calibracin mediante asignacin

La notacin seguida en le diagrama de flujo anterior es la siguiente:

[k]: parmetro caracterstico de la iteracin k-sima. [k]: porcentaje de trfico que tomar el camino de orden k.
Pijk: camino de orden k que une los nodos i y j. Vol_kmin_pm[k]: flujo en el tramo detector k debido a los caminos calculados en el algoritmo K-mn. N: nmero de tramos detectores que componen el camino Pijk.

[x]: modificacin que el camino Pijk induce en el elemento ij de la matriz de


viajes.

El algoritmo realiza para cada camino pijx, la media de las modificaciones que cada elemento de Sijx requiere en le elemento ij de la matriz de viajes. Debido a que slo los caminos pijx, x = 1,2,...K influyen en el valor del elemento ij, el algoritmo realiza una media ponderada de las variaciones [x]. La ponderacin pude ser definida de mltiples maneras, segn el objetivo del modelo sea la minimizacin del error mximo, de la media de los errores u otros criterios. Aqu se ha optado por una ponderacin en funcin de la variacin de vehculos que cada ndice [x] provoca en la red. As usamos la siguiente formula:

j =1

* [ j]

* k * [k ] * [k ]
k =1

Hay que notar que la matriz inicial de origen/destino de la que se parte, es un factor fundamental en los resultados del proceso de calibracin, no siendo el factor ms importante la similitud de sta con la matriz ptima. Ciertas matrices ms dispares que otras respecto a la ptima pueden dar mejores resultados que las segundas, en funcin de la compatibilidad de las variaciones que cada tramo con detector requiere en la

171

Diseo de un modelo de calibracin mediante asignacin

matriz de viajes. Si todas ellas son compatibles, la matriz resultado se ajustar mucho a la matriz ptima, pero si las variaciones son muy incompatibles puede que la matriz apenas mejore.

4.3.2

Ejemplo de calibracin basada en algoritmo K-mn

Al igual que en el caso del algoritmo anterior, vamos a realizar una calibracin sobre el mismo escenario para ilustrar la evolucin del algoritmo. Recordamos el grafo que se us: O/D 1 2 3 4 5 50 400 600 387,20 50 40 274,41 40 30 707,84 1 2 500 3 400 50 4 300 1000 40 5 300 300 30 200

Tabla 4.3-1. Calibracin basada en clculo K-mn. Matriz de demanda

Tramo Tramo (1,2) Tramo (1,3) Tramo (2,1) Tramo (2,3) Tramo (2,4) Tramo (3,1) Tramo (3,2)

Tiempo Viaje 6 10 6 7 8 10 7

Tramo Tramo (3,4) Tramo (3,5) Tramo (4,2) Tramo (4,3) Tramo (4,5) Tramo (5,3) Tramo (5,4)

Tiempo Viaje 8 10 8 8 5 10 5

Tabla 4.3-2. Calibracin basada clculo K-mn. Tiempos de viaje

172

Diseo de un modelo de calibracin mediante asignacin

Para que los resultados de la asignacin sean los mismos que en el ejemplo anterior, vamos a configurar el algoritmo con los mismos parmetros, 25 iteraciones y umbral 1E-6. En cuanto a la configuracin del algoritmo K-mn, vamos a generar los 4 caminos mnimos para cada par de centroides. Los resultados de la asignacin son pues los mismos. Vamos a mostrar algunos de los resultados que ya se mostraron en el ejemplo anterior. 843.37 2 1513.86 4

587.54 924.22 427.67

225.78 746.53 551.69 426.14

1369.54

858.23 1 584.26 3

30.00 278.31 5

Figura 4.3-4. Calibracin basada en clculo K-mn. Flujos de asignacin

Los datos de flujo de asignacin en los tramos son los mismos que en el ejemplo anterior y se han usado los mismos datos de detectores, por lo que la siguiente tabla se mantiene idntica, aunque se adjunta para facilitar el seguimiento del ejemplo. Tramo Volumen real Volumen asignacin Diferencia 1 800 924.22 -124.22 2 700 584.26 115.74 4 655 427.67 227.33 7 100 225.78 -125.78 11 750 746.53 3.47 14 1125 1369.54 -244.54

Tabla 4.3-3. Calibracin basada en porcentajes. Puntos de medida

173

Diseo de un modelo de calibracin mediante asignacin

Los datos de porcentajes que se generaron en el ejemplo del algoritmo anterior, ya no se generan, pues ahora los datos de porcentajes se obtienen de las k rutas mnimas. Se generan un total 100 rutas, 20 que parten de cada nodo de la red. No se van a mostrar aqu dichos resultados pues ocuparan demasiado, pero en el anexo II se muestran los informes generados en estas pruebas. Lo importante es que partiendo de estas rutas se generan unos registros con los cdigos de los caminos que pasan por cada uno de los tramos detectores. Estos datos se muestran en las siguientes tablas, donde cada tabla se relaciona con un tramo detector e indica las rutas que lo cruzan. O/D 1 2 3 4 5 1 {2, 3, 4} 2 {1, 3, 4} {1, 4} {2, 3} {3, 4} {2, 3} 3 {2, 3, 4} {4} {3} 4 {1, 2, 3} {4} {3, 4} {3, 4} 5 {1, 2, 4} {3} {4} {4} {2, 3}

Tabla 4.3-4. Calibracin basada en clculo K-mn. Rutas en el tramo 1 De la tabla anterior, la celda [1, 2] indica que el tramo 1 es atravesado por los caminos de orden 1, 3 y 4 que van del nodo 1 al nodo 2. En total lo atraviesan 35 caminos. Veamos los datos de los dems tramos detectores: O/D 1 2 3 4 5 1 {1} {3} {4} {4} 2 {2, 3} {2} 3 {1} {2} {1} {4} {3, 4} 4 {4} 5 {3} -

Tabla 4.3-5. Calibracin basada en clculo K-mn. Rutas en el tramo 2

174

Diseo de un modelo de calibracin mediante asignacin

O/D 1 2 3 4 5

1 -

2 -

3 {2} {1, 4} {3} -

4 {2} {2} -

5 {2} {2} -

Tabla 4.3-6. Calibracin basada en clculo K-mn. Rutas en el tramo 4

O/D 1 2 3 4 5

1 {1} {3} {2, 4} {4}

2 {2, 3} {2} {1, 3} -

3 -

4 {4} {3} -

5 {3} {3} -

Tabla 4.3-7. Calibracin basada en clculo K-mn. Rutas en el tramo 7

O/D 1 2 3 4 5

1 {2, 4} {2} {2, 4} {2, 3}

2 {4} {4} {3, 4}

3 {3} {3} {4} {1, 3} {2, 4}

4 {2, 4} {2, 4}

5 {4} {4} {2, 3} {1, 3, 4}

Tabla 4.3-8. Calibracin basada en clculo K-mn. Rutas en el tramo 11

175

Diseo de un modelo de calibracin mediante asignacin

O/D 1 2 3 4 5

1 {3, 4} {4} {3} {3, 4} {1, 3, 3, 4}

2 {4} {3} {4} {2} {1, 3, 3, 4}

3 {4} {3} {2, 3}

4 {3} {3} {2, 4} {1, 2} {1, 3, 3, 4}

5 {3} {1, 3, 3, 4}

Tabla 4.3-9. Calibracin basada en clculo K-mn. Rutas en el tramo 14 Estos registros son los que nos van a permitir calibrar la matriz. Sobre el elemento ij de la matriz de viajes slo van a imponer variaciones las celdas [i, j] de las seis matrices anteriores. Por ejemplo, para decidir la variacin sobre el elemento 23 habr que seleccionar las casillas [2, 3] de las matrices. En este caso obtenemos la siguiente tabla de marcado de rutas: Orden 1 2 3 4 [k] 0.6589375 0.1938701 0.1363238 0.01086871 T1 X T2 X T4 X X T7 T11 X T14 [k] 23.71072 11.51124 0.280341 9.584115

Tabla 4.3-10. Calibracin basada en clculo K-mn. Marcado de rutas para el par [2, 3] En la tabla se han marcado las casillas cuando el camino en concreto incluye al tramo detector. Como se puede observar en la tabla los caminos que van del nodo 2 al nodo 3 atraviesan cuatro de los seis tramos detectores. Los tramos 7 y 14 no se usan para los desplazamientos entre estos dos nodos. Ahora hay que decidir cual es la variacin del elemento 23 que mejor se ajusta a las necesidades de los cuatro tramos. Adems hay que saber como se distribuye la demanda de trfico 23 entre los cuatro caminos. Esto se hace con los parmetros [k], que representa el porcentaje de trfico que va del nodo 2 al nodo 3 y que seleccionan el camino de orden k. El siguiente paso es calcular los factores de correccin [k] para cada camino.

176

Diseo de un modelo de calibracin mediante asignacin

Se realiza mediante una ponderacin de las correcciones que indica cada tramo detector que es usado en el camino k. En le caso de no haber tramo detectores en un camino, el factor de correccin [k] sera nulo. La frmula de ponderacin es la siguiente:
N [k ] * ij 1 [k ] = [k ] * N pm[ x ] pijk vol _ k min_ pm[ x]

donde

N es el nmero de tramos detectores en el camino de orden k y

vol_kmin_pm[k] es el flujo de vehculos en el tramo detector pm[x] debido a todas las rutas que atraviesan el tramo. Dichos flujos se recogen en el siguiente grfico para los tramos detectores:

351.48 1367.336 479.392 618.024

1948.03

502.747

Figura 4.3-5. Calibracin basada en clculo K-mn. Flujos K-mn

Finalmente, slo queda ponderar los [k] para obtener el parmetro que ser sumado al elemento 23 . Esta ponderacin se hace segn la formula ya comentado en el apartado anterior de diseo:

177

Diseo de un modelo de calibracin mediante asignacin

j =1

* [ j]

* k * [k ] * [k ]
k =1

Si aplicamos la frmula a nuestros datos, obtenemos un parmetro = 22.06651. Este mismo proceso se realiza para todos los elementos de la matriz de viajes, obteniendo para cada uno un parmetro de correccin, que una vez aplicado a la matriz de viajes nos proporciona la nueva matriz de viajes calibrada. En nuestro caso se obtiene la siguiente matriz: O/D 1 2 3 4 5 46.77 276.04 530.58 343.36 33.70 35.48 242.20 40.30 29.52 625.13 1 2 457.53 3 485.27 72.07 4 300.12 1375.87 28.89 5 303.14 422.77 19.42 188.80

Tabla 4.3-11. Calibracin basada en clculo K-mn. Matriz Calibrada Igual que en el ejemplo de la calibracin basada en porcentajes, se ha realizado una asignacin con esta nueva matriz de viajes para ver si mejora frente a la inicial. Se han mantenido los parmetros de asignacin, 25 iteraciones y umbral 1E-6. En este caso se ha obtenido un parmetro de similitud del 73.41% y un error del 10,04%, por lo que se ve que ambos mtodos se aproximan a la matriz ptima. La comparacin entre ambos se realizar ms a fondo en el captulo 5.

178

Diseo de un modelo de calibracin mediante asignacin

4.4 Procedimiento de mejora de la eficiencia del algoritmo

A lo largo de los apartados anteriores se ha expuesto la implementacin de los algoritmos desarrollados a lo largo del proyecto. Igualmente, en el captulo 3 se comentaron todas las estructuras usadas en estos algoritmos. No obstante, existen otras estructuras auxiliares utilizadas para incrementar la eficiencia del algoritmo que no han sido comentadas. Una estructura auxiliar puede disminuir el tiempo de bsqueda de elementos en listas, aunque complica la comprensin del algoritmo, ya que su diseo no permite una comprensin tan rpida como en el caso de estructuras de datos. Vamos a comentar algunas de estas estructuras auxiliares con el objetivo de clarificar su uso y facilitar la compresin del cdigo

Estructura vector_indices_funcion. Esta estructura consiste en un vector de enteros sin signo que permite

conocer la posicin de una funcin en la lista de funciones volumen-retraso, sin tener que buscarla en dicha lista. En concreto, si queremos saber que posicin ocupa la funcin de nmero 45 dentro de la lista de funciones, la obtendremos del elemento vector_indices_funcion[45]. Esta estructura acelera la obtencin de los costes de los tramos y giros.

Nodos_Index. Consiste en un vector de enteros sin signo que permite conocer la posicin

que ocupa un nodo en las estructuras de clculo K-mn a partir de su cdigo de nodo. Funciona de forma similar al vector vector_indices_funcion. Acelera la extraccin de dichos nodos en la lista, y evita la bsqueda que en listas grandes puede consumir bastante tiempo.

179

Diseo de un modelo de calibracin mediante asignacin

Treenode_Index. Cuando se extrae la raz del montculo durante el clculo K-mn, este

elemento ha de ser eliminado del montculo, pero es necesario acceder a l posteriormente, por lo que se traspasa del montculo a una lista auxiliar para su posterior uso. Para saber que posicin ocupa un nodo del montculo en la lista, se usa una lista auxiliar que permite saber dicha posicin a partir del cdigo y subcdigo del elemento que se desee obtener.

Tramos_pm. Esta estructura es un vector de variables booleanas, que permite saber de

forma rpida si un tramo posee un detector de trfico. As, si queremos saber si el tramo 200 posee detector, lo obtendremos de la posicin 200 de dicho vector. Esto acelera enormemente el algoritmo de calibracin basado en porcentajes.

Nodos_Giros. Este vector permite saber si un nodo tiene definidos giros entre sus tramos

adyacentes de forma rpida. Su funcionamiento es el habitual ya comentado, la posicin i-sima indica si el nodo de cdigo i posee giros.

Num_paths_porcentajes. Este vector de enteros permite saber de forma rpida el nmero de objetos

del tipo Tramo_Calibracion que el detector con cdigo i-simo tiene asociado. Debido a que los elementos del tipo Tramo_Calibracion estn todos ordenados por detectores y almacenados de forma secuencial, para extraer los correspondientes a un detector, habr que sumar el nmero de elementos asociados a todos los detectores con cdigo inferior al detector deseado.

180

Diseo de un modelo de calibracin mediante asignacin

Num_paths_kmin. Es totalmente equivalente a la estructura Num_paths_porcentajes, pero se

usa para la calibracin basada en el clculo K-mn, por lo que se relaciona con los elementos de la clase Path_Kmin. Su uso, acelera de forma importante la calibracin de matrices.

Matriz_pms. Consiste en una matriz de dimensin igual al nmero de nodos de la red y

permite saber el ndice de un elemento de la clase Pm_Kmin a partir del nodo origen y destino del tramo al que se asocia. Es una estructura de aceleracin de cdigo que evita perdidas de tiempo en bsqueda de elementos en listas.

4.5 Diseo de la interfaz grfica

Una parte importante de la aplicacin que se ha desarrollado, se encarga de la comunicacin con el usuario. Para que una interfaz sea buena ha de ser clara, completa e intuitiva. Es decir, el usuario ha de saber que tiene que hacer de forma sencilla y rpida, ya que el usuario no tiene porque tener conocimientos de cmo ha sido diseada la herramienta de que est usando. El xito de una buena aplicacin recae en gran parte en la funcionalidad del algoritmo, pero tambin en lo intuitivo de su interfaz y sencillez de manejo. Las interfaces grficas ayudan a incrementar la calidad de la aplicacin. Siempre es ms agradable para el usuario usar una interfaz mediante grficos que una de carcter textual. Hoy en da las aplicaciones destinadas a ala implementacin de programas estn orientadas a reducir el tiempo de desarrollo de las aplicaciones, en lo que comnmente es conocido como Rapid Application Development (RAD). Esta filosofa sacrifica eficiencia en las aplicaciones creadas a cambio de reducir sensiblemente el tiempo

181

Diseo de un modelo de calibracin mediante asignacin

necesario para el desarrollo de las mismas, disminuyendo, por tanto, el costo de desarrollo de nuevas aplicaciones. Borland provee su compilador de un fuerte carcter visual, permitiendo disear aplicaciones basadas en el entorno Windows. Trae incorporada la librera VCL (Visual Component Library) que incluye una serie de clases que permiten fcilmente disear interfaces grficas altamente intuitivas. Adems, todos los objetos que integran la librera visual, incluyen una serie de eventos que permiten la interaccin entre la aplicacin y el usuario. Dentro de esta lnea de pensamiento de enmarcan las aplicaciones destinadas a la programacin bajo entornos visuales. En ellas la creacin de componentes se reduce a seleccionar el elemento deseado y situarlo en otro elemento llamado padre, quedando el esfuerzo programador centrado en la creacin del cdigo que le otorga funcionalidad a los objetos. Los beneficios de esta estrategia son considerables, por la rapidez del desarrollo de entornos visuales, y generalmente compensa con creces la perdida de eficiencia. En el caso de la implementacin de algoritmos de asignacin, el coste computacional es elevado, por lo que es necesario reducir al mximo el consumo de recursos destinados a otras funciones. Por ello, es conveniente gestionar la memoria fsica disponible de la manera ms eficiente posible.

Para ello, en vez de crear los elementos que componen la interfaz a la manera habitual de los lenguajes visuales, conviene crearlos en tiempo de ejecucin, reservando justo la memoria necesitada en el momento de la creacin y liberndola una vez el elemento ya no es necesario. Esta forma de proceder eleva considerablemente la cantidad de cdigo generado manualmente por el programador, desapareciendo una de las ventajas que aportan los lenguajes visuales. Con el fin de combinar las ventajas del RAD con una gestin eficiente de la

182

Diseo de un modelo de calibracin mediante asignacin

memoria se ha usado una aplicacin que, partiendo de una interfaz creada mediante un lenguaje de programacin visual (Borland C++ Builder) genera todo el cdigo necesario para crear esa misma interfaz en tiempo de ejecucin. Esta herramienta ha sido probada y utilizada con xito en otros desarrollos de software. Toda la interfaz grfica usada en esta aplicacin, ha sido realizada mediante dicho mecanismo.

4.5.1

Interfaz del algoritmo K-mn

Para el desarrollo del algoritmo de calibracin, fue necesaria la implementacin de un algoritmo de encaminamiento que buscase las k rutas mnimas entre cada par de nodos de un grafo. A la vez que se desarroll el algoritmo, ste fue integrado en la aplicacin Tramos como herramienta autosuficiente. Vamos a describir el interfaz que fue diseado para dicha herramienta. El siguiente grfico muestra una instantnea de dicho interfaz:

183

Diseo de un modelo de calibracin mediante asignacin

Seleccin de los nodos origen

Seleccin de los nodos destino

Opciones

Vistas del grafo Progreso del algoritmo Resultados

Figura 4.5-1. Interfaz del algoritmo K-mn

Seleccin de los nodos origen. Esta rea est destinada a definir los nodos pertenecientes al grafo que van

a ser considerados como puntos de partida de viajes. Puede seleccionarse un nodo en particular, todos los centroides, o todos los nodos de la red. El botn Centrar en nodo permite que el mapa secundario enfoque el nodo

184

Diseo de un modelo de calibracin mediante asignacin

que est seleccionado en el cajetn, permitiendo observar esa zona en detalle del grafo. Seleccin de los nodos destino. En esta parte del formulario el usuario define los nodos que sern destino de los caminos que se van a buscar. Aqu el programa permite mayor flexibilidad, pudiendo seleccionarse cualquier combinacin de nodos. El parmetro All identifica a todos los nodos (o centroides si esta activada la opcin solo centroides) de la red. Los nodos pueden incluirse o eliminarse de la lista. Vistas del grafo. Se compone de dos imgenes que representan el grafo que define el escenario. Ambas imgenes pueden ser ampliadas y desplazadas para adquirir mayor nivel de detalle. Adems, la vista inferior permite seleccionar un nodo como destino, incluyndose este en la lista y constituyendo una forma alternativa de seleccin. Opciones. Aqu se incluyen los componentes que permiten la configuracin del algoritmo de bsqueda. Veamos las partes que lo componen:

o Seleccin del coste. El usuario indica si el coste de los tramos ser en

longitud o en tiempo. En caso de ser en tiempo, el algoritmo deber recurrir a la aplicacin de las funciones volumen-retraso para calcular dicho coste.
o Dimensin de la bsqueda. Define el nmero de caminos que habrn de

buscarse para cada par origen-destino. El incremento de este parmetro incrementa notablemente el tiempo de ejecucin.

185

Diseo de un modelo de calibracin mediante asignacin

Seleccin del coste Dimensin de la bsqueda

Trnsito en centroides

Figura 4.5-2. Opciones

o Trnsito en centroides. Indica si el algoritmo puede utilizar los nodos

del tipo centroide como nodos de paso. En caso negativo, los centroides slo se usarn como inicio o destino de rutas. Progreso del algoritmo. En esta rea se muestra informacin de la evolucin del proceso, indicando en todo momento qu tarea se est ejecutando. Tambin se muestra informacin del tiempo empleado en la ejecucin. Resultados. Permite la representacin grfico de las rutas encontradas en el rea de visualizacin de los mapas. La opcin Zoom permite que la imagen se adapte al camino, de forma que se realice un zoom hasta ajustar al camino.

4.5.2

Interfaz del algoritmo de calibracin

Vamos aqu a detallar el interfaz grfico del algoritmo de calibracin. La pantalla se divide en tres zonas.

186

Diseo de un modelo de calibracin mediante asignacin

Zona de informacin

Zona de configuracin

Zona de progreso

Figura 4.5-3. Interfaz del algoritmo de calibracin.

Zona de informacin. La primera ocupa la parte superior de la pantalla y es un rea de

informacin. En ella el usuario puede seleccionar la matriz de viajes que se usar para la asignacin de trfico. El algoritmo mostrar en esta zona los elementos de dicha matriz, mostrando una fila de dicha matriz. El nmero de la fila se puede cambiar con el la opcin Nodo Origen. Esta zona tambin permite

187

Diseo de un modelo de calibracin mediante asignacin

ver la informacin de puntos de medida. En ella se puede ver el cdigo del tramo y la medida de flujo rea aportada por el detector.

Seleccin de fila

Nombre de la matriz inicial

Seleccin de fila

Cdigo de tramo

Nmero de centroides de la red

Datos de detectores Fila de la matriz inicial Fila de la matriz calibrada

Figura 4.5-4. Zona de informacin En el centro se puede observar el resultado de la calibracin en forma de una nueva matriz de viajes. Se representa de la misma forma que la matriz de viajes inicial.
o Nombre de la matriz inicial. El usuario puede elegir la matriz que se

usar para la asignacin de trfico, seleccionndola de una lista de las matrices que estn definidas para ese escenario.
o Seleccin de fila. Existen dos controles de este tipo. Uno permite

modificar la fila que se muestra en el apartado Fila de la matriz inicial y e otro la que se muestra en la zona Fila de la matriz calibrada. Esto permite ver toda la matriz de viajes, inicial y calibrada.
o Nmero de centroides de la red. Informa acerca de cuantos nodos de la

red son centroides. Es un dato del escenario. La matriz de viajes tiene

188

Diseo de un modelo de calibracin mediante asignacin

dimensin igual a dicho parmetro.


o Fila de la matriz inicial. Muestra la fila de la matriz que est

seleccionada.
o Fila de la matriz calibrada. Permite visualizar la matriz de viajes que se

ha generado tras la aplicacin del algoritmo. Por ello, este apartado estar vaco e inactivo hasta que se finalice el algoritmo.
o Cdigo de tramo. Indica el identificador de tramo donde hay situado un

punto de medida.
o Datos de detectores. Muestra el flujo real recogido por el detector.

Zona de configuracin. Esta zona est destinada a la configuracin del algoritmo. Aqu se

encuentran todos los parmetros que el usuario puede modificar para ajustar la calibracin. Veamos que elementos la componen.

Guardar datos Seleccin de algoritmo Tratamiento de valores negativos Umbral

Nmero de iteraciones de asignacin Trnsito en centroides Figura 4.5-5. Zona de configuracin

Dimensin de la bsqueda K-mn

o Seleccin de algoritmo. Permite decidir que algoritmo de calibracin se

aplicar.

189

Diseo de un modelo de calibracin mediante asignacin

o Nmero de iteraciones de asignacin. Dimensiona la asignacin de

trfico. Se realizarn tantas iteraciones como se indique. En principio, cuantas ms iteraciones se realicen, mas se distribuye el trfico por la red y mejores son los datos de que se dispondr para la calibracin.
o Umbral. Mecanismo de deteccin de las iteraciones de asignacin que

permite cancelarlas, a pesar de no haberse completado todas las iteraciones, si las mejoras que se observan entre dos iteraciones consecutivas no son suficientemente altas.
o Trnsito en centroides. Indica si los nodos del tipo centroides se usarn

como nodos intermedios de rutas o slo como extremos de los mismos.


o Guardar datos. Si est activada, el algoritmo generar una serie de

archivos de texto que contienen informacin sobre resultados intermedios del algoritmo, que pueden ser consultados a posteriori por el usuario.
o Admitir valores negativos. Define el comportamiento del algoritmo al

encontrarse con valores negativos de la matriz de viajes generada por el proceso. Si no se admiten valores negativos, el algoritmo los sustituir por el valor indicado por el usuario en la casilla que acompaa a este control.
o Dimensin de la bsqueda K-mn. Define el nmero de caminos que

han de buscarse con el algoritmo K-mn para cada par de centroides. Slo estar activo en caso de seleccionar la calibracin basada en el algoritmo K-mn.

Zona de progreso. En este apartado se muestra informacin textual de la evolucin del

algoritmo. Se muestra para cada iteracin de asignacin informacin del tiempo medio de viajes, diferencias mximas y mnimas de flujo y tiempo de cpu consumido. Para el caso de la calibracin K-mn, se muestra tambin la evolucin del algoritmo, as como el tiempo empleado.

190

Pruebas del sistema

5 Pruebas del sistema


Una vez realizados los ensayos de validacin de los algoritmos implementados en cuanto a la evolucin del algoritmo en escenarios pequeos que permiten su seguimiento, conviene realizar pruebas sobre escenarios de mayor dimensin para analizar los resultados obtenidos. En este captulo se van a detallar las pruebas de integracin del sistema. Se realizarn pruebas sobre los algoritmos implementados a lo largo del proyecto. Se ha seleccionado un escenario real de la ciudad de Sevilla para realizar dichas pruebas. Primero se va a realizar una prueba del algoritmo de clculo K-mn sobre este escenario, para analizar como se comporta sobre escenarios con una cierta dimensin. Posteriormente se realizarn pruebas de calibracin sobre el mismo con los dos algoritmos de estimacin de matrices O-D, incluyendo una comparativa sobre ambos mtodos, analizando cual de los dos ofrece mejores resultados y las causas. Igualmente se analizar la diferencia existente entre ambos mtodos en cuanto al tiempo de ejecucin que ambos algoritmos requieren. El escenario que se va a usar est compuesto por 1345 nodos (216 centroides) y 4422 tramos. Debido a la dimensin del escenario, el escenario se ha dividido en un nmero de zonas. La disposicin general del grafo puede observarse en el siguiente grfico:

191

Pruebas del sistema

Figura 5-1. Escenario de las pruebas de integracin

5.1 Pruebas de integracin del algoritmo K-mn

En el captulo 2 ya se realiza un ejemplo de este algoritmo, detallando la evolucin del algoritmo al aplicarlo a una red pequea. Ahora nos centraremos en analizar los resultados que se obtienen. Configuraremos el algoritmo tomando como nodos origen y destino todos los centroides. Calcularemos los caminos para un valor de K = 3. Los costes de los tramos se realizarn en tiempo. Resulta imposible mostrar todos los caminos encontrados por el algoritmo, pero para incluir algunos de los resultados vamos a mostrar los caminos encontrados para

192

Pruebas del sistema

algunos pares origen-destino. Las siguientes grficas muestran esos caminos:

Figura 5.1-1. Rutas [40, 209] de orden 2 y [177, 216] de orden 1

La secuencia de estos dos caminos son los siguientes:


[40, 209]2: 40 749 747 746 765 763 762 757 741 739 684 683 682
819 631 629 627 625 644 649 587 657 574 563 565 566 569 579 584 607 606 891 599 601 603 604 1150 1173 1147 1172 1148 1149 1154 1158 1134 1135 1191 1317 1316 1318 1190 1185 1186 1187 1188 1306 1305 1304 1310 209

Longitud del camino: 3754.16748046875

[177, 216]1: 177 1246 Nodo_1245 1242 1238 1229 1228 1223 1222 1258
1259 1254 1294 1293 1300 1301 1163 1160 1161 1149 1180 1153 1179 1177 604 603 601 799 796 221 218 217 216

Longitud del camino: 2044.49658203125

193

Pruebas del sistema

Figura 5.1-2. Rutas [83, 37] de orden 1 y [122, 25] de orden 3

La secuencia de nodos es la siguiente:


[83, 37]1: 83 753 732 736 881 773 954 953 733 37
Longitud del camino: 261.825378417969

[122, 37]1: 122 439 447 457 474 456 454 440 476 478 480 482 484
486 233 234 876 417 372 843 952 953 733 729 731 735 737 738 741 739 684 683 682 819 631 629 627 625 644 649 587 657 574 563 565 567 568 25

Longitud del camino: 1234.0341796875

Las rutas encontradas no pueden incluir ningn centroide, pues se ha desactivado la opcin Usar centroides para trnsito. El algoritmo de clculo K-mn es junto a la asignacin una de las partes principales del algoritmo de calibracin basado en las k rutas mnimas, por ello es importante el consumo de tiempo de dicho clculo. La siguiente grfica muestra el tiempo de clculo empleado por el algoritmo K-mn en funcin del parmetro k.

194

Pruebas del sistema

Tiempo de clculo
2500 Segundos 2000 1500 1000 500 0 1 2 3 K
Figura 5.1-3. Tiempo empleado en algoritmo K-mn

2379 1539 1008 100 285 582

Estos datos son de procesamiento de datos. A todos ellos habra que sumarle el tiempo de inicializacin de datos, que viene a ser de 13 segundos. Como vemos el tiempo de clculo se incrementa de forma casi lineal. Esto se debe a que para parmetros K elevados, el montculo que sirve de estructura principal del algoritmo, se va haciendo cada vez ms grande. Para valores de K=3, el montculo alcanza un tamao mximo alrededor de los 1000 elementos y se insertan del mismo unos 12000 elementos en cada iteracin (hay 216 iteraciones en el ejemplo), pero para K=5, el tamao mximo se duplica hasta los 2000 elementos y se insertan en cada iteraciones unos 21000 elementos. Esto hace que conforme aumentamos el valor de K, las estructuras crezcan en tamao y el tiempo de clculo se incremente. Estos datos son muy importantes, ya que el algoritmo de calibracin va a incluir este proceso y el tiempo total de clculo se ver incrementado por el desarrollo de este algoritmo. En la siguiente tabla se muestran valores orientativos del tamao y uso del montculo para diferentes valores de K.

195

Pruebas del sistema

K 1 2 3 4 5 6

Tamao mximo del montculo ~250 ~600 ~1000 ~1500 ~2000 ~2500 Nota: Datos promedio en cada iteracin.

Elementos insertados en el montculo ~4000 ~8400 ~12000 ~17000 ~21000 ~24000

Tabla 5.1-1. Dimensin y uso del montculo

5.2 Pruebas de integracin de los algoritmos de calibracin

Vamos aplicar los algoritmos de calibracin al escenario real ya usado para probar el algoritmo K-mn. Los parmetros de la calibracin sern 15 iteraciones, umbral de mejora 1E-6 y no admitir valores negativos. Partiremos de una matriz de viajes no ptima, que por tamao no incluimos en este documento. Ser una matriz cuadrada de dimensin 216. As mismo, es necesario disponer de los datos de medida en ciertos puntos de medida. Lo ideal a la hora de calibrar la matriz, sera disponer de los datos reales de flujo en todos y cada uno de los tramos de la red. No obstante, eso es imposible en un caso real. En nuestro caso disponemos de un total de 95 tramos detectores repartidos a lo largo de toda la red.

5.2.1

Prueba de calibracin basada en porcentajes

Partimos de una matriz inicial no ptima, y realizamos una calibracin mediante este primer mtodo. La matriz inicial tiene un parmetro de similitud del 46,07% y un error del 38,94%. Tras la calibracin obtenemos una nueva matriz de viajes. Para poder comparar los resultados obtenidos, es necesario realizar una nueva asignacin de la matriz calibrada. En la siguiente tabla se observa la diferencia de volmenes en los

196

Pruebas del sistema

tramos detectores, tanto para la matriz inicial, como para la matriz calibrada.
Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

620 1785.9 -5451.4 1785.9 67.24

642 1119.4 -3254.8 202.65 93.77

723 1254.9 -387.48 329.43 14.98

764 591.24 -1164.1 11.30 99.03

796 1528.8 -335.11 41.77 87.54

800 674.00 -387.37 -269.71 30.37

801 512.11 112.41 29.13 74.09

804 1029.4 -715.40 -87.16 87.82

805 2436.2 473.25 434.38 8.21

818 1465.5 583.20 481.66 17.41

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

820 1427.1 -489.75 344.13 29.73

885 1099.5 -169.90 4.87 97.13

911 944.83 -1172.5 -702.29 40.11

918 2679.0 730.58 813.20 -11.31

924 1257.2 164.16 -239.88 -46.13

1067 194.02 -396.10 -153.99 61.12

1225 890.12 -776.52 -567.50 26.92

1227 3178.7 1106.8 1083.2 2.14

1230 1312.5 255.05 207.89 18.49

1244 2704.2 719.38 989.40 -37.54

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

1251 3041.4 881.47 723.71 17.90

1276 2227.0 796.03 869.82 -9.27

1294 342.64 -249.78 -113.67 54.49

1297 2031.1 -197.32 -189.39 4.02

1301 1162.9 434.42 266.21 38.72

1303 3635.6 1226.8 1349.6 -10.01

1315 4342.0 1656.5 1658.2 -0.10

1323 2794.3 851.77 686.55 19.40

1331 854.27 101.88 166.89 -63.81

1460 3263.2 456.76 400.46 12.33

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

1491 1558.6 360.69 225.67 37.43

1502 1884.6 350.78 666.94 -90.13

1520 1315.9 98.42 -11.16 88.66

1537 2230.1 557.85 403.46 27.68

1540 784.46 -889.70 -277.57 68.80

1577 1836.9 -339.98 1033.8 -204.07

1594 447.84 -461.72 -783.97 -69.79

1613 1341.3 348.13 474.44 -36.28

1617 1856.9 5.94 -118.55 -1895.8

1622 1715.7 -78.97 498.30 -531.00

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

1696 539.10 30.86 118.43 -283.77

1736 3896.6 -1155.1 -613.77 46.86

1753 7493.3 2087.1 4171.5 -99.86

1802 1524.0 -885.64 92.09 89.60

1809 1381.3 -1260.8 -533.96 57.65

1849 975.43 -97.47 -207.28 -112.66

1855 1038.6 385.29 52.46 86.38

1868 657.95 -778.42 226.07 70.96

1871 1128.6 104.80 -32.40 69.08

1926 1989.8 651.49 696.33 -6.88

197

Pruebas del sistema

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

1941 1876.7 727.65 644.59 11.41

1979 104.59 -219.72 -74.66 66.02

1991 1335.2 451.30 780.17 -72.87

2043 997.26 -348.07 -124.74 64.16

2066 1417.2 7.66 343.63 -4386.0

2088 481.98 10.92 -247.83 -2169.5

2093 5430.7 -1471.8 795.58 45.95

2097 1108.1 280.86 1.83 99.35

2122 1644.7 306.87 666.81 -117.29

2130 555.29 -16.25 108.90 -570.15

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2147 1146.9 -1012.9 -505.89 50.06

2210 2153.7 562.40 1284.0 -128.31

2224 1004.6 -39.39 647.32 -1543.4

2352 1299.6 -475.51 -117.88 75.21

2356 0.00 0.00 0.00 0.00

2393 1121.2 -465.23 993.34 -113.52

2433 2461.1 -516.98 200.17 61.28

2447 1301.8 -2102.8 -1491.6 29.07

2475 1957.8 123.24 115.30 6.44

2551 2713.4 1116.8 1782.7 -59.63

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2579 544.53 -1371.1 -143.00 89.57

2580 2582.6 -488.31 -249.40 48.93

2586 1081.5 -1455.1 -1192.6 18.04

2623 446.01 -691.62 -396.97 42.60

2627 1119.7 -627.80 -517.78 17.52

2632 1861.5 693.99 952.51 -37.25

2647 1049.3 -215.14 246.92 -14.77

2668 218.50 -76.03 50.74 33.26

2670 1082.6 -853.79 454.42 46.78

2671 284.56 125.76 279.49 -122.24

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2675 1309.0 -741.38 -769.57 -3.80

2691 1483.0 -883.56 490.79 44.45

2699 1189.2 339.08 432.05 -27.42

2788 7233.6 1795.0 5591.9 -211.53

2794 3380.2 1199.6 951.80 20.66

2799 5019.2 1140.4 2518.0 -120.80

2843 2968.7 -219.52 1163.6 -430.06

2847 4006.0 -139.61 1992.2 -1326.9

2868 521.53 -1089.8 -1008.5 7.46

2869 1356.3 -1615.3 108.42 93.29

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2932 1240.8 -142.5 218.65 -53.41

2935 2427.5 25.56 -106.0 -314.9

2944 2421.0 457.88 756.59 -65.24

2991 1719.2 -878.3 -795.2 9.46

3118 793.70 339.43 305.31 10.05

Tabla 5.2-1. Valores de los detectores de flujo del algoritmo de calibracin basado en porcentajes

198

Pruebas del sistema

Como se puede observar, las diferencias de volmenes se reducen en la mayora de los tramos. No obstante, es tambin cierto que en algunos tramos, el algoritmo ha proporcionado soluciones que empeoran a la matriz inicial. Esto es debido, como ya se ha comentado, al hecho de considerar los tramos como elementos independientes, lo cual evidentemente no es cierto. As, al modificar un elemento de la matriz de viajes, para conseguir eliminar o reducir la diferencia de volmenes en un tramo, estamos introduciendo desviaciones en otros tramos de la red. En cualquier caso, lo que nos interesa es la mejora global de la matriz calibrada. El parmetro de similitud de la matriz calibrada se eleva hasta el 61,87%, mientras que el error cometido es del 35,66%. Por tanto se puede observar que el algoritmo consigue obtener una matriz de viajes estimada que se ajusta mejor a los datos de flujo, aunque algunos tramos vean incrementados su desviacin particular. Tras la calibracin de la matriz original, vamos a mostrar los resultados grficos de los flujos en la red. Para ello se ha dividido el escenario en una retcula de 16 zonas. La siguiente imagen muestra dichas divisiones zonales:

199

Pruebas del sistema

Figura 5.2-1. Zonificacin del escenario

Se han numerado las zonas en las que existen tramos, en total once zonas. Para la representacin se sigue un cdigo de colores que indica el flujo existente en cada tramo. El cdigo es el siguiente:

200

Pruebas del sistema

Figura 5.2-2. Cdigo de colores

Las siguientes imgenes muestran los flujos antes y despus de la calibracin. Estn ordenadas por zonas. En la parte superior se muestra la situacin producida por la matriz inicial, y debajo de sta los resultados obtenidos con la matriz calibrada:

201

Pruebas del sistema

Figura 5.2-3. Resultados de la calibracin basada en porcentajes. Zona 1.

202

Pruebas del sistema

Figura 5.2-4. Resultados de la calibracin basada en porcentajes. Zona 2.

203

Pruebas del sistema

Figura 5.2-5. Resultados de la calibracin basada en porcentajes. Zona 3.

204

Pruebas del sistema

Figura 5.2-6. Resultados de la calibracin basada en porcentajes. Zona 4.

205

Pruebas del sistema

Figura 5.2-7. Resultados de la calibracin basada en porcentajes. Zona 5.

206

Pruebas del sistema

Figura 5.2-8. Resultados de la calibracin basada en porcentajes. Zona 6.

207

Pruebas del sistema

Figura 5.2-9. Resultados de la calibracin basada en porcentajes. Zona 7.

208

Pruebas del sistema

Figura 5.2-10. Resultados de la calibracin basada en porcentajes. Zona 8.

209

Pruebas del sistema

Figura 5.2-11. Resultados de la calibracin basada en porcentajes. Zona 9.

210

Pruebas del sistema

Figura 5.2-12. Resultados de la calibracin basada en porcentajes. Zona 10.

211

Pruebas del sistema

Figura 5.2-13. Resultados de la calibracin basada en porcentajes. Zona 11.

212

Pruebas del sistema

A continuacin, vamos a mostrar unas imgenes de unas zonas ampliadas del viario que poseen tramos con detectores. Se trata de cuatro zonas repartidas a lo largo del viario, y se han escogido para observar como se producen cambios tanto en los tramos con detectores, como en los tramos que lo rodean. Los tramos con detectores que se incluyen en estas zonas, se muestran en la siguiente tabla: Cdigos de tramos
Zona 1: Avda. La Palmera Repblica Argentina Zona 2: Ronda del Tamarguillo Zona 3: Puente Cristo de la Expiracin Zona 4: Rep. Argentina Lopez de Gomara {1941, 1926, 2847, 2868, 764} {2691, 2627, 2632} {2088, 2093, 2097, 2130, 2122} {2043, 2352, 2147, 2066, 1991, 2224, 2356}

Tabla 5.2-2. Tramos detectores incluidos en las zonas representadas

Se muestra la situacin antes y despus de la calibracin:

213

Pruebas del sistema

Figura 5.2-14. Calibracin basada en porcentajes. Resultados Avda de la Palmera Repblica Argentina.

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

764 591.24 -1164.1 11.30 99.03

1926 1989.8 651.49 696.33 -6.88

1941 1876.7 727.65 644.59 11.41

2847 4006.0 -139.61 1992.2 -1326.9

2868 521.53 -1089.8 -1008.5 7.46

Tabla 5.2-3. Calibracin basada en porcentajes. Tramos detectores en la zona 1

214

Pruebas del sistema

Figura 5.2-15. Calibracin basada en porcentajes. Resultados Ronda del Tamarguillo

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2627 1119.7 -627.80 -517.78 17.52

2632 1861.5 693.99 952.51 -37.25

2691 1483.0 -883.56 490.79 44.45

Tabla 5.2-4. Calibracin basada en porcentajes. Tramos detectores en la zona 2

215

Pruebas del sistema

Figura 5.2-16. Calibracin basada en porcentajes. Resultados Puente Cristo de la Expiracin

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2088 481.98 10.92 -247.83 -2169.5

2093 5430.7 -1471.8 795.58 45.95

2097 1108.1 280.86 1.83 99.35

2122 1644.7 306.87 666.81 -117.29

2130 555.29 -16.25 108.90 -570.15

Tabla 5.2-5. Calibracin basada en porcentajes. Tramos detectores en la zona 3

216

Pruebas del sistema

Figura 5.2-17. Calibracin basada en porcentajes. Resultados Rep. Argentina Lopez de Gomara

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

1991 1335.2 451.30 780.17 -72.87

2043 997.26 -348.07 -124.74 64.16

2066 1417.2 7.66 343.63 -4386.0

2147 1146.9 -1012.9 -505.89 50.06

2224 1004.6 -39.39 647.32 -1543.4

2352 1299.6 -475.51 -117.88 75.21

2356 0.00 0.00 0.00 0.00

Tabla 5.2-6. Calibracin basada en porcentajes. Tramos detectores en la zona 4

217

Pruebas del sistema

5.2.2

Prueba de calibracin basada en clculo K-mn

Este algoritmo se introduce como posible solucin al tratamiento independiente que el mtodo basado en porcentajes realiza sobre los tramos detectores. Tratamos as de agrupar los tramos en zonas de influencia y escoger una solucin intermedia que trate de minimizar las desviaciones. El mtodo de clculo ya fue expuesto en el captulo 4. Vamos a aplicar el algoritmo a la misma red del caso anterior, igualmente seleccionaremos 25 iteraciones y un valor de parmetro K=3. La validez de la matriz inicial, que es la misma que en el ejemplo anterior, es pues del 46,07%. Mostramos a continuacin la tabla con los resultados obtenidos:

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

620 1785.9 -5451.4 -2025.7 62.84

642 1119.4 -3254.8 -1542.6 52.61

723 1254.9 -387.48 -220.28 43.15

764 591.24 -1164.1 -1058.6 9.07

796 1528.8 -335.11 -319.57 4.64

800 674.00 -387.37 -346.26 10.61

801 512.11 112.41 66.99 40.41

804 1029.4 -715.40 -628.86 12.10

805 2436.2 473.25 537.61 -13.60

818 1465.5 583.20 575.43 1.33

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

820 1427.1 -489.75 -509.21 -3.97

885 1099.5 -169.90 -50.63 70.20

911 944.83 -1172.5 -1094.8 6.63

918 2679.0 730.58 849.76 -16.31

924 1257.2 164.16 67.46 58.91

1067 194.02 -396.10 -273.83 30.87

1225 890.12 -776.52 -728.07 6.24

1227 3178.7 1106.8 1046.5 5.45

1230 1312.5 255.05 285.71 -12.02

1244 2704.2 719.38 748.72 -4.08

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

1251 3041.4 881.47 958.38 -8.73

1276 2227.0 796.03 895.04 -12.44

1294 342.64 -249.78 -242.34 2.98

1297 2031.1 -197.32 -137.80 30.16

1301 1162.9 434.42 420.44 3.22

1303 3635.6 1226.8 1265.8 -3.18

1315 4342.0 1656.5 1709.4 -3.19

1323 2794.3 851.77 877.98 -3.08

1331 854.27 101.88 -33.31 67.30

1460 3263.2 456.76 451.80 1.09

218

Pruebas del sistema

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

1491 1558.6 360.69 330.02 8.50

1502 1884.6 350.78 221.45 36.87

1520 1315.9 98.42 92.74 5.77

1537 2230.1 557.85 591.19 -5.98

1540 784.46 -889.70 -775.10 12.88

1577 1836.9 -339.98 -122.00 64.12

1594 447.84 -461.72 -586.26 -26.97

1613 1341.3 348.13 364.45 -4.69

1617 1856.9 5.94 -127.21 -2041.5

1622 1715.7 -78.97 110.62 -40.08

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

1696 539.10 30.86 267.63 -767.24

1736 3896.6 -1155.1 -820.32 28.98

1753 7493.3 2087.1 3119.6 -49.47

1802 1524.0 -885.64 -528.37 40.34

1809 1381.3 -1260.8 -1087.8 13.72

1849 975.43 -97.47 -74.84 23.22

1855 1038.6 385.29 411.45 -6.79

1868 657.95 -778.42 -392.81 49.54

1871 1128.6 104.80 -106.28 -1.41

1926 1989.8 651.49 775.77 -19.08

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

1941 1876.7 727.65 701.46 3.60

1979 104.59 -219.72 -122.30 44.34

1991 1335.2 451.30 690.82 -53.07

2043 997.26 -348.07 -279.62 19.67

2066 1417.2 7.66 106.10 -1285.1

2088 481.98 10.92 -35.18 -222.16

2093 5430.7 -1471.8 -716.93 51.29

2097 1108.1 280.86 224.24 20.16

2122 1644.7 306.87 463.47 -51.03

2130 555.29 -16.25 -50.63 -211.57

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2147 1146.9 -1012.9 -816.99 19.34

2210 2153.7 562.40 630.58 -12.12

2224 1004.6 -39.39 25.56 35.11

2352 1299.6 -475.51 -383.89 19.27

2356 0.00 0.00 0.00 0.00

2393 1121.2 -465.23 -187.16 59.77

2433 2461.1 -516.98 -266.94 48.37

2447 1301.8 -2102.8 -2049.0 2.56

2475 1957.8 123.24 65.29 47.02

2551 2713.4 1116.8 1175.6 -5.26

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2579 544.53 -1371.1 -1110.7 18.99

2580 2582.6 -488.31 -377.47 22.70

2586 1081.5 -1455.1 -1419.5 2.45

2623 446.01 -691.62 -584.80 15.44

2627 1119.7 -627.80 -574.98 8.41

2632 1861.5 693.99 814.27 -17.33

2647 1049.3 -215.14 -85.01 60.49

2668 218.50 -76.03 -91.54 -20.40

2670 1082.6 -853.79 -658.37 22.89

2671 284.56 125.76 -106.51 15.31

219

Pruebas del sistema

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2675 1309.0 -741.38 -659.05 11.10

2691 1483.0 -883.56 -655.28 25.84

2699 1189.2 339.08 371.94 -9.69

2788 7233.6 1795.0 3617.9 -101.56

2794 3380.2 1199.6 1117.4 6.85

2799 5019.2 1140.4 1634.9 -43.37

2843 2968.7 -219.52 216.98 1.16

2847 4006.0 -139.61 426.46 -205.47

2868 521.53 -1089.8 -1147.5 -5.30

2869 1356.3 -1615.3 -1394.7 13.65

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2932 1240.8 -142.5 30.85 78.36

2935 2427.5 25.56 38.85 -52.00

2944 2421.0 457.88 491.87 -7.42

2991 1719.2 -878.3 -867.9 1.17

3118 793.70 339.43 232.08 31.63

Tabla 5.2-7. Valores de los detectores de flujo del algoritmo de calibracin K-mn

La matriz calibrada obtenida por este mtodo alcanza una similitud del 54,55% y un error del 35,52%. Por lo tanto, el segundo mtodo obtiene una mejora menor que el algoritmo basado en porcentajes en cuanto al parmetro de similitud, pero comete un error ligeramente inferior al primer mtodo. Si consideramos la suma de las diferencias de volmenes, obtenemos que la matriz inicial produce un total de 64489,14 vehculos errneos en la red, el algoritmo basado en porcentajes, reduce este valor hasta el 59060,98 y el algoritmo K-mn lo reduce hasta 5882554 vehculos. Por tanto, el segundo algoritmo ha conseguido disminuir el nmero de vehculos que atravesaban tramos errneos. Esto puede parecer contradictorio, pero responde al hecho de que los errores en ambas matrices calibradas se producen de forma diferente. El escoger un mtodo u otro depender del objetivo que se pretenda perseguir. El primer mtodo distribuye el error, por lo que el parmetro de similitud aumenta. Sin embargo, desde un punto de vista ms exacto, el segundo algoritmo corrige ms trayectorias incorrectas. En cualquier caso las

220

Pruebas del sistema

diferencias son mnimas, y ambos mtodos se aproximan a la matriz ptima. Adems, el escenario en que se han realizado las pruebas, no es el ms apropiado para realizar una comparacin entre ambos algoritmos, ya que el principal problema que posee el primer algoritmo, y que el segundo trata de corregir, puede obviarse en este escenario, ya que al ser pocos los tramos detectores, 95 frente a un total de 4422 tramos, y el estar muy distribuidos por la red, hace que la suposicin de que los tramos son elementos aislados y no dependen unos de otros es bastante realista. En un caso real, y disponiendo de un mayor nmero de tramos detectores para poder llevar a cabo un estudio ms completo debera inclinar la balanza a favor del segundo algoritmo. Al igual que en el ejemplo anterior, se adjuntan los grficos que representan los flujos en los tramos de la red producidos por la matriz original y por la matriz calibrada que genera el algoritmo de calibracin basado en K-mn.

221

Pruebas del sistema

Figura 5.2-18. Zonificacin del escenario

Figura 5.2-19. Cdigo de colores

222

Pruebas del sistema

Las siguientes imgenes muestran los flujos antes y despus de la calibracin. Estn ordenadas por zonas. En la parte superior se muestra la situacin producida por la matriz inicial, y debajo de sta los resultados obtenidos con la matriz calibrada:

Figura 5.2-20. Resultados de la calibracin basada en algoritmo K-mn. Zona 1.

223

Pruebas del sistema

Figura 5.2-21. Resultados de la calibracin basada en algoritmo K-mn. Zona 2.

224

Pruebas del sistema

Figura 5.2-22. Resultados de la calibracin basada en algoritmo K-mn. Zona 3.

225

Pruebas del sistema

Figura 5.2-23. Resultados de la calibracin basada en algoritmo K-mn. Zona 4.

226

Pruebas del sistema

Figura 5.2-24. Resultados de la calibracin basada en algoritmo K-mn. Zona 5.

227

Pruebas del sistema

Figura 5.2-25. Resultados de la calibracin basada en algoritmo K-mn. Zona 6.

228

Pruebas del sistema

Figura 5.2-26. Resultados de la calibracin basada en algoritmo K-mn. Zona 7.

229

Pruebas del sistema

Figura 5.2-27. Resultados de la calibracin basada en algoritmo K-mn. Zona 8.

230

Pruebas del sistema

Figura 5.2-28. Resultados de la calibracin basada en algoritmo K-mn. Zona 9.

231

Pruebas del sistema

Figura 5.2-29. Resultados de la calibracin basada en algoritmo K-mn. Zona 10.

232

Pruebas del sistema

Figura 5.2-30. Resultados de la calibracin basada en algoritmo K-mn. Zona 11.

233

Pruebas del sistema

A continuacin, y de la misma manera que en el ejemplo anterior, se muestran unas imgenes de unas zonas ampliadas del viario que poseen tramos con detectores. Se trata de cuatro zonas repartidas a lo largo del viario, y se han escogido para observar como se producen cambios tanto en los tramos con detectores, como en los tramos que lo rodean. Los tramos con detectores que se incluyen en estas zonas, se muestran en la siguiente tabla: Cdigos de tramos
Zona 1: Avda. La Palmera Repblica Argentina Zona 2: Ronda del Tamarguillo Zona 3: Puente Cristo de la Expiracin Zona 4: Rep. Argentina Lopez de Gomara {1941, 1926, 2847, 2868, 764} {2691, 2627, 2632} {2088, 2093, 2097, 2130, 2122} {2043, 2352, 2147, 2066, 1991, 2224, 2356}

Tabla 5.2-8. Tramos detectores incluidos en las zonas representadas

Se muestra la situacin antes y despus de la calibracin:

234

Pruebas del sistema

Figura 5.2-31. Calibracin basada en clculo K-mn. Resultados Avda de la Palmera Repblica Argentina.

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

764 591.24 -1164.1 -1058.6 9.07

1926 1989.8 651.49 775.77 -19.08

1941 1876.7 727.65 701.46 3.60

2847 4006.0 -139.61 426.46 -205.47

2868 521.53 -1089.8 -1147.5 -5.30

Tabla 5.2-9. Calibracin basada en clculo K-mn. Tramos detectores en la zona 1

235

Pruebas del sistema

Figura 5.2-32. Calibracin basada en clculo K-mn. Resultados Ronda del Tamarguillo

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2627 1119.7 -627.80 -574.98 8.41

2632 1861.5 693.99 814.27 -17.33

2691 1483.0 -883.56 -655.28 25.84

Tabla 5.2-10. Calibracin basada en clculo K-mn. Tramos detectores en la zona 2

236

Pruebas del sistema

Figura 5.2-33. Calibracin basada en clculo K-mn. Resultados Puente Cristo de la Expiracin

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

2088 481.98 10.92 -35.18 -222.16

2093 5430.7 -1471.8 -716.93 51.29

2097 1108.1 280.86 224.24 20.16

2122 1644.7 306.87 463.47 -51.03

2130 555.29 -16.25 -50.63 -211.57

Tabla 5.2-11. Calibracin basada en porcentajes. Tramos detectores en la zona 3


237

Pruebas del sistema

Figura 5.2-34. Calibracin basada en clculo K-mn. Resultados Rep. Argentina Lopez de Gomara

Tramo Volumen Dif_vol_inicial Dif_vol_final Mejora (%)

1991 1335.2 451.30 690.82 -53.07

2043 997.26 -348.07 -279.62 19.67

2066 1417.2 7.66 106.10 -1285.1

2147 1146.9 -1012.9 -816.99 19.34

2224 1004.6 -39.39 25.56 35.11

2352 1299.6 -475.51 -383.89 19.27

2356 0.00 0.00 0.00 0.00

Tabla 5.2-12. Calibracin basada en clculo K-mn. Tramos detectores en la zona 4

238

Pruebas del sistema

5.2.3

Comparativa de mtodos

A lo largo de la presentacin de las pruebas realizadas sobre los algoritmos, ya se han comentado los resultados obtenidos, haciendo un anlisis de cual de los dos algoritmos consigue mejores resultados. En cualquier caso, un estudio a fondo de ambos mtodos permitira obtener una mejor certeza de la superioridad de uno frente al otro. Desde un punto de vista terico, el mtodo de calibracin basado en clculo K-mn debera proporcionar mejores resultados, ya que procura tratar los tramos como parte de un todo que es la red, y no de forma aislada como en el caso del algoritmo basado en porcentajes. Se podra decir, que el algoritmo basado en porcentajes puede producir resultados impredecibles en ciertas redes si se dan las condiciones necesarias. El segundo mtodo pretende ofrecer soluciones a esos casos en que el primer mtodo puede producir resultados no deseables. En cualquier caso, y adelantndonos a las conclusiones del proyecto, diremos que el proceso de calibracin debera ser un proceso iterativo, partiendo de estos mtodos u otros que se desarrollen, procurando dar las condiciones para que los algoritmos converjan hacia la solucin del problema, la matriz ptima. En ese caso, nos decantamos hacia el segundo mtodo que ser ms estable y controlable que el primero. Por ltimo, vamos a hacer una comparativa en un factor que no se ha comentado en las pruebas y de radical importancia en cuanto a algoritmos se trata como es el tiempo de ejecucin. La siguiente tabla muestra los tiempos parciales de cada uno de los algoritmos, as como el total, con el objetivo de su comparacin.

239

Pruebas del sistema

Mtodo basado en porcentajes Iteracin asignacin Clculo K-mn (K=3) Calibracin Total ~61,07 ~0 ~1525

Mtodo basado en clculo K-mn ~15.84 ~1300 ~1200 ~2900

Tabla 5.2-13. Comparativa de tiempo de ejecucin Como podemos ver, el algoritmo basado en clculo K-mn requiere del doble de tiempo que el basado en porcentajes. Esto se debe principalmente a dos factores: Clculo de las k rutas mnimas. Procesamiento de la informacin de marcado de rutas para la calibracin.

El procesamiento que el segundo algoritmo realiza sobre los datos con el fin de realizar un tratamiento ms inteligente de la informacin de diferencias de flujo en los tramos de la red, implica un mayor tiempo de clculo. El hecho de diferir el coste en tiempo de las iteraciones de asignacin en ambos mtodos se debe a que el marcado de rutas del primer algoritmo se realiza de forma paralela a la asignacin, por lo que el tiempo de ejecucin se debe casi exclusivamente a dichas iteraciones. En el segundo mtodo, estos procesos son por construccin secuenciales, por lo que el tiempo de iteracin de asignacin se reduce drsticamente.

240

Conclusiones y extensiones

6 Conclusiones y extensiones
Es este captulo se realiza un resumen del trabajo realizado en el proyecto, comentando las principales conclusiones a las que se ha llegado y proponiendo posibles extensiones al trabajo realizado.

6.1 Conclusiones

El objetivo principal del proyecto consista en el diseo e implementacin de algoritmos de calibracin, que aportasen como novedad principal, la inclusin de una asignacin de trfico como parte intrnseca del proceso de estimacin de matrices origen-destino. Conviene resaltar el hecho de que el problema de calibracin de matrices O-D tiene infinitas soluciones, y el objetivo de los algoritmos que se han implementado es estimar una nueva matriz de viajes, que se aproxime a la ptima ms que la matriz que se toma como inicial. Los procesos, en ningn caso, buscan obtener la matriz que anule las diferencias de flujo en los tramos, sino reducirlos en la medida de lo posible. En el captulo 1 se realiz una breve introduccin sobre estimacin de matrices O-D, presentando algunos de los mtodos existentes. Igualmente, se presentaron algunos de los conceptos usados a lo largo de este documento, como son matrices O-D, nodos, tramos, En el captulo 2 se document el algoritmo de asignacin basado en el algoritmo de Frank-Wolfe, que se ha usado como base de las calibraciones implementadas. As mismo, se present un estudio sobre algoritmos de ruta mnima que condujeron a la implementacin de un algoritmo de bsqueda de las k rutas mnimas (K-mn). El captulo 3 comprende el modelado orientado a objetos de los algoritmos diseados e implementados. En concreto, se incluyeron y documentaron los diagramas

241

Conclusiones y extensiones

pertenecientes a UML (Unified Modelling Language) que sirven para la especificacin de dichos procesos. El captulo 4 incluye la descripcin de los dos algoritmos implementados, incluyendo una descripcin de los interfaces diseados para la aplicacin. Igualmente, se realizaron unas pruebas sobre escenarios pequeos con el fin de ilustrar la evolucin de los algoritmos. El captulo 5 constituye las pruebas finales de los algoritmos, y su aplicacin a problemas reales. Estas pruebas tienen como finalidad el anlisis de los resultados obtenidos y la comparacin entre las dos implementaciones. Se han desarrollado dos algoritmos de calibracin basados en ese principio, los cuales presentaban diferentes maneras de aprovechar la informacin que el algoritmo de asignacin proporcionaba. Partimos, por tanto, en ambos casos de una preasignacin de trfico, que permite conocer los flujos que la matriz de viajes inicial produce y tener una serie de datos de los que partir como son las desviaciones de flujo en los tramos de la red. Ambos algoritmos constituyen diferentes propuestas para el procesamiento de dichos datos y posterior modificacin de la matriz de viajes. Dichos algoritmos han sido totalmente integrados en la aplicacin TRAMOS desarrollada por el Departamento de Organizacin Industrial y Gestin de Empresas de la Escuela Superior de Ingenieros de Sevilla. Las pruebas a las que se ha sometido a ambos algoritmos permiten concluir que ambos algoritmos proporcionan mejores estimaciones de la matriz O-D de la que se parte. Se dispona de un nmero limitado de tramos detectores a lo largo de la red, en concreto de 95 puntos de medida de los 4422 tramos totales de los que constaba la red de las pruebas de integracin, lo cual slo nos da una visin parcial de la validez de las matrices de viajes. El problema del que adolece el primer algoritmo y que ya se coment en el captulo 4 cuando se presentaron ambos algoritmos, se hace ms patente conforme aumenta el nmero de tramos detectores en la red y la aproximacin de suponer los tramos como elementos aislados se hace cada vez ms inapropiada. Cuando el nmero de tramos detectores es pequeo y no se encuentran en las mismas zonas de

242

Conclusiones y extensiones

la red, la interdependencia es muy dbil, y el primer algoritmo proporciona buenos resultados. En cualquier caso, resulta tremendamente difcil especificar cul de los dos algoritmos proporciona mejores resultados, aunque como ya se ha comentado a lo largo de las pruebas del sistema, el segundo algoritmo debera proporcionar soluciones ms estables en la mayora de los casos. A favor de la primera implementacin hay que decir que el tiempo necesario para realizar una calibracin es del orden de la mitad que en la segunda implementacin, por lo que en cuestin de tiempo, el primero es bastante mejor que el segundo. Resulta evidente que una implementacin que proporcionase resultados realmente tiles en cuanto a estimacin de matrices requerira de un proceso iterativo, en el cual cada iteracin tomase como matriz inicial la matriz calibrada en la iteracin anterior. En esta implementacin, el segundo algoritmo debera permitir converger con mayor facilidad hacia una solucin ptima. Los algoritmos diseados e implementados han sido desarrollados mediante metodologa UML (Lenguaje Unificado de Modelado), incluido dentro de las tcnicas recomendadas por el Ministerio de Administraciones Pblicas para el desarrollo de proyectos (mtrica v3.0).

6.2 Posibles extensiones

Como ya se ha comentado en el apartado anterior, una posible extensin de este proyecto debera consistir en la implementacin de un algoritmo que permita un proceso iterativo de calibracin. Dado que estos algoritmos permiten la estimacin de una matriz de viajes que reduce las diferencias de flujo en los tramos de la red, una implementacin iterativa de los mismos debera conseguir que el proceso converja hacia una matriz ptima. Por otro lado, sera posible realizar otras implementaciones de calibracin que

243

Conclusiones y extensiones

realicen un procesamiento de la informacin proporcionada por el algoritmo de asignacin ms eficiente, en la lnea en que el segundo algoritmo realiza unas ponderaciones sobre las variaciones que se requieren de los elementos de la matriz. Es evidente que estas necesidades no han de ser compatibles entre s, por lo que se pueden proponer alternativas a dicha ponderacin. Como ampliacin al algoritmo desarrollado en este proyecto, sera interesante incluir la posibilidad de limitar las variaciones que puedan sufrir los elementos de la matriz O-D. Con vistas a la mejora de los algoritmos desarrollados en este proyecto, sera interesante buscar mtodos que permitan acelerar los procesos, mediante un acceso ms rpido a los datos u otras soluciones que se busquen. Sera interesante realizar un estudio sobre matrices origen-destino, con el objetivo de poder compararlas y valorar de forma objetiva y clara la validez de las mismas. Estos mtodos de validacin permitiran analizar los resultados obtenidos con los mtodos de calibracin aqu presentados y otros desarrollados en el futuro y poder compararlos de forma cuantitativa.

244

Anexo I

7 Bibliografa
[Aho1988] Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman. Estructuras y algoritmos. Adison-Wesley Iberoamericana. Mexico DF, 1988. [Bec1956] Beckmann, M. J., C. B. McGuire, and C. B. Winsten (1956). Studies in the Economics of Transportation. New Haven, CT: Yale University Press. [Bie1995] Michel Bierlaire. Mathematical models for transportation demand analysis. Facults Universitaries Notre-Dame de la Paix de Namur. Faculte des Sciences. Dpartment de Mathmatique, 1995. [Chi1994] Chin, S., H. Hwang and T. Pei. Using Neural Networks to Synthesize Origin-Destination Flows in a Traffic Circle. Transportation Research Board. 1994. [Dij1959] Dijkstra, E.W. A note on flow problems in conexion with graphs, Numerische Mathemathic, 1959 [Eas1993a] Easa, S. M. Urban Transportation in Practice, I: Conventional Analysis. J. Transp. Engrg., ASCE, 119(6), 793-815. 1993. [Epp1994] David Eppstein. Finding the k Shortest Paths. Department of Information and Computer Science. University of California, Irvine, 1994. [Fra1956] Frank, M. and P. Wolfe (1956). An algorithm for quadratic programming. Naval research logistics quarterly 3 (1-2), 95-110. [God2002] Antonio Prez Godoy. Extrapolacin temporal de matrices Origen-Destino (O-D) Mediante programacin Lineal, 2002.

[Gur1980] Gur, J., M. Turnquist, M. Schneider, L. Leblanc and D. Kurth. Estimation

245

Anexo I

of an Origin Destination Trip Table on Observed Link Volumes and Turning Movements. Technical Report, FHWA. 1980. [Hol1976] Holm, T. Jensen, S. K. Nielsen, A. Christensen, B. Johnsen and G. Ronby. Calibrating traffic models on traffic census results only. Traffic Engineering and Control, April: 137-140. 1976. [Kur1979] Kurth, D. M. Scheneider and Y. Gur. Small-Area Trip Distribution Model. Transportation Research Record 728: 35-40. 1979. [Lar1997] Larraeta, J., Canca J. D.y Racero J. Modelos de Planificacin de Trfico. Grupo de ingeniera de Organizacin. Departamento de Organizacin Industrial y Gestin de Empresas. 1997 [Low1972] Low, D. E. A New Approach to Transportation Systems Modeling. Traffic Quarterly, 26: 391-404. 1972. [Nan1997] Dhruv Nanda. A Method to Enhance the Performance of Synthetic OriginDestination (O-D) Trip Table Estimation Models. Faculty of the Virginia Polyechnic Institute and State University, Blacksburg, Virginia, 1997. [Ngu1977] Nguyen, S. Estimating an OD Matrix from Network Data: A Network Equilibrium Approach. University of Montreal Publication No. 60. 1977. [Que1998] Ernesto de Queirs Vieira Martins. The K Shortest Path Problem. Departamento de Matemtica. Universidad de Coimbra, Portugal 1998. [Que1999] Ernesto de Queirs Vieira Martins. A New Improvement for a k Shortest Paths Algorithm. Departamento de Matemtica. Universidad de Coimbra, Portugal 1999.

[Rac2001] Jess Racero Moreno. Tcnicas de Simulacin y planificacin del transporte

246

Anexo I

para el estudio de trfico en entornos urbanos y metropolitanos. Dpto. de Organizacin Industrial y Gestin de Empresas. Escuela Superior de Ingenieros. Universidad de Sevilla, 2001. [Rau1995] James Raumbaugh. Modelado y Diseo Orientado a Objetos. General Electric Research and Development Center Schenectady, Nueva York, 1995. [Siv1991] Sivanandan, R. A Linear Programming Approach for Synthesizing OriginDestination Trip Tables From Link Traffic Volumes. Polytechnic Institute & State University, Blacksburg, Virginia. 1991. [She1994a] Sherali, D., R. Sivanandan and A.G. Hobeika. A Linear Programming Approach for Synthesizing Origin Destination (O-D) Trip Tables from Link Traffic Volumes. Transportation Research-B, 28B: 213-233. 1994a. [She1994b] Sherali, D., R. Sivanandan and A.G. Hobeika and A. Narayanan. Estimating Missing Link Volumes in a Traffic Network A Linear Programming Approach. Presentation at the TRB Annual Meeting. 1994b. [Spi1987] Spiess, H. Maximum Likelihood Methods, 1987 [Spi1989] Spiess, H. and Florian, M. (1989), Optimal Strategies: A New Assignment Model for Transit Networks, Transportation Research B, Vol 23B, N2, 83-102. [Spi1990] Spiess Heinz A gradient approach for the O-D matrix Adjustment problem. Emme/2 Support Center. Publication #693, Centre of Research on Transportation, University of Montreal. Mayo 1990. [Van1978] Van Zuylen, H. J. The Information Minimization Method: Validity and Applicability to Transport Planing in New Developments in Modeling Travel Demand and Urban Systems. G. R. H. Jansen et al., Saxon, Farnborough. 1978. [War1952] Wardrop, J. G. (1952). Some theoretical aspects of road traffic research. Proceedings of the Institute of Civil Engineers, Part II 1, 325-378.

247

Anexo I

[Wil1978] Willumsen, L. G. Estimation of an O-D Matrix from Traffic Counts A Review. Working Paper 99, Institute of Transportation Studies, University of Leeds. 1978. [Yan1992] Yang, H., T. Akiyama and T. Sasaki. A Neural Network Approach to the Identification of Real Time Origin-Destination from Traffic Counts. Proceedings of the International Conference on Artificial Intelligence Application in Transportation Engineering, 253-269. 1992.

248

Anexo I

Anexo I. Informes generados en las pruebas del sistema.

249

Anexo I

1. Informes generados en la prueba de validacin del algoritmo de calibracin basado en porcentajes.


Flujos de asignacin resultantes en cada iteracin.

Los siguientes datos muestran los flujos de asignacin resultantes en cada iteracin del algoritmo de asignacin. Cada fila se corresponde con un tramo de la red e incluye, en el siguiente orden, cdigo del nodo origen, cdigo del nodo destino, cdigo del tramo y flujo de asignacin. Se incluye tambin el factor de ponderacin de cada iteracin y el tiempo medio de viaje en la red.
MATRIZ ASIGNACION ITERACION 0 1 2 1 1100.00 1 3 2 400.00 2 1 3 1037.29 2 3 4 50.00 2 4 5 1900.00 3 1 6 400.00 3 2 7 50.00 3 4 8 40.00 3 5 9 30.00 4 2 10 1301.70 4 3 11 40.00 4 5 12 800.00 5 3 13 30.00 5 4 14 1369.54 Lambda= 1.000000 Tiempo viaje = 10.400000 MATRIZ ASIGNACION ITERACION 1 1 2 1 864.63 1 3 2 635.37 2 1 3 746.81 2 3 4 520.75 2 4 5 1429.25 3 1 6 690.48 3 2 7 285.37 3 4 8 510.75 3 5 9 177.11 4 2 10 1011.22 4 3 11 477.58 4 5 12 652.89 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.294216 Tiempo viaje = 46.220112 MATRIZ ASIGNACION ITERACION 2 1 2 1 913.32 1 3 2 597.02 2 1 3 613.00 2 3 4 413.01 2 4 5 1526.64 3 1 6 834.64 3 2 7 236.68

251

Anexo I
3 3 4 4 4 5 5 4 5 2 3 5 3 4 8 9 10 11 12 13 14 413.36 312.18 867.06 756.82 517.82 30.00 1369.54

Lambda= 0.206884 Tiempo viaje = 48.352379 MATRIZ ASIGNACION ITERACION 3 1 2 1 916.40 1 3 2 593.77 2 1 3 603.71 2 3 4 438.36 2 4 5 1501.46 3 1 6 843.75 3 2 7 233.60 3 4 8 438.54 3 5 9 307.53 4 2 10 857.95 4 3 11 761.28 4 5 12 522.47 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016494 Tiempo viaje = 49.356575 MATRIZ ASIGNACION ITERACION 4 1 2 1 914.48 1 3 2 595.52 2 1 3 594.58 2 3 4 436.91 2 4 5 1503.09 3 1 6 852.72 3 2 7 235.52 3 4 8 436.91 3 5 9 302.95 4 2 10 848.98 4 3 11 765.67 4 5 12 527.05 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016490 Tiempo viaje = 49.879856 MATRIZ ASIGNACION ITERACION 5 1 2 1 912.59 1 3 2 597.25 2 1 3 585.60 2 3 4 435.47 2 4 5 1504.69 3 1 6 861.53 3 2 7 237.41 3 4 8 435.31 3 5 9 298.45 4 2 10 840.17 4 3 11 769.98 4 5 12 531.55 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016486

252

Anexo I

Tiempo viaje = 49.943645 MATRIZ ASIGNACION ITERACION 6 1 2 1 915.68 1 3 2 594.00 2 1 3 586.66 2 3 4 439.01 2 4 5 1501.31 3 1 6 860.30 3 2 7 234.32 3 4 8 438.69 3 5 9 294.03 4 2 10 841.40 4 3 11 764.33 4 5 12 535.97 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016482 Tiempo viaje = 49.947227 MATRIZ ASIGNACION ITERACION 7 1 2 1 918.72 1 3 2 591.62 2 1 3 588.53 2 3 4 436.72 2 4 5 1502.94 3 1 6 859.10 3 2 7 231.28 3 4 8 437.06 3 5 9 289.67 4 2 10 842.60 4 3 11 758.78 4 5 12 540.33 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016478 Tiempo viaje = 50.014610 MATRIZ ASIGNACION ITERACION 8 1 2 1 916.76 1 3 2 593.41 2 1 3 589.54 2 3 4 435.29 2 4 5 1504.54 3 1 6 857.92 3 2 7 233.24 3 4 8 435.46 3 5 9 285.40 4 2 10 843.78 4 3 11 753.32 4 5 12 544.60 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016474 Tiempo viaje = 50.051575 MATRIZ ASIGNACION ITERACION 9 1 2 1 919.78 1 3 2 590.22 2 1 3 590.54 2 3 4 433.89 2 4 5 1506.11 3 1 6 856.76

253

Anexo I
3 3 3 4 4 4 5 5 2 4 5 2 3 5 3 4 7 8 9 10 11 12 13 14 230.22 433.89 286.13 844.94 752.89 543.87 30.00 1369.54

Lambda= 0.016470 Tiempo viaje = 50.087940 MATRIZ ASIGNACION ITERACION 10 1 2 1 917.81 1 3 2 592.03 2 1 3 581.64 2 3 4 432.50 2 4 5 1507.66 3 1 6 865.49 3 2 7 232.19 3 4 8 432.34 3 5 9 281.91 4 2 10 836.21 4 3 11 757.41 4 5 12 548.09 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016466 Tiempo viaje = 50.072426 MATRIZ ASIGNACION ITERACION 11 1 2 1 920.81 1 3 2 588.87 2 1 3 582.76 2 3 4 436.08 2 4 5 1504.24 3 1 6 864.20 3 2 7 229.19 3 4 8 435.76 3 5 9 282.71 4 2 10 837.50 4 3 11 756.91 4 5 12 547.29 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016462 Tiempo viaje = 50.063568 MATRIZ ASIGNACION ITERACION 12 1 2 1 918.82 1 3 2 591.52 2 1 3 584.69 2 3 4 433.84 2 4 5 1505.81 3 1 6 862.94 3 2 7 231.18 3 4 8 434.19 3 5 9 283.48 4 2 10 838.76 4 3 11 756.42 4 5 12 546.52 5 3 13 30.00 5 4 14 1369.54

254

Anexo I
Lambda= 0.016458 Tiempo viaje = 50.084297 MATRIZ ASIGNACION ITERACION 13 1 2 1 921.80 1 3 2 588.37 2 1 3 585.77 2 3 4 432.47 2 4 5 1507.36 3 1 6 861.69 3 2 7 228.20 3 4 8 432.64 3 5 9 284.25 4 2 10 840.01 4 3 11 755.94 4 5 12 545.75 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016454 Tiempo viaje = 50.075035 MATRIZ ASIGNACION ITERACION 14 1 2 1 919.80 1 3 2 590.21 2 1 3 586.83 2 3 4 431.11 2 4 5 1508.89 3 1 6 860.47 3 2 7 230.20 3 4 8 431.11 3 5 9 280.07 4 2 10 841.23 4 3 11 750.54 4 5 12 549.93 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016450 Tiempo viaje = 50.061913 MATRIZ ASIGNACION ITERACION 15 1 2 1 922.76 1 3 2 587.08 2 1 3 587.86 2 3 4 434.71 2 4 5 1505.45 3 1 6 859.27 3 2 7 227.24 3 4 8 434.55 3 5 9 280.89 4 2 10 842.43 4 3 11 750.15 4 5 12 549.11 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016446 Tiempo viaje = 50.072292 MATRIZ ASIGNACION ITERACION 16 1 2 1 920.74 1 3 2 588.93 2 1 3 588.89 2 3 4 433.32 2 4 5 1507.01

255

Anexo I
3 3 3 3 4 4 4 5 5 1 2 4 5 2 3 5 3 4 6 7 8 9 10 11 12 13 14 858.08 229.26 432.99 281.70 843.62 749.78 548.30 30.00 1369.54

Lambda= 0.016442 Tiempo viaje = 50.094494 MATRIZ ASIGNACION ITERACION 17 1 2 1 923.69 1 3 2 585.83 2 1 3 589.89 2 3 4 431.95 2 4 5 1508.53 3 1 6 856.92 3 2 7 226.31 3 4 8 431.47 3 5 9 282.49 4 2 10 844.78 4 3 11 749.41 4 5 12 547.51 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016438 Tiempo viaje = 50.083885 MATRIZ ASIGNACION ITERACION 18 1 2 1 921.66 1 3 2 587.71 2 1 3 581.02 2 3 4 430.60 2 4 5 1510.04 3 1 6 865.63 3 2 7 228.34 3 4 8 429.96 3 5 9 283.27 4 2 10 836.07 4 3 11 758.91 4 5 12 546.73 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016434 Tiempo viaje = 50.074730 MATRIZ ASIGNACION ITERACION 19 1 2 1 924.59 1 3 2 584.62 2 1 3 582.15 2 3 4 429.28 2 4 5 1511.52 3 1 6 864.35 3 2 7 225.41 3 4 8 428.48 3 5 9 279.11 4 2 10 837.35 4 3 11 753.46 4 5 12 550.89 5 3 13 30.00 5 4 14 1369.54

256

Anexo I

Lambda= 0.016430 Tiempo viaje = 50.040710 MATRIZ ASIGNACION ITERACION 20 1 2 1 922.54 1 3 2 586.52 2 1 3 583.27 2 3 4 427.97 2 4 5 1512.97 3 1 6 863.08 3 2 7 227.46 3 4 8 427.03 3 5 9 279.95 4 2 10 838.62 4 3 11 753.03 4 5 12 550.05 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016426 Tiempo viaje = 50.067509 MATRIZ ASIGNACION ITERACION 21 1 2 1 925.46 1 3 2 583.45 2 1 3 584.36 2 3 4 431.62 2 4 5 1509.47 3 1 6 861.84 3 2 7 224.54 3 4 8 430.53 3 5 9 280.77 4 2 10 839.86 4 3 11 752.60 4 5 12 549.23 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016422 Tiempo viaje = 50.045151 MATRIZ ASIGNACION ITERACION 22 1 2 1 923.40 1 3 2 585.37 2 1 3 585.44 2 3 4 430.28 2 4 5 1510.96 3 1 6 860.61 3 2 7 226.60 3 4 8 429.04 3 5 9 281.58 4 2 10 841.09 4 3 11 752.19 4 5 12 548.42 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016418 Tiempo viaje = 50.076515 MATRIZ ASIGNACION ITERACION 23 1 2 1 926.29 1 3 2 582.32 2 1 3 586.50 2 3 4 428.96

257

Anexo I
2 3 3 3 3 4 4 4 5 5 4 1 2 4 5 2 3 5 3 4 5 1512.42 6 859.41 7 223.71 8 427.58 9 277.45 10 842.29 11 746.86 12 552.55 13 30.00 14 1369.54

Lambda= 0.016414 Tiempo viaje = 50.061005 MATRIZ ASIGNACION ITERACION 24 1 2 1 924.22 1 3 2 584.26 2 1 3 587.54 2 3 4 427.67 2 4 5 1513.86 3 1 6 858.23 3 2 7 225.78 3 4 8 426.14 3 5 9 278.31 4 2 10 843.47 4 3 11 746.53 4 5 12 551.69 5 3 13 30.00 5 4 14 1369.54 Lambda= 0.016410 Tiempo viaje = 50.081272 RESULTADO 1 2 1 924.22 1 3 2 584.26 2 1 3 587.54 2 3 4 427.67 2 4 5 1513.86 3 1 6 858.23 3 2 7 225.78 3 4 8 426.14 3 5 9 278.31 4 2 10 843.47 4 3 11 746.53 4 5 12 551.69 5 3 13 30.00 5 4 14 1369.54

258

Anexo I

Caminos encontrados a lo largo de las iteraciones:

El siguiente archivo de salida muestra la totalidad de los caminos encontrados para cada par de centroides en cada iteracin, mostrando los tramos que componen la ruta y el coste en tiempo de los mismos.
Iteracion: 0 Origen: 0 Destino:1 Nmero Tramos2 2: 6.00 1: 0.00 Tiempo viaje: 6.00 Iteracion: 0 Origen: 0 Destino:2 Nmero Tramos2 3: 10.00 1: 0.00 Tiempo viaje: 10.00 Iteracion: 0 Origen: 0 Destino:3 Nmero Tramos3 4: 15.00 2: 6.00 1: 0.00 Tiempo viaje: 15.00 Iteracion: 0 Origen: 0 Destino:4 Nmero Tramos4 5: 21.00 4: 15.00 2: 6.00 1: 0.00 Tiempo viaje: 21.00 Iteracion: 0 Origen: 1 Destino:0 Nmero Tramos2 1: 6.00 2: 0.00 Tiempo viaje: 6.00 Iteracion: 0 Origen: 1 Destino:2 Nmero Tramos2 3: 7.00 2: 0.00 Tiempo viaje: 7.00 Iteracion: 0 Origen: 1 Destino:3 Nmero Tramos2 4: 8.00 2: 0.00 Tiempo viaje: 8.00 Iteracion: 0 Origen: 1 Destino:4 Nmero Tramos3 5: 14.00 4: 8.00 2: 0.00 Tiempo viaje: 14.00 Iteracion: 0

259

Anexo I
Origen: 2 Destino:0 Nmero Tramos2 1: 10.00 3: 0.00 Tiempo viaje: 10.00 Iteracion: 0 Origen: 2 Destino:1 Nmero Tramos2 2: 7.00 3: 0.00 Tiempo viaje: 7.00 Iteracion: 0 Origen: 2 Destino:3 Nmero Tramos2 4: 8.00 3: 0.00 Tiempo viaje: 8.00 Iteracion: 0 Origen: 2 Destino:4 Nmero Tramos2 5: 10.00 3: 0.00 Tiempo viaje: 10.00 Iteracion: 0 Origen: 3 Destino:0 Nmero Tramos3 1: 15.00 2: 8.00 4: 0.00 Tiempo viaje: 15.00 Iteracion: 0 Origen: 3 Destino:1 Nmero Tramos2 2: 8.00 4: 0.00 Tiempo viaje: 8.00 Iteracion: 0 Origen: 3 Destino:2 Nmero Tramos2 3: 8.00 4: 0.00 Tiempo viaje: 8.00 Iteracion: 0 Origen: 3 Destino:4 Nmero Tramos2 5: 5.00 4: 0.00 Tiempo viaje: 5.00 Iteracion: 0 Origen: 4 Destino:0 Nmero Tramos4 1: 21.00 2: 14.00 4: 5.00 5: 0.00 Tiempo viaje: 21.00 Iteracion: 0 Origen: 4 Destino:1 Nmero Tramos3 2: 14.00 4: 5.00 5: 0.00 Tiempo viaje: 14.00 Iteracion: 0 Origen: 4 Destino:2 Nmero Tramos2 3: 10.00

260

Anexo I
5: 0.00 Tiempo viaje:

10.00

Iteracion: 0 Origen: 4 Destino:3 Nmero Tramos2 4: 5.00 5: 0.00 Tiempo viaje: 5.00 Iteracion: 1 Origen: 0 Destino:1 Nmero Tramos3 2: 19.76 3: 11.50 1: 0.00 Tiempo viaje: 19.76 Iteracion: 1 Origen: 0 Destino:2 Nmero Tramos2 3: 11.50 1: 0.00 Tiempo viaje: 11.50 Iteracion: 1 Origen: 0 Destino:3 Nmero Tramos4 4: 50.51 3: 41.49 2: 33.23 1: 0.00 Tiempo viaje: 50.51 Iteracion: 1 Origen: 0 Destino:4 Nmero Tramos6 5: 96.93 3: 85.92 4: 76.90 2: 19.76 3: 11.50 1: 0.00 Tiempo viaje: 96.93 Iteracion: 1 Origen: 1 Destino:0 Nmero Tramos2 1: 30.21 2: 0.00 Tiempo viaje: 30.21 Iteracion: 1 Origen: 1 Destino:2 Nmero Tramos2 3: 7.26 2: 0.00 Tiempo viaje: 7.26 Iteracion: 1 Origen: 1 Destino:3 Nmero Tramos3 4: 16.28 3: 7.26 2: 0.00 Tiempo viaje: 16.28 Iteracion: 1 Origen: 1 Destino:4 Nmero Tramos4 5: 70.28 4: 16.28 3: 7.26 2: 0.00 Tiempo viaje: 70.28

261

Anexo I

Iteracion: 1 Origen: 2 Destino:0 Nmero Tramos2 1: 11.50 3: 0.00 Tiempo viaje: 11.50 Iteracion: 1 Origen: 2 Destino:1 Nmero Tramos2 2: 7.26 3: 0.00 Tiempo viaje: 7.26 Iteracion: 1 Origen: 2 Destino:3 Nmero Tramos2 4: 8.02 3: 0.00 Tiempo viaje: 8.02 Iteracion: 1 Origen: 2 Destino:4 Nmero Tramos2 5: 10.01 3: 0.00 Tiempo viaje: 10.01 Iteracion: 1 Origen: 3 Destino:0 Nmero Tramos3 1: 20.52 3: 8.02 4: 0.00 Tiempo viaje: 20.52 Iteracion: 1 Origen: 3 Destino:1 Nmero Tramos2 2: 30.59 4: 0.00 Tiempo viaje: 30.59 Iteracion: 1 Origen: 3 Destino:2 Nmero Tramos2 3: 8.02 4: 0.00 Tiempo viaje: 8.02 Iteracion: 1 Origen: 3 Destino:4 Nmero Tramos3 5: 19.03 3: 8.02 4: 0.00 Tiempo viaje: 19.03 Iteracion: 1 Origen: 4 Destino:0 Nmero Tramos4 1: 167.19 3: 154.69 4: 145.67 5: 0.00 Tiempo viaje: 167.19 Iteracion: 1 Origen: 4 Destino:1 Nmero Tramos3 2: 183.83 4: 145.67 5: 0.00 Tiempo viaje: 183.83

262

Anexo I
Iteracion: 1 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 1 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 2 Origen: 0 Destino:1 Nmero Tramos2 2: 22.82 1: 0.00 Tiempo viaje: 22.82 Iteracion: 2 Origen: 0 Destino:2 Nmero Tramos2 3: 13.78 1: 0.00 Tiempo viaje: 13.78 Iteracion: 2 Origen: 0 Destino:3 Nmero Tramos3 4: 61.75 2: 22.82 1: 0.00 Tiempo viaje: 61.75 Iteracion: 2 Origen: 0 Destino:4 Nmero Tramos5 5: 85.52 3: 73.91 4: 61.75 2: 22.82 1: 0.00 Tiempo viaje: 85.52 Iteracion: 2 Origen: 1 Destino:0 Nmero Tramos2 1: 18.55 2: 0.00 Tiempo viaje: 18.55 Iteracion: 2 Origen: 1 Destino:2 Nmero Tramos3 3: 32.33 1: 18.55 2: 0.00 Tiempo viaje: 32.33 Iteracion: 2 Origen: 1 Destino:3 Nmero Tramos2 4: 35.24 2: 0.00 Tiempo viaje: 35.24 Iteracion: 2 Origen: 1 Destino:4 Nmero Tramos4 5: 59.01 3: 47.39 4: 35.24 2: 0.00 Tiempo viaje: 59.01

263

Anexo I

Iteracion: 2 Origen: 2 Destino:0 Nmero Tramos2 1: 14.47 3: 0.00 Tiempo viaje: 14.47 Iteracion: 2 Origen: 2 Destino:1 Nmero Tramos2 2: 15.55 3: 0.00 Tiempo viaje: 15.55 Iteracion: 2 Origen: 2 Destino:3 Nmero Tramos2 4: 11.48 3: 0.00 Tiempo viaje: 11.48 Iteracion: 2 Origen: 2 Destino:4 Nmero Tramos2 5: 10.29 3: 0.00 Tiempo viaje: 10.29 Iteracion: 2 Origen: 3 Destino:0 Nmero Tramos3 1: 27.78 3: 11.04 4: 0.00 Tiempo viaje: 27.78 Iteracion: 2 Origen: 3 Destino:1 Nmero Tramos2 2: 21.63 4: 0.00 Tiempo viaje: 21.63 Iteracion: 2 Origen: 3 Destino:2 Nmero Tramos2 3: 11.04 4: 0.00 Tiempo viaje: 11.04 Iteracion: 2 Origen: 3 Destino:4 Nmero Tramos3 5: 22.66 3: 11.04 4: 0.00 Tiempo viaje: 22.66 Iteracion: 2 Origen: 4 Destino:0 Nmero Tramos4 1: 174.64 3: 157.91 4: 145.67 5: 0.00 Tiempo viaje: 174.64 Iteracion: 2 Origen: 4 Destino:1 Nmero Tramos3 2: 172.81 4: 145.67 5: 0.00 Tiempo viaje: 172.81

264

Anexo I
Iteracion: 2 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 2 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 3 Origen: 0 Destino:1 Nmero Tramos2 2: 24.77 1: 0.00 Tiempo viaje: 24.77 Iteracion: 3 Origen: 0 Destino:2 Nmero Tramos2 3: 13.34 1: 0.00 Tiempo viaje: 13.34 Iteracion: 3 Origen: 0 Destino:3 Nmero Tramos4 4: 64.12 3: 50.75 2: 24.77 1: 0.00 Tiempo viaje: 64.12 Iteracion: 3 Origen: 0 Destino:4 Nmero Tramos5 5: 90.31 4: 64.12 3: 50.75 2: 24.77 1: 0.00 Tiempo viaje: 90.31 Iteracion: 3 Origen: 1 Destino:0 Nmero Tramos2 1: 14.45 2: 0.00 Tiempo viaje: 14.45 Iteracion: 3 Origen: 1 Destino:2 Nmero Tramos2 3: 24.91 2: 0.00 Tiempo viaje: 24.91 Iteracion: 3 Origen: 1 Destino:3 Nmero Tramos3 4: 38.28 3: 24.91 2: 0.00 Tiempo viaje: 38.28 Iteracion: 3 Origen: 1 Destino:4 Nmero Tramos4 5: 64.46 4: 38.28 3: 24.91 2: 0.00

265

Anexo I
Tiempo viaje: 64.46

Iteracion: 3 Origen: 2 Destino:0 Nmero Tramos2 1: 16.53 3: 0.00 Tiempo viaje: 16.53 Iteracion: 3 Origen: 2 Destino:1 Nmero Tramos2 2: 12.88 3: 0.00 Tiempo viaje: 12.88 Iteracion: 3 Origen: 2 Destino:3 Nmero Tramos2 4: 10.28 3: 0.00 Tiempo viaje: 10.28 Iteracion: 3 Origen: 2 Destino:4 Nmero Tramos2 5: 10.91 3: 0.00 Tiempo viaje: 10.91 Iteracion: 3 Origen: 3 Destino:0 Nmero Tramos3 1: 36.00 3: 15.64 4: 0.00 Tiempo viaje: 36.00 Iteracion: 3 Origen: 3 Destino:1 Nmero Tramos2 2: 18.02 4: 0.00 Tiempo viaje: 18.02 Iteracion: 3 Origen: 3 Destino:2 Nmero Tramos2 3: 15.64 4: 0.00 Tiempo viaje: 15.64 Iteracion: 3 Origen: 3 Destino:4 Nmero Tramos2 5: 25.11 4: 0.00 Tiempo viaje: 25.11 Iteracion: 3 Origen: 4 Destino:0 Nmero Tramos4 1: 183.11 3: 162.75 4: 145.67 5: 0.00 Tiempo viaje: 183.11 Iteracion: 3 Origen: 4 Destino:1 Nmero Tramos3 2: 168.32 4: 145.67 5: 0.00 Tiempo viaje: 168.32

266

Anexo I
Iteracion: 3 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 3 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 4 Origen: 0 Destino:1 Nmero Tramos2 2: 24.90 1: 0.00 Tiempo viaje: 24.90 Iteracion: 4 Origen: 0 Destino:2 Nmero Tramos2 3: 13.31 1: 0.00 Tiempo viaje: 13.31 Iteracion: 4 Origen: 0 Destino:3 Nmero Tramos4 4: 66.67 2: 27.54 3: 13.31 1: 0.00 Tiempo viaje: 66.67 Iteracion: 4 Origen: 0 Destino:4 Nmero Tramos5 5: 93.68 4: 67.11 3: 53.17 2: 24.90 1: 0.00 Tiempo viaje: 93.68 Iteracion: 4 Origen: 1 Destino:0 Nmero Tramos2 1: 14.20 2: 0.00 Tiempo viaje: 14.20 Iteracion: 4 Origen: 1 Destino:2 Nmero Tramos2 3: 27.18 2: 0.00 Tiempo viaje: 27.18 Iteracion: 4 Origen: 1 Destino:3 Nmero Tramos2 4: 38.06 2: 0.00 Tiempo viaje: 38.06 Iteracion: 4 Origen: 1 Destino:4 Nmero Tramos3 5: 66.17 4: 38.06 2: 0.00 Tiempo viaje: 66.17

267

Anexo I
Iteracion: 4 Origen: 2 Destino:0 Nmero Tramos2 1: 16.67 3: 0.00 Tiempo viaje: 16.67 Iteracion: 4 Origen: 2 Destino:1 Nmero Tramos2 2: 12.73 3: 0.00 Tiempo viaje: 12.73 Iteracion: 4 Origen: 2 Destino:3 Nmero Tramos2 4: 10.56 3: 0.00 Tiempo viaje: 10.56 Iteracion: 4 Origen: 2 Destino:4 Nmero Tramos2 5: 10.89 3: 0.00 Tiempo viaje: 10.89 Iteracion: 4 Origen: 3 Destino:0 Nmero Tramos3 1: 36.36 3: 15.73 4: 0.00 Tiempo viaje: 36.36 Iteracion: 4 Origen: 3 Destino:1 Nmero Tramos2 2: 17.81 4: 0.00 Tiempo viaje: 17.81 Iteracion: 4 Origen: 3 Destino:2 Nmero Tramos2 3: 15.73 4: 0.00 Tiempo viaje: 15.73 Iteracion: 4 Origen: 3 Destino:4 Nmero Tramos2 5: 25.47 4: 0.00 Tiempo viaje: 25.47 Iteracion: 4 Origen: 4 Destino:0 Nmero Tramos4 1: 183.48 3: 162.85 4: 145.67 5: 0.00 Tiempo viaje: 183.48 Iteracion: 4 Origen: 4 Destino:1 Nmero Tramos3 2: 168.05 4: 145.67 5: 0.00 Tiempo viaje: 168.05 Iteracion: 4 Origen: 4 Destino:2 Nmero Tramos2

268

Anexo I
3: 10.01 5: 0.00 Tiempo viaje:

10.01

Iteracion: 4 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 5 Origen: 0 Destino:1 Nmero Tramos2 2: 24.82 1: 0.00 Tiempo viaje: 24.82 Iteracion: 5 Origen: 0 Destino:2 Nmero Tramos2 3: 13.32 1: 0.00 Tiempo viaje: 13.32 Iteracion: 5 Origen: 0 Destino:3 Nmero Tramos4 4: 66.87 2: 27.67 3: 13.32 1: 0.00 Tiempo viaje: 66.87 Iteracion: 5 Origen: 0 Destino:4 Nmero Tramos5 5: 93.80 4: 66.87 3: 52.96 2: 24.82 1: 0.00 Tiempo viaje: 93.80 Iteracion: 5 Origen: 1 Destino:0 Nmero Tramos2 1: 13.95 2: 0.00 Tiempo viaje: 13.95 Iteracion: 5 Origen: 1 Destino:2 Nmero Tramos2 3: 27.04 2: 0.00 Tiempo viaje: 27.04 Iteracion: 5 Origen: 1 Destino:3 Nmero Tramos2 4: 38.12 2: 0.00 Tiempo viaje: 38.12 Iteracion: 5 Origen: 1 Destino:4 Nmero Tramos3 5: 66.59 4: 38.12 2: 0.00 Tiempo viaje: 66.59 Iteracion: 5 Origen: 2 Destino:0 Nmero Tramos2

269

Anexo I
1: 16.82 3: 0.00 Tiempo viaje:

16.82

Iteracion: 5 Origen: 2 Destino:1 Nmero Tramos2 2: 12.82 3: 0.00 Tiempo viaje: 12.82 Iteracion: 5 Origen: 2 Destino:3 Nmero Tramos2 4: 10.55 3: 0.00 Tiempo viaje: 10.55 Iteracion: 5 Origen: 2 Destino:4 Nmero Tramos2 5: 10.86 3: 0.00 Tiempo viaje: 10.86 Iteracion: 5 Origen: 3 Destino:0 Nmero Tramos3 1: 36.71 3: 15.82 4: 0.00 Tiempo viaje: 36.71 Iteracion: 5 Origen: 3 Destino:1 Nmero Tramos2 2: 17.61 4: 0.00 Tiempo viaje: 17.61 Iteracion: 5 Origen: 3 Destino:2 Nmero Tramos2 3: 15.82 4: 0.00 Tiempo viaje: 15.82 Iteracion: 5 Origen: 3 Destino:4 Nmero Tramos2 5: 25.83 4: 0.00 Tiempo viaje: 25.83 Iteracion: 5 Origen: 4 Destino:0 Nmero Tramos4 1: 183.85 3: 162.96 4: 145.67 5: 0.00 Tiempo viaje: 183.85 Iteracion: 5 Origen: 4 Destino:1 Nmero Tramos3 2: 167.80 4: 145.67 5: 0.00 Tiempo viaje: 167.80 Iteracion: 5 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00

270

Anexo I
Tiempo viaje: 10.01

Iteracion: 5 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 6 Origen: 0 Destino:1 Nmero Tramos2 2: 24.74 1: 0.00 Tiempo viaje: 24.74 Iteracion: 6 Origen: 0 Destino:2 Nmero Tramos2 3: 13.34 1: 0.00 Tiempo viaje: 13.34 Iteracion: 6 Origen: 0 Destino:3 Nmero Tramos4 4: 66.63 3: 52.76 2: 24.74 1: 0.00 Tiempo viaje: 66.63 Iteracion: 6 Origen: 0 Destino:4 Nmero Tramos5 5: 93.93 4: 66.63 3: 52.76 2: 24.74 1: 0.00 Tiempo viaje: 93.93 Iteracion: 6 Origen: 1 Destino:0 Nmero Tramos2 1: 13.72 2: 0.00 Tiempo viaje: 13.72 Iteracion: 6 Origen: 1 Destino:2 Nmero Tramos2 3: 26.91 2: 0.00 Tiempo viaje: 26.91 Iteracion: 6 Origen: 1 Destino:3 Nmero Tramos2 4: 38.19 2: 0.00 Tiempo viaje: 38.19 Iteracion: 6 Origen: 1 Destino:4 Nmero Tramos3 5: 67.01 4: 38.19 2: 0.00 Tiempo viaje: 67.01 Iteracion: 6 Origen: 2 Destino:0 Nmero Tramos2 1: 16.96 3: 0.00

271

Anexo I
Tiempo viaje: 16.96

Iteracion: 6 Origen: 2 Destino:1 Nmero Tramos2 2: 12.92 3: 0.00 Tiempo viaje: 12.92 Iteracion: 6 Origen: 2 Destino:3 Nmero Tramos2 4: 10.53 3: 0.00 Tiempo viaje: 10.53 Iteracion: 6 Origen: 2 Destino:4 Nmero Tramos2 5: 10.84 3: 0.00 Tiempo viaje: 10.84 Iteracion: 6 Origen: 3 Destino:0 Nmero Tramos3 1: 36.27 2: 17.41 4: 0.00 Tiempo viaje: 36.27 Iteracion: 6 Origen: 3 Destino:1 Nmero Tramos2 2: 17.41 4: 0.00 Tiempo viaje: 17.41 Iteracion: 6 Origen: 3 Destino:2 Nmero Tramos2 3: 15.90 4: 0.00 Tiempo viaje: 15.90 Iteracion: 6 Origen: 3 Destino:4 Nmero Tramos2 5: 26.19 4: 0.00 Tiempo viaje: 26.19 Iteracion: 6 Origen: 4 Destino:0 Nmero Tramos4 1: 184.22 3: 163.07 4: 145.67 5: 0.00 Tiempo viaje: 184.22 Iteracion: 6 Origen: 4 Destino:1 Nmero Tramos3 2: 167.55 4: 145.67 5: 0.00 Tiempo viaje: 167.55 Iteracion: 6 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01

272

Anexo I
Iteracion: 6 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 7 Origen: 0 Destino:1 Nmero Tramos2 2: 24.87 1: 0.00 Tiempo viaje: 24.87 Iteracion: 7 Origen: 0 Destino:2 Nmero Tramos2 3: 13.31 1: 0.00 Tiempo viaje: 13.31 Iteracion: 7 Origen: 0 Destino:3 Nmero Tramos3 4: 66.70 2: 24.87 1: 0.00 Tiempo viaje: 66.70 Iteracion: 7 Origen: 0 Destino:4 Nmero Tramos5 5: 94.85 4: 67.19 3: 53.24 2: 24.87 1: 0.00 Tiempo viaje: 94.85 Iteracion: 7 Origen: 1 Destino:0 Nmero Tramos2 1: 13.74 2: 0.00 Tiempo viaje: 13.74 Iteracion: 7 Origen: 1 Destino:2 Nmero Tramos3 3: 27.05 1: 13.74 2: 0.00 Tiempo viaje: 27.05 Iteracion: 7 Origen: 1 Destino:3 Nmero Tramos2 4: 38.05 2: 0.00 Tiempo viaje: 38.05 Iteracion: 7 Origen: 1 Destino:4 Nmero Tramos3 5: 67.22 4: 38.05 2: 0.00 Tiempo viaje: 67.22 Iteracion: 7 Origen: 2 Destino:0 Nmero Tramos2 1: 16.94 3: 0.00 Tiempo viaje: 16.94

273

Anexo I
Iteracion: 7 Origen: 2 Destino:1 Nmero Tramos2 2: 12.76 3: 0.00 Tiempo viaje: 12.76 Iteracion: 7 Origen: 2 Destino:3 Nmero Tramos2 4: 10.57 3: 0.00 Tiempo viaje: 10.57 Iteracion: 7 Origen: 2 Destino:4 Nmero Tramos2 5: 10.81 3: 0.00 Tiempo viaje: 10.81 Iteracion: 7 Origen: 3 Destino:0 Nmero Tramos3 1: 36.35 2: 17.44 4: 0.00 Tiempo viaje: 36.35 Iteracion: 7 Origen: 3 Destino:1 Nmero Tramos2 2: 17.44 4: 0.00 Tiempo viaje: 17.44 Iteracion: 7 Origen: 3 Destino:2 Nmero Tramos2 3: 15.79 4: 0.00 Tiempo viaje: 15.79 Iteracion: 7 Origen: 3 Destino:4 Nmero Tramos2 5: 26.55 4: 0.00 Tiempo viaje: 26.55 Iteracion: 7 Origen: 4 Destino:0 Nmero Tramos4 1: 184.09 3: 162.97 4: 145.67 5: 0.00 Tiempo viaje: 184.09 Iteracion: 7 Origen: 4 Destino:1 Nmero Tramos3 2: 167.53 4: 145.67 5: 0.00 Tiempo viaje: 167.53 Iteracion: 7 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 7 Origen: 4 Destino:3 Nmero Tramos2

274

Anexo I
4: 145.67 5: 0.00 Tiempo viaje:

145.67

Iteracion: 8 Origen: 0 Destino:1 Nmero Tramos2 2: 24.99 1: 0.00 Tiempo viaje: 24.99 Iteracion: 8 Origen: 0 Destino:2 Nmero Tramos2 3: 13.28 1: 0.00 Tiempo viaje: 13.28 Iteracion: 8 Origen: 0 Destino:3 Nmero Tramos4 4: 66.59 2: 27.39 3: 13.28 1: 0.00 Tiempo viaje: 66.59 Iteracion: 8 Origen: 0 Destino:4 Nmero Tramos5 5: 95.10 4: 67.07 3: 53.16 2: 24.99 1: 0.00 Tiempo viaje: 95.10 Iteracion: 8 Origen: 1 Destino:0 Nmero Tramos2 1: 13.79 2: 0.00 Tiempo viaje: 13.79 Iteracion: 8 Origen: 1 Destino:2 Nmero Tramos2 3: 27.03 2: 0.00 Tiempo viaje: 27.03 Iteracion: 8 Origen: 1 Destino:3 Nmero Tramos2 4: 38.12 2: 0.00 Tiempo viaje: 38.12 Iteracion: 8 Origen: 1 Destino:4 Nmero Tramos3 5: 67.63 4: 38.12 2: 0.00 Tiempo viaje: 67.63 Iteracion: 8 Origen: 2 Destino:0 Nmero Tramos2 1: 16.92 3: 0.00 Tiempo viaje: 16.92 Iteracion: 8 Origen: 2 Destino:1 Nmero Tramos2

275

Anexo I
2: 12.62 3: 0.00 Tiempo viaje:

12.62

Iteracion: 8 Origen: 2 Destino:3 Nmero Tramos2 4: 10.55 3: 0.00 Tiempo viaje: 10.55 Iteracion: 8 Origen: 2 Destino:4 Nmero Tramos2 5: 10.79 3: 0.00 Tiempo viaje: 10.79 Iteracion: 8 Origen: 3 Destino:0 Nmero Tramos3 1: 36.44 2: 17.47 4: 0.00 Tiempo viaje: 36.44 Iteracion: 8 Origen: 3 Destino:1 Nmero Tramos2 2: 17.47 4: 0.00 Tiempo viaje: 17.47 Iteracion: 8 Origen: 3 Destino:2 Nmero Tramos2 3: 15.68 4: 0.00 Tiempo viaje: 15.68 Iteracion: 8 Origen: 3 Destino:4 Nmero Tramos2 5: 26.90 4: 0.00 Tiempo viaje: 26.90 Iteracion: 8 Origen: 4 Destino:0 Nmero Tramos4 1: 183.96 3: 162.88 4: 145.67 5: 0.00 Tiempo viaje: 183.96 Iteracion: 8 Origen: 4 Destino:1 Nmero Tramos3 2: 167.51 4: 145.67 5: 0.00 Tiempo viaje: 167.51 Iteracion: 8 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 8 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00

276

Anexo I
Tiempo viaje: 145.67

Iteracion: 9 Origen: 0 Destino:1 Nmero Tramos2 2: 24.91 1: 0.00 Tiempo viaje: 24.91 Iteracion: 9 Origen: 0 Destino:2 Nmero Tramos2 3: 13.30 1: 0.00 Tiempo viaje: 13.30 Iteracion: 9 Origen: 0 Destino:3 Nmero Tramos3 4: 66.75 2: 24.91 1: 0.00 Tiempo viaje: 66.75 Iteracion: 9 Origen: 0 Destino:4 Nmero Tramos5 5: 95.22 4: 66.83 3: 52.96 2: 24.91 1: 0.00 Tiempo viaje: 95.22 Iteracion: 9 Origen: 1 Destino:0 Nmero Tramos2 1: 13.82 2: 0.00 Tiempo viaje: 13.82 Iteracion: 9 Origen: 1 Destino:2 Nmero Tramos2 3: 26.90 2: 0.00 Tiempo viaje: 26.90 Iteracion: 9 Origen: 1 Destino:3 Nmero Tramos2 4: 38.18 2: 0.00 Tiempo viaje: 38.18 Iteracion: 9 Origen: 1 Destino:4 Nmero Tramos4 5: 67.95 3: 55.21 4: 38.18 2: 0.00 Tiempo viaje: 67.95 Iteracion: 9 Origen: 2 Destino:0 Nmero Tramos2 1: 16.90 3: 0.00 Tiempo viaje: 16.90 Iteracion: 9 Origen: 2 Destino:1 Nmero Tramos2 2: 12.71 3: 0.00

277

Anexo I
Tiempo viaje: 12.71

Iteracion: 9 Origen: 2 Destino:3 Nmero Tramos2 4: 10.53 3: 0.00 Tiempo viaje: 10.53 Iteracion: 9 Origen: 2 Destino:4 Nmero Tramos2 5: 10.76 3: 0.00 Tiempo viaje: 10.76 Iteracion: 9 Origen: 3 Destino:0 Nmero Tramos3 1: 36.52 2: 17.49 4: 0.00 Tiempo viaje: 36.52 Iteracion: 9 Origen: 3 Destino:1 Nmero Tramos2 2: 17.49 4: 0.00 Tiempo viaje: 17.49 Iteracion: 9 Origen: 3 Destino:2 Nmero Tramos2 3: 15.57 4: 0.00 Tiempo viaje: 15.57 Iteracion: 9 Origen: 3 Destino:4 Nmero Tramos2 5: 27.24 4: 0.00 Tiempo viaje: 27.24 Iteracion: 9 Origen: 4 Destino:0 Nmero Tramos4 1: 183.83 3: 162.79 4: 145.67 5: 0.00 Tiempo viaje: 183.83 Iteracion: 9 Origen: 4 Destino:1 Nmero Tramos3 2: 167.49 4: 145.67 5: 0.00 Tiempo viaje: 167.49 Iteracion: 9 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 9 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67

278

Anexo I
Iteracion: 10 Origen: 0 Destino:1 Nmero Tramos2 2: 25.03 1: 0.00 Tiempo viaje: 25.03 Iteracion: 10 Origen: 0 Destino:2 Nmero Tramos2 3: 13.27 1: 0.00 Tiempo viaje: 13.27 Iteracion: 10 Origen: 0 Destino:3 Nmero Tramos4 4: 66.65 2: 27.32 3: 13.27 1: 0.00 Tiempo viaje: 66.65 Iteracion: 10 Origen: 0 Destino:4 Nmero Tramos5 5: 95.14 4: 66.80 3: 52.97 2: 25.03 1: 0.00 Tiempo viaje: 95.14 Iteracion: 10 Origen: 1 Destino:0 Nmero Tramos2 1: 13.85 2: 0.00 Tiempo viaje: 13.85 Iteracion: 10 Origen: 1 Destino:2 Nmero Tramos2 3: 26.77 2: 0.00 Tiempo viaje: 26.77 Iteracion: 10 Origen: 1 Destino:3 Nmero Tramos2 4: 38.24 2: 0.00 Tiempo viaje: 38.24 Iteracion: 10 Origen: 1 Destino:4 Nmero Tramos3 5: 67.99 4: 38.24 2: 0.00 Tiempo viaje: 67.99 Iteracion: 10 Origen: 2 Destino:0 Nmero Tramos2 1: 16.88 3: 0.00 Tiempo viaje: 16.88 Iteracion: 10 Origen: 2 Destino:1 Nmero Tramos2 2: 12.57 3: 0.00 Tiempo viaje: 12.57

279

Anexo I
Iteracion: 10 Origen: 2 Destino:3 Nmero Tramos2 4: 10.51 3: 0.00 Tiempo viaje: 10.51 Iteracion: 10 Origen: 2 Destino:4 Nmero Tramos2 5: 10.77 3: 0.00 Tiempo viaje: 10.77 Iteracion: 10 Origen: 3 Destino:0 Nmero Tramos3 1: 36.57 3: 15.56 4: 0.00 Tiempo viaje: 36.57 Iteracion: 10 Origen: 3 Destino:1 Nmero Tramos2 2: 17.52 4: 0.00 Tiempo viaje: 17.52 Iteracion: 10 Origen: 3 Destino:2 Nmero Tramos2 3: 15.56 4: 0.00 Tiempo viaje: 15.56 Iteracion: 10 Origen: 3 Destino:4 Nmero Tramos2 5: 27.18 4: 0.00 Tiempo viaje: 27.18 Iteracion: 10 Origen: 4 Destino:0 Nmero Tramos4 1: 183.81 3: 162.80 4: 145.67 5: 0.00 Tiempo viaje: 183.81 Iteracion: 10 Origen: 4 Destino:1 Nmero Tramos3 2: 167.47 4: 145.67 5: 0.00 Tiempo viaje: 167.47 Iteracion: 10 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 10 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 11 Origen: 0 Destino:1 Nmero Tramos2

280

Anexo I
2: 24.95 1: 0.00 Tiempo viaje:

24.95

Iteracion: 11 Origen: 0 Destino:2 Nmero Tramos2 3: 13.29 1: 0.00 Tiempo viaje: 13.29 Iteracion: 11 Origen: 0 Destino:3 Nmero Tramos4 4: 66.57 3: 52.77 2: 24.95 1: 0.00 Tiempo viaje: 66.57 Iteracion: 11 Origen: 0 Destino:4 Nmero Tramos5 5: 95.26 4: 66.57 3: 52.77 2: 24.95 1: 0.00 Tiempo viaje: 95.26 Iteracion: 11 Origen: 1 Destino:0 Nmero Tramos2 1: 13.61 2: 0.00 Tiempo viaje: 13.61 Iteracion: 11 Origen: 1 Destino:2 Nmero Tramos2 3: 26.64 2: 0.00 Tiempo viaje: 26.64 Iteracion: 11 Origen: 1 Destino:3 Nmero Tramos2 4: 38.31 2: 0.00 Tiempo viaje: 38.31 Iteracion: 11 Origen: 1 Destino:4 Nmero Tramos4 5: 68.11 3: 55.41 4: 38.31 2: 0.00 Tiempo viaje: 68.11 Iteracion: 11 Origen: 2 Destino:0 Nmero Tramos2 1: 17.02 3: 0.00 Tiempo viaje: 17.02 Iteracion: 11 Origen: 2 Destino:1 Nmero Tramos2 2: 12.66 3: 0.00 Tiempo viaje: 12.66 Iteracion: 11

281

Anexo I
Origen: 2 Destino:3 Nmero Tramos2 4: 10.49 3: 0.00 Tiempo viaje: 10.49 Iteracion: 11 Origen: 2 Destino:4 Nmero Tramos2 5: 10.75 3: 0.00 Tiempo viaje: 10.75 Iteracion: 11 Origen: 3 Destino:0 Nmero Tramos3 1: 36.02 2: 17.32 4: 0.00 Tiempo viaje: 36.02 Iteracion: 11 Origen: 3 Destino:1 Nmero Tramos2 2: 17.32 4: 0.00 Tiempo viaje: 17.32 Iteracion: 11 Origen: 3 Destino:2 Nmero Tramos2 3: 15.65 4: 0.00 Tiempo viaje: 15.65 Iteracion: 11 Origen: 3 Destino:4 Nmero Tramos2 5: 27.53 4: 0.00 Tiempo viaje: 27.53 Iteracion: 11 Origen: 4 Destino:0 Nmero Tramos4 1: 184.18 3: 162.91 4: 145.67 5: 0.00 Tiempo viaje: 184.18 Iteracion: 11 Origen: 4 Destino:1 Nmero Tramos3 2: 167.23 4: 145.67 5: 0.00 Tiempo viaje: 167.23 Iteracion: 11 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 11 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 12 Origen: 0 Destino:1 Nmero Tramos2 2: 25.08

282

Anexo I
1: 0.00 Tiempo viaje:

25.08

Iteracion: 12 Origen: 0 Destino:2 Nmero Tramos2 3: 13.25 1: 0.00 Tiempo viaje: 13.25 Iteracion: 12 Origen: 0 Destino:3 Nmero Tramos4 4: 66.51 2: 27.25 3: 13.25 1: 0.00 Tiempo viaje: 66.51 Iteracion: 12 Origen: 0 Destino:4 Nmero Tramos5 5: 95.76 4: 67.13 3: 53.25 2: 25.08 1: 0.00 Tiempo viaje: 95.76 Iteracion: 12 Origen: 1 Destino:0 Nmero Tramos2 1: 13.64 2: 0.00 Tiempo viaje: 13.64 Iteracion: 12 Origen: 1 Destino:2 Nmero Tramos3 3: 26.89 1: 13.64 2: 0.00 Tiempo viaje: 26.89 Iteracion: 12 Origen: 1 Destino:3 Nmero Tramos2 4: 38.17 2: 0.00 Tiempo viaje: 38.17 Iteracion: 12 Origen: 1 Destino:4 Nmero Tramos4 5: 67.99 3: 55.28 4: 38.17 2: 0.00 Tiempo viaje: 67.99 Iteracion: 12 Origen: 2 Destino:0 Nmero Tramos2 1: 17.00 3: 0.00 Tiempo viaje: 17.00 Iteracion: 12 Origen: 2 Destino:1 Nmero Tramos2 2: 12.52 3: 0.00 Tiempo viaje: 12.52 Iteracion: 12

283

Anexo I
Origen: 2 Destino:3 Nmero Tramos2 4: 10.53 3: 0.00 Tiempo viaje: 10.53 Iteracion: 12 Origen: 2 Destino:4 Nmero Tramos2 5: 10.75 3: 0.00 Tiempo viaje: 10.75 Iteracion: 12 Origen: 3 Destino:0 Nmero Tramos3 1: 36.10 2: 17.35 4: 0.00 Tiempo viaje: 36.10 Iteracion: 12 Origen: 3 Destino:1 Nmero Tramos2 2: 17.35 4: 0.00 Tiempo viaje: 17.35 Iteracion: 12 Origen: 3 Destino:2 Nmero Tramos2 3: 15.64 4: 0.00 Tiempo viaje: 15.64 Iteracion: 12 Origen: 3 Destino:4 Nmero Tramos2 5: 27.46 4: 0.00 Tiempo viaje: 27.46 Iteracion: 12 Origen: 4 Destino:0 Nmero Tramos4 1: 184.15 3: 162.92 4: 145.67 5: 0.00 Tiempo viaje: 184.15 Iteracion: 12 Origen: 4 Destino:1 Nmero Tramos3 2: 167.21 4: 145.67 5: 0.00 Tiempo viaje: 167.21 Iteracion: 12 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 12 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 13 Origen: 0 Destino:1 Nmero Tramos2 2: 25.00

284

Anexo I
1: 0.00 Tiempo viaje:

25.00

Iteracion: 13 Origen: 0 Destino:2 Nmero Tramos2 3: 13.28 1: 0.00 Tiempo viaje: 13.28 Iteracion: 13 Origen: 0 Destino:3 Nmero Tramos3 4: 66.61 2: 25.00 1: 0.00 Tiempo viaje: 66.61 Iteracion: 13 Origen: 0 Destino:4 Nmero Tramos5 5: 95.40 4: 66.81 3: 52.97 2: 25.00 1: 0.00 Tiempo viaje: 95.40 Iteracion: 13 Origen: 1 Destino:0 Nmero Tramos2 1: 13.69 2: 0.00 Tiempo viaje: 13.69 Iteracion: 13 Origen: 1 Destino:2 Nmero Tramos2 3: 26.76 2: 0.00 Tiempo viaje: 26.76 Iteracion: 13 Origen: 1 Destino:3 Nmero Tramos2 4: 38.23 2: 0.00 Tiempo viaje: 38.23 Iteracion: 13 Origen: 1 Destino:4 Nmero Tramos4 5: 68.06 3: 55.34 4: 38.23 2: 0.00 Tiempo viaje: 68.06 Iteracion: 13 Origen: 2 Destino:0 Nmero Tramos2 1: 16.98 3: 0.00 Tiempo viaje: 16.98 Iteracion: 13 Origen: 2 Destino:1 Nmero Tramos2 2: 12.61 3: 0.00 Tiempo viaje: 12.61 Iteracion: 13 Origen: 2 Destino:3 Nmero Tramos2 4: 10.51

285

Anexo I
3: 0.00 Tiempo viaje:

10.51

Iteracion: 13 Origen: 2 Destino:4 Nmero Tramos2 5: 10.75 3: 0.00 Tiempo viaje: 10.75 Iteracion: 13 Origen: 3 Destino:0 Nmero Tramos3 1: 36.20 2: 17.38 4: 0.00 Tiempo viaje: 36.20 Iteracion: 13 Origen: 3 Destino:1 Nmero Tramos2 2: 17.38 4: 0.00 Tiempo viaje: 17.38 Iteracion: 13 Origen: 3 Destino:2 Nmero Tramos2 3: 15.63 4: 0.00 Tiempo viaje: 15.63 Iteracion: 13 Origen: 3 Destino:4 Nmero Tramos2 5: 27.40 4: 0.00 Tiempo viaje: 27.40 Iteracion: 13 Origen: 4 Destino:0 Nmero Tramos4 1: 184.12 3: 162.92 4: 145.67 5: 0.00 Tiempo viaje: 184.12 Iteracion: 13 Origen: 4 Destino:1 Nmero Tramos3 2: 167.20 4: 145.67 5: 0.00 Tiempo viaje: 167.20 Iteracion: 13 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 13 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 14 Origen: 0 Destino:1 Nmero Tramos2 2: 25.12 1: 0.00 Tiempo viaje: 25.12

286

Anexo I

Iteracion: 14 Origen: 0 Destino:2 Nmero Tramos2 3: 13.25 1: 0.00 Tiempo viaje: 13.25 Iteracion: 14 Origen: 0 Destino:3 Nmero Tramos4 4: 66.58 2: 27.19 3: 13.25 1: 0.00 Tiempo viaje: 66.58 Iteracion: 14 Origen: 0 Destino:4 Nmero Tramos5 5: 95.32 4: 66.79 3: 52.98 2: 25.12 1: 0.00 Tiempo viaje: 95.32 Iteracion: 14 Origen: 1 Destino:0 Nmero Tramos2 1: 13.72 2: 0.00 Tiempo viaje: 13.72 Iteracion: 14 Origen: 1 Destino:2 Nmero Tramos2 3: 26.64 2: 0.00 Tiempo viaje: 26.64 Iteracion: 14 Origen: 1 Destino:3 Nmero Tramos2 4: 38.30 2: 0.00 Tiempo viaje: 38.30 Iteracion: 14 Origen: 1 Destino:4 Nmero Tramos3 5: 68.04 4: 38.30 2: 0.00 Tiempo viaje: 68.04 Iteracion: 14 Origen: 2 Destino:0 Nmero Tramos2 1: 16.96 3: 0.00 Tiempo viaje: 16.96 Iteracion: 14 Origen: 2 Destino:1 Nmero Tramos2 2: 12.47 3: 0.00 Tiempo viaje: 12.47 Iteracion: 14 Origen: 2 Destino:3 Nmero Tramos2 4: 10.50 3: 0.00 Tiempo viaje: 10.50

287

Anexo I

Iteracion: 14 Origen: 2 Destino:4 Nmero Tramos2 5: 10.76 3: 0.00 Tiempo viaje: 10.76 Iteracion: 14 Origen: 3 Destino:0 Nmero Tramos3 1: 36.27 2: 17.41 4: 0.00 Tiempo viaje: 36.27 Iteracion: 14 Origen: 3 Destino:1 Nmero Tramos2 2: 17.41 4: 0.00 Tiempo viaje: 17.41 Iteracion: 14 Origen: 3 Destino:2 Nmero Tramos2 3: 15.62 4: 0.00 Tiempo viaje: 15.62 Iteracion: 14 Origen: 3 Destino:4 Nmero Tramos2 5: 27.34 4: 0.00 Tiempo viaje: 27.34 Iteracion: 14 Origen: 4 Destino:0 Nmero Tramos4 1: 184.09 3: 162.93 4: 145.67 5: 0.00 Tiempo viaje: 184.09 Iteracion: 14 Origen: 4 Destino:1 Nmero Tramos3 2: 167.19 4: 145.67 5: 0.00 Tiempo viaje: 167.19 Iteracion: 14 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 14 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 15 Origen: 0 Destino:1 Nmero Tramos2 2: 25.04 1: 0.00 Tiempo viaje: 25.04 Iteracion: 15

288

Anexo I
Origen: 0 Destino:2 Nmero Tramos2 3: 13.27 1: 0.00 Tiempo viaje: 13.27 Iteracion: 15 Origen: 0 Destino:3 Nmero Tramos4 4: 66.56 3: 52.78 2: 25.04 1: 0.00 Tiempo viaje: 66.56 Iteracion: 15 Origen: 0 Destino:4 Nmero Tramos5 5: 95.44 4: 66.56 3: 52.78 2: 25.04 1: 0.00 Tiempo viaje: 95.44 Iteracion: 15 Origen: 1 Destino:0 Nmero Tramos2 1: 13.75 2: 0.00 Tiempo viaje: 13.75 Iteracion: 15 Origen: 1 Destino:2 Nmero Tramos2 3: 26.51 2: 0.00 Tiempo viaje: 26.51 Iteracion: 15 Origen: 1 Destino:3 Nmero Tramos2 4: 38.36 2: 0.00 Tiempo viaje: 38.36 Iteracion: 15 Origen: 1 Destino:4 Nmero Tramos4 5: 68.02 3: 55.34 4: 38.36 2: 0.00 Tiempo viaje: 68.02 Iteracion: 15 Origen: 2 Destino:0 Nmero Tramos2 1: 16.94 3: 0.00 Tiempo viaje: 16.94 Iteracion: 15 Origen: 2 Destino:1 Nmero Tramos2 2: 12.56 3: 0.00 Tiempo viaje: 12.56 Iteracion: 15 Origen: 2 Destino:3 Nmero Tramos2 4: 10.48 3: 0.00 Tiempo viaje: 10.48

289

Anexo I
Iteracion: 15 Origen: 2 Destino:4 Nmero Tramos2 5: 10.74 3: 0.00 Tiempo viaje: 10.74 Iteracion: 15 Origen: 3 Destino:0 Nmero Tramos3 1: 36.35 2: 17.44 4: 0.00 Tiempo viaje: 36.35 Iteracion: 15 Origen: 3 Destino:1 Nmero Tramos2 2: 17.44 4: 0.00 Tiempo viaje: 17.44 Iteracion: 15 Origen: 3 Destino:2 Nmero Tramos2 3: 15.51 4: 0.00 Tiempo viaje: 15.51 Iteracion: 15 Origen: 3 Destino:4 Nmero Tramos2 5: 27.68 4: 0.00 Tiempo viaje: 27.68 Iteracion: 15 Origen: 4 Destino:0 Nmero Tramos4 1: 183.96 3: 162.84 4: 145.67 5: 0.00 Tiempo viaje: 183.96 Iteracion: 15 Origen: 4 Destino:1 Nmero Tramos3 2: 167.17 4: 145.67 5: 0.00 Tiempo viaje: 167.17 Iteracion: 15 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 15 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 16 Origen: 0 Destino:1 Nmero Tramos2 2: 25.16 1: 0.00 Tiempo viaje: 25.16 Iteracion: 16 Origen: 0 Destino:2 Nmero Tramos2

290

Anexo I
3: 13.23 1: 0.00 Tiempo viaje:

13.23

Iteracion: 16 Origen: 0 Destino:3 Nmero Tramos4 4: 66.45 2: 27.12 3: 13.23 1: 0.00 Tiempo viaje: 66.45 Iteracion: 16 Origen: 0 Destino:4 Nmero Tramos5 5: 95.94 4: 67.12 3: 53.26 2: 25.16 1: 0.00 Tiempo viaje: 95.94 Iteracion: 16 Origen: 1 Destino:0 Nmero Tramos2 1: 13.78 2: 0.00 Tiempo viaje: 13.78 Iteracion: 16 Origen: 1 Destino:2 Nmero Tramos2 3: 26.84 2: 0.00 Tiempo viaje: 26.84 Iteracion: 16 Origen: 1 Destino:3 Nmero Tramos2 4: 38.22 2: 0.00 Tiempo viaje: 38.22 Iteracion: 16 Origen: 1 Destino:4 Nmero Tramos4 5: 67.89 3: 55.21 4: 38.22 2: 0.00 Tiempo viaje: 67.89 Iteracion: 16 Origen: 2 Destino:0 Nmero Tramos2 1: 16.92 3: 0.00 Tiempo viaje: 16.92 Iteracion: 16 Origen: 2 Destino:1 Nmero Tramos2 2: 12.42 3: 0.00 Tiempo viaje: 12.42 Iteracion: 16 Origen: 2 Destino:3 Nmero Tramos2 4: 10.52 3: 0.00 Tiempo viaje: 10.52 Iteracion: 16

291

Anexo I
Origen: 2 Destino:4 Nmero Tramos2 5: 10.74 3: 0.00 Tiempo viaje: 10.74 Iteracion: 16 Origen: 3 Destino:0 Nmero Tramos3 1: 36.42 2: 17.46 4: 0.00 Tiempo viaje: 36.42 Iteracion: 16 Origen: 3 Destino:1 Nmero Tramos2 2: 17.46 4: 0.00 Tiempo viaje: 17.46 Iteracion: 16 Origen: 3 Destino:2 Nmero Tramos2 3: 15.50 4: 0.00 Tiempo viaje: 15.50 Iteracion: 16 Origen: 3 Destino:4 Nmero Tramos2 5: 27.61 4: 0.00 Tiempo viaje: 27.61 Iteracion: 16 Origen: 4 Destino:0 Nmero Tramos4 1: 183.94 3: 162.85 4: 145.67 5: 0.00 Tiempo viaje: 183.94 Iteracion: 16 Origen: 4 Destino:1 Nmero Tramos3 2: 167.16 4: 145.67 5: 0.00 Tiempo viaje: 167.16 Iteracion: 16 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 16 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 17 Origen: 0 Destino:1 Nmero Tramos2 2: 25.07 1: 0.00 Tiempo viaje: 25.07 Iteracion: 17 Origen: 0 Destino:2 Nmero Tramos2 3: 13.25

292

Anexo I
1: 0.00 Tiempo viaje:

13.25

Iteracion: 17 Origen: 0 Destino:3 Nmero Tramos3 4: 66.50 2: 25.07 1: 0.00 Tiempo viaje: 66.50 Iteracion: 17 Origen: 0 Destino:4 Nmero Tramos5 5: 95.65 4: 66.88 3: 53.06 2: 25.07 1: 0.00 Tiempo viaje: 95.65 Iteracion: 17 Origen: 1 Destino:0 Nmero Tramos2 1: 13.80 2: 0.00 Tiempo viaje: 13.80 Iteracion: 17 Origen: 1 Destino:2 Nmero Tramos2 3: 26.72 2: 0.00 Tiempo viaje: 26.72 Iteracion: 17 Origen: 1 Destino:3 Nmero Tramos2 4: 38.28 2: 0.00 Tiempo viaje: 38.28 Iteracion: 17 Origen: 1 Destino:4 Nmero Tramos4 5: 67.97 3: 55.27 4: 38.28 2: 0.00 Tiempo viaje: 67.97 Iteracion: 17 Origen: 2 Destino:0 Nmero Tramos2 1: 16.90 3: 0.00 Tiempo viaje: 16.90 Iteracion: 17 Origen: 2 Destino:1 Nmero Tramos2 2: 12.52 3: 0.00 Tiempo viaje: 12.52 Iteracion: 17 Origen: 2 Destino:3 Nmero Tramos2 4: 10.50 3: 0.00 Tiempo viaje: 10.50 Iteracion: 17 Origen: 2 Destino:4 Nmero Tramos2 5: 10.74

293

Anexo I
3: 0.00 Tiempo viaje:

10.74

Iteracion: 17 Origen: 3 Destino:0 Nmero Tramos3 1: 36.49 2: 17.49 4: 0.00 Tiempo viaje: 36.49 Iteracion: 17 Origen: 3 Destino:1 Nmero Tramos2 2: 17.49 4: 0.00 Tiempo viaje: 17.49 Iteracion: 17 Origen: 3 Destino:2 Nmero Tramos2 3: 15.50 4: 0.00 Tiempo viaje: 15.50 Iteracion: 17 Origen: 3 Destino:4 Nmero Tramos2 5: 27.55 4: 0.00 Tiempo viaje: 27.55 Iteracion: 17 Origen: 4 Destino:0 Nmero Tramos4 1: 183.92 3: 162.86 4: 145.67 5: 0.00 Tiempo viaje: 183.92 Iteracion: 17 Origen: 4 Destino:1 Nmero Tramos3 2: 167.15 4: 145.67 5: 0.00 Tiempo viaje: 167.15 Iteracion: 17 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 17 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 18 Origen: 0 Destino:1 Nmero Tramos2 2: 25.20 1: 0.00 Tiempo viaje: 25.20 Iteracion: 18 Origen: 0 Destino:2 Nmero Tramos2 3: 13.22 1: 0.00 Tiempo viaje: 13.22

294

Anexo I

Iteracion: 18 Origen: 0 Destino:3 Nmero Tramos4 4: 66.51 2: 27.06 3: 13.22 1: 0.00 Tiempo viaje: 66.51 Iteracion: 18 Origen: 0 Destino:4 Nmero Tramos5 5: 95.57 4: 66.85 3: 53.07 2: 25.20 1: 0.00 Tiempo viaje: 95.57 Iteracion: 18 Origen: 1 Destino:0 Nmero Tramos2 1: 13.83 2: 0.00 Tiempo viaje: 13.83 Iteracion: 18 Origen: 1 Destino:2 Nmero Tramos2 3: 26.59 2: 0.00 Tiempo viaje: 26.59 Iteracion: 18 Origen: 1 Destino:3 Nmero Tramos2 4: 38.34 2: 0.00 Tiempo viaje: 38.34 Iteracion: 18 Origen: 1 Destino:4 Nmero Tramos4 5: 68.04 3: 55.34 4: 38.34 2: 0.00 Tiempo viaje: 68.04 Iteracion: 18 Origen: 2 Destino:0 Nmero Tramos2 1: 16.88 3: 0.00 Tiempo viaje: 16.88 Iteracion: 18 Origen: 2 Destino:1 Nmero Tramos2 2: 12.38 3: 0.00 Tiempo viaje: 12.38 Iteracion: 18 Origen: 2 Destino:3 Nmero Tramos2 4: 10.48 3: 0.00 Tiempo viaje: 10.48 Iteracion: 18 Origen: 2 Destino:4 Nmero Tramos2 5: 10.75 3: 0.00

295

Anexo I
Tiempo viaje: 10.75

Iteracion: 18 Origen: 3 Destino:0 Nmero Tramos3 1: 36.50 3: 15.49 4: 0.00 Tiempo viaje: 36.50 Iteracion: 18 Origen: 3 Destino:1 Nmero Tramos2 2: 17.52 4: 0.00 Tiempo viaje: 17.52 Iteracion: 18 Origen: 3 Destino:2 Nmero Tramos2 3: 15.49 4: 0.00 Tiempo viaje: 15.49 Iteracion: 18 Origen: 3 Destino:4 Nmero Tramos2 5: 27.48 4: 0.00 Tiempo viaje: 27.48 Iteracion: 18 Origen: 4 Destino:0 Nmero Tramos4 1: 183.89 3: 162.88 4: 145.67 5: 0.00 Tiempo viaje: 183.89 Iteracion: 18 Origen: 4 Destino:1 Nmero Tramos3 2: 167.14 4: 145.67 5: 0.00 Tiempo viaje: 167.14 Iteracion: 18 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 18 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 19 Origen: 0 Destino:1 Nmero Tramos2 2: 25.11 1: 0.00 Tiempo viaje: 25.11 Iteracion: 19 Origen: 0 Destino:2 Nmero Tramos2 3: 13.24 1: 0.00 Tiempo viaje: 13.24

296

Anexo I
Iteracion: 19 Origen: 0 Destino:3 Nmero Tramos3 4: 66.57 2: 25.11 1: 0.00 Tiempo viaje: 66.57 Iteracion: 19 Origen: 0 Destino:4 Nmero Tramos5 5: 95.29 4: 66.62 3: 52.88 2: 25.11 1: 0.00 Tiempo viaje: 95.29 Iteracion: 19 Origen: 1 Destino:0 Nmero Tramos2 1: 13.60 2: 0.00 Tiempo viaje: 13.60 Iteracion: 19 Origen: 1 Destino:2 Nmero Tramos2 3: 26.47 2: 0.00 Tiempo viaje: 26.47 Iteracion: 19 Origen: 1 Destino:3 Nmero Tramos2 4: 38.40 2: 0.00 Tiempo viaje: 38.40 Iteracion: 19 Origen: 1 Destino:4 Nmero Tramos3 5: 68.05 4: 38.40 2: 0.00 Tiempo viaje: 68.05 Iteracion: 19 Origen: 2 Destino:0 Nmero Tramos2 1: 17.02 3: 0.00 Tiempo viaje: 17.02 Iteracion: 19 Origen: 2 Destino:1 Nmero Tramos2 2: 12.47 3: 0.00 Tiempo viaje: 12.47 Iteracion: 19 Origen: 2 Destino:3 Nmero Tramos2 4: 10.46 3: 0.00 Tiempo viaje: 10.46 Iteracion: 19 Origen: 2 Destino:4 Nmero Tramos2 5: 10.75 3: 0.00 Tiempo viaje: 10.75 Iteracion: 19

297

Anexo I
Origen: 3 Destino:0 Nmero Tramos3 1: 36.00 2: 17.32 4: 0.00 Tiempo viaje: 36.00 Iteracion: 19 Origen: 3 Destino:1 Nmero Tramos2 2: 17.32 4: 0.00 Tiempo viaje: 17.32 Iteracion: 19 Origen: 3 Destino:2 Nmero Tramos2 3: 15.68 4: 0.00 Tiempo viaje: 15.68 Iteracion: 19 Origen: 3 Destino:4 Nmero Tramos2 5: 27.42 4: 0.00 Tiempo viaje: 27.42 Iteracion: 19 Origen: 4 Destino:0 Nmero Tramos4 1: 184.36 3: 163.09 4: 145.67 5: 0.00 Tiempo viaje: 184.36 Iteracion: 19 Origen: 4 Destino:1 Nmero Tramos3 2: 166.91 4: 145.67 5: 0.00 Tiempo viaje: 166.91 Iteracion: 19 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 19 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 20 Origen: 0 Destino:1 Nmero Tramos2 2: 25.23 1: 0.00 Tiempo viaje: 25.23 Iteracion: 20 Origen: 0 Destino:2 Nmero Tramos2 3: 13.20 1: 0.00 Tiempo viaje: 13.20 Iteracion: 20 Origen: 0 Destino:3 Nmero Tramos4 4: 66.58

298

Anexo I
2: 27.00 3: 13.20 1: 0.00 Tiempo viaje:

66.58

Iteracion: 20 Origen: 0 Destino:4 Nmero Tramos5 5: 95.62 4: 66.60 3: 52.89 2: 25.23 1: 0.00 Tiempo viaje: 95.62 Iteracion: 20 Origen: 1 Destino:0 Nmero Tramos2 1: 13.63 2: 0.00 Tiempo viaje: 13.63 Iteracion: 20 Origen: 1 Destino:2 Nmero Tramos2 3: 26.35 2: 0.00 Tiempo viaje: 26.35 Iteracion: 20 Origen: 1 Destino:3 Nmero Tramos2 4: 38.46 2: 0.00 Tiempo viaje: 38.46 Iteracion: 20 Origen: 1 Destino:4 Nmero Tramos4 5: 68.19 3: 55.53 4: 38.46 2: 0.00 Tiempo viaje: 68.19 Iteracion: 20 Origen: 2 Destino:0 Nmero Tramos2 1: 17.00 3: 0.00 Tiempo viaje: 17.00 Iteracion: 20 Origen: 2 Destino:1 Nmero Tramos2 2: 12.34 3: 0.00 Tiempo viaje: 12.34 Iteracion: 20 Origen: 2 Destino:3 Nmero Tramos2 4: 10.45 3: 0.00 Tiempo viaje: 10.45 Iteracion: 20 Origen: 2 Destino:4 Nmero Tramos2 5: 10.73 3: 0.00 Tiempo viaje: 10.73 Iteracion: 20 Origen: 3 Destino:0 Nmero Tramos3

299

Anexo I
1: 36.08 2: 17.35 4: 0.00 Tiempo viaje:

36.08

Iteracion: 20 Origen: 3 Destino:1 Nmero Tramos2 2: 17.35 4: 0.00 Tiempo viaje: 17.35 Iteracion: 20 Origen: 3 Destino:2 Nmero Tramos2 3: 15.57 4: 0.00 Tiempo viaje: 15.57 Iteracion: 20 Origen: 3 Destino:4 Nmero Tramos2 5: 27.76 4: 0.00 Tiempo viaje: 27.76 Iteracion: 20 Origen: 4 Destino:0 Nmero Tramos4 1: 184.23 3: 162.99 4: 145.67 5: 0.00 Tiempo viaje: 184.23 Iteracion: 20 Origen: 4 Destino:1 Nmero Tramos3 2: 166.90 4: 145.67 5: 0.00 Tiempo viaje: 166.90 Iteracion: 20 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 20 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 21 Origen: 0 Destino:1 Nmero Tramos2 2: 25.15 1: 0.00 Tiempo viaje: 25.15 Iteracion: 21 Origen: 0 Destino:2 Nmero Tramos2 3: 13.23 1: 0.00 Tiempo viaje: 13.23 Iteracion: 21 Origen: 0 Destino:3 Nmero Tramos4 4: 66.38 3: 52.70

300

Anexo I
2: 25.15 1: 0.00 Tiempo viaje:

66.38

Iteracion: 21 Origen: 0 Destino:4 Nmero Tramos5 5: 95.34 4: 66.38 3: 52.70 2: 25.15 1: 0.00 Tiempo viaje: 95.34 Iteracion: 21 Origen: 1 Destino:0 Nmero Tramos2 1: 13.65 2: 0.00 Tiempo viaje: 13.65 Iteracion: 21 Origen: 1 Destino:2 Nmero Tramos2 3: 26.23 2: 0.00 Tiempo viaje: 26.23 Iteracion: 21 Origen: 1 Destino:3 Nmero Tramos2 4: 38.52 2: 0.00 Tiempo viaje: 38.52 Iteracion: 21 Origen: 1 Destino:4 Nmero Tramos4 5: 68.26 3: 55.59 4: 38.52 2: 0.00 Tiempo viaje: 68.26 Iteracion: 21 Origen: 2 Destino:0 Nmero Tramos2 1: 16.98 3: 0.00 Tiempo viaje: 16.98 Iteracion: 21 Origen: 2 Destino:1 Nmero Tramos2 2: 12.43 3: 0.00 Tiempo viaje: 12.43 Iteracion: 21 Origen: 2 Destino:3 Nmero Tramos2 4: 10.43 3: 0.00 Tiempo viaje: 10.43 Iteracion: 21 Origen: 2 Destino:4 Nmero Tramos2 5: 10.73 3: 0.00 Tiempo viaje: 10.73 Iteracion: 21 Origen: 3 Destino:0 Nmero Tramos3 1: 36.15

301

Anexo I
2: 17.38 4: 0.00 Tiempo viaje:

36.15

Iteracion: 21 Origen: 3 Destino:1 Nmero Tramos2 2: 17.38 4: 0.00 Tiempo viaje: 17.38 Iteracion: 21 Origen: 3 Destino:2 Nmero Tramos2 3: 15.56 4: 0.00 Tiempo viaje: 15.56 Iteracion: 21 Origen: 3 Destino:4 Nmero Tramos2 5: 27.69 4: 0.00 Tiempo viaje: 27.69 Iteracion: 21 Origen: 4 Destino:0 Nmero Tramos4 1: 184.20 3: 163.00 4: 145.67 5: 0.00 Tiempo viaje: 184.20 Iteracion: 21 Origen: 4 Destino:1 Nmero Tramos3 2: 166.89 4: 145.67 5: 0.00 Tiempo viaje: 166.89 Iteracion: 21 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 21 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 22 Origen: 0 Destino:1 Nmero Tramos2 2: 25.27 1: 0.00 Tiempo viaje: 25.27 Iteracion: 22 Origen: 0 Destino:2 Nmero Tramos2 3: 13.19 1: 0.00 Tiempo viaje: 13.19 Iteracion: 22 Origen: 0 Destino:3 Nmero Tramos4 4: 66.44 2: 26.94 3: 13.19

302

Anexo I
1: 0.00 Tiempo viaje:

66.44

Iteracion: 22 Origen: 0 Destino:4 Nmero Tramos5 5: 95.84 4: 66.94 3: 53.18 2: 25.27 1: 0.00 Tiempo viaje: 95.84 Iteracion: 22 Origen: 1 Destino:0 Nmero Tramos2 1: 13.68 2: 0.00 Tiempo viaje: 13.68 Iteracion: 22 Origen: 1 Destino:2 Nmero Tramos2 3: 26.56 2: 0.00 Tiempo viaje: 26.56 Iteracion: 22 Origen: 1 Destino:3 Nmero Tramos2 4: 38.38 2: 0.00 Tiempo viaje: 38.38 Iteracion: 22 Origen: 1 Destino:4 Nmero Tramos4 5: 68.14 3: 55.45 4: 38.38 2: 0.00 Tiempo viaje: 68.14 Iteracion: 22 Origen: 2 Destino:0 Nmero Tramos2 1: 16.96 3: 0.00 Tiempo viaje: 16.96 Iteracion: 22 Origen: 2 Destino:1 Nmero Tramos2 2: 12.29 3: 0.00 Tiempo viaje: 12.29 Iteracion: 22 Origen: 2 Destino:3 Nmero Tramos2 4: 10.47 3: 0.00 Tiempo viaje: 10.47 Iteracion: 22 Origen: 2 Destino:4 Nmero Tramos2 5: 10.74 3: 0.00 Tiempo viaje: 10.74 Iteracion: 22 Origen: 3 Destino:0 Nmero Tramos3 1: 36.23 2: 17.40

303

Anexo I
4: 0.00 Tiempo viaje:

36.23

Iteracion: 22 Origen: 3 Destino:1 Nmero Tramos2 2: 17.40 4: 0.00 Tiempo viaje: 17.40 Iteracion: 22 Origen: 3 Destino:2 Nmero Tramos2 3: 15.55 4: 0.00 Tiempo viaje: 15.55 Iteracion: 22 Origen: 3 Destino:4 Nmero Tramos2 5: 27.62 4: 0.00 Tiempo viaje: 27.62 Iteracion: 22 Origen: 4 Destino:0 Nmero Tramos4 1: 184.18 3: 163.01 4: 145.67 5: 0.00 Tiempo viaje: 184.18 Iteracion: 22 Origen: 4 Destino:1 Nmero Tramos3 2: 166.88 4: 145.67 5: 0.00 Tiempo viaje: 166.88 Iteracion: 22 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 22 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 23 Origen: 0 Destino:1 Nmero Tramos2 2: 25.18 1: 0.00 Tiempo viaje: 25.18 Iteracion: 23 Origen: 0 Destino:2 Nmero Tramos2 3: 13.21 1: 0.00 Tiempo viaje: 13.21 Iteracion: 23 Origen: 0 Destino:3 Nmero Tramos3 4: 66.48 2: 25.18 1: 0.00 Tiempo viaje: 66.48

304

Anexo I

Iteracion: 23 Origen: 0 Destino:4 Nmero Tramos5 5: 95.56 4: 66.71 3: 52.99 2: 25.18 1: 0.00 Tiempo viaje: 95.56 Iteracion: 23 Origen: 1 Destino:0 Nmero Tramos2 1: 13.71 2: 0.00 Tiempo viaje: 13.71 Iteracion: 23 Origen: 1 Destino:2 Nmero Tramos2 3: 26.44 2: 0.00 Tiempo viaje: 26.44 Iteracion: 23 Origen: 1 Destino:3 Nmero Tramos2 4: 38.44 2: 0.00 Tiempo viaje: 38.44 Iteracion: 23 Origen: 1 Destino:4 Nmero Tramos3 5: 68.12 4: 38.44 2: 0.00 Tiempo viaje: 68.12 Iteracion: 23 Origen: 2 Destino:0 Nmero Tramos2 1: 16.94 3: 0.00 Tiempo viaje: 16.94 Iteracion: 23 Origen: 2 Destino:1 Nmero Tramos2 2: 12.39 3: 0.00 Tiempo viaje: 12.39 Iteracion: 23 Origen: 2 Destino:3 Nmero Tramos2 4: 10.45 3: 0.00 Tiempo viaje: 10.45 Iteracion: 23 Origen: 2 Destino:4 Nmero Tramos2 5: 10.74 3: 0.00 Tiempo viaje: 10.74 Iteracion: 23 Origen: 3 Destino:0 Nmero Tramos3 1: 36.30 2: 17.43 4: 0.00 Tiempo viaje: 36.30

305

Anexo I
Iteracion: 23 Origen: 3 Destino:1 Nmero Tramos2 2: 17.43 4: 0.00 Tiempo viaje: 17.43 Iteracion: 23 Origen: 3 Destino:2 Nmero Tramos2 3: 15.54 4: 0.00 Tiempo viaje: 15.54 Iteracion: 23 Origen: 3 Destino:4 Nmero Tramos2 5: 27.56 4: 0.00 Tiempo viaje: 27.56 Iteracion: 23 Origen: 4 Destino:0 Nmero Tramos4 1: 184.15 3: 163.02 4: 145.67 5: 0.00 Tiempo viaje: 184.15 Iteracion: 23 Origen: 4 Destino:1 Nmero Tramos3 2: 166.88 4: 145.67 5: 0.00 Tiempo viaje: 166.88 Iteracion: 23 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 23 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67 Iteracion: 24 Origen: 0 Destino:1 Nmero Tramos2 2: 25.31 1: 0.00 Tiempo viaje: 25.31 Iteracion: 24 Origen: 0 Destino:2 Nmero Tramos2 3: 13.18 1: 0.00 Tiempo viaje: 13.18 Iteracion: 24 Origen: 0 Destino:3 Nmero Tramos4 4: 66.51 2: 26.89 3: 13.18 1: 0.00 Tiempo viaje: 66.51 Iteracion: 24

306

Anexo I
Origen: 0 Destino:4 Nmero Tramos5 5: 95.89 4: 66.69 3: 53.00 2: 25.31 1: 0.00 Tiempo viaje: 95.89 Iteracion: 24 Origen: 1 Destino:0 Nmero Tramos2 1: 13.74 2: 0.00 Tiempo viaje: 13.74 Iteracion: 24 Origen: 1 Destino:2 Nmero Tramos2 3: 26.32 2: 0.00 Tiempo viaje: 26.32 Iteracion: 24 Origen: 1 Destino:3 Nmero Tramos2 4: 38.50 2: 0.00 Tiempo viaje: 38.50 Iteracion: 24 Origen: 1 Destino:4 Nmero Tramos4 5: 68.09 3: 55.45 4: 38.50 2: 0.00 Tiempo viaje: 68.09 Iteracion: 24 Origen: 2 Destino:0 Nmero Tramos2 1: 16.92 3: 0.00 Tiempo viaje: 16.92 Iteracion: 24 Origen: 2 Destino:1 Nmero Tramos2 2: 12.25 3: 0.00 Tiempo viaje: 12.25 Iteracion: 24 Origen: 2 Destino:3 Nmero Tramos2 4: 10.44 3: 0.00 Tiempo viaje: 10.44 Iteracion: 24 Origen: 2 Destino:4 Nmero Tramos2 5: 10.72 3: 0.00 Tiempo viaje: 10.72 Iteracion: 24 Origen: 3 Destino:0 Nmero Tramos3 1: 36.38 2: 17.46 4: 0.00 Tiempo viaje: 36.38 Iteracion: 24

307

Anexo I
Origen: 3 Destino:1 Nmero Tramos2 2: 17.46 4: 0.00 Tiempo viaje: 17.46 Iteracion: 24 Origen: 3 Destino:2 Nmero Tramos2 3: 15.44 4: 0.00 Tiempo viaje: 15.44 Iteracion: 24 Origen: 3 Destino:4 Nmero Tramos2 5: 27.90 4: 0.00 Tiempo viaje: 27.90 Iteracion: 24 Origen: 4 Destino:0 Nmero Tramos4 1: 184.02 3: 162.93 4: 145.67 5: 0.00 Tiempo viaje: 184.02 Iteracion: 24 Origen: 4 Destino:1 Nmero Tramos3 2: 166.87 4: 145.67 5: 0.00 Tiempo viaje: 166.87 Iteracion: 24 Origen: 4 Destino:2 Nmero Tramos2 3: 10.01 5: 0.00 Tiempo viaje: 10.01 Iteracion: 24 Origen: 4 Destino:3 Nmero Tramos2 4: 145.67 5: 0.00 Tiempo viaje: 145.67

308

Anexo I

Coste en tiempo de los tramos en cada asignacin:

Los siguientes datos muestran los costes en tiempo de los tramos de la red, como resultado de la aplicacin de las funciones volumen-retraso. Cada fila se corresponde con un tramo de la red e incluye, en el siguiente orden, cdigo del nodo origen, cdigo del nodo destino, cdigo del tramo y coste del tramo.
MATRIZ ASIGNACION ITERACION 0 1 2 1 6.00 1 3 2 10.00 2 1 3 6.00 2 3 4 7.00 2 4 5 8.00 3 1 6 10.00 3 2 7 7.00 3 4 8 8.00 3 5 9 10.00 4 2 10 8.00 4 3 11 8.00 4 5 12 5.00 5 3 13 10.00 5 4 14 5.00 MATRIZ ASIGNACION ITERACION 1 1 2 1 33.23 1 3 2 11.50 2 1 3 30.21 2 3 4 7.26 2 4 5 56.13 3 1 6 11.50 3 2 7 7.26 3 4 8 8.02 3 5 9 10.01 4 2 10 30.59 4 3 11 8.02 4 5 12 53.00 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 2 1 2 1 22.82 1 3 2 13.78 2 1 3 18.55 2 3 4 35.47 2 4 5 35.24 3 1 6 14.47 3 2 7 15.55 3 4 8 11.48 3 5 9 10.29 4 2 10 21.63 4 3 11 11.04 4 5 12 36.97 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 3 1 2 1 24.77 1 3 2 13.34 2 1 3 14.45 2 3 4 24.91 2 4 5 39.08

309

Anexo I
3 1 6 16.53 3 2 7 12.88 3 4 8 10.28 3 5 9 10.91 4 2 10 18.02 4 3 11 15.64 4 5 12 25.11 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 4 1 2 1 24.90 1 3 2 13.31 2 1 3 14.20 2 3 4 27.18 2 4 5 38.06 3 1 6 16.67 3 2 7 12.73 3 4 8 10.56 3 5 9 10.89 4 2 10 17.81 4 3 11 15.73 4 5 12 25.47 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 5 1 2 1 24.82 1 3 2 13.32 2 1 3 13.95 2 3 4 27.04 2 4 5 38.12 3 1 6 16.82 3 2 7 12.82 3 4 8 10.55 3 5 9 10.86 4 2 10 17.61 4 3 11 15.82 4 5 12 25.83 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 6 1 2 1 24.74 1 3 2 13.34 2 1 3 13.72 2 3 4 26.91 2 4 5 38.19 3 1 6 16.96 3 2 7 12.92 3 4 8 10.53 3 5 9 10.84 4 2 10 17.41 4 3 11 15.90 4 5 12 26.19 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 7 1 2 1 24.87 1 3 2 13.31 2 1 3 13.74 2 3 4 27.24 2 4 5 38.05 3 1 6 16.94 3 2 7 12.76 3 4 8 10.57 3 5 9 10.81 4 2 10 17.44 4 3 11 15.79

310

Anexo I
4 5 12 26.55 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 8 1 2 1 24.99 1 3 2 13.28 2 1 3 13.79 2 3 4 27.03 2 4 5 38.12 3 1 6 16.92 3 2 7 12.62 3 4 8 10.55 3 5 9 10.79 4 2 10 17.47 4 3 11 15.68 4 5 12 26.90 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 9 1 2 1 24.91 1 3 2 13.30 2 1 3 13.82 2 3 4 26.90 2 4 5 38.18 3 1 6 16.90 3 2 7 12.71 3 4 8 10.53 3 5 9 10.76 4 2 10 17.49 4 3 11 15.57 4 5 12 27.24 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 10 1 2 1 25.03 1 3 2 13.27 2 1 3 13.85 2 3 4 26.77 2 4 5 38.24 3 1 6 16.88 3 2 7 12.57 3 4 8 10.51 3 5 9 10.77 4 2 10 17.52 4 3 11 15.56 4 5 12 27.18 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 11 1 2 1 24.95 1 3 2 13.29 2 1 3 13.61 2 3 4 26.64 2 4 5 38.31 3 1 6 17.02 3 2 7 12.66 3 4 8 10.49 3 5 9 10.75 4 2 10 17.32 4 3 11 15.65 4 5 12 27.53 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 12 1 2 1 25.08 1 3 2 13.25

311

Anexo I
2 1 3 13.64 2 3 4 26.97 2 4 5 38.17 3 1 6 17.00 3 2 7 12.52 3 4 8 10.53 3 5 9 10.75 4 2 10 17.35 4 3 11 15.64 4 5 12 27.46 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 13 1 2 1 25.00 1 3 2 13.28 2 1 3 13.69 2 3 4 26.76 2 4 5 38.23 3 1 6 16.98 3 2 7 12.61 3 4 8 10.51 3 5 9 10.75 4 2 10 17.38 4 3 11 15.63 4 5 12 27.40 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 14 1 2 1 25.12 1 3 2 13.25 2 1 3 13.72 2 3 4 26.64 2 4 5 38.30 3 1 6 16.96 3 2 7 12.47 3 4 8 10.50 3 5 9 10.76 4 2 10 17.41 4 3 11 15.62 4 5 12 27.34 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 15 1 2 1 25.04 1 3 2 13.27 2 1 3 13.75 2 3 4 26.51 2 4 5 38.36 3 1 6 16.94 3 2 7 12.56 3 4 8 10.48 3 5 9 10.74 4 2 10 17.44 4 3 11 15.51 4 5 12 27.68 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 16 1 2 1 25.16 1 3 2 13.23 2 1 3 13.78 2 3 4 26.84 2 4 5 38.22 3 1 6 16.92 3 2 7 12.42 3 4 8 10.52

312

Anexo I
3 5 9 10.74 4 2 10 17.46 4 3 11 15.50 4 5 12 27.61 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 17 1 2 1 25.07 1 3 2 13.25 2 1 3 13.80 2 3 4 26.72 2 4 5 38.28 3 1 6 16.90 3 2 7 12.52 3 4 8 10.50 3 5 9 10.74 4 2 10 17.49 4 3 11 15.50 4 5 12 27.55 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 18 1 2 1 25.20 1 3 2 13.22 2 1 3 13.83 2 3 4 26.59 2 4 5 38.34 3 1 6 16.88 3 2 7 12.38 3 4 8 10.48 3 5 9 10.75 4 2 10 17.52 4 3 11 15.49 4 5 12 27.48 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 19 1 2 1 25.11 1 3 2 13.24 2 1 3 13.60 2 3 4 26.47 2 4 5 38.40 3 1 6 17.02 3 2 7 12.47 3 4 8 10.46 3 5 9 10.75 4 2 10 17.32 4 3 11 15.68 4 5 12 27.42 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 20 1 2 1 25.23 1 3 2 13.20 2 1 3 13.63 2 3 4 26.35 2 4 5 38.46 3 1 6 17.00 3 2 7 12.34 3 4 8 10.45 3 5 9 10.73 4 2 10 17.35 4 3 11 15.57 4 5 12 27.76 5 3 13 10.01 5 4 14 145.67

313

Anexo I
MATRIZ ASIGNACION ITERACION 21 1 2 1 25.15 1 3 2 13.23 2 1 3 13.65 2 3 4 26.23 2 4 5 38.52 3 1 6 16.98 3 2 7 12.43 3 4 8 10.43 3 5 9 10.73 4 2 10 17.38 4 3 11 15.56 4 5 12 27.69 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 22 1 2 1 25.27 1 3 2 13.19 2 1 3 13.68 2 3 4 26.56 2 4 5 38.38 3 1 6 16.96 3 2 7 12.29 3 4 8 10.47 3 5 9 10.74 4 2 10 17.40 4 3 11 15.55 4 5 12 27.62 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 23 1 2 1 25.18 1 3 2 13.21 2 1 3 13.71 2 3 4 26.44 2 4 5 38.44 3 1 6 16.94 3 2 7 12.39 3 4 8 10.45 3 5 9 10.74 4 2 10 17.43 4 3 11 15.54 4 5 12 27.56 5 3 13 10.01 5 4 14 145.67 MATRIZ ASIGNACION ITERACION 24 1 2 1 25.31 1 3 2 13.18 2 1 3 13.74 2 3 4 26.32 2 4 5 38.50 3 1 6 16.92 3 2 7 12.25 3 4 8 10.44 3 5 9 10.72 4 2 10 17.46 4 3 11 15.44 4 5 12 27.90 5 3 13 10.01 5 4 14 145.67

314

Anexo I

2. Informes generados en la prueba de validacin del algoritmo de calibracin basado en clculo K-mn.
Adems de los archivos ya adjuntados en el algoritmo basado en porcentajes, se generan los siguientes informes:

Resultados del algoritmo K-mn:

Se muestran la secuencia de nodos que conforman los caminos encontrados por el algoritmo de bsqueda de las k rutas mnimas.
Archivo de Resultados del Algoritmo Kmin -----------------------------------------Caminos encontrados del nodo 1 al nodo 1 ----------------------------------------Camino(1) al nodo 1 Nodo_1 --> Nodo_3 --> Nodo_2 --> Nodo_1 Longitud del camino: 33 Camino(2) al nodo 1 Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_3 --> Nodo_1 Longitud del camino: 47 Camino(3) al nodo 1 Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 Longitud del camino: 58 Camino(4) al nodo 1 Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_1 Longitud del camino: 62 Caminos encontrados del nodo 1 al nodo 2 ----------------------------------------Camino(1) al nodo 2 Nodo_1 --> Nodo_2 Longitud del camino: 6 Camino(2) al nodo 2 Nodo_1 --> Nodo_3 --> Nodo_2 Longitud del camino: 22 Camino(3) al nodo 2 Nodo_1 --> Nodo_3 --> Nodo_2 --> Nodo_1 --> Nodo_2 Longitud del camino: 39 Camino(4) al nodo 2 Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 --> Nodo_4 --> Nodo_2 Longitud del camino: 47 Caminos encontrados del nodo 1 al nodo 3 ----------------------------------------Camino(1) al nodo 3 Nodo_1 --> Nodo_3 Longitud del camino: 10 Camino(2) al nodo 3 Nodo_1 --> Nodo_2 --> Nodo_3 Longitud del camino: 18 Camino(3) al nodo 3 Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_3 Longitud del camino: 32 Camino(4) al nodo 3 Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 --> Nodo_3

315

Anexo I
Longitud del camino: 39 Caminos encontrados del nodo 1 al nodo 4 ----------------------------------------Camino(1) al nodo 4 Nodo_1 --> Nodo_2 --> Nodo_4 Longitud del camino: 19 Camino(2) al nodo 4 Nodo_1 --> Nodo_2 --> Nodo_3 --> Nodo_4 Longitud del camino: 31 Camino(3) al nodo 4 Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 --> Nodo_4 Longitud del camino: 34 Camino(4) al nodo 4 Nodo_1 --> Nodo_3 --> Nodo_2 --> Nodo_4 Longitud del camino: 35 Caminos encontrados del nodo 1 al nodo 5 ----------------------------------------Camino(1) al nodo 5 Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 Longitud del camino: 29 Camino(2) al nodo 5 Nodo_1 --> Nodo_2 --> Nodo_3 --> Nodo_4 --> Nodo_5 Longitud del camino: 41 Camino(3) al nodo 5 Nodo_1 --> Nodo_3 --> Nodo_2 --> Nodo_4 --> Nodo_5 Longitud del camino: 45 Camino(4) al nodo 5 Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_3 --> Nodo_5 Longitud del camino: 47 Caminos encontrados del nodo 2 al nodo 1 ----------------------------------------Camino(1) al nodo 1 Nodo_2 --> Nodo_1 Longitud del camino: 6 Camino(2) al nodo 1 Nodo_2 --> Nodo_4 --> Nodo_3 --> Nodo_1 Longitud del camino: 36 Camino(3) al nodo 1 Nodo_2 --> Nodo_1 --> Nodo_3 --> Nodo_2 --> Nodo_1 Longitud del camino: 39 Camino(4) al nodo 1 Nodo_2 --> Nodo_4 --> Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 Longitud del camino: 47 Caminos encontrados del nodo 2 al nodo 2 ----------------------------------------Camino(1) al nodo 2 Nodo_2 --> Nodo_1 --> Nodo_2 Longitud del camino: 12 Camino(2) al nodo 2 Nodo_2 --> Nodo_1 --> Nodo_3 --> Nodo_2 Longitud del camino: 28 Camino(3) al nodo 2 Nodo_2 --> Nodo_4 --> Nodo_5 --> Nodo_4 --> Nodo_2 Longitud del camino: 36 Camino(4) al nodo 2 Nodo_2 --> Nodo_4 --> Nodo_3 --> Nodo_1 --> Nodo_2 Longitud del camino: 42 Caminos encontrados del nodo 2 al nodo 3 ----------------------------------------Camino(1) al nodo 3 Nodo_2 --> Nodo_3

316

Anexo I
Longitud del camino: 7 Camino(2) al nodo 3 Nodo_2 --> Nodo_1 --> Nodo_3 Longitud del camino: 16 Camino(3) al nodo 3 Nodo_2 --> Nodo_4 --> Nodo_3 Longitud del camino: 21 Camino(4) al nodo 3 Nodo_2 --> Nodo_1 --> Nodo_2 --> Nodo_3 Longitud del camino: 24 Caminos encontrados del nodo 2 al nodo 4 ----------------------------------------Camino(1) al nodo 4 Nodo_2 --> Nodo_4 Longitud del camino: 8 Camino(2) al nodo 4 Nodo_2 --> Nodo_3 --> Nodo_4 Longitud del camino: 20 Camino(3) al nodo 4 Nodo_2 --> Nodo_4 --> Nodo_5 --> Nodo_4 Longitud del camino: 23 Camino(4) al nodo 4 Nodo_2 --> Nodo_1 --> Nodo_2 --> Nodo_4 Longitud del camino: 25 Caminos encontrados del nodo 2 al nodo 5 ----------------------------------------Camino(1) al nodo 5 Nodo_2 --> Nodo_4 --> Nodo_5 Longitud del camino: 18 Camino(2) al nodo 5 Nodo_2 --> Nodo_3 --> Nodo_4 --> Nodo_5 Longitud del camino: 30 Camino(3) al nodo 5 Nodo_2 --> Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 Longitud del camino: 35 Camino(4) al nodo 5 Nodo_2 --> Nodo_4 --> Nodo_3 --> Nodo_5 Longitud del camino: 36 Caminos encontrados del nodo 3 al nodo 1 ----------------------------------------Camino(1) al nodo 1 Nodo_3 --> Nodo_1 Longitud del camino: 10 Camino(2) al nodo 1 Nodo_3 --> Nodo_2 --> Nodo_1 Longitud del camino: 18 Camino(3) al nodo 1 Nodo_3 --> Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 Longitud del camino: 39 Camino(4) al nodo 1 Nodo_3 --> Nodo_1 --> Nodo_3 --> Nodo_2 --> Nodo_1 Longitud del camino: 43 Caminos encontrados del nodo 3 al nodo 2 ----------------------------------------Camino(1) al nodo 2 Nodo_3 --> Nodo_2 Longitud del camino: 7 Camino(2) al nodo 2 Nodo_3 --> Nodo_1 --> Nodo_2 Longitud del camino: 16 Camino(3) al nodo 2 Nodo_3 --> Nodo_2 --> Nodo_1 --> Nodo_2

317

Anexo I
Longitud del camino: 24 Camino(4) al nodo 2 Nodo_3 --> Nodo_5 --> Nodo_4 --> Nodo_2 Longitud del camino: 28 Caminos encontrados del nodo 3 al nodo 3 ----------------------------------------Camino(1) al nodo 3 Nodo_3 --> Nodo_1 --> Nodo_3 Longitud del camino: 20 Camino(2) al nodo 3 Nodo_3 --> Nodo_5 --> Nodo_3 Longitud del camino: 20 Camino(3) al nodo 3 Nodo_3 --> Nodo_1 --> Nodo_2 --> Nodo_3 Longitud del camino: 28 Camino(4) al nodo 3 Nodo_3 --> Nodo_5 --> Nodo_4 --> Nodo_3 Longitud del camino: 28 Caminos encontrados del nodo 3 al nodo 4 ----------------------------------------Camino(1) al nodo 4 Nodo_3 --> Nodo_4 Longitud del camino: 8 Camino(2) al nodo 4 Nodo_3 --> Nodo_5 --> Nodo_4 Longitud del camino: 15 Camino(3) al nodo 4 Nodo_3 --> Nodo_2 --> Nodo_4 Longitud del camino: 20 Camino(4) al nodo 4 Nodo_3 --> Nodo_4 --> Nodo_5 --> Nodo_4 Longitud del camino: 23 Caminos encontrados del nodo 3 al nodo 5 ----------------------------------------Camino(1) al nodo 5 Nodo_3 --> Nodo_5 Longitud del camino: 10 Camino(2) al nodo 5 Nodo_3 --> Nodo_4 --> Nodo_5 Longitud del camino: 18 Camino(3) al nodo 5 Nodo_3 --> Nodo_2 --> Nodo_4 --> Nodo_5 Longitud del camino: 30 Camino(4) al nodo 5 Nodo_3 --> Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 Longitud del camino: 39 Caminos encontrados del nodo 4 al nodo 1 ----------------------------------------Camino(1) al nodo 1 Nodo_4 --> Nodo_2 --> Nodo_1 Longitud del camino: 19 Camino(2) al nodo 1 Nodo_4 --> Nodo_3 --> Nodo_1 Longitud del camino: 23 Camino(3) al nodo 1 Nodo_4 --> Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 Longitud del camino: 34 Camino(4) al nodo 1 Nodo_4 --> Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_1 Longitud del camino: 38 Caminos encontrados del nodo 4 al nodo 2

318

Anexo I
----------------------------------------Camino(1) al nodo 2 Nodo_4 --> Nodo_2 Longitud del camino: 8 Camino(2) al nodo 2 Nodo_4 --> Nodo_5 --> Nodo_4 --> Nodo_2 Longitud del camino: 23 Camino(3) al nodo 2 Nodo_4 --> Nodo_2 --> Nodo_1 --> Nodo_2 Longitud del camino: 25 Camino(4) al nodo 2 Nodo_4 --> Nodo_3 --> Nodo_1 --> Nodo_2 Longitud del camino: 29 Caminos encontrados del nodo 4 al nodo 3 ----------------------------------------Camino(1) al nodo 3 Nodo_4 --> Nodo_3 Longitud del camino: 8 Camino(2) al nodo 3 Nodo_4 --> Nodo_5 --> Nodo_3 Longitud del camino: 15 Camino(3) al nodo 3 Nodo_4 --> Nodo_5 --> Nodo_4 --> Nodo_3 Longitud del camino: 23 Camino(4) al nodo 3 Nodo_4 --> Nodo_2 --> Nodo_1 --> Nodo_3 Longitud del camino: 29 Caminos encontrados del nodo 4 al nodo 4 ----------------------------------------Camino(1) al nodo 4 Nodo_4 --> Nodo_5 --> Nodo_4 Longitud del camino: 10 Camino(2) al nodo 4 Nodo_4 --> Nodo_3 --> Nodo_5 --> Nodo_4 Longitud del camino: 28 Camino(3) al nodo 4 Nodo_4 --> Nodo_2 --> Nodo_1 --> Nodo_2 --> Nodo_4 Longitud del camino: 38 Camino(4) al nodo 4 Nodo_4 --> Nodo_3 --> Nodo_1 --> Nodo_2 --> Nodo_4 Longitud del camino: 42 Caminos encontrados del nodo 4 al nodo 5 ----------------------------------------Camino(1) al nodo 5 Nodo_4 --> Nodo_5 Longitud del camino: 5 Camino(2) al nodo 5 Nodo_4 --> Nodo_3 --> Nodo_5 Longitud del camino: 23 Camino(3) al nodo 5 Nodo_4 --> Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_5 Longitud del camino: 38 Camino(4) al nodo 5 Nodo_4 --> Nodo_2 --> Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 Longitud del camino: 48 Caminos encontrados del nodo 5 al nodo 1 ----------------------------------------Camino(1) al nodo 1 Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 Longitud del camino: 29 Camino(2) al nodo 1 Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_1

319

Anexo I
Longitud del camino: 33 Camino(3) al nodo 1 Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 Longitud del camino: 62 Camino(4) al nodo 1 Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 --> Nodo_3 --> Nodo_2 --> Nodo_1 Longitud del camino: 62 Caminos encontrados del nodo 5 al nodo 2 ----------------------------------------Camino(1) al nodo 2 Nodo_5 --> Nodo_4 --> Nodo_2 Longitud del camino: 18 Camino(2) al nodo 2 Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 --> Nodo_2 Longitud del camino: 35 Camino(3) al nodo 2 Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_1 --> Nodo_2 Longitud del camino: 39 Camino(4) al nodo 2 Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_5 --> Nodo_4 --> Nodo_2 Longitud del camino: 51 Caminos encontrados del nodo 5 al nodo 3 ----------------------------------------Camino(1) al nodo 3 Nodo_5 --> Nodo_3 Longitud del camino: 10 Camino(2) al nodo 3 Nodo_5 --> Nodo_4 --> Nodo_3 Longitud del camino: 18 Camino(3) al nodo 3 Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 --> Nodo_3 Longitud del camino: 39 Camino(4) al nodo 3 Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_1 --> Nodo_3 Longitud del camino: 43 Caminos encontrados del nodo 5 al nodo 4 ----------------------------------------Camino(1) al nodo 4 Nodo_5 --> Nodo_4 Longitud del camino: 5 Camino(2) al nodo 4 Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_5 --> Nodo_4 Longitud del camino: 38 Camino(3) al nodo 4 Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 --> Nodo_2 --> Nodo_4 Longitud del camino: 48 Camino(4) al nodo 4 Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_1 --> Nodo_2 --> Nodo_4 Longitud del camino: 52 Caminos encontrados del nodo 5 al nodo 5 ----------------------------------------Camino(1) al nodo 5 Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_5 Longitud del camino: 33 Camino(2) al nodo 5 Nodo_5 --> Nodo_4 --> Nodo_2 --> Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 Longitud del camino: 58 Camino(3) al nodo 5 Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_1 --> Nodo_2 --> Nodo_4 --> Nodo_5 Longitud del camino: 62 Camino(4) al nodo 5 Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_5 --> Nodo_4 --> Nodo_3 --> Nodo_5

320

Anexo I
Longitud del camino: 66

321

Anexo I

3. Informacin generada durante el algoritmo de calibracin basado en porcentajes. Escenario real.


Cada iteracin muestra los siguientes datos: Tiempo de viajes: mxima y mnima duracin de los desplazamientos en la red. Factor de ponderacin: parmetro lambda caracterstico de la iteracin. Diferencia de volmenes: se presenta la media de las diferencias entre los flujos de cada iteracin y la anterior, la mxima diferencia y la mnima, indicando entre que dos nodos se produce. Tiempo de Cpu: tiempo empleado en la realizacin de la iteracin.

Escenario: Tamao Red:

216 centroides 1345 nodos 4422 tramos 0 giros Criterios de parada 25 iteraciones 0.0000 Gap -------------------------------------------------------------------------------------------Iteracion: 0--------------------------Tiempo de viajes: 948.07178 11.00000 Factor ponderacion: 1.00000000 Diferencia de volumenes: 0.0000 Mnimo: 0.00000 Nodos:0 -> 0 Mximo:0.00000 Nodos:0 -> 0 Diferencia de volumenes: 0.0000 Tiempo de Cpu: 22.24 -------------------------------------------------------------------------------------------Iteracion: 1--------------------------Tiempo de viajes: 1736.14319 11.00000 Factor ponderacion: 0.16767502 Diferencia de volumenes: 47.9544 Mnimo: -563.23022 Nodos:475 -> 443 Mximo:3492.94458 Nodos:596 -> 803 Diferencia de volumenes: 47.9544 Tiempo de Cpu: 45.35 -------------------------------------------------------------------------------------------Iteracion: 2--------------------------Tiempo de viajes: 2330.61743 11.00000 Factor ponderacion: 0.13314271 Diferencia de volumenes: 36.2586 Mnimo: -298.24915 Nodos:307 -> 280 Mximo:2338.16504 Nodos:740 -> 737 Diferencia de volumenes: 36.2586 Tiempo de Cpu: 75.97 -------------------------------------------------------------------------------------------Iteracion: 3--------------------------Tiempo de viajes: 2732.86816 11.00000 Factor ponderacion: 0.13313864 Diferencia de volumenes: 12.0387 Mnimo: -198.39685 Nodos:686 -> 688 Mximo:2383.27759 Nodos:681 -> 818 Diferencia de volumenes: 12.0387

322

Anexo I
Tiempo de Cpu: 57.48 -------------------------------------------------------------------------------------------Iteracion: 4--------------------------Tiempo de viajes: 3045.13281 11.00000 Factor ponderacion: 0.13016854 Diferencia de volumenes: 8.5672 Mnimo: 78.12624 Nodos:726 -> 255 Mximo:1644.38171 Nodos:718 -> 251 Diferencia de volumenes: 8.5672 Tiempo de Cpu: 69.64 -------------------------------------------------------------------------------------------Iteracion: 5--------------------------Tiempo de viajes: 3235.88550 11.00000 Factor ponderacion: 0.12256929 Diferencia de volumenes: 10.0426 Mnimo: 353.44629 Nodos:644 -> 655 Mximo:1725.16211 Nodos:544 -> 545 Diferencia de volumenes: 10.0426 Tiempo de Cpu: 65.71 -------------------------------------------------------------------------------------------Iteracion: 6--------------------------Tiempo de viajes: 3414.83472 11.00000 Factor ponderacion: 0.10547139 Diferencia de volumenes: 1.9371 Mnimo: -273.13843 Nodos:858 -> 431 Mximo:1153.68848 Nodos:758 -> 693 Diferencia de volumenes: 1.9371 Tiempo de Cpu: 67.86 -------------------------------------------------------------------------------------------Iteracion: 7--------------------------Tiempo de viajes: 3540.71411 11.00000 Factor ponderacion: 0.10546817 Diferencia de volumenes: -1.3178 Mnimo: 32.47128 Nodos:1343 -> 1311 Mximo:1663.50977 Nodos:603 -> 602 Diferencia de volumenes: -1.3178 Tiempo de Cpu: 94.11 -------------------------------------------------------------------------------------------Iteracion: 8--------------------------Tiempo de viajes: 3638.77979 11.00000 Factor ponderacion: 0.05797724 Diferencia de volumenes: 1.1299 Mnimo: 48.66431 Nodos:403 -> 402 Mximo:650.94727 Nodos:458 -> 852 Diferencia de volumenes: 1.1299 Tiempo de Cpu: 69.98 -------------------------------------------------------------------------------------------Iteracion: 9--------------------------Tiempo de viajes: 3745.71826 11.00000 Factor ponderacion: 0.05797371 Diferencia de volumenes: -3.7575 Mnimo: 16.98407 Nodos:1343 -> 1311 Mximo:489.67725 Nodos:686 -> 756 Diferencia de volumenes: -3.7575 Tiempo de Cpu: 58.96 -------------------------------------------------------------------------------------------Iteracion: 10--------------------------Tiempo de viajes: 3791.87158 11.00000 Factor ponderacion: 0.05797017 Diferencia de volumenes: -3.0694 Mnimo: -17.51990 Nodos:1343 -> 1311 Mximo:621.88904 Nodos:1319 -> 1323 Diferencia de volumenes: -3.0694 Tiempo de Cpu: 55.29 -------------------------------------------------------------------------------------------Iteracion: 11---------------------------

323

Anexo I
Tiempo de viajes: 3814.05127 11.00000 Factor ponderacion: 0.05796663 Diferencia de volumenes: -3.2345 Mnimo: 17.01303 Nodos:1343 -> 1311 Mximo:500.60229 Nodos:573 -> 656 Diferencia de volumenes: -3.2345 Tiempo de Cpu: 59.78 -------------------------------------------------------------------------------------------Iteracion: 12--------------------------Tiempo de viajes: 3797.15649 11.00000 Factor ponderacion: 0.05796309 Diferencia de volumenes: -3.1992 Mnimo: -17.48837 Nodos:1343 -> 1311 Mximo:383.55566 Nodos:686 -> 683 Diferencia de volumenes: -3.1992 Tiempo de Cpu: 58.24 -------------------------------------------------------------------------------------------Iteracion: 13--------------------------Tiempo de viajes: 3772.40039 11.00000 Factor ponderacion: 0.03415025 Diferencia de volumenes: -1.1881 Mnimo: 10.03925 Nodos:1343 -> 1311 Mximo:297.37476 Nodos:262 -> 728 Diferencia de volumenes: -1.1881 Tiempo de Cpu: 85.19 -------------------------------------------------------------------------------------------Iteracion: 14--------------------------Tiempo de viajes: 3793.85986 11.00000 Factor ponderacion: 0.03414608 Diferencia de volumenes: -2.3260 Mnimo: -10.04807 Nodos:1343 -> 1311 Mximo:239.79541 Nodos:553 -> 551 Diferencia de volumenes: -2.3260 Tiempo de Cpu: 55.31 -------------------------------------------------------------------------------------------Iteracion: 15--------------------------Tiempo de viajes: 3805.09082 11.00000 Factor ponderacion: 0.03414191 Diferencia de volumenes: -2.5946 Mnimo: 10.03708 Nodos:1343 -> 1311 Mximo:208.77539 Nodos:1268 -> 1267 Diferencia de volumenes: -2.5946 Tiempo de Cpu: 56.65 -------------------------------------------------------------------------------------------Iteracion: 16--------------------------Tiempo de viajes: 3799.05737 11.00000 Factor ponderacion: 0.03413774 Diferencia de volumenes: -2.2350 Mnimo: -10.04523 Nodos:1343 -> 1311 Mximo:154.47559 Nodos:640 -> 653 Diferencia de volumenes: -2.2350 Tiempo de Cpu: 54.54 -------------------------------------------------------------------------------------------Iteracion: 17--------------------------Tiempo de viajes: 3797.32227 11.00000 Factor ponderacion: 0.03413358 Diferencia de volumenes: -2.0673 Mnimo: 10.03491 Nodos:1343 -> 1311 Mximo:184.92798 Nodos:262 -> 272 Diferencia de volumenes: -2.0673 Tiempo de Cpu: 57.62 -------------------------------------------------------------------------------------------Iteracion: 18--------------------------Tiempo de viajes: 3775.36841 11.00000 Factor ponderacion: 0.03412941 Diferencia de volumenes: -1.1730

324

Anexo I
Mnimo: -10.04242 Nodos:1343 -> 1311 Mximo:315.34698 Nodos:615 -> 581 Diferencia de volumenes: -1.1730 Tiempo de Cpu: 60.87 -------------------------------------------------------------------------------------------Iteracion: 19--------------------------Tiempo de viajes: 3753.65967 11.00000 Factor ponderacion: 0.03412525 Diferencia de volumenes: -1.7937 Mnimo: 10.03271 Nodos:1343 -> 1311 Mximo:271.80396 Nodos:683 -> 682 Diferencia de volumenes: -1.7937 Tiempo de Cpu: 59.68 -------------------------------------------------------------------------------------------Iteracion: 20--------------------------Tiempo de viajes: 3742.37622 11.00000 Factor ponderacion: 0.03412108 Diferencia de volumenes: -1.9262 Mnimo: -10.03964 Nodos:1343 -> 1311 Mximo:174.35712 Nodos:614 -> 598 Diferencia de volumenes: -1.9262 Tiempo de Cpu: 54.72 -------------------------------------------------------------------------------------------Iteracion: 21--------------------------Tiempo de viajes: 3727.57495 11.00000 Factor ponderacion: 0.03411692 Diferencia de volumenes: -2.1592 Mnimo: 10.03052 Nodos:1343 -> 1311 Mximo:235.15015 Nodos:888 -> 671 Diferencia de volumenes: -2.1592 Tiempo de Cpu: 57.13 -------------------------------------------------------------------------------------------Iteracion: 22--------------------------Tiempo de viajes: 3722.38550 11.00000 Factor ponderacion: 0.03411275 Diferencia de volumenes: -1.6356 Mnimo: -10.03687 Nodos:1343 -> 1311 Mximo:198.28809 Nodos:1269 -> 1268 Diferencia de volumenes: -1.6356 Tiempo de Cpu: 60.70 -------------------------------------------------------------------------------------------Iteracion: 23--------------------------Tiempo de viajes: 3712.39575 11.00000 Factor ponderacion: 0.03175168 Diferencia de volumenes: -1.4283 Mnimo: 9.33533 Nodos:1343 -> 1311 Mximo:221.50757 Nodos:684 -> 685 Diferencia de volumenes: -1.4283 Tiempo de Cpu: 57.58 -------------------------------------------------------------------------------------------Iteracion: 24--------------------------Tiempo de viajes: 3701.49976 11.00000 Factor ponderacion: 0.03174780 Diferencia de volumenes: -0.7883 Mnimo: -9.31879 Nodos:1343 -> 1311 Mximo:297.44113 Nodos:652 -> 590 Diferencia de volumenes: -0.7883 Tiempo de Cpu: 66.17 -------------------------------------------------------------------- Fin Calibracion -------------------------------------------------------------------

325

Anexo I

4. Informacin generada durante el algoritmo de calibracin basado en clculo K-mn. Escenario real.
Cada iteracin muestra los siguientes datos: Tiempo de viajes: mxima y mnima duracin de los desplazamientos en la red. Factor de ponderacin: parmetro lambda caracterstico de la iteracin. Diferencia de volmenes: se presenta la media de las diferencias entre los flujos de cada iteracin y la anterior, la mxima diferencia y la mnima, indicando entre que dos nodos se produce. Tiempo de Cpu: tiempo empleado en la realizacin de la iteracin.

Adems se muestra informacin acerca del algoritmo K-mn, indicando el tiempo empleado en cada una de las etapas del mismo.
Escenario: Tamao Red:

216 centroides 1345 nodos 4422 tramos 0 giros Criterios de parada 25 iteraciones 0.0000 Gap -------------------------------------------------------------------------------------------Iteracion: 0--------------------------Tiempo de viajes: 948.07178 11.00000 Factor ponderacion: 1.00000000 Diferencia de volumenes: 0.0000 Mnimo: 0.00000 Nodos:0 -> 0 Mximo:0.00000 Nodos:0 -> 0 Diferencia de volumenes: 0.0000 Tiempo de Cpu: 13.33 -------------------------------------------------------------------------------------------Iteracion: 1--------------------------Tiempo de viajes: 1736.14319 11.00000 Factor ponderacion: 0.16767502 Diferencia de volumenes: 47.9544 Mnimo: -563.23022 Nodos:475 -> 443 Mximo:3492.94458 Nodos:596 -> 803 Diferencia de volumenes: 47.9544 Tiempo de Cpu: 17.86 -------------------------------------------------------------------------------------------Iteracion: 2--------------------------Tiempo de viajes: 2330.61743 11.00000 Factor ponderacion: 0.13314271 Diferencia de volumenes: 36.2586 Mnimo: -298.24915 Nodos:307 -> 280 Mximo:2338.16504 Nodos:740 -> 737 Diferencia de volumenes: 36.2586 Tiempo de Cpu: 17.09 -------------------------------------------------------------------------------------------Iteracion: 3---------------------------

326

Anexo I
Tiempo de viajes: 2732.86816 11.00000 Factor ponderacion: 0.13313864 Diferencia de volumenes: 12.0387 Mnimo: -198.39685 Nodos:686 -> 688 Mximo:2383.27759 Nodos:681 -> 818 Diferencia de volumenes: 12.0387 Tiempo de Cpu: 17.08 -------------------------------------------------------------------------------------------Iteracion: 4--------------------------Tiempo de viajes: 3045.13281 11.00000 Factor ponderacion: 0.13016854 Diferencia de volumenes: 8.5672 Mnimo: 78.12624 Nodos:726 -> 255 Mximo:1644.38171 Nodos:718 -> 251 Diferencia de volumenes: 8.5672 Tiempo de Cpu: 16.52 -------------------------------------------------------------------------------------------Iteracion: 5--------------------------Tiempo de viajes: 3235.88550 11.00000 Factor ponderacion: 0.12256929 Diferencia de volumenes: 10.0426 Mnimo: 353.44629 Nodos:644 -> 655 Mximo:1725.16211 Nodos:544 -> 545 Diferencia de volumenes: 10.0426 Tiempo de Cpu: 16.58 -------------------------------------------------------------------------------------------Iteracion: 6--------------------------Tiempo de viajes: 3414.83472 11.00000 Factor ponderacion: 0.10547139 Diferencia de volumenes: 1.9371 Mnimo: -273.13843 Nodos:858 -> 431 Mximo:1153.68848 Nodos:758 -> 693 Diferencia de volumenes: 1.9371 Tiempo de Cpu: 16.30 -------------------------------------------------------------------------------------------Iteracion: 7--------------------------Tiempo de viajes: 3540.71411 11.00000 Factor ponderacion: 0.10546817 Diferencia de volumenes: -1.3178 Mnimo: 32.47128 Nodos:1343 -> 1311 Mximo:1663.50977 Nodos:603 -> 602 Diferencia de volumenes: -1.3178 Tiempo de Cpu: 16.24 -------------------------------------------------------------------------------------------Iteracion: 8--------------------------Tiempo de viajes: 3638.77979 11.00000 Factor ponderacion: 0.05797724 Diferencia de volumenes: 1.1299 Mnimo: 48.66431 Nodos:403 -> 402 Mximo:650.94727 Nodos:458 -> 852 Diferencia de volumenes: 1.1299 Tiempo de Cpu: 15.84 -------------------------------------------------------------------------------------------Iteracion: 9--------------------------Tiempo de viajes: 3745.71826 11.00000 Factor ponderacion: 0.05797371 Diferencia de volumenes: -3.7575 Mnimo: 16.98407 Nodos:1343 -> 1311 Mximo:489.67725 Nodos:686 -> 756 Diferencia de volumenes: -3.7575 Tiempo de Cpu: 16.66 -------------------------------------------------------------------------------------------Iteracion: 10--------------------------Tiempo de viajes: 3791.87158 11.00000 Factor ponderacion: 0.05797017 Diferencia de volumenes: -3.0694

327

Anexo I
Mnimo: -17.51990 Nodos:1343 -> 1311 Mximo:621.88904 Nodos:1319 -> 1323 Diferencia de volumenes: -3.0694 Tiempo de Cpu: 15.78 -------------------------------------------------------------------------------------------Iteracion: 11--------------------------Tiempo de viajes: 3814.05127 11.00000 Factor ponderacion: 0.05796663 Diferencia de volumenes: -3.2345 Mnimo: 17.01303 Nodos:1343 -> 1311 Mximo:500.60229 Nodos:573 -> 656 Diferencia de volumenes: -3.2345 Tiempo de Cpu: 16.23 -------------------------------------------------------------------------------------------Iteracion: 12--------------------------Tiempo de viajes: 3797.15649 11.00000 Factor ponderacion: 0.05796309 Diferencia de volumenes: -3.1992 Mnimo: -17.48837 Nodos:1343 -> 1311 Mximo:383.55566 Nodos:686 -> 683 Diferencia de volumenes: -3.1992 Tiempo de Cpu: 15.94 -------------------------------------------------------------------------------------------Iteracion: 13--------------------------Tiempo de viajes: 3772.40039 11.00000 Factor ponderacion: 0.03415025 Diferencia de volumenes: -1.1881 Mnimo: 10.03925 Nodos:1343 -> 1311 Mximo:297.37476 Nodos:262 -> 728 Diferencia de volumenes: -1.1881 Tiempo de Cpu: 17.03 -------------------------------------------------------------------------------------------Iteracion: 14--------------------------Tiempo de viajes: 3793.85986 11.00000 Factor ponderacion: 0.03414608 Diferencia de volumenes: -2.3260 Mnimo: -10.04807 Nodos:1343 -> 1311 Mximo:239.79541 Nodos:553 -> 551 Diferencia de volumenes: -2.3260 Tiempo de Cpu: 15.04 -------------------------------------------------------------------------------------------Iteracion: 15--------------------------Tiempo de viajes: 3805.09082 11.00000 Factor ponderacion: 0.03414191 Diferencia de volumenes: -2.5946 Mnimo: 10.03708 Nodos:1343 -> 1311 Mximo:208.77539 Nodos:1268 -> 1267 Diferencia de volumenes: -2.5946 Tiempo de Cpu: 16.46 -------------------------------------------------------------------------------------------Iteracion: 16--------------------------Tiempo de viajes: 3799.05737 11.00000 Factor ponderacion: 0.03413774 Diferencia de volumenes: -2.2350 Mnimo: -10.04523 Nodos:1343 -> 1311 Mximo:154.47559 Nodos:640 -> 653 Diferencia de volumenes: -2.2350 Tiempo de Cpu: 16.25 -------------------------------------------------------------------------------------------Iteracion: 17--------------------------Tiempo de viajes: 3797.32227 11.00000 Factor ponderacion: 0.03413358 Diferencia de volumenes: -2.0673 Mnimo: 10.03491 Nodos:1343 -> 1311 Mximo:184.92798 Nodos:262 -> 272 Diferencia de volumenes: -2.0673

328

Anexo I
Tiempo de Cpu: 17.13 -------------------------------------------------------------------------------------------Iteracion: 18--------------------------Tiempo de viajes: 3775.36841 11.00000 Factor ponderacion: 0.03412941 Diferencia de volumenes: -1.1730 Mnimo: -10.04242 Nodos:1343 -> 1311 Mximo:315.34698 Nodos:615 -> 581 Diferencia de volumenes: -1.1730 Tiempo de Cpu: 16.56 -------------------------------------------------------------------------------------------Iteracion: 19--------------------------Tiempo de viajes: 3753.65967 11.00000 Factor ponderacion: 0.03412525 Diferencia de volumenes: -1.7937 Mnimo: 10.03271 Nodos:1343 -> 1311 Mximo:271.80396 Nodos:683 -> 682 Diferencia de volumenes: -1.7937 Tiempo de Cpu: 16.29 -------------------------------------------------------------------------------------------Iteracion: 20--------------------------Tiempo de viajes: 3742.37622 11.00000 Factor ponderacion: 0.03412108 Diferencia de volumenes: -1.9262 Mnimo: -10.03964 Nodos:1343 -> 1311 Mximo:174.35712 Nodos:614 -> 598 Diferencia de volumenes: -1.9262 Tiempo de Cpu: 15.36 -------------------------------------------------------------------------------------------Iteracion: 21--------------------------Tiempo de viajes: 3727.57495 11.00000 Factor ponderacion: 0.03411692 Diferencia de volumenes: -2.1592 Mnimo: 10.03052 Nodos:1343 -> 1311 Mximo:235.15015 Nodos:888 -> 671 Diferencia de volumenes: -2.1592 Tiempo de Cpu: 17.03 -------------------------------------------------------------------------------------------Iteracion: 22--------------------------Tiempo de viajes: 3722.38550 11.00000 Factor ponderacion: 0.03411275 Diferencia de volumenes: -1.6356 Mnimo: -10.03687 Nodos:1343 -> 1311 Mximo:198.28809 Nodos:1269 -> 1268 Diferencia de volumenes: -1.6356 Tiempo de Cpu: 15.56 -------------------------------------------------------------------------------------------Iteracion: 23--------------------------Tiempo de viajes: 3712.39575 11.00000 Factor ponderacion: 0.03175168 Diferencia de volumenes: -1.4283 Mnimo: 9.33533 Nodos:1343 -> 1311 Mximo:221.50757 Nodos:684 -> 685 Diferencia de volumenes: -1.4283 Tiempo de Cpu: 15.89 -------------------------------------------------------------------------------------------Iteracion: 24--------------------------Tiempo de viajes: 3701.49976 11.00000 Factor ponderacion: 0.03174780 Diferencia de volumenes: -0.7883 Mnimo: -9.31879 Nodos:1343 -> 1311 Mximo:297.44113 Nodos:652 -> 590 Diferencia de volumenes: -0.7883 Tiempo de Cpu: 13.90

329

Anexo I
Aplicando algoritmo Kmin ... Calibracion Kmin -------------------------------Inicializando listas ... Generando informacin de nodos ... 0:00:13 Calculando y guardando rutas ... 0:22:21 Calibrando la matriz de viajes ... 0:43:07 Tiempo total empleado: 0:43:07 -------------------------------------------------------------------- Fin Calibracion -------------------------------------------------------------------

330

Vous aimerez peut-être aussi