Post on 08-Feb-2019
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA
CIUDAD CON VENTANAS
TEMPORALES DE ACCESO.
Proyecto fin de carrera.
Autor: Rafael Grosso de la Vega
Profesor Tutor: Jesús Muñuzuri Sanz
Abril 2010
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
2 Rafael Grosso de la Vega
ÍNDICE:
1 INTRODUCCIÓN Y OBJETIVOS DEL PROYECTO.- ................................................. 5
2 LOGÍSTICA URBANA: INTRODUCCIÓN.- .................................................................. 9
2.1 Acercamiento a la logística urbana en España. ............................................................................. 9
2.2 Logística urbana de mercancías en el centro histórico de Sevilla. ............................................... 13
2.2.1 Problemática. .......................................................................................................................... 13
2.2.2 Soluciones posibles. ................................................................................................................ 14
3 PLANTEAMIENTO DEL PROBLEMA.- .................................................................... 17
3.1 Introducción al problema a resolver.- ......................................................................................... 17
3.2 Presentación del problema ......................................................................................................... 19
3.2.1 Proceso General ...................................................................................................................... 19
3.2.2 Restricciones consideradas ..................................................................................................... 20
3.2.3 Modelado matemático. ........................................................................................................... 22
4 HERRAMIENTAS DE RESOLUCIÓN. ........................................................................ 26
4.1 Introducción a los problemas de optimización de rutas.- ............................................................ 26
4.1.1 Métodos exactos.- ................................................................................................................... 29
4.1.2 Métodos heurísticos.-.............................................................................................................. 30
4.1.3 Metaheurísticas.-..................................................................................................................... 32
4.1.3.1 Simulated Annealing ...................................................................................................... 33
4.1.3.2 Búsquedas tabú ............................................................................................................. 34
4.1.3.3 Métodos Evolutivos ....................................................................................................... 34
4.1.3.3.1 Algoritmos Genéticos ................................................................................................ 34
4.1.3.3.2 Programación Genética ............................................................................................. 35
4.1.3.3.3 Programación Evolutiva ............................................................................................ 35
4.2 Introducción a los algoritmos genéticos. ..................................................................................... 36
4.2.1 Introducción histórica ............................................................................................................. 36
4.2.1.1 Mecanismos de cambio en la evolución ........................................................................ 38
4.2.1.2 Evolución de la informática evolutiva ............................................................................ 39
4.2.2 Los Algoritmos Genéticos. ....................................................................................................... 43
4.2.2.1 Estructura del Algoritmo Genético Simple. ................................................................... 44
5 EXPOSICIÓN DEL MÉTODO DE RESOLUCIÓN: ALGORITMO GENÉTICO.- .. 47
5.1 Casuística .................................................................................................................................... 47
5.1.1 Caso General ........................................................................................................................... 48
5.1.2 Entrada en la Zona Restringida................................................................................................ 49
5.1.2.1 Con la ventana temporal abierta. .................................................................................. 50
5.1.2.2 Con la ventana temporal cerrada. ................................................................................. 50
5.1.3 Salida de la Zona Restringida ................................................................................................... 54
5.2 Desarrollo del algoritmo. Diagrama de flujos. ............................................................................. 57
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
3 Rafael Grosso de la Vega
5.2.1 Fitness. .................................................................................................................................... 59
5.2.2 Cruce. ...................................................................................................................................... 65
5.2.3 Mutación. ................................................................................................................................ 67
5.2.4 Selección por Ranking. ............................................................................................................ 68
5.2.5 Población nueva. ..................................................................................................................... 68
6 RED DE PRUEBA. RESULTADOS.- ........................................................................... 71
6.1 Exposición de la red de prueba ................................................................................................... 71
6.2 Resultados .................................................................................................................................. 73
7 RED DE SEVILLA. RESULTADOS.- ........................................................................... 76
7.1 Exposición de la red de Sevilla .................................................................................................... 76
7.2 Resultados .................................................................................................................................. 80
8 CONCLUSIONES. ........................................................................................................... 85
9 BIBLIOGRAFÍA. ............................................................................................................. 87
ANEXO: PROGRAMACIÓN DEL ALGORITMO. .............................................................. 88
1 RED DE PRUEBA. ......................................................................................................... 89
1.1 Generación de los problemas. .................................................................................................... 89
1.1.1 A_parametros: ......................................................................................................................... 90
1.1.2 B_creanodos: ........................................................................................................................... 91
1.1.3 C_construirmatrizincidencias: ................................................................................................. 92
1.1.4 D_zonarestringida: .................................................................................................................. 93
1.1.5 E_nodosinicioydestino: ........................................................................................................... 94
1.1.6 F_rutasminimas: ...................................................................................................................... 96
1.2 Resolución de los problemas. ..................................................................................................... 98
1.2.1 G_poblinicial: ......................................................................................................................... 101
1.2.2 H_paradasZR: ........................................................................................................................ 102
1.2.3 I_previofitness: ...................................................................................................................... 102
1.2.3.1 I_fitness: ...................................................................................................................... 105
1.2.3.1.1 I_1_bucle_J: ............................................................................................................ 106
1.2.3.1.2 J_bucle_K: ............................................................................................................... 107
1.2.3.1.3 I_2_bucle_N: .......................................................................................................... 108
1.2.4 K_cruce: ................................................................................................................................. 110
1.2.5 L_mutacion: ........................................................................................................................... 113
1.2.6 M_previofitnessDescendientes: ............................................................................................ 114
1.2.7 N_seleccionporranking: ......................................................................................................... 116
1.2.8 O_poblinicial2:....................................................................................................................... 118
1.2.9 P_previofitnesspoblinicial2: .................................................................................................. 119
2 RED DE SEVILLA. ...................................................................................................... 121
2.1 Generación de los problemas. .................................................................................................. 121
2.1.1 B_creanodosSevilla................................................................................................................ 123
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
4 Rafael Grosso de la Vega
2.1.2 C_construirmatrizincidenciasSev........................................................................................... 124
2.1.3 D_zonarestringidaSev ............................................................................................................ 124
2.1.4 E_nodosinicioydestinoSevde100 ........................................................................................... 126
2.1.5 F_rutasminimasSev ............................................................................................................... 128
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
5 Rafael Grosso de la Vega
PROYECTO FIN DE CARRERA
“La mayoría de los problemas del mundo real no
pueden ser solucionados por métodos tradicionales;
si se pudiesen solucionar por medio de un
procedimiento clásico, ya no seria un problema”.
Zbigniew Michalewicz, University of
Adelaide
1 INTRODUCCIÓN Y OBJETIVOS DEL PROYECTO.-
Los objetivos de este proyecto son llevar a cabo la resolución de un problema
de optimización de rutas por medio de Algoritmos Genéticos (AAGG).
Apoyándose, en la medida en que se pueda, en los conceptos metodológicos
de utilizar una visión sistémica del proyecto, es decir no aportar una suma de
soluciones a sus diferentes partes sino analizarlo en conjunto para buscar la
mejor solución, además de intentar utilizar los conceptos básicos de la
ingeniería concurrente, esto es tener en cuenta las necesidades y objetivos de
todas las etapas del proyecto en cualquier momento del desarrollo de este.
Los problemas de optimización de rutas, como el problema básico del viajero
de comercio (TSP) o el problema de optimización de rutas de vehículos con
ventana de tiempo (VRPTW), han sido y siguen siendo profundamente
estudiados. Se puede encontrar multitud de documentación y software sobre el
tema en las cuales podremos hallar una larga lista de métodos de resolución,
pasando por la optimización lineal y terminando por las técnicas
metaheurísticas más avanzadas y modernas. En este documento no se
pretende avanzar en el estudio de las técnicas de resolución para estos
problemas, más si se pretende resolver un nuevo tipo de problema de
optimización de rutas con unas características diferentes a los planteados
hasta ahora.
El problema en cuestión aparece, como todos, de la observación de la realidad.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
6 Rafael Grosso de la Vega
Dada la tendencia cada vez más creciente de las autoridades locales de
peatonalizar los centros urbanos, es decir, de impedir el acceso de vehículos a
ciertas partes de la ciudad, las empresas de reparto de mercancía se
encuentran con nuevos problemas. Además sabiendo que estas zonas de las
ciudades suelen tener una densidad muy alta de comercios a los que es
imprescindible abastecer, el problema parece mayor para la logística de estos
comercios. Estas restricciones de movilidad suelen ir acompañadas de otras
temporales: se suele imponer un horario de acceso a los centros urbanos.
Incluso esta imposición horaria suele coincidir con el horario laboral tipo, cosa
que complejiza más el problema. La combinación de estos dos factores, uno
zonal y otro temporal, en un problema de optimización de rutas es lo que se
viene ha llamar aquí Vehicle Routing Problem with Acess Time Windows
(VRPATW).
Este nuevo tipo de ventana temporal difiere en sus características básicas con
las definidas en otros problemas que también la contemplan, en este caso no
es el cliente el que me impone un determinado horario (como sucede en el
problema VRPTW) en el que se le debe servir la mercancía, sino las
autoridades locales o ayuntamientos. Además esta ventana de tiempo se
impone para todos los clientes que se encuentren en la zona peatonalizada,
sumando también la imposibilidad de entrar o permanecer en dicha zona. En
resumen, se esta ante una zona con el acceso restringido bajo un determinado
horario, horario que será el mismo para todos los clientes que se encuentren
dentro de la zona.
Mediante la herramienta informática MATLAB se programará el modelo de este
problema con todas sus características y restricciones, al igual que la
implementación y desarrollo del propio AAGG. Dentro de MATLAB mediante
los llamados M-files, que son ficheros de texto ASCII con la extensión *.m que
contienen conjuntos de comandos y/o definiciones de funciones, se ira
programando en una primer momento el modelo del problema, y
posteriormente se programará y desarrollará el algoritmo de resolución. Para
todo este proceso de modelado e implementación se pasará por diversas
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
7 Rafael Grosso de la Vega
fases:
• Estudio y modelado del problema.
• Estudio y definición de la estructura general del AAGG.
• Estudio de la adaptación del AAGG al problema concreto.
• Programación del modelo del problema en función de los futuros inputs
del AAGG.
• Implementación del AAGG en el lenguaje de programación de la
herramienta informática MATLAB.
• Depuración y probaturas del algoritmo sobre el modelo hasta su correcto
funcionamiento.
Cabe decir que todo el proceso de modelado e implementación del algoritmo
esta cruzado por el objetivo general de conseguir solucionar el problema de
manera que el esfuerzo computacional sea mínimo, es decir, que el algoritmo
sea lo más eficiente posible, hablando en términos de tiempo de resolución.
Para todo ello durante el proceso de implementación del algoritmo se realizaran
las probaturas sobre un modelo básico compuesto por una red de nodos, que
llamaremos red de prueba, cuyas características detallaremos en un apartado
posterior. Una vez verificado el funcionamiento eficiente y óptimo del algoritmo
en dicha red de prueba, se procederá finalmente a su aplicación sobre el
modelo de una red de la ciudad de Sevilla y su área metropolitana.
Con respecto a la finalidad del proyecto, además de la obvia y propia de la
realización de un proyecto fin de carrera (véase normativa para proyectos fin de
carrera), se pretende evaluar, en términos económicos y temporales, y desde
un punto de vista neutro con respecto a los dos entes implicados en el proceso
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
8 Rafael Grosso de la Vega
(la empresa privada y los ayuntamientos) el coste de implantar ventanas
temporales en los centros de las ciudades. Nos referimos a la tendencia de los
ayuntamientos de peatonalizar los cascos antiguos y los centros de las
ciudades. Lo que conlleva que el acceso de los vehículos de reparto a los
comercios que se encuentran en estas zonas se encuentra limitado en horario,
es decir tienen una ventana temporal. De ese modo se pretende cuantificar los
costes en los que se incurre, por parte de las empresas de reparto, con la
implantación de este tipo de medidas enlas ciudades.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
9 Rafael Grosso de la Vega
2 LOGÍSTICA URBANA: INTRODUCCIÓN.-
2.1 Acercamiento a la logística urbana en España. La logística urbana de mercancías no ha venido teniendo una atención
especial como un concepto singular en España. Esta es probablemente la
razón principal para la escasez de datos disponibles sobre el sector. Pocos
estudios han analizado esta actividad obteniendo información relevante para el
análisis de la distribución urbana de mercancías, y sólo algunas ciudades han
abierto esta línea de trabajo recientemente.
No consta la existencia de ningún estudio general a nivel español que se haya
dedicado a la obtención de datos cuantitativos dirigidos a describir los múltiples
aspectos relacionados con la Logística Urbana de Mercancías.
El sector del transporte por carretera en España no ha venido considerando la
Logística Urbana de Mercancías (LUM) como un subsector de su industria. Por
tanto, no existen bancos de datos que muestren la importancia de la actividad.
No existen listados de compañías cuyo negocio se centre en la LUM, ni de los
ingresos agregados generados por la actividad, ni del número de vehículos
utilizados, etc. Por tanto, sólo se puede, en el momento actual, presentar una
visión global deducida a partir de la información existente sobre el transporte de
mercancías.
El transporte de mercancías en España se divide en un 85% para la
carretera, un 12% por barco, 3% en tren y mínimas cantidades en avión. El
transporte de mercancías por carretera constituye un sector que factura 6.000
millones de euros, repartido entre 500 empresas que absorben el 99% de la
actividad. Existe una clasificación generalmente aceptada en función de los
distintos tipos de mercancía. El tipo de mercancía relacionado más
directamente con la distribución urbana es el denominado mercancía
fraccionada, que corresponde aproximadamente al 10% del transporte por
carretera, es decir 600 millones de euros. Por otro lado, el transporte de carga
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
10 Rafael Grosso de la Vega
completa representa el 25% del transporte por carretera, 1.500 millones de
euros. Los grandes centros comerciales situados en áreas urbanas hacen uso
frecuentemente del transporte de carga completa, pero es difícil dar una
estimación acerca de qué proporción de este tipo de transporte tiene el final de
su cadena de suministro localizado en una zona urbana.
Existen otros dos tipos de transporte de mercancías que a menudo incluyen
áreas urbanas en al menos uno de los dos extremos de su cadena de
suministro: paquetería y servicios de courier. Se trata de un mercado de 3.000
millones de euros cubierto por unas 4.000 empresas, la mayoría de las cuales
son pequeñas y de ámbito local (las cinco mayores compañías aglutinan el
40% de la actividad). Además, la tercera y cuarta empresas en el ranking de
servicios de paquetería y courier son también las dos primeras en el ranking de
carga fraccionada, con el 45% de este tipo de mercancía. Se trata de las
principales compañías de logística y transporte que actúan también en la
distribución urbana en las áreas metropolitanas españolas
Los principales indicadores de actividades comerciales en España pueden
ser resumidos en las siguientes cifras: existen 20 establecimientos comerciales
por cada 1000 habitantes, incluyendo tiendas y también bares, cafeterías y
restaurantes. Existe una relación de 9 a 1 entre clientes finales y centros de
distribución. La localización de estos establecimientos es aproximadamente:
40% en el centro, 40% en la corona metropolitana y 20% en áreas no urbanas
(pueblos, zonas rurales).
No existen indicadores de validez general a nivel español para operaciones de
carga y descarga en relación con la población, el empleo o el tamaño de los
comercios. Pero no hay razones para esperar valores muy diferentes de los ya
obtenidos en Barcelona, Sevilla y otras ciudades: 100.000 operaciones diarias
en Barcelona representan aproximadamente 1 operación semanal por empleo.
Los resultados obtenidos en algunos estudios estiman en 50.000 operaciones
diarias de entrega y recogida en Sevilla.
Cerca de 11 millones de personas viven en las 20 principales ciudades
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
11 Rafael Grosso de la Vega
españolas, todas ellas con más de 200.000 habitantes. Dado que la tasa de
población activa es del 55%, puede concluirse que un total de 6 millones de
operaciones de carga y descarga se llevan a cabo diariamente en estas áreas
urbanas.
Es tradicional en España considerar la Logística Urbana de Mercancías como
un tipo de tráfico que debe ser regulado dentro de las normativas generales
que se ocupan del tráfico y el transporte a nivel local. En las ordenanzas
municipales, bajo el encabezamiento de carga y descarga, se encuentra
normalmente un amplio artículo que contempla el tipo de vehículos permitidos
en las distintas zonas de la ciudad, las ventanas temporales de acceso para los
vehículos de reparto de mercancías y el uso de espacios de aparcamiento para
carga y descarga.
La mayoría de las normas de tráfico a nivel local fueron dictadas a finales de
los años 60 y principios de los 70, y duraron tres décadas con sólo
modificaciones y actualizaciones menores. Se ha producido una reciente
reformulación de la mayoría de ordenanzas de transportes en la segunda mitad
de los 90, por lo que muchas de ellas son recientes, de menos de 10 años de
antigüedad.
Por otro lado, no existen instrumentos formales para incluir el concepto de la
LUM en los niveles de decisión político y operacional a nivel local en otros
departamentos que no sea el de tráfico. Muchas ciudades españolas están
realizando una planificación estratégica que tendrá importantes efectos en
cuanto al espacio asignado a los múltiples requerimientos posibles en el futuro.
El transporte es uno de los principales conceptos a tener en cuenta en la
planificación, pero el transporte urbano de mercancías está considerado sólo
tangencialmente.
Las compañías logísticas planifican sus inversiones y sus operaciones de
acuerdo con sus perspectivas de negocio, que suelen necesitar de gran rapidez
en la toma de decisiones. Sin embargo, cualquier movimiento estratégico en el
entorno del transporte urbano de mercancías necesita de la aprobación de las
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
12 Rafael Grosso de la Vega
autoridades locales, que suelen seguir un ritmo muy diferente.
Las compañías perciben la burocracia y los cambios políticos como grandes
lastres sobre la logística urbana de mercancías, ya que operaciones como las
licencias para construcción (para la ampliación de instalaciones),
modificaciones de la regulación o simplemente la resolución de problemas
localizados de movilidad representan procesos muy lentos que pueden durar
varios meses o incluso años.
Las condiciones de las operaciones diarias pueden ser calificadas de
anarquía suave. Existe una cierta tolerancia a la hora de permitir el
incumplimiento de la mayoría de normas locales siempre que las molestias
causadas a otros tipos de tráfico no sean excesivas. Existe una posición de
seguridad moral de los transportistas por estar trabajando, mientras que al
resto de usuarios de la calle – excepto los taxis – no se les supone lo mismo.
La situación de los receptores les resulta bastante satisfactoria. Todas las
políticas modernas de gestión de stocks – reducción de inventario, entregas
frecuentes, just in time - pueden ser implantadas sin siquiera imponer
restricciones derivadas desde el transportista. Existen múltiples proveedores
con precios muy ajustados dispuestos a aceptar las condiciones que se
impongan, por lo que la LUM no supone una restricción para las actividades
empresariales o comerciales de las zonas urbanas
Las normativas de tráfico actuales pueden ser consideradas como una simple
manera de regular estos aspectos, a pesar de ser bastante rígidas y
rudimentarias. Además, no han sido coordinadas formalmente entre las
distintas autoridades locales de España, lo cual es de especial importancia en
términos del tipo de vehículo que puede acceder a cada ciudad. Las compañías
de transporte que operan a nivel nacional deben enfrentarse a diferentes
regulaciones dependiendo de la ciudad.
El tráfico, el transporte y la construcción están entre las máximas prioridades
de cualquier Ayuntamiento , pero son necesarios menores tiempos de reacción
en la modificación de las normas, para conseguir una implementación flexible
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
13 Rafael Grosso de la Vega
de nuevas medidas e iniciativas. Estas iniciativas podrían así ser probadas y
modificadas, y dar como resultado un crecimiento de las oportunidades para los
distribuidores locales de mercancías.
Estas consideraciones no sólo retrasan los proyectos logísticos propuestos por
las compañías, sino que pueden convertirlos en no viables. Los retrasos
implican mayores incertidumbres en cuanto al resultado de la iniciativa, y las
compañías no están preparadas para arriesgar sus finanzas y sus clientes por
una simple y remota posibilidad.
Por tanto, ya que las compañías no pueden permitirse funcionar más despacio
y las ciudades no pueden (de momento) acelerar sus procesos de decisión, el
resultado es a menudo el rechazo del proyecto por parte de la compañía. O
quizás, aún peor, el inicio del proyecto, asumiendo el riesgo de que finalmente
podría no ser aprobado por las autoridades locales.
2.2 Logística urbana de mercancías en el centro histórico de Sevilla.
2.2.1 Problemática. La posición del centro histórico de Sevilla como centro comercial, de negocios y
turístico de la ciudad implica una ingente afluencia diaria de personas,
vehículos y mercancías. Los principales problemas a los que se enfrenta el
transporte de mercancías en el centro de la ciudad pueden ser resumidos de la
siguiente manera:
• Colapso de las zonas de carga y descarga, tomadas por parte de vehículos
privados, imposibilitando las tareas propias de los transportes de
mercancías.
• Incompatibilidad de los horarios de apertura de los comercios con los
horarios definidos para el acceso de vehículos de mercancías al centro
histórico, imposibilitando una eficaz gestión de la distribución de las
mercancías.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
14 Rafael Grosso de la Vega
• Mala accesibilidad de la zona, congestionada y con muchas zonas
peatonales.
Esta situación planteada en la ciudad de Sevilla es perfectamente paralela a la
encontrada en otras ciudades españolas. En general, por parte de los
proveedores, se realiza una distribución urbana de mercancías centrada en el
día a día, pero no demasiada logística urbana. Y desde el punto de vista de la
oferta, los problemas son tratados independientemente desde cada compañía.
2.2.2 Soluciones posibles. Desde el punto de vista de todos los grupos implicados en esta problemática,
entiéndase como tal a transportistas, receptores, residentes y administración
local, y después de estudiar las posibles soluciones planteadas en otras
ciudades se exponen algunas de ellas:
• Repartos nocturnos: La intención de esta medida es evitar la
interferencia entre el tráfico privado de la mañana y el transporte de
mercancías, realizando este último durante la noche. Ya que es
imposible cambiar los hábitos horarios de las personas que utilizan el
coche para ir a trabajar al centro, quizás sería posible cambiar el horario
del movimiento de mercancías.
• Road pricing: El establecimiento de peajes a la circulación de vehículos
por determinadas zonas de la ciudad es un método “agresivo” para
disminuir la congestión en las áreas urbanas más sobrecargadas.
Consiste en cobrar una cantidad (a determinar) por utilizar determinadas
rutas o acceder a determinadas zonas. Económicamente, responde a un
intento de internalizar las externalidades provocadas por el hecho de
circular con un vehículo por áreas densamente saturadas (congestión,
contaminación, acaparamiento de aparcamientos...).
• Reparto conjunto: medidas que buscan el funcionamiento conjunto de
varios transportistas, dentro de determinadas parcelas de la distribución
urbana.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
15 Rafael Grosso de la Vega
• Lanzaderas: Esta medida persigue la introducción en el centro de la
ciudad de una serie de “zonas lanzadera”, que típicamente serían
aparcamientos reservados para las furgonetas de mercancías, a los que
podrían acceder a primera hora de la mañana. Desde ellos, la entrega
final se realizaría a pie o utilizando vehículos alternativos.
• Terminal urbana: Las terminales urbanas son pequeños centros de
transbordo, y quizás de almacenamiento, situados dentro de la ciudad,
cerca de las zonas de elevada densidad comercial y que precisan por
tanto de abundantes envíos de mercancías. En ciudades grandes
pueden servir de complemento a los centros de transporte de
mercancías situados en las afueras, y en ciudades pequeñas pueden
sustituirlos.
• Sistemas de información en tiempo real: La base de cualquier sistema
de gestión en tiempo real de una flota de transporte urbano de
mercancías está en la disponibilidad de información actualizada sobre el
estado del tráfico. Esta información debería hacerse disponible a través
de internet a todas las empresas de transporte de mercancías, y en
general a cualquier vehículo que circule por la ciudad.
• Gestión dinámica de zonas de carga y descarga: Se contempla aquí la
introducción de un sistema para optimizar el uso de las zonas de carga y
descarga, de manera que se garantice su exclusividad para el uso de
vehículos de transporte de mercancías. Igualmente, este sistema
garantizaría la rotación de vehículos en las zonas de carga y descarga,
evitando el estacionamiento indefinido de vehículos de reparto en ellas.
• Ventanas temporales: Esta medida consiste en establecer intervalos
temporales durante los cuales el acceso a las zonas céntricas de la
ciudad está permitido para los vehículos de transporte de mercancías.
Estos intervalos suelen estar situados al principio de la mañana y de la
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
16 Rafael Grosso de la Vega
tarde, y se pretende con ellos separar las horas de reparto de
mercancías y las horas de máxima afluencia al centro de compradores,
turistas, etc. Además, como ya se ha mencionado, esta medida es
objeto de estudio de este proyecto, en concreto se estudiará la
influencia económica de la presencia de una ventana temporal en la
ciudad en que opera una empresa de reparto de paquetería.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
17 Rafael Grosso de la Vega
3 PLANTEAMIENTO DEL PROBLEMA.-
3.1 Introducción al problema a resolver.-
Para una mejor comprensión previamente a la definición del problema
introduciremos los elementos que participan en él:
• Se considera un problema de optimización de rutas sobre un grafo
�: ��, �� , donde � denota al conjunto de nodos que lo componen y � el
conjunto de arcos que unen dichos nodos.
• En el conjunto de nodos � existe un único nodo � con nivel de oferta
mayor que cero (depósito), un subconjunto de nodos con nivel de
demanda mayor que cero (clientes), y otro subconjunto de nodos que
se suponen con oferta y demanda cero. Se sabe que .
• Se define también un número de vehículos que pueden recorrer el
grafo y que realizarán las rutas.
• El problema se incluye dentro de un horizonte temporal �� , ��� y el
objetivo del problema es minimizar el coste (en términos temporales) del
transporte de varias mercancías desde el nodo � hacia cada uno de los
nodos del conjunto , pasando para ello por los nodos que sea
necesario del conjunto � .
• Así se definen también un conjunto de costes temporales � asociados a
cada uno de los arcos del grafo. Estos costes son función únicamente
del transito por los arcos y no están relacionados con la cantidad de
mercancía que se transporta por ellos. Así incurriremos en el coste ���
cuando transitemos del nodo � al nodo �, con � � �.
• Además se computará un coste único � o tiempo de entrega, también en
términos temporales, en el que se incurrirá cada vez que un de los
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
18 Rafael Grosso de la Vega
vehículos pase por uno de los nodos del subconjunto .
• Se considera también, dentro del conjunto �, un subconjunto �� de
nodos que tiene asociados una serie de restricciones. Estas son que no
se podrá transitar por ellos ni permanecer en ellos durante el transcurso
de una ventana temporal (TW). Se supone también que � �� � � y
que � � �� � �.
• Una Ventana Temporal (TW), que será única y que se aplica a todos los
clientes que se encuentren en la zona Restringida. Para todos estos
clientes esta consiste en un intervalo de tiempo, el cual obviamente será
menor que el horizonte temporal, dentro del cual pueden ser
servidos ��� , ��!�.
• Un coste "#$%�"&' , a las rutas que lo requieran, de utilización de cada
vehículo adicional (aparte del primero) que se necesite para cubrir el
reparto a los clientes del horizonte temporal.
Se puede ver un esquema del problema en la ilustración 1.
Ilustración 1: Esquema de la ciudad.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
19 Rafael Grosso de la Vega
Una vez introducidos estos elementos podemos decir que el problema que
pretendemos resolver consiste en construir un conjunto de rutas de coste
mínimo que empiecen y terminen en el depósito y sirvan todos los pedidos de
los clientes. Todas las soluciones factibles deberán atender a las siguientes
restricciones:
• Cada pedido debe ser servido por un único vehículo.
• Todos los pedidos deben ser servidos dentro del horizonte temporal.
• No se podrán incumplir las restricciones impuestas por la Ventana
Temporal y por la Zona Restringida.
• Se deberán utilizar el mínimo número de vehículos.
Como ya se ha mencionado el problema a resolver se puede asemejar a un
VRPTW pero con algunas restricciones adicionales a la ventana temporal pero
con la diferencia de las restricciones que se imponen con la zona restringida.
3.2 Presentación del problema
3.2.1 Proceso General
Dentro del horizonte temporal de un día un conjunto de clientes han realizado
pedidos que deben ser servidos ese mismo día. Estos clientes se modelan
como nodos de la red, unos estarán fuera de la zona restringida y otros dentro.
A estos nodos de los clientes a servir los denominaremos en adelante
“paradas” y el número de ellas será uno de los parámetros del problema.
Parece claro que el número de paradas del problema influirá en el valor de la
función objetivo, en la rapidez de resolución y en la complejidad del problema.
Este número de pedidos se pretende cubrir con el mínimo número de
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
20 Rafael Grosso de la Vega
vehículos, por lo que se inicia el algoritmo con uno solo de ellos. Este,
partiendo desde el depósito que también se modela como un nodo, ira pasando
por los nodos de la red mientras recorre los arcos que los unen y así llegará a
la primera parada, para en ella permanecer un tiempo para la entrega de la
mercancía. Pasado este tiempo partirá hacia la siguiente parada siempre
buscando la distancia mínima entre cada una de ellas. Este proceso general se
repetirá hasta haber servido a todos los clientes y haber regresado al depósito.
Durante esta rutina el vehículo se puede encontrar con alguna “dificultad”, es
decir, con que puede incumplir alguna de las restricciones impuestas por la
zona restringida y con la ventana temporal. En estos casos el algoritmo deberá
buscar como no incumplirlas, haciendo esperar al vehículo fuera de ZR
mientras la ventana temporal permanece cerrada. También se puede dar el
caso en que el vehículo inicial no pueda repartir todos los pedidos dentro del
horizonte temporal y por tanto necesitar uno o más vehículos adicionales para
poder hacerlo. Cabe decir que cada vehículo deberá regresar al depósito antes
de que el día termine, y que los vehículos adicionales iniciaran su ruta desde el
inicio del horizonte temporal (con � ( )), desde el depósito y tomando como
parada inicial la primera en la cual el vehículo anterior no pudo parar.
Con respecto a la función objetivo o función de coste que debemos minimizar y
que evaluaremos en términos temporales, aunque se podría poner en términos
de coste económico, esta compuesta por el tiempo que emplea el vehículo o
vehículos en recorrer todas las paradas partiendo desde el depósito y
concluyendo su ruta en él, más el coste de el o los posibles vehículos
adicionales en el caso en que se necesiten.
3.2.2 Restricciones consideradas
En el modelado del problema y partiendo de la definición general antes descrita
de él, se han considerado algunas restricciones las cuales lo simplifican;
aunque estas contribuyen a alejar aun más el modelo del posible caso real,
también se hacen necesarias para así poder solucionar el problema con una
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
21 Rafael Grosso de la Vega
relativa facilidad, o dificultad como se quiera ver. El criterio utilizado para la
consideración de dichas restricciones es simplemente el de facilitar la
resolución del problema, sin que ello nos haga salirnos o desviarnos de los
objetivos y finalidades de su resolución.
A continuación enunciamos, acompañando con algunas aclaraciones más
concretas, estas restricciones:
• Con respecto a la capacidad de los vehículos hemos supuesto que sea
ilimitada.
o Aunque esto puede parecer irreal podemos suponer que la
mercancía a repartir no ocupa mucho volumen y que con un
vehículo medio de transporte de mercancías tendríamos
capacidad suficiente para cargarla toda. Esta restricción es
habitual en las situaciones de logística urbana para carga
fraccionada pues es difícil que se lleguen a llenar completamente
los vehículos.
• Se ha dicho que la función objetivo se evaluará en términos temporales,
por lo que se hace necesario aclarar que el coste "�� también se
cuantifica en dichos términos.
o Para ello se ha supuesto una velocidad constante (20 Km/h) a la
cual se desplaza el vehículo por los arcos que unen los nodos y
se ha fijando previamente una distancia en términos de longitud
de los arcos. Así con un cálculo sencillo de cinemática podremos
asociar el mencionado coste a cada arco.
o Con esta velocidad aparentemente baja se pretende simular la
velocidad media a la que puede circular un vehículo por el casco
urbano de una ciudad mientras interactúa con elementos del
tráfico tales como retenciones, semáforos, obras, etc.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
22 Rafael Grosso de la Vega
• El Tiempo de entrega lo modelaremos como � ( *)+�,. Estimado
como tiempo medio empleado en realizar dicha acción.
• La Longitud de la Ventana Temporal, ��� , ��!� , lo tomaremos como un
parámetro del modelo de la red por lo que le asignaremos diferentes
valores para poder evaluar su repercusión en la solución.
• La duración del horizonte temporal lo hemos estimado como una jornada
laboral de 10 horas, �� , ��� ( -)% ( .))+�,..
• Con respecto a la Zona Restringida se tiene que acordar cual es su
límite. Como la red esta compuesta de nodos y lazos se ha tomado
como limite los nodos, es decir, los primeros nodos de la Zona
Restringida serán su límite. Así el vehículo de reparto podrá circular por
el lazo que llega al nodo límite pero no llegar o permanecer en él cuando
la ventana temporal permanezca cerrada. En cuanto al tamaño de esta,
también lo tomaremos como un parámetro del problema por lo que se
asignarán diferentes valores de tamaño para analizar sus
consecuencias.
3.2.3 Modelado matemático.
La nomenclatura que se utilizará en la formulación modelo es:
G(N, A): grafo que representa al área urbana.
N: nodo del depósito (hay solamente un depósito)
D: nodos destino.
Q: nodo final (el mismo nodo que el depósito)
AV: longitud del período del día previo al inicio del periodo restrictivo (en
unidades de tiempo)
V: longitud del período restrictivo (en unidades del tiempo)
DV: longitud del período del día posterior al periodo restrictivo (en unidades de
tiempo)
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
23 Rafael Grosso de la Vega
cij: tiempo requerido para viajar de nodo i al nodo j por el arco (i, j) fuera del
período restrictivo (en unidades del tiempo).
dij: tiempo requerido para viajar de nodo i al nodo j por el arco (i, j) dentro del
período restrictivo (en unidades del tiempo). Son iguales a cij para los nodos
fuera del área restrictiva, e infinito (muy alto) para los que se encuentran
dentro de la zona restrictiva.
TD: plazo de permanencia en el nodo destino D.
K: coste fijo de usar un vehículo.
K': constante de valor muy elevado.
tijx : para cada arco (i, j) del grafo, toma el valor 1 si el vehículo t cruza el arco
antes del período restrictivo, y 0 si no. tijy : para cada arco (i, j) del grafo, toma el valor 1 si el vehículo t cruza el arco
durante el período restrictivo, y 0 si no. tijz : para cada arco (i, j) del grafo, toma el valor 1 si el vehículo t cruza el arco
después del período restrictivo, y 0 si no. tis : representa el tiempo en el cual el vehículo t pasa por el nodo j del grafo.
tDα : toma el valor 1 si el vehículo t hace una entrega en el nodo destino D
antes del período restrictivo, y 0 en otro caso. tDβ : toma el valor 1 si el vehículo t hace una entrega en el nodo destino D
durante el período restrictivo, y 0 en otro caso. tDγ : toma el valor 1 si el vehículo t hace una entrega en el nodo destino D
después del período restrictivo, y 0 en otro caso.
Minimizar: ∑ ⋅
tji
tijij xc
,,
+ ∑ ⋅tji
tijij yd
,,
+ ∑ ⋅tji
tijij zc
,,
+ ( )∑ ++⋅tj
tNj
tNj
tNj zyxK
,
Sujeto a: tjizyx tij
tij
tij ,,,1 ∀≤++ [1]
tjyxxk
tjk
k
tjk
i
tij ,,∀+= ∑∑∑ [2]
tjzyyk
tjk
k
tjk
i
tij ,,∀+= ∑∑∑ [3]
tjzzk
tjk
i
tij ,,∀=∑∑ [4]
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
24 Rafael Grosso de la Vega
( ) ( )∑∑ ++=++ti
tiQ
tiQ
tiQ
tj
tNj
tNj
tNj zyxzyx
,,
[5]
∑ ∀=++t
tD
tD
tD D,1)( γβα [6]
tAVTxcD
DtD
ji
tijij ∀≤⋅+⋅ ∑∑ ,
,
α [7]
tDVTzcD
DtD
ji
tijij ∀≤⋅+⋅ ∑∑ ,
,
β [8]
tVTydD
DtD
ji
tijij ∀≤⋅+⋅ ∑∑ ,
,
γ [9]
tDx tD
i
tiD ,, ∀≥∑ α [10]
tDy tD
ti
tiD ,,
,
∀≥∑ β [11]
tDz tD
ti
tiD ,,
,
∀≥∑ γ [12]
tjisxKcs tj
tijij
ti ,,)1( ∀≤−′−+ [13]
tis ti ,0 ∀≥
ts tN ∀= 0
[14]
tijx , t
ijy , tijz = 0,1 [15]
Es por tanto un modelo linear con variables binarias. La función objetivo reduce
al mínimo la suma total de costes de la ruta, incluyendo en estos en los que se
incurre antes, durante y después del período restrictivo, más el coste asociado
al uso de vehículos. Las restricciones tienen las implicaciones siguientes:
[1] El vehículo t solo puede transcurrir por el arco (i, j) antes, durante o después
del período restrictivo.
[2] Si el vehículo t se incorpora a un nodo j antes del período restrictivo, debe
dejar el nodo antes o durante el período restrictivo.
[3] Si el vehículo t se incorpora a un nodo j durante el período restrictivo, debe
dejar el nodo durante o después del período restrictivo.
[4] Si el vehículo t se incorpora a un nodo j después del período restrictivo,
debe dejar el nodo después del período restrictivo.
[5] Todos los vehículos t deben salir del depósito N y deben volver al nodo final
Q (estos dos nodos son el mismo).
[6] Todas las entregas en los nodos destino D se deben hacer.
[7] El tiempo durante el cual un vehículo t está circulando antes del período
restrictivo debe ser más pequeño o igual a la longitud del tiempo AV.
[8] El tiempo durante el cual un vehículo t está circulando después del período
restrictivo debe ser más pequeño o igual a la longitud del tiempo DV.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
25 Rafael Grosso de la Vega
[9] El tiempo durante el cual un vehículo t está circulando durante el período
restrictivo debe ser más pequeño o igual a la longitud del tiempo V del
período restrictivo.
[10] Si un vehículo debe entregar en un nodo destino antes del comienzo del
período restrictivo, debe tener acceso al nodo antes del período restrictivo.
[11] Si un vehículo debe entregar en un nodo destino durante el período
restrictivo, debe tener acceso al nodo durante el período restrictivo.
[12] Si un vehículo debe entregar en un nodo destino después del período
restrictivos, debe tener acceso al nodo después del período restrictivo.
[13] Estas restricciones evitan lazos en las rutas de los vehículos. Esto implica
que si el vehículo t cruza el arco (i, j), el tiempo en que alcanza i debe ser
más pequeño que el tiempo en el cual alcanza j.
[14] Los vehículos están disponibles en el depósito N desde el tiempo cero, y
alcanzan el resto de los nodos en tiempos positivos.
[15] Restricciones que imponen los valores 0 y 1 para las variables binarias.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
26 Rafael Grosso de la Vega
4 HERRAMIENTAS DE RESOLUCIÓN.
4.1 Introducción a los problemas de optimización de rutas.-
Muchas empresas de nuestro entorno deben hacer frente a diario al transporte
de personas, productos, etc. Y la necesidad de transporte interno entre
empresas esta aumentando debido a la especialización cada vez más
extendida y al proceso de globalización. Por ello el coste derivado del
transporte pasa a ser un factor importante en cualquier tipo de empresa, y dado
este impacto económico en el mundo empresarial, el esfuerzo de investigación
dedicado a resolver este tipo de problemas es considerable. En estos casos
mejorar la optimización de rutas de vehículos, junto con la planificación o
scheduling representa un ahorro significativo que repercute notablemente en la
productividad y economía de las empresas.
Un problema de optimización de rutas simple se podría reducir a que el único
objetivo es encontrar el camino mínimo entre varios puntos. Pero los problemas
de optimización de rutas y scheduling son más amplios, ya que además se han
de solucionar aspectos como la utilización adecuada de recursos y otro tipo de
restricciones; lo que hace que encontrar una solución óptima sea muy difícil y
costoso. Este tipo de problemas se pueden considerar problemas de
optimización combinatoria, es decir, problemas para los que el conjunto de
soluciones es finito pero exponencial o contablemente infinito en función de los
parámetros del problema. Para este tipo de problemas el conjunto de
soluciones posibles crece exponencialmente cuando el tamaño de la entrada
del problema aumenta. Así se hace evidente que realizar una búsqueda
exhaustiva entre todas las posibles soluciones no será factible en problemas de
tamaño considerable.
Los problemas del mundo real son de mucha mayor complejidad que la
mayoría de los problemas simplificados objeto de investigación, por lo que las
soluciones obtenidas al resolverlos constituirán únicamente el núcleo de las
soluciones que han de darse a los problemas de la vida real.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
27 Rafael Grosso de la Vega
“Las proposiciones matemáticas, en cuanto tienen que ver
con la realidad, no son ciertas; y en cuanto que son ciertas,
no tienen nada que ver con la realidad”.
Albert Einstein
Los problemas de optimización de rutas y scheduling pueden formularse como
problemas de optimización y son un subconjunto de los problemas logísticos
que aparecen en la mayoría de las empresas. A modo de introducción a los
problemas de optimización podrían ser definidos de la forma siguiente:
Minimizar una determinada función �/01, sujeta a un conjunto de restricciones
que acota el espacio posible de soluciones 0 2 !. A �/01 se le denomina
función objetivo y mide una cierta cantidad (coste) que debe ser minimizada.
Cualquier problema de optimización se puede formular de diferentes maneras,
aunque corresponda a todas la misma solución optima.
El problema básico y más estudiado de optimización de rutas es el problema
del viajero (Traveling Salesman Problem, TSP). Este se puede definir de la
siguiente manera: dado un grafo (representando una red de calles, por
ejemplo) con costes asociados a los arcos (distancia, por ejemplo) el problema
consiste en encontrar la ruta cerrada más barata o corta que recorriendo todos
los nodos de la red una sola vez vuelva al punto de partida. Podríamos decir
que el TSP modela el problema de un vendedor que ha de visitar una serie de
clientes situados en una serie de ciudades y volver a casa. Aunque este es el
problema básico, simplemente añadiendo restricciones estaríamos ante
distintas variantes del mismo. Si en vez de una única ruta hubiese que
minimizar un conjunto de rutas, es decir, si existieran m vendedores, el
problema se denominaría mTSP. Si a este nuevo problema le añadiésemos
restricciones de capacidad, nos encontraríamos ante una de las variantes más
investigadas, el Problema de Optimización de rutas de Vehículos (Vehicle
Routing Problem, VRP). Este problema consiste en diseñar un conjunto de
rutas de coste mínimo donde se sirvan todos los pedidos de unos determinados
clientes utilizando para ello una flota de vehículos limitada. Todas las rutas
deben comenzar y finalizar en un depósito central. Cada cliente hace un pedido
que debe ser servido con un único vehículo y cada vehículo tiene un a
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
28 Rafael Grosso de la Vega
limitación de capacidad máxima que puede transporta. Cuando los clientes no
se pueden servir a cualquier hora del día, es decir cuando a cada cliente le
corresponde un intervalo de tiempo, llamado ventana de tiempo (Time Window,
TW), durante el cual puede recibir sus pedidos (ni antes ni después), el
problema a resolver se convierte en un problema de optimización de rutas de
vehículos con ventana de tiempo (Vehicle Routing Problem with Time Windows,
VRPTW). Como complejidad adicional, en el problema de VRPTW aparece una
restricción en la longitud de las rutas, que se deriva de la ventana de tiempo
correspondiente al depósito. En este caso, los costes totales de la optimización
de rutas y scheduling depende de la distancia total recorrida, del número de
vehículos utilizados y del tiempo total de servicio de todos los pedidos.
Este tipo de problemas de optimización de rutas y scheduling son de gran
complejidad si miramos el recurso tiempo de ejecución. Podemos definir un
algoritmo como un procedimiento paso a paso para resolver un problema. Uno
de los objetivos cuando se diseña un algoritmo es el de encontrar el método
más eficiente, midiéndose dicha eficiencia en tiempo de ejecución. Este tiempo
depende del tamaño de la entrada del problema, por tanto el coste de un
problema, en términos de tiempo de ejecución, se mide mediante una función
que relaciona el tamaño de la entrada con el tiempo. Así los problemas de
optimización de rutas de vehículos se pueden clasificar dentro de los
denominados NP-duros, los cuales podríamos definirlos a grandes rasgos
diciendo que el esfuerzo computacional requerido para resolverlos aumenta
exponencialmente con el tamaño de la entrada. Como el VRPTW engloba
diferentes problemas de optimización conocidos que son NP-duros, podemos
decir que el VRPTW es NP-duro en sentido fuerte.
Debido a la dificultad del problema a resolver, no es evidente que tipo método
será el adecuado para solucionarlo. Obviamente la enumeración de todas las
soluciones posibles será inviable cuando el tamaño de la entrada crece.
Cualquier método de resolución exacto será difícil de formular de forma que
pueda obtener la solución óptima y además en un tiempo aceptable, y además
será poco flexible a la hora de introducir cambios, cosa común en el mundo
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
29 Rafael Grosso de la Vega
real. Los método heurísticas, son estrategias más flexibles y fáciles de formular
que obtienen a menudo soluciones de suficiente calidad en tiempo más que
aceptable.
Para todo problema de optimización combinatoria, para el que la solución
optima no es conocida, existe un procedimiento elemental para solucionarlo, la
búsqueda exhaustiva, que consiste en generar todas las soluciones factibles,
calcular el coste para todas ellas y escoger la que mejor valor tenga. Pero este
método no es sencillo, puesto que será necesario encontrar alguna forma de
generar una secuencia de todas las soluciones factibles y esto dependerá en
gran medida de la representación utilizada para el problema. Este
procedimiento resulta imposible en la mayoría de los casos debido a la
magnitud del espacio de soluciones y no servirá en absoluto cuando el espacio
de búsqueda sea continuo, puesto que el número de soluciones a explorar será
infinito. El único caso para el que serviría la búsqueda exhaustiva seria par
problemas de tamaño reducido para los que se cuenta con tiempo para
enumerar el espacio de búsqueda. Será necesario buscar métodos más
inteligentes capaces de abordar la complejidad de los problemas en cuestión.
4.1.1 Métodos exactos.-
Muchas veces se han de encontrar soluciones óptimas para problemas que se
pueden expresar con una función en la que aparecen variables de decisión y
posiblemente algunas restricciones. En principio si la función objetivo y las
restricciones son lineales, estos problemas se pueden solucionar mediante la
Programación Linear (Linear Programming, LP). Si alguna de las variables es
entera, nos encontramos ante una mezcla entre programación linear y entera; y
si todas son enteras, estaremos ante un problema de Programación Entera
(Integer Programming, IP). En el caso en que las variables de decisión sean
discretas, como en el caso de VRPTW, nos encontramos ante problemas de
optimización combinatoria.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
30 Rafael Grosso de la Vega
Existe la posibilidad de intentar convertir este tipo de problemas en
programación entera o programación lineal, pero con el aumento del tamaño
del espacio de búsqueda el tiempo de resolución pasa a ser inadmisible y por
lo tanto los resultados no suelen ser satisfactorios. Por esto, los métodos
exacto utilizados para la búsqueda de la solución optima de los problemas de
optimización de rutas y sheduling se basan principalmente en la regla divide y
vencerás. Estas técnicas descomponen el problema o el espacio de soluciones
para poder obtener la solución final a base de solucionar subproblemas más
sencillos.
4.1.2 Métodos heurísticos.-
Se podrían encontrar diversas definiciones para el concepto heurísticas,
ponemos a continuación dos:
• Técnica que explora buenas soluciones, cercanas al óptimo, en un
tiempo computacional razonable sin poder garantizar ni factibilidad ni
optimalidad y en muchos casos incapaz de indicar la distancia a la que
queda del óptimo.
• Procedimientos simples, a menudo basados en el sentido común, que se
supone que ofrecerá una buena solución, aunque no necesariamente
optima, a problemas difíciles de un modo fácil y rápido.
Como se puede deducir de las definiciones, los métodos heurísticas para la
búsqueda de soluciones no garantizan que se vaya a encontrar un óptimo, ni
local ni global.
Para aplicar algún método de optimización a problemas del mundo real, es
necesario construir un modelo de la realidad que será lo que se tratara de
resolver en vez del problema en si. Los métodos heurísticas suelen ser más
flexibles a la hora de representar funciones objetivos de los problemas del
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
31 Rafael Grosso de la Vega
mundo real que los métodos exactos (no requieren especificación matemática
completa del sistema). Aunque la solución obtenida no sea exacta, muchas
veces no se puede probar que sea peor que la que se obtendría mediante un
método exacto puesto que el modelo utilizado para solucionar este será
probablemente más lejano al mundo real. Por ello siempre nos quedara
pregunta ¿preferimos una solución exacta a un modelo aproximado a una
solución aproximada a un modelo exacto?.
Además de la reflexión anterior, las razones para la utilización de métodos
heurísticas pueden ser muy diversas:
• Para muchos de los problemas de optimización más comunes no existe
un método exacto de resolución o el tiempo de cálculo requerido es
desorbitado.
• Existen casos de problemas en los que la solución óptima no es
indispensable; el objetivo es simplemente buscar una solución de
calidad aceptable.
• Los métodos heurísticas resultan a menudo muy útiles como paso
intermedio en la utilización de otro algoritmo.
• Estos métodos permiten una mayor flexibilidad en el manejo de las
características del problema y son más explicativos que los métodos
exactos.
Por otra parte no puede quedar sin mencionar que todo no son ventajas,
puesto que, así como en los métodos exactos se puede asegurar que la
solución obtenida es la mejor solución que se puede obtener para el modelo
resuelto, al utilizar métodos heurísticas no se puede conocer la calidad de la
solución obtenida porque no conocemos el optimo. Así que, en caso de que
exista un método factible y queramos asegurar que la solución obtenida es la
óptima, será preferible utilizarlo.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
32 Rafael Grosso de la Vega
Analizando la bibliográfica existente podemos deducir que los métodos
heurísticos utilizados para solucionar el VRPTW se dividen principalmente,
basándonos en las distintas estrategias utilizadas para construir las soluciones,
en dos grupos:
• Métodos constructivos: en los que la solución se construye paso a paso
hasta que se obtiene una solución factible. En concreto los métodos
utilizados se denominan métodos de construcción de rutas.
• Métodos de búsqueda por entorno: en los que se parte de una solución
factible inicial y mediante alteraciones de esa solución van pasando a
otras soluciones factibles de su entorno de forma iterativa hasta que se
cumpla cierto criterio deparada, almacenando como optima la mejor de
las soluciones visitadas. En concreto para la aplicación al VRPTW se
utiliza el método de mejora de rutas.
4.1.3 Metaheurísticas.-
La característica general que comparten las técnicas metaheurísticas es la de
guiar una heurística subordinada de acuerdo con algún concepto derivado de la
inteligencia artificial, la biología, las matemáticas o la física, para mejorar su
rendimiento. La mayoría de los métodos metaheurísticas se basan en efectuar
modificaciones sobre soluciones, para encontrar soluciones mejores hasta que
no se pueda encontrar ninguna solución que presente mejora, es decir, en la
búsqueda local dentro del vecindario. El concepto de vecindario de una
solución se define como el conjunto formado por las soluciones obtenidas a
partir de ella por medio de una operación básica a menudo llamada
movimiento. Dos de las variantes más sencillas de esta búsqueda en el
vecindario son:
• Descenso aleatorio: en el que en cada iteración se escoge un vecino al
azar para proseguir la búsqueda. En cada iteración se pasa de la
solución actual a una del vecindario para la que el valor de la función
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
33 Rafael Grosso de la Vega
objetivo sea menor, terminando cuando todas las soluciones del entorno
de la actual sean peores que ella misma.
• Método descendente de la mayor pendiente (steepest descent): en el
que se explora en cada iteración todo el vecindario para quedarse con la
mejor solución.
Estos y otros métodos basados en el vecindario tienen gran probabilidad de
caer en un óptimo local y no ser capaces de salir de él. Por ello aparece la
necesidad de buscar métodos heurísticas que posibiliten el abandono de estos
y exploren otras partes del espacio de búsqueda. La mayoría de los métodos
usados se basan en la búsqueda local o búsqueda en vecindario, pero
añadiendo a estos algunas estrategias para escapar de los óptimos locales y
explorar otras partes del espacio de búsqueda. A continuación introduciremos
algunos delos más utilizados.
4.1.3.1 Simulated Annealing
Las ideas que forman la base de este algoritmo, (también llamado enfriamiento
estadístico, método descendente probabilístico, algoritmo de intercambio
probabilístico, etc.) fueron introducidas al crearse un algoritmo para simular el
enfriamiento de un material; posteriormente se sugirió que este tipo de
simulación se podía utilizar para encontrar soluciones factibles de un problema
de optimización, con el objeto de llegar a una solución optima.
El enfriamiento estadístico es un método de búsqueda por entornos, en el que
el vecindario se examina aleatoriamente, que disminuye la probabilidad de caer
en un mínimo local aceptando, en medio del proceso de búsqueda, soluciones
peores.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
34 Rafael Grosso de la Vega
4.1.3.2 Búsquedas tabú
Muchos de los algoritmos metaheurísticas que se plantean resultan lentos
incluso para problemas pequeños. La búsqueda Tabú intenta acelerar el
proceso de búsqueda mediante la exploración “inteligente” del espacio de
soluciones. Son muchas las definiciones que se pueden encontrar de esta
técnica, como por ejemplo: “Es una metaestrategia que se puede insertar en
cualquier método de búsqueda local para guiar la búsqueda fuera de óptimos
locales y evitar la ocurrencia de ciclos”. La búsqueda Tabú podría equipararse
a algunos de los métodos descendentes, que al evolucionar selecciona el mejor
de los movimientos posibles en cada paso, pero a diferencia de lo que ocurre
en la búsqueda local, que siempre se finaliza en un óptimo local, la búsqueda
Tabú ofrece la opción de moverse a una solución del entorno aunque su
calidad sea peor que la calidad de la solución actual, permitiendo así el
abandono de óptimos locales. Podríamos decir que el método descarta, o al
menos usa poco, la aleatorización, asumiendo que la búsqueda inteligente he
de hacerse de una forma más sistemática y guiada.
4.1.3.3 Métodos Evolutivos
La familia de métodos evolutivos se basan en los conceptos biológicos
referentes a la evolución, y sus diferencias principales estriban en los
elementos que participan en la evolución los operadores que se utilizan durante
esta evolución. Tal vez la Técnica más utilizada y más conocida entre las de
esta familia, para la resolución de problemas de optimización combinatoria es
la los Algoritmos Genéticos, AAGG.
4.1.3.3.1 Algoritmos Genéticos
El nombre de algoritmo genético proviene de la analogía entre la
representación de una estructura compleja por medio de un vector de
componentes y la idea, familiar para los biólogos, de la estructura Genética de
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
35 Rafael Grosso de la Vega
un cromosoma. En la selección natural de plantas o animales, por ejemplo,
perduran aquellos que tengan alguna característica deseable, la cual viene
determinada a nivel genético por la forma de combinarse los cromosomas
padres. De forma similar, en los AAGG, se plantea combinar partes de
soluciones existentes para buscar soluciones mejores a problemas complejos.
Podríamos definir los AAGG como técnicas de búsqueda basadas en la
mecánica de la selección natural y la Genética. Se caracterizan por ser flexibles
y de ámbito general y por poder ser aplicados en un amplio número de
problemas. Podríamos resumir la idea de los AAGG como la exploración
inteligente de la búsqueda aleatoria.
Por ser este el método elegido para resolver nuestro problema le dedicaremos
un apartado entero de este proyecto para profundizar en este tipo de
algoritmos.
4.1.3.3.2 Programación Genética
La programación Genética extiende el paradigma de los AAGG a estructuras
no lineales. Trata de encontrar el programa que resuelve un determinado
problema, efectuándose el proceso de búsqueda sobre un espacio de posibles
programas. El funcionamiento global es similar al de los AAGG pero se utiliza
como población una estructura formada por un conjunto de programas
estructurados en forma jerárquica: estructura de árbol. Dichos programas se
construyen a partir de un conjunto predefinido de funciones y terminales, y su
forma, contenido y tamaño puede cambiar a lo largo del proceso.
4.1.3.3.3 Programación Evolutiva
La programación evolutiva trata de resolver problemas de optimización
combinatoria. La estructura de estos algoritmos se asemeja en gran medida a
la de los AAGG, con la diferencia de que los nuevos individuos se crean
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
36 Rafael Grosso de la Vega
utilizando tan solo mutación, es decir no existen operadores de cruce. De esta
manera la programación evolutiva podría verse como un algoritmo genético
asexual.
4.2 Introducción a los algoritmos genéticos.
4.2.1 Introducción histórica
“Aunque el ingenio humano puede lograr infinidad de
inventos, nunca ideará ninguno mejor, más sencillo y
directo que los que hace la naturaleza, ya que en sus
inventos no falta nada y nada es superfluo.”
Leonardo da Vinci
“La naturaleza perpetúa aquello que resulta mejor.”
Motu Locali Animalium
La teoría de la evolución, fue descrita por Charles Darwin 20 años después de
su viaje por las islas Galápagos en el Beagle, en el libro Sobre el Origen de las
Especies por medio de la Selección Natural. Este libro fue bastante polémico
en su tiempo, y en cualquier caso es una descripción incompleta de la
evolución. La hipótesis de Darwin, presentada junto con Wallace, que llegó a
las mismas conclusiones independientemente, es que pequeños cambios
heredables en los seres vivos y la selección son los dos hechos que provocan
el cambio en la Naturaleza y la generación de nuevas especies. Pero Darwin
desconocía cual es la base de la herencia, pensaba que los rasgos de un ser
vivo eran como un fluido, y que los "fluidos" de los dos padres se mezclaban en
la descendencia; esta hipótesis tenía el problema de que al cabo de cierto
tiempo, una población tendría los mismos rasgos intermedios.
Fue Mendel quien descubrió que los caracteres se heredaban de forma
discreta, y que se tomaban del padre o de la madre, dependiendo de su
carácter dominante o recesivo. A estos caracteres que podían tomar diferentes
valores se les llamaron genes, y a los valores que podían tomar, alelos. En
realidad, las teorías de Mendel, que trabajó en total aislamiento, se olvidaron y
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
37 Rafael Grosso de la Vega
no se volvieron a redes cubrir hasta principios del siglo XX. Además, hasta
1930 el geneticista inglés Robert Aylmer no relacionó ambas teorías,
demostrando que los genes mendelianos eran los que proporcionaban el
mecanismo necesario para la evolución.
Más o menos por la misma época, el biólogo alemán Walther Flemming
describió los cromosomas, como ciertos filamentos en los que se agregaba la
cromatina del núcleo celular durante la división; poco más adelante se
descubrió que las células de cada especie viviente tenían un número fijo y
característico de cromosomas.
Y no fue hasta los años 50, cuando Watson y Crick descubrieron que la base
molecular de los genes está en el ADN, ácido desoxirribonucleico, los
cromosomas están compuestos de ADN, y por tanto los genes están en los
cromosomas.
Todos estos hechos forman hoy en día la teoría del neo-darwinismo, que afirma
que la historia de la mayoría de la vida está causada por una serie de procesos
que actúan en y dentro de las poblaciones: reproducción, mutación,
competición y selección. La evolución se puede definir entonces como cambios
en el pool o conjunto genético de una población.
Un tema polémico, con opiniones variadas dependiendo de si se trata de
informáticos evolutivos o de biólogos o geneticistas, es si la evolución optimiza
o no. Según los informáticos evolutivos, la evolución optimiza, puesto que va
creando seres cada vez más perfectos, cuyo culmen es el hombre; además,
indicios de esta optimización se encuentran en el organismo de los animales,
desde el tamaño y tasa de ramificación de las arterias, diseñada para
maximizar flujo, hasta el metabolismo, que optimiza la cantidad de energía
extraída de los alimentos. Sin embargo, los geneticistas y biólogos evolutivos
afirman que la evolución no optimiza, sino que adapta y optimiza localmente en
el espacio y el tiempo; evolución no significa progreso. Un organismo más
evolucionado puede estar en desventaja competitiva con uno de sus
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
38 Rafael Grosso de la Vega
antepasados, si se colocan en el ambiente del último.
4.2.1.1 Mecanismos de cambio en la evolución
Estos mecanismos de cambio serán necesarios para entender los algoritmos
evolutivos, pues se trata de imitarlos para resolver problemas de ingeniería; por
eso merece la pena conocerlos en más profundidad. Los mecanismos de
cambio alteran la proporción de alelos de un tipo determinado en una
población, y se dividen en dos tipos: los que disminuyen la variabilidad, y los
que la aumentan.
Los principales mecanismos que disminuyen la variabilidad son los siguientes:
• Selección natural: los individuos que tengan algún rasgo que los haga
menos válidos para realizar su tarea de seres vivos, no llegarán a
reproducirse, y, por tanto, su patrimonio genético desaparecerá del pool;
algunos no llegarán ni siquiera a nacer.
• Deriva génica: el simple hecho de que un alelo sea más común en la
población que otro, causará que la proporción de alelos de esa
población vaya aumentando en una población aislada, lo cual a veces da
lugar a fenómenos de especiación, por ejemplo, por el denominado
efecto fundador.
Otros mecanismos aumentan la diversidad, y suceden generalmente en el
ámbito molecular. Los más importantes son:
• Mutación: la mutación es una alteración del código genético, que puede
suceder por múltiples razones. Las mutaciones son totalmente
aleatorias, y son el mecanismo básico de generación de variedad
genética.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
39 Rafael Grosso de la Vega
• Poliploidía: mientras que las células normales poseen dos copias de
cada cromosoma, y las células reproductivas una (haploides), puede
suceder por accidente que alguna célula reproductiva tenga dos copias;
si se logra combinar con otra célula diploide o haploide dará lugar a un
ser vivo con varias copias de cada cromosoma. La mayoría de las
veces, la poliploidía da lugar a individuos con algún defecto (por
ejemplo, el tener 3 copias del cromosoma 21 da lugar al mongolismo),
pero en algunos casos se crean individuos viables. Un caso conocido de
mutación fue el que sufrió (o disfrutó) el mosquito Culex pipiens, en el
cual se duplicó un gen que generaba una enzima que rompía los
organofosfatos, componentes habituales de los insecticidas;
• Recombinación: cuando las dos células sexuales, o gametos, una
masculina y otra femenina se combinan, los cromosomas de cada una
también lo hacen, intercambiándose genes, que a partir de ese momento
pertenecerán a un cromosoma diferente.
• Flujo genético: o intercambio de material genético entre seres vivos de
diferentes especies. Normalmente se produce a través de un vector, que
suelen ser virus o bacterias;
En resumen, la selección natural actúa sobre el fenotipo y suele disminuir la
diversidad, haciendo que sobrevivan solo los individuos más aptos; los
mecanismos que generan diversidad y que combinan características actúan
habitualmente sobre el genotipo.
4.2.1.2 Evolución de la informática evolutiva
Ya que se han descrito cuales son los mecanismos de la evolución podemos
contar, desde sus principios, como evolucionó la idea de simular o imitar la
evolución con el objeto de resolver problemas humanos.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
40 Rafael Grosso de la Vega
Las primeras ideas, incluso antes del descubrimiento del ADN, vinieron de Von
Neumann, uno de los mayores científicos de este siglo. Von Neumann afirmó
que la vida debía de estar apoyada por un código que a la vez describiera
como se puede construir un ser vivo, y tal que ese ser creado fuera capaz de
autorreproducirse; por tanto, un autómata o máquina autorreproductiva tendría
que ser capaz, aparte de contener las instrucciones para hacerlo, de ser capaz
de copiar tales instrucciones a su descendencia.
Sin embargo, no fue hasta mediados de los años cincuenta, cuando el
rompecabezas de la evolución se había prácticamente completado, cuando
Box comenzó a pensar en imitarla para, en su caso, mejorar procesos
industriales. A grosso modo aplicó mutación y selección a los valores de las
variables que regían diversos procesos, con el objeto de mejorar la calidad del
proceso. Este procedimiento se aplicó con éxito a algunas industrias químicas.
Un poco más adelante, en 1958, Friedberg y sus colaboradores pensaron en
mejorar usando técnicas evolutivas la operación de un programa. En realidad,
lo que estaba haciendo es usar mutación para generar nuevos programas; al
parecer, no tuvo más éxito que si hubiera buscado aleatoriamente un programa
que hiciera la misma tarea. El problema es que la mutación sola, sin ayuda de
la selección, hace que la búsqueda sea prácticamente una búsqueda aleatoria.
Más o menos simultáneamente, Bremmerman trató de usar la evolución para
"entender los procesos de pensamiento creativo y aprendizaje", y empezó a
considerar la evolución como un proceso de aprendizaje. Para resolver un
problema, codificaba las variables del problema en una cadena binaria de 0s y
1s, y sometía la cadena a mutación, cambiando un número de bit cada vez; de
esta forma, estableció que la tasa ideal de mutación debía de ser tal que se
cambiara un bit cada vez. Bremmerman trató de resolver problemas de
minimización de funciones, aunque no está muy claro qué tipo de selección
usó, si es que usó alguna, y el tamaño y tipo de la población. En todo caso, se
llegaba a un punto, la "trampa de Bremmerman", en el cual la solución no
mejoraba; en intentos sucesivos trató de añadir entrecruzamiento entre
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
41 Rafael Grosso de la Vega
soluciones, pero tampoco obtuvo buenos resultados. Una vez más, el simple
uso de operadores que creen diversidad no es suficiente para dirigir la
búsqueda genética hacia la solución correcta; y corresponde a un concepto de
la evolución darwiniana clásico: por mutación, se puede mejorar a un individuo;
en realidad, la evolución actúa a nivel de población.
El primer uso de procedimientos evolutivos en inteligencia artificial se debe a
Reed, Toombs y Baricelli, que trataron de hacer evolucionar un tahúr que
jugaba a un juego de cartas simplificado. Aparte de, probablemente, crear
buenas estrategias, llegaron a la conclusión de que el entrecruzamiento no
aportaba mucho a la búsqueda.
Los intentos posteriores, ya realizados en los años 60, ya corresponden a los
algoritmos evolutivos modernos, y se han seguido investigando hasta nuestros
días. Algunos de ellos son simultáneos a los algoritmos genéticos, pero se
desarrollaron sin conocimiento unos de otros. Uno de ellos, la programación
evolutiva de Fogel, se inició como un intento de usar la evolución para crear
máquinas inteligentes, que pudieran prever su entorno y reaccionar
adecuadamente a él. Fogel trataba de hacer aprender a autómatas a encontrar
regularidades en los símbolos que se le iban enviando. Se lograron hacer
evolucionar autómatas que predecían algunos números primos. En cualquier
caso, estos primeros experimentos demostraron el potencial de la evolución
como método de búsqueda de soluciones novedosas.
John Holland desde pequeño, se preguntaba cómo logra la naturaleza, crear
seres cada vez más perfectos. Lo curioso era que todo se lleva a cabo a base
de interacciones locales entre individuos, y entre estos y lo que les rodea. No
sabía la respuesta, pero tenía una cierta idea de como hallarla: tratando de
hacer pequeños modelos de la naturaleza, que tuvieran alguna de sus
características, y ver cómo funcionaban, para luego extrapolar sus
conclusiones a la totalidad. De hecho, ya de pequeño hacía simulaciones de
batallas célebres con todos sus elementos: copiaba mapas y los cubría luego
de pequeños ejércitos que se enfrentaban entre sí.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
42 Rafael Grosso de la Vega
En los años 50 entró en contacto con los primeros ordenadores, donde pudo
llevar a cabo algunas de sus ideas, aunque no se encontró con un ambiente
intelectual fértil para propagarlas. Fue a principios de los 60, en la Universidad
de Michigan en Ann Arbor, donde, dentro del grupo Logic of Computers, sus
ideas comenzaron a desarrollarse y a dar frutos. Y fue, además, leyendo un
libro escrito por un biólogo evolucionista, R. A. Fisher, titulado La teoría
genética de la selección natural, como comenzó a descubrir los medios de
llevar a cabo sus propósitos de comprensión de la naturaleza. De ese libro
aprendió que la evolución era una forma de adaptación más potente que el
simple aprendizaje, y tomó la decisión de aplicar estas ideas para desarrollar
programas bien adaptados para un fin determinado.
En esa universidad, Holland impartía un curso titulado Teoría de sistemas
adaptativos. Dentro de este curso, y con una participación activa por parte de
sus estudiantes, fue donde se crearon las ideas que más tarde se convertirían
en los algoritmos genéticos.
Por tanto, cuando Holland se enfrentó a los algoritmos genéticos, los objetivos
de su investigación fueron dos:
• Imitar los procesos adaptativos de los sistemas naturales, y
• Diseñar sistemas artificiales (normalmente programas) que retengan los
mecanismos importantes de los sistemas naturales.
Unos 15 años más adelante, David Goldberg, actual delfín de los algoritmos
genéticos, conoció a Holland, y se convirtió en su estudiante. Golberg era un
ingeniero industrial trabajando en diseño de pipelines, y fue uno de los primeros
que trató de aplicar los algoritmos genéticos a problemas industriales. Aunque
Holland trató de disuadirle, porque pensaba que el problema era
excesivamente complicado como para aplicarle algoritmos genéticos, Goldberg
consiguió lo que quería, escribiendo un algoritmo genético en un ordenador
personal Apple II. Estas y otras aplicaciones creadas por estudiantes de
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
43 Rafael Grosso de la Vega
Holland convirtieron a los algoritmos genéticos en un campo con base
suficiente aceptado para celebrar la primera conferencia en 1985, ICGA´85. Tal
conferencia se sigue celebrando bianualmente.
4.2.2 Los Algoritmos Genéticos. Los Algoritmos Genéticos usan una analogía directa con el comportamiento
natural. Trabajan con una población de individuos, cada uno de los cuales
representa una solución factible a un problema dado. A cada individuo se le
asigna un valor o puntuación, relacionado con la bondad de dicha solución. En
la naturaleza esto equivaldría al grado de efectividad de un organismo para
competir por unos determinados recursos. Cuanto mayor sea la adaptación de
un individuo al problema, mayor será la probabilidad de que el mismo sea
seleccionado para reproducirse, cruzando su material genético con otro
individuo seleccionado de igual forma. Este cruce producirá nuevos individuos
(descendientes de los anteriores) los cuales comparten algunas de las
características de sus padres. Cuanto menor sea la adaptación de un individuo,
menor será la probabilidad de que dicho individuo sea seleccionado para la
reproducción, y por tanto de que su material genético se propague en
sucesivas generaciones.
De esta manera se produce una nueva población de posibles soluciones, la
cual reemplaza a la anterior y verifica la interesante propiedad de que contiene
una mayor proporción de buenas características en comparación con la
población anterior. Así a lo largo de las generaciones las buenas características
se propagan a través de la población. Favoreciendo el cruce de los individuos
mejor adaptados, van siendo exploradas las áreas más prometedoras del
espacio de búsqueda. Si el Algoritmo Genético ha sido bien diseñado, la
población convergerá hacia una solución óptima del problema.
El poder de los Algoritmos Genéticos proviene del hecho de que se trata de
una técnica robusta, y pueden tratar con éxito una gran variedad de problemas
provenientes de diferentes áreas, incluyendo aquellos en los que otros métodos
encuentran dificultades. Si bien no se garantiza que el Algoritmo Genético
encuentre la solución optima del problema, existe evidencia empica de que se
encuentran soluciones de un nivel aceptable, en un tiempo competitivo con el
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
44 Rafael Grosso de la Vega
resto de algoritmos de optimización combinatoria. En el caso de que existan
técnicas especializadas para resolver un determinado problema, lo más
probable es que superen al Algoritmo Genético, tanto en rapidez como en
eficacia. El gran campo de aplicación de los Algoritmos Genéticos se relaciona
con aquellos problemas para los cuales no existen técnicas especializadas.
Incluso en el caso en que dichas técnicas existan, y funcionen bien, pueden
efectuarse mejoras de las mismas hibridándolas con los Algoritmos Genéticos.
4.2.2.1 Estructura del Algoritmo Genético Simple.
El Algoritmo Genético Simple, también denominado
Canónico, se representa en la ilustración 2. Como se
vera a continuación, se necesita una codificación o
representación del problema, que resulte adecuada al
mismo. Además se requiere una función de ajuste o
fitness del problema, la cual asigna un número real a
cada posible solución codificada. Durante la ejecución
del algoritmo, los padres deben ser seleccionados para
la reproducción, a continuación dichos padres
seleccionados se cruzaran generando dos hijos, sobre
cada uno de los cuales actuara un operador de
mutación. El resultado de la combinación de las
anteriores funciones será un conjunto de individuos
(posibles soluciones al problema), los cuales en la
evolución del Algoritmo Genético formaran parte de la
siguiente población.
• Codificación : Se supone que los individuos (posibles soluciones del
problema), pueden representarse como un conjunto de parámetros (que
denominaremos genes), los cuales agrupados forman una ristra de
valores(a menudo referida como cromosoma). En términos biológicos, el
conjunto de parámetros representando un cromosoma particular se
denomina fenotipo. El fenotipo contiene la información requerida para
construir un organismo, el cual se refiere como genotipo. Los mismos
Ilustración 2: Esquema del
AAGG simple.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
45 Rafael Grosso de la Vega
términos se utilizan en el campo de los Algoritmos Genéticos.
• Fitness : La adaptación al problema de un individuo depende de la
evaluación del genotipo. Esta última puede inferirse a partir del fenotipo,
es decir puede ser computada a partir del cromosoma, usando la función
de evaluación. La función de adaptación o Fitness debe ser diseñada
para cada problema de manera específica. Dado un cromosoma
particular, la función de adaptación le asigna un número real, que se
supone refleja el nivel de adaptación al problema del individuo
representado por el cromosoma.
• Fase Reproductiva : Durante esta fase (destacada en rojo en la figura)
se seleccionan los individuos de la población para cruzarse y producir
descendientes, que constituirán, una vez mutados, la siguiente
generación de individuos.
o La selección de padres se efectúa al azar usando un
procedimiento que favorezca a los individuos mejor adaptados, ya
que a cada individuo se le asigna una probabilidad de ser
seleccionado que es proporcional a su función de adaptación.
Este procedimiento se dice que esta basado en la ruleta sesgada.
Según dicho esquema, los individuos bien adaptados se
escogerán probablemente varias veces por generación, mientras
que los pobremente adaptados al problema, no se escogerán más
que de vez en cuando. Una vez seleccionados dos padres, sus
cromosomas se combinan, utilizando habitualmente los
operadores de cruce y mutación. Las formas básicas de dichos
operadores se describen a continuación.
o El operador de cruce , coge dos padres seleccionados y corta sus
ristras de cromosomas en una posición escogida al azar, para
producir dos subristras iniciales y dos subristras finales. Después
se intercambian las subristras finales, produciéndose dos nuevos
cromosomas completos. Ambos descendientes heredan genes de
cada uno de los padres.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
46 Rafael Grosso de la Vega
o El operador de mutación se aplica a cada hijo de manera
individual, y consiste en la alteración aleatoria (normalmente con
probabilidad pequeña) de cada gen componente del cromosoma.
Si bien puede en principio pensarse que el operador de cruce es
más importante que el operador de mutación, ya que proporciona
una exploración rápida del espacio de búsqueda, este último
asegura que ningún punto del espacio de búsqueda tenga
probabilidad cero de ser examinado, y es de capital importancia
para asegurar la convergencia de los Algoritmos Genéticos.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
47 Rafael Grosso de la Vega
5 EXPOSICIÓN DEL MÉTODO DE RESOLUCIÓN: ALGORITMO GENÉTICO.-
5.1 Casuística
Previo al análisis de la casuística del problema se definirán los conceptos y
nomenclaturas utilizados.
Con respecto a la ventana temporal se definirán los tiempos:
345 6Tiempo de Ventana Abierta, es decir este el tiempo donde la
ventana temporal deja de ser efectiva.
347 6Tiempo de Ventana Cerrada, es decir, este es el tiempo en el que
la ventana temporal empieza a ser efectiva.
En relación al horizonte temporal, que se considera de un día o una jornada
laboral, se definen:
38 6Tiempo cero o inicio del día o jornada laboral.
39 6Tiempo final o final del día o jornada laboral.
Representando la recta del tiempo en la ilustración 3 se pueden ver los tiempos
definidos de la siguiente forma:
Ilustración 3: Recta del tiempo.
El coste : modeliza el hecho de que el vehículo al llegar a la ubicación del
cliente se detiene para realizar la descarga de la mercancía, por lo que se debe
distinguir un tiempo de llegada y otro de salida en el paso por cada uno de los
nodos del subconjunto ; de cara al análisis y resolución del problema. Estos
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
48 Rafael Grosso de la Vega
tiempos se han denominado:
3<= 6Tiempo de llegada a la parada “>”.
3<? 6Tiempo de salida de la parada “>” hacia la parada “> @ 1”
Volviendo a la recta del tiempo se puede representar como se observa en la
ilustración 4 denotando con B< el cliente o parada “>”:
Una vez definido el problema, la ventana temporal, la zona restringida y la
nomenclatura utilizada se pasa a analizar la casuística del problema. Esto es,
empezando por la descripción del caso general de paso de una parada a otra,
se ira describiendo los posibles casos que se producirán en el transcurso de la
ruta de reparto y su interacción con la ventana temporal y la zona restringida,
además de cómo deberá actuar el algoritmo ante cada uno de ellos.
5.1.1 Caso General
El vehículo comienza en el nodo inicial o depósito en el tiempo cero 38,
entonces el algoritmo deberá buscar la primera parada definida por el algoritmo
genético y almacenar el tiempo transcurrido en el trayecto de un lugar a otro. A
este tiempo se le suma el coste : de descarga generando así los dos
parámetros temporales que definen a cada parada. Posteriormente el algoritmo
debe revisar si dicha parada esta en la zona restringida, si es así debe
continuar verificando si la ventana temporal esta abierta o cerrada actuando en
consecuencia como explicaremos posteriormente. Una vez hecho estos pasos
Ilustración 4: Representación de la Parada "i".
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
49 Rafael Grosso de la Vega
se recalcula el coste de la ruta (en términos temporales) y se pasa a la
siguiente parada para volver a aplicarle el mismo procedimiento. Este proceso
se repite hasta completar todas las paradas del día o hasta que se llegue al
final del día sin completarse estas, en tal caso se recurrirá a un nuevo vehículo.
Este iniciará su ruta, con tiempo cero pues se considera que sale al mismo
tiempo que el primero, desde el nodo inicial y su primera parada será la
siguiente, refiriéndose al orden establecido por el algoritmo genético, a la última
que realizó el vehículo anterior. Con los nuevos vehículos que fuesen
necesarios se repite el proceso.
5.1.2 Entrada en la Zona Restringida
Se supone el caso de una parada > fuera de la zona restringida y otra parada
> @ 1 dentro de dicha zona (Denotada así por el superíndice “RZ”).
En la ruta seguida por el vehículo de una parada a otra, en busca de un óptimo
análisis, se deben distinguir dos parámetros. La distancia recorrida se divide en
dos para diferenciar la parte del trayecto realizado fuera y la realizada dentro
de la zona restringida. Aunque se denote estos parámetros como “distancias”
no olvidamos que estamos trabajando en unidades temporales.
C9 6 Distancia recorrida fuera de la zona restringida.
CD 6 Distancia recorrida dentro de la zona restringida.
EF 6 Zona Restringida.
En la ilustración 5 se puede ver un esquema aclaratorio de los conceptos arriba
expuestos.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
50 Rafael Grosso de la Vega
Ilustración 5: Entrada en la Zona Restringida.
Así en este caso se pueden distinguir varias situaciones dependiendo del
estado de la ventana temporal.
5.1.2.1 Con la ventana temporal abierta.
En este caso la asignación de la parada sigue el procedimiento general como
se puede ver en la ilustración 6.
Ilustración 6: Entrada en la ZR con la VT abierta.
5.1.2.2 Con la ventana temporal cerrada.
Suponiendo que la ventana temporal se cierra en el trayecto de un nodo a otro,
y como se observa en la ilustración 7, se llega a una situación inadmisible, ya
que el vehículo estaría en la zona restringida con la ventana temporal cerrada.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
51 Rafael Grosso de la Vega
Ilustración 7: Entrada en la ZR con la VT cerrada.
En este caso el vehículo debe esperar en la parada anterior hasta que la
ventana temporal se vuelva a abrir y se pueda circular por la zona restringida.
Así el algoritmo deberá revisar hacia atrás para buscar la anterior parada y
verificar que no se encuentra en la zona restringida, y seguidamente llevarse
hacia delante en el tiempo la parada “> @ 1” haciendo que coincidan el tiempo
de ventana abierta con el momento en que el vehículo entra en la zona
restringida (véase ilustración 8). Con esto se asegura que el vehículo no se
encuentre en la zona restringida mientras la ventana temporal esta cerrada.
Ilustración 8: Reubicación de la Parada fuera de la VT.
En busca de reducir el tiempo de la ruta del vehículo, aunque se modifique el
tiempo de inicio de esta, el algoritmo deberá desplazar en el tiempo la parada
anterior, que no se encuentra en la zona restringida, llevándola hacia delante
junto al la parada “> @ 1”. Este mecanismo del algoritmo se representa en la
ilustración 9.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
52 Rafael Grosso de la Vega
Ilustración 9: Desplazamiento hacia delante de la parada anterior.
Ahora, partiendo del caso que se ha descrito anteriormente, se realizará un
estudio en profundidad para poder encontrar todos los posibles casos en que
se puede incurrir cuando el vehículo entra en la zona restringida y como
debería actuar en consecuencia el algoritmo.
En el caso de que existan varias paradas consecutivas dentro de la zona
restringida y la ventana temporal se cierre cuando se transcurre por ellas el
algoritmo deberá realizar los siguientes pasos:
• Primero revisar hacia atrás hasta encontrar la primera parada que se
encuentre fuera de la zona restringida (Parada Referencia), que será en
la que se podrá esperar a que se abra la ventana. Y después debe
mover hacia delante, tal y como se ha descrito arriba, todo el grupo de
paradas que están dentro de la zona restringida para dejarlas fuera de
la ventana temporal (véase ilustración 10).
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
53 Rafael Grosso de la Vega
Ilustración 10: Reubicación de un grupo de paradas dentro de la zona restringida.
o Esta operación, dependiendo del número de paradas
desplazadas hacia delante, puede encontrarse con que al ir
actualizando los nuevos tiempos de cada parada se vea
superado el tiempo fin del día 39.. Entonces se almacenará la ruta
anterior con las paradas que queden dentro del horizonte
temporal y se iniciaría otra ruta con un nuevo vehículo que
deberá recorrer las paradas que no pudieron ser cubiertas por el
vehículo anterior.
• Segundo el algoritmo deberá mover hacia delante la parada referencia y
las que se encuentren antes que esta. Esta parada en el caso más
extremo podría tratarse de la sede de la empresa. Al realizar esta
operación el algoritmo podrá encontrarse con varias posibles
situaciones:
o Que justo antes de la parada de referencia existan una o varias
paradas que se encuentre dentro de la zona restringida, como se
observa en la ilustración 11, en cuyo caso el algoritmo deberá
desplazar hacia delante todas las paradas anteriores haciendo
coincidir el tiempo de entrada de la parada de referencia menos
la distancia fuera de la RZ, con el tiempo de ventana cerrada:
3GHIJ= K C9 ( 347
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
54 Rafael Grosso de la Vega
Ilustración 11: Desplazamiento hacia delante de una parada fuera de la ZR precedida por un grupo de paradas
dentro de ella.
o Que detrás de la parada de referencia existan varias paradas
fuera de la ZR, y antes que estas, otra dentro de la ZR. En tal
caso el algoritmo deberá desplazar hacia delante todas las
paradas anteriores, siempre dejando fuera de la ventana
temporal las que están en la ZR; como se ve en la ilustración 12.
Ilustración 12: Desplazamiento hacia delante de un grupo de paradas fuera de la ZR precedidas por una parada
dentro de ella.
5.1.3 Salida de la Zona Restringida
Se supone una parada “>” dentro de la zona restringida y una parada “> @ 1”
fuera de la zona restringida, véase esquema en ilustración 13.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
55 Rafael Grosso de la Vega
Se vuelve a distinguir dos partes en el trayecto de un nodo a otro, una dentro
de la zona restringida y otra fuera. Los posibles casos que se pueden dar
dependiendo del estado de la ventana temporal son:
• La ventana temporal abierta : En este caso la asignación de la parada
sigue el procedimiento general sin alterar ningún parámetro, como se
observa en la ilustración 14.
• La ventana temporal se cierra durante el trayecto : se supone que la
ventana temporal se cierra durante el trayecto de un nodo a otro
pudiéndose distinguir dos casos posibles.
o Se cierra cuando se ha salido de la zona restringida: En este caso la
asignación de la parada sigue el procedimiento general sin alterar
ningún parámetro (ver ilustración 15).
Ilustración 13: Salida de la Zona restringida.
Ilustración 14: Salida de la ZR con la VA.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
56 Rafael Grosso de la Vega
o Se cierra cuando se esta en la zona restringida: Es un caso
inadmisible, como se puede observar en la ilustración 16.
Así que el algoritmo deberá buscar en las paradas anteriores a la “>”
hasta encontrar la primera que no se encuentre en la zona restringida
para posteriormente llevársela hacia delante en el tiempo justo
después de que la ventana temporal se vuelva a abrir. La parada
“> @ 1” se asignará después con respecto a la nueva posición de la
parada “>”. Se puede ver un esquema aclaratorio en la ilustración 17.
Ilustración 17: Salida de la ZR con VT cerrando durante el trayecto. Caso admisible.
NO
Ilustración 16: Salida de la ZR con VT cerrando durante el trayecto. Caso admisible.
Ilustración 16: Salida de la ZR con VT cerrando durante el trayecto. Caso inadmisible.
Ilustración 15: Salida de la ZR con VT cerrando durante el trayecto. Caso admisible.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
57 Rafael Grosso de la Vega
Posteriormente, al igual que en los casos anteriores, el algoritmo
buscaría hacia atrás en las paradas para ver si puede traer hacia delante
alguna parada anterior a la “>”. Como se ha visto en los casos anteriores
el algoritmo deberá verificar que la parada donde se espera que se abra
la ventana temporal no este en la zona restringida, además de verificar
que con las paradas adelantadas en el tiempo no se sobrepase el tiempo
fin del día.
5.2 Desarrollo del algoritmo. Diagrama de flujos.
A continuación se describirá el algoritmo utilizado (véase diagrama de flujos en
ilustración 18) para la resolución del modelo del problema, como se ha dicho
anteriormente se utilizará un algoritmo genético:
Ilustración 18: Esquema general del Algoritmo.
Ilustración 17: Reubicación de la parada dentro de la ZR y desplazamiento de la parada posterior.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
58 Rafael Grosso de la Vega
Al iniciar el algoritmo se genera el modelo de la red, a continuación se
generaran en dicha red los nodos que serán paradas y el nodo que será el
nodo inicial. Cabe decir que cada nodo tiene asignado un cardinal que lo define
y diferencia de los demás.
Posteriormente se realiza un cálculo de las rutas mínimas entre el nodo inicial y
las paradas, además de las rutas mínimas de cada parada al resto de ellas.
Esta información se utilizará posteriormente en el algoritmo.
Después de estos pasos comienza el algoritmo genético propiamente dicho (en
rojo). Se inicia con la generación de la población inicial. Esta consiste en una
matriz que almacena por filas los individuos solución, los cuales albergan los
cardinales de todas las paradas ordenadas aleatoriamente. En cada individuo
el orden en que estén dispuestas las paradas indica el orden en que las
recorrerá el vehículo, es decir la ruta a seguir.
A continuación se le aplica el Fitness a esta población inicial, con esto
obtenemos el valor del coste de cada ruta definida por cada individuo.
Seguidamente se realiza el cruce de individuos y la mutación con lo que se
genera una población nueva de descendientes de igual tamaño a la inicial.
La selección por Ranking ordena los individuos de las dos poblaciones, con
respecto al valor del Fitness, de menor a mayor. Y asignándole una
probabilidad decreciente a cada uno de ellos, de tal forma que el individuo con
menor valor de Fitness tiene la probabilidad mayor, realiza la selección de
individuos para quedarse finalmente con tantos como tenia la población inicial.
El siguiente paso es aplicarle el Fitness a esta población seleccionada y
calcular el valor del coste temporal de las rutas.
Según un criterio que se basa en lo cerca que se encuentren el menor valor del
Fitness y el valor del Fitness Medio de toda la población, se generará, en este
momento del proceso, una Población Nueva en la que sólo permanecerán los
tres mejores individuos de la última población implementada. El resto de
individuos se generará aleatoriamente. Con esto se pretende no caer en
máximos locales e intentar ampliar la zona de búsqueda de soluciones.
Como herramienta de parada del algoritmo se utilizará un contador que es
función del tamaño de la población que se use en la implementación. El valor
de este contador llevará al algoritmo a repetir el proceso volviendo al paso del
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
59 Rafael Grosso de la Vega
cruce o a finalizarlo devolviendo de esa manera el menor valor del Fitness
conseguido en el proceso.
5.2.1 Fitness.
Una vez definidos los casos generales y el modo en que en ellos debería
actuar el algoritmo, se pasará a exponer de manera más profunda la estructura
del Fitness. Se expone el diagrama de flujos esquemático del Fitness en la
ilustración 19.
Cabe decir que es la parte más importante del algoritmo. En el fitness esta la
clave del buen o mal funcionamiento de este, ademas de la estructura más
compleja y dificil de implementar. Se ha necesitado de muchos procesos de
prueba y error para su depuracion, aun habiendo realizado el trabajo previo de
estudio de la casuistica y diseño del diagrama de flujos.
Ilustración 19: Esquema general del Fitness del Algoritmo Genético.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
60 Rafael Grosso de la Vega
Al comienzo del algoritmo se inicia ruta vacía, que consiste en un vector donde
se almacenaran los tiempos de entrada y salida de cada parada después de
ser calculados y ajustados por el Fitness del algoritmo. Seguidamente se llama
al algoritmo genético y este nos devuelve el individuo que se va a evaluar, se
selecciona la primera de sus paradas, a la cual se le realizara la pregunta de si
esta en la zona restringida.
• Si la respuesta es NO, el algoritmo pasa al Bloque N , al cual se le
asignado el nombre del índice que recorrerá el vector de tiempos para
su revisión o posibles ajustes. Este bloque explora las paradas
anteriores y verifica, si la anterior a la que estamos estudiando estuviera
en la ZR, que la ventana temporal no se cerrara durante el camino de
una a otra de forma no apta. Y actúa en consecuencia si esto sucede
modificando los tiempos de las paradas correspondientes. Cuando
termina este proceso el Fitness continua a Calcular coste de ruta.
o Como se puede observar en la ilustración 20, el bloque N esta
compuesto por una entrada o input y por varias salidas u outputs,
siendo estas últimas las que se han numerado, en la ilustración
20 se puede ver también esta numeración para que se pueda
completar la comprensión del funcionamiento del algoritmo.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
61 Rafael Grosso de la Vega
Ilustración 20: Bucle N
� Como se puede ver se entra en el Bloque N y lo primero
que se pregunta es que si L ( 1, esto es para verificar que
el algoritmo no ha pasado por el Bloque J-K. De esta
manera se evita una redundancia en las acciones del
algoritmo, pues el bloque J-K ha podido previamente
ordenar las paradas en la recta de tiempos.
� Posteriormente se fija el índice N en la parada anterior a la
que se estaba estudiando y se verifica que no sea esta la
primera. Porque si así lo fuese no seria necesario entrar en
el Bloque N por lo que se saldría de el por la salida 1.
� Después se verifica que la parada fijada por el índice N
este en la ZR.
• Si no lo esta se sale del Bloque N por la salida 2.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
62 Rafael Grosso de la Vega
• Si esta en la ZR, se verifica que la ventana de
tiempo no se halla cerrado en le trayecto de la
parada en cuestión hacia la siguiente.
o Si no se ha dado el supuesto se sale del
Bloque N por la salida 2.
o Si se da el caso que se cierra la ventana
temporal en dicho trayecto, se busca hacia
atrás la primera parada que no este en la ZR
y se desplazan hacia adelante en el tiempo la
parada o grupo de paradas hasta
posicionarlas en el limite de la ventana
temporal, haciendo coincidir el tiempo de
ventana abierta con el momento en que el
vehículo entra en la ZR. Obviamente se
ajustan todos los tiempos con respecto al de
la parada que entraba en conflicto con las
restricciones de la ZR.
• Si la respuesta es SI, el Fitness sigue con la pregunta de si la ventana
temporal esta cerrada.
o Si la respuesta es SI, el algoritmo pasa al Bloque J-K, cuyo
nombre también proviene de los índices utilizados en el. Este
bloque explora las paradas anteriores en busca de la primera
parada que no se encuentre en la zona restringida, para colocar
delante de la ventana temporal las paradas que corresponda y
arrastrar hasta donde pueda las paradas anteriores a estas, de la
forma descrita en apartados anteriores.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
63 Rafael Grosso de la Vega
Ilustración 21: Bloque J-K
� Como se puede ver en la ilustración 21, los posibles inputs
iniciales de este bloque son los denominados A y B. Si lo
hacemos por la entrada A, se verifica que la ventana
temporal no se halla cerrado cuando el vehículo esta
saliendo de la ZR. Si es así se llega a la entrada B, si no es
así se sale del bloque J-K.
� En la entrada B se fija el índice J en la parada anterior a la
que se estaba estudiando y se verifica que no este en la
ZR. Si lo esta se busca hacia atrás en las paradas hasta
encontrar la primera que no este en ella. Ajustándose los
tiempos de esta parada para que coincida el momento en
que se entra en la ZR con el tiempo de ventana abierta.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
64 Rafael Grosso de la Vega
� Posteriormente, con ayuda del índice K, se reajustan los
tiempos de las paradas posteriores a la modificada
anteriormente. Además de intentar traer hacia adelante las
paradas que quedaron atrás, con el fin de buscar es peras
del vehículo lo más cortas posibles.
• También se encuentra en esta parte del bloque la
entrada C, que proviene del Bloque N. En este
bloque cuando se reajustan los tiempos de paradas
y el índice C coincide con el índice I, que es el que
se utiliza en el cuerpo principal del algoritmo, es
necesario reajustar paradas anteriores para
traérselas hacia delante. Y en busca de una
programación más corta y rápida se ha decidido
utilizar esta parte del algoritmo en este caso.
o Si la respuesta es NO, el algoritmo pregunta si durante el paso
del vehículo por la parada anterior a la que se esta estudiando la
ventana temporal estaba cerrada. Esto se hace para verificar que
el vehículo entra en la zona restringida con la ventana temporal
abierta.
� Si la respuesta es SI, el algoritmo pasa al Bloque J-K para
que verifique que el vehículo ha entrado en la zona
restringida con la ventana abierta, y si no lo ha hecho
desplaza las paradas explorando hacia atrás y
actualizando los nuevos tiempos de estas.
� Si la respuesta es NO, se calcula el coste de la ruta que se
lleva recorrida.
Posteriormente se verifica que no se halla sobrepasado el tiempo fin del día.
• Si se ha sobrepasado, se inicia una nueva ruta con un vehículo nuevo.
Como primera parada para esta nueva ruta se asigna la última parada
que no se pudo realizar con el vehículo anterior.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
65 Rafael Grosso de la Vega
• Si no se ha sobrepasado o si se ha iniciado una nueva ruta, se pregunta
si quedan más paradas por realizar.
o Si la respuesta es SI, se pasa a la siguiente parada y se repite el
proceso.
o Si la respuesta es NO, se finaliza el Fitness del individuo.
Este proceso, como es obvio, se repite con todos los individuos de la población
a evaluar.
5.2.2 Cruce.
El tipo de operador de cruce que se ha elegido para este algoritmo genético es
el basado en dos puntos. Se agrupan los individuos de la población de dos en
dos. Dentro de cada par de individuos se eligen aleatoriamente dos puntos de
cruce y se intercambian las paradas comprendidas entre estos puntos de un
individuo con otro. Esta operación se realiza con la totalidad de la población
generándose así una población de descendientes del mismo tamaño que la
anterior.
Al realizarse esta operación, como es conocido, se produce una duplicidad de
paradas en los descendientes, cosa que no es admisible. Para solucionar esto
se buscan las paradas repetidas y se sustituyen por las paradas que no estén
en el individuo.
Para realizar esta operación se ha optado por basarse en el trabajo de
Uchimura y Sakaguchi (1995), los cuales proponen una sustitución de paradas
repetidas basada en las relaciones adyacentes con el fin de crear
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
66 Rafael Grosso de la Vega
descendientes más óptimos con respecto a la función objetivo. Esto es, cuando
se tiene dos paradas repetidas, se evalúa, en cada caso, el tiempo usado en
recorrer la subruta compuesta por la parada adyacente anterior a la repetida, la
repetida y la adyacente siguiente en las dos posiciones de la parada en
cuestión. Posteriormente se eligen las situaciones de las paradas repetidas que
hagan que la ruta sea más rápida. Las opciones desechadas deberán se
ocupadas por las paradas, dos en este caso, que no existían en el individuo
descendiente. Y para elegir cual será la situación más óptima de estas se
vuelven ha evaluar las subrutas compuestas por las paradas adyacentes
anterior y posterior a los dos huecos por ocupar, con las dos paradas que
deben ocuparlos y se selecciona la situación que haga la ruta más rápida. Se
puede ver un esquema del proceso en la ilustración 22.
Ilustración 22: Esquema del cruce basado en las relaciones adyacentes.
En el caso de que cada individuo contenga un número significativamente mayor
de paradas que las del ejemplo anterior, como es el caso de este problema, la
duplicidad de paras se produce en un número también mayor, haciendo que la
solución del cruce se complejice.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
67 Rafael Grosso de la Vega
El procedimiento que sigue el algoritmo es el siguiente:
• Localiza la o las paradas repetidas.
• Evalúa en cada caso las dos subrutas que ocupa cada parada repetida,
seleccionando la más rápida y generando un hueco en el otro caso.
• Crea una matriz donde almacena por filas los costes de evaluar cada
parada que falta en cada posible hueco. De tal modo que cada fila
corresponde a una parada que falta y cada columna a un hueco por
ocupar.
• Seleccionar el mínimo valor de la matriz y asignar en el hueco
correspondiente a la columna la parada que corresponde a la fila.
Después elimina la fila y la columna seleccionadas.
• Se realiza el último paso tantas veces como sea necesario para rellenar
todos los huecos existentes.
El problema resuelto es un problema de asignación en el que se ha optado por
utilizar un método de resolución sencillo de programar, dado que se estima que
la posible mejora del tiempo de ruta conseguida por otros métodos más
complejos no seria significativa para el análisis que se pretende realizar del
problema.
5.2.3 Mutación.
En relación a este operador básico del algoritmo genético se ha diseñado de
forma que se seleccionan los individuos a mutar según una probabilidad
función de la tasa de mutación seleccionada. Esta tasa de mutación se ha
tomado fija y además es uno de los parámetros seleccionados del algoritmo
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
68 Rafael Grosso de la Vega
genético.
De esta forma se seleccionan los individuos que van a ser mutados en función
de la tasa de mutación, dicha mutación consiste en la elección de forma
aleatoria de dos paradas dentro de cada individuo las cuales son
intercambiadas de posición una con la otra. Así se generan individuos casi
idénticos pero con dos paradas cambiadas.
5.2.4 Selección por Ranking.
El operador de selección se ha basado en la función de selección proporcional.
En la que cada individuo tiene una probabilidad de ser seleccionado, como
padre de la siguiente generación, que es proporcional al valor del su Fitness.
De esta manera la población anterior de padres y la de sus descendientes es
ordenada, de menor a mayor, por el algoritmo según su valor de Fitness. Y
posteriormente se le asigna a cada individuo un valor de probabilidad gradiente
que va desde el valor unidad para el mejor individuo de las dos poblaciones, al
valor cero que se asigna al peor individuo. Con esto se asegura seleccionar al
mejor individuo y desechar al peor para la siguiente generación de padres,
además de retrasar de alguna manera la rápida convergencia de las
poblaciones que suele ocurrir en este tipo de algoritmos.
5.2.5 Población nueva. En busca de poder explorar el la mayor parte, sino toda, del espacio de
soluciones se utiliza este criterio de generar una población nueva cada cierto
intervalo de iteraciones. Con esto se pretende solucionar el problema en que
caen este tipo de algoritmos cuando han realizado ciertas iteraciones: la
población a considerar se va haciendo cada vez más homogénea, los
individuos de ella se parecen más unos a otros con el paso de las iteraciones.
Este fenómeno, que por un lado es lo que se busca pues con ello se generan
individuos cada vez mejor adaptados al problema a solucionar, tiene el
inconveniente de que puede llevar al algoritmo a caer en un máximo local. Si se
visualiza el espacio de soluciones como una superficie con distintos desniveles
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
69 Rafael Grosso de la Vega
y elevaciones, que representarían los mínimos y los máximos de la función
objetivo. El algoritmo genético podría “escalar”, en un número determinado de
iteraciones, hacia una de esas elevaciones encontrando un máximo; y dado su
diseño en las siguientes iteraciones permanecería en dicha elevación buscando
nuevas soluciones en un área muy pequeña alrededor de esta, es decir no
saldría de ese máximo y la población a evaluar en cada iteración seria más
homogénea.
Bien y siguiendo con la idea de visualizar el espacio de soluciones como una
superficie con desniveles y elevaciones, si se pudiera ver en su extensión
completa, cabe la posibilidad de que existieran elevaciones aun más altas que
la que escaló el algoritmo genético. Por tanto se debe dotar al algoritmo de
herramientas que le permitan bajar del máximo local, es decir buscar en
soluciones peores, para que posteriormente se puedan encontrar y escalar
máximos aun más altos que los encontrados con anterioridad.
De esta manera se diseña un criterio de generación de poblaciones nuevas
basado en lo cerca que se encuentren el mejor Fitness encontrado en la
población y el Fitness medio de dicha población. Este mecanismo genera una
población nueva totalmente aleatoria excepto por los tres mejores individuos de
la población que si permanecerán en la nueva. Con esto se asegura la
permanencia del máximo encontrado y además se intenta buscar nuevos
máximos mejores.
En la ilustración 23 (corresponde al experimento 2 con 50 paradas, 20 de
tamaño de zona restringida y 8 horas de longitud de ventana temporal) se
puede ver una gráfica donde se muestra la evolución del fitness medio de la
población y del fitness mejor encontrado en todas las iteraciones. En el eje de
ordenadas se representa el valor del fitness y en el de abscisa el número de
iteraciones realizadas por el algoritmo. Como se puede ver, siguiendo la
leyenda y sabiendo que se busca minimizar la función, el fitness mejor tiene
periodos de valor constante o casi caso constante, seguidos de descensos
bruscos de su valor, indicando con esto la mejora de las soluciones. Y el fitness
medio sigue una evolución con muchos altibajos, los bajos indican el momento
en que el criterio activó la generación de una nueva población y los altos
indican el momento en que esa nueva población es evaluada por primera vez
obteniéndose, en general, un fitness medio mayor.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
70 Rafael Grosso de la Vega
Ilustración 23: Gráfica de evolución del Fitness medio y del fitness mejor.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
71 Rafael Grosso de la Vega
6 RED DE PRUEBA. RESULTADOS.-
6.1 Exposición de la red de prueba
Para la implementación y probaturas del algoritmo, además de la elección de
los parámetros más idóneos y adecuados para el estudio sobre la red de
Sevilla, se utilizará una red de prueba. Se busca con esto realizar un análisis
de sensibilidad de los parámetros que se elegirán. Esta tendrá un diseño
sencillo y manejable que facilitará la comprensión de los resultados obtenidos y
su posterior análisis. La red constará de 900 (30x30) nodos unidos por arcos de
igual distancia, en concreto consideraremos que dicha distancia es de 200
metros. La configuración de esta se muestra en la ilustración 24, en la cual se
numeran los nodos para una mejor comprensión:
Ilustración 24: Esquema reducido de la Red de Prueba.
En la figura las flechas indican el sentido en el que se puede desplazar el
vehículo. Tal y como se ha definido esta red de prueba el sentido se alterna en
las filas y en las columnas. De tal modo que en las filas impares el sentido es
hacia la izquierda y en la pares es hacia la derecha, de igual forma en las
columnas impares el sentido es hacia arriba y en las pares es hacia abajo.
Cabe decir que la elección del nodo de partida y finalización, es decir el
depósito, además de los nodos destino o paradas, en esta red de prueba, se
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
72 Rafael Grosso de la Vega
realizará aleatoriamente.
Además la zona restringida se ubicará en el centro de esta red considerándose
como límite de esta los nodos y no los arcos. Se ha programado la generación
de los nodos destinos para que tengan una densidad mayor en la zona
restringida, para así asemejarse más a la realidad.
En la ilustración 25 se puede ver uno de los problemas resueltos:
Ilustración 25: Red de prueba.
En ella se pueden apreciar:
• En el conjunto de nodos � representados como puntos azules.
• El subconjunto �� de nodos de la zona restringida representados con
cuadrado rojo rodeando el punto azul del nodo.
• El subconjunto de paradas o clientes de la ruta resaltadas con un
círculo azul que rodea al punto azul del nodo.
• El nodo de partida o depósito que se destaca con un cuadrado negro.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
73 Rafael Grosso de la Vega
6.2 Resultados
Para la obtención de resultados se ha decidido un diseño de experimento
basados en tres parámetros del problema y tres parámetros del algoritmo
Genético. Asignándoles diferentes valores se obtienen 8 tipos de problemas y 8
tipos de algoritmos. Así se aplica a cada tipo de problema los 8 tipos de
algoritmos y se obtiene el valor del Fitness en cada uno de ellos además del
número de vehículos utilizados.
Los parámetros que se han tomado son:
• Parámetros de los problemas:
o Número de paradas (Nº Stop).
o Tamaño de la Zona Restringida (RZ) : En unidades de longitud
de la red de prueba. Cada 2 unidades equivalen a 100 metros.
o Longitud de la Ventana Temporal (TW): En horas.
• Parámetros de los Algoritmos Genéticos:
o Tamaño de la población (A) : Se ha decidido que sea función del
número de paradas por lo que se toman valores del factor que
multiplica a este parámetro de los problemas. Así
MNONñP QPRSNT>PU ( V W Xº BNYNZN[.
o Número de iteraciones (B) : También se ha decidido que sea
función del número de paradas. De esta forma Xº ]3^YNT>PU^[ (
_ W Xº BNYNZN[.
o Tasa de mutación (TM) .
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
74 Rafael Grosso de la Vega
En la Tabla 1 se pueden observar los valores de los parámetros tomados
además de los resultados de las pruebas realizadas, 64 en total. Los resultados
se componen del valor del Fitness acompañado por el número de vehículos
utilizados para la realización de la ruta. Se destacan en negrita los valores de
los Fitness menores dentro de cada tipo de problema. Con esto se deciden los
parámetros de los Algoritmos genéticos más idóneos para resolver la red de
Sevilla que es el objeto del problema.
Cabe decir que en los valores de Fitness expuestos en la tabla se ha eliminado
el cote U` para con ello poder decidir sobre la bondad de la solución en función
del número de vehículo, además del valor del Fitness obviamente.
Nº
Sto
p
RZ
TW
Exp
.1
Exp
.2
Exp
.3
Exp
.4
Exp
.5
Exp
.6
Exp
.7
Exp
.8
A 0,5 0,5 0,5 0,5 2 2 2 2 B 3 3 6 6 3 3 6 6
TM 0,1 0,5 0,1 0,5 0,1 0,5 0,1 0,5 P1 50 20 4 2932 1 2948 1 2932 1 2916 1 2916 1 2916 1 2916 1 2916 1 P2 50 20 8 3894 1 3912 1 3902 1 3900 1 3894 1 3894 1 3894 1 3894 1 P3 50 50 4 2948 1 2918 1 2936 1 2908 1 2912 1 2920 1 2904 1 2908 1 P4 50 50 8 3902 1 3908 1 3916 1 3904 1 3900 1 3892 1 3898 1 3904 1 P5 120 20 4 7132 2 7124 2 7166 2 7082 2 7072 2 6978 2 7092 2 6986 2 P6 120 20 8 8152 2 8184 2 8030 2 8132 2 8036 2 8112 2 7986 2 8012 2 P7 120 50 4 7102 2 7176 2 7150 2 7154 2 7084 2 7104 2 6006 2 5812 2 P8 120 50 8 7166 2 7914 2 8142 2 7950 2 7914 2 7902 2 7982 2 7942 2
Tabla 1: Resultados de los experimentos realizados sobre la Red de Prueba.
Con la intención de buscar una mejor comprensión de los resultados se
presenta a continuación los mismos resultados pero expresados en horas:
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
75 Rafael Grosso de la Vega
N
º S
top
RZ
TW
Exp
.1
Exp
.2
Exp
.3
Exp
.4
Exp
.5
Exp
.6
Exp
.7
Exp
.8
A 0,5 0,5 0,5 0,5 2 2 2 2 B 3 3 6 6 3 3 6 6
TM 0,1 0,5 0,1 0,5 0,1 0,5 0,1 0,5 P1 50 20 4 7,33 1 7,37 1 7,33 1 7,29 1 7,29 1 7,29 1 7,29 1 7,29 1 P2 50 20 8 9,74 1 9,78 1 9,76 1 9,75 1 9,74 1 9,74 1 9,74 1 9,74 1 P3 50 50 4 7,37 1 7,30 1 7,34 1 7,27 1 7,28 1 7,30 1 7,26 1 7,27 1 P4 50 50 8 9,76 1 9,77 1 9,79 1 9,76 1 9,75 1 9,73 1 9,75 1 9,76 1 P5 120 20 4 17,83 2 17,81 2 17,92 2 17,71 2 17,68 2 17,45 2 17,73 2 17,47 2 P6 120 20 8 20,38 2 20,46 2 20,08 2 20,33 2 20,09 2 20,28 2 19,97 2 20,03 2 P7 120 50 4 17,76 2 17,94 2 17,88 2 17,89 2 17,71 2 17,76 2 15,02 2 14,53 2 P8 120 50 8 17,92 2 19,79 2 20,36 2 19,88 2 19,79 2 19,76 2 19,96 2 19,86 2
Tabla 2: Resultados de la red de prueba expresados en horas.
Ante el resultado de los experimentos se han llegado a las siguientes
conclusiones:
• Con respecto al parámetro ! relativo al tamaño de la población se
observa que con el valor de ! ( * se obtienen mejores resultados en la
mayoría de los experimentos.
• En relación al parámetro a factor del número de iteraciones se puede
apreciar que el valor a ( . es el que obtiene mejores resultados.
• Con la tasa de mutación no se puede concluir nada relevante sobre que
valor de este parámetro obtienen mejores resultados, dado que los
Fitness mejores de cada problema aparecen bajo la influencia de los dos
valores indistintamente. Ante esta situación se decidió realizar
experimentos adicionales, con un valor diferente de tasa de mutación, a
los 8 tipos de problemas, para intentar con ello llegar a una conclusión
concreta del valor más óptimo. Pero los resultados obtenidos tampoco
fueron concluyentes por lo que se decidió tomar los dos valores
considerados inicialmente (Mb ( 0,1 y Mb ( 0,5) como parámetros a
utilizar con la red de Sevilla. Por el mismo motivo de antes no se
exponen los resultados de estos experimentos adicionales.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
76 Rafael Grosso de la Vega
7 RED DE SEVILLA. RESULTADOS.- Una vez validado el algoritmo genético, es decir después de haber verificado
con la red de prueba que el algoritmo cumple con los objetivos y requisitos para
los que se diseñó, se pasa a su aplicación en una situación real. Para ello se
aplicará el algoritmo sobre el modelo, lo más cercano a la realidad posible, de
una ciudad real. Para poder analizar todas las situaciones posibles en que se
puede encontrar una empresa de reparto en esta ciudad se realizaran varias
simulaciones del algoritmo variando, en cada una de ellas, los parámetros
número de paradas, tamaño de la zona restringida y longitud de la ventana
temporal.
7.1 Exposición de la red de Sevilla
El problema se sitúa en una ciudad, en concreto en la ciudad de Sevilla.
La ciudad se modelará como un grafo, compuesto por un conjunto de nodos y
arcos, que simulará las posibles paradas o lugares de reparto y las calles que
los unen (ver ilustración 26).
Ilustración 26: Vista de los nodos del modelo de la red de Sevilla.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
77 Rafael Grosso de la Vega
Se supondrá la existencia de una pequeña/mediana empresa de reparto de
paquetería, la cual dispondrá de una pequeña flota de vehículos suficiente para
la realización de las entregas requeridas. Es decir el número de vehículos no
será una restricción en el problema porque se considerará infinito, eso si, la
utilización de cada unidad más que se necesite, además de la inicial, tendrá un
coste adicional fijo.
El tamaño de estos vehículos es irrelevante dado que se supondrá que la
mercancía a repartir consistirá en bultos de tamaño pequeño/medio; así no se
tendrá en cuenta, o se considerará infinita la capacidad de los vehículos en el
modelo del problema.
A empresa le supondremos un número de clientes de entre 50 y 200 a los que
tendrá que atender. La concentración mayor de estos clientes se dará en la
zona del centro de la ciudad.
Para simular los desplazamientos y el hecho físico de la entrega del paquete,
se supondrá una velocidad de desplazamiento del vehículo de 20 Km/h y un
tiempo de permanencia en cada parada de 20 min. Además el horizonte
temporal del modelo será el de un día, más concretamente, se considerará una
jornada laboral de 10 horas. Por tanto el número total de clientes deberá ser
satisfecho dentro de este intervalo de tiempo.
La sede de la empresa se supondrá localizada en un polígono industrial de la
ciudad, zona esta apartada del centro pero no fuera de ella. Esta sede será el
punto de partida de cada ruta de reparto, así como el punto de finalización de
esta. Así el vehículo deberá partir de la sede, realizar su ruta de reparto y
regresar a ella.
Con respecto a la ventana temporal, que como se introdujo antes, será única y
la supondremos en la mitad del horizonte temporal o día. Su duración o
longitud se considerará un parámetro del problema y por tanto le asignaremos
diferentes valores en las diferentes simulaciones que se realizarán,
pretendiendo con esto tener una visión más amplia de la casuística del
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
78 Rafael Grosso de la Vega
problema.
En cuanto a la zona peatonalizada que va asociada a la ventana temporal se
situará en el centro de la ciudad. Su amplitud o radio también se considerará un
parámetro del problema asignándole diferentes valores por los mismos motivos
arriba expuestos. Cabe decir que no se podrá acceder a ella ni se podrá
permanecer en ella durante la duración de la ventana temporal.
• Los valores que se le asignaran al radio de la ZR serán tres, y en
kilómetros tienen los valores siguientes:
o 1,59 fO
o 3,96 fO
o 7,14 fO
o Además de estos tres valores se considerará el caso de que la
ventana temporal no exista y en este supuesto el radio de la zona
restringida carece de sentido por lo que este parámetro tomará
también el valor cero.
• A continuación se representa en las figuras siguientes, de forma
aproximada, los tamaños de los tres radios considerados sobre la
imagen aérea de la ciudad de Sevilla:
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
79 Rafael Grosso de la Vega
Ilustración 27: Representación aproximada de la ZR con radio de 1,59 Km.
Ilustración 28: Representación aproximada de la ZR con radio de 3,96 Km.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
80 Rafael Grosso de la Vega
Ilustración 29: Representación aproximada de la ZR con radio de 7,14 Km.
Y por último se debe decir que la función objetivo o de costes a optimizar se
calculará en términos temporales. Y para trabajar y calcular los costes en
términos temporales debemos transformar las distancias de los arcos de la red
en tiempo por medio de un sencillo cálculo cinemático además del dato, ya
mencionado, de la velocidad del vehículo. Otro componente de la función
objetivo es el coste añadido de los vehículos adicionales. El primer vehículo no
lo tiene, pero a partir del segundo se sumaran 8000 unidades temporales al
coste total. Se ha optado por una cifra elevada para penalizar la utilización de
excesiva de vehículos y así intentar que el algoritmo mejore en ese sentido.
7.2 Resultados
Para obtener los resultados definitivos sobre la red de Sevilla se ha realizado
una serie de experimentos cuyo diseño ha seguido los criterios siguientes:
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
81 Rafael Grosso de la Vega
• Parámetros del problema:
o Se ha optado por fijar el número de paradas (Nº Stop) en 100.
Esta decisión se tomado según el criterio de economía temporal,
pues la duración de la ejecución del algoritmo, con las
herramientas computacionales con que se ha realizado este
proyecto, conlleva un tiempo considerable en cada experimento.
Así se ha tomado este valor como representativo del valor medio
del posible número de clientes que pudiera tener una empresa de
reparto en un día.
o El tamaño o radio de la ZR como se ha mencionado antes tomará
tres valores diferentes: 1,59 fO , 3,96 fO y 7,14 fO
o Con respecto a la longitud de la ventana temporal se ha decidido
que tomará los siguientes valores en horas: 0, 2, 4 y 6.
Obviamente el valor cero representa la ausencia de ventana
temporal y por tanto de zona restringida.
• Parámetros del algoritmo genético:
o Como se decidió en base a los resultados de los experimentos
sobre la red de prueba el número de paradas quedará fijado con
el valor del parámetro ! ( * .
o Del mismo modo el número de iteraciones quedó fijado con el
valor del parámetro a ( ..
o En relación a la tasa de mutación se decidió que tomara los dos
valores Mb ( 0,1 y Mb ( 0,5 .
Con estos valores se obtienen 10 diferentes problemas que se deberán
resolver dos veces cada uno, una vez con cada valor de la tasa de mutación.
En la tabla siguiente se presentan los resultados numéricos de los
experimentos:
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
82 Rafael Grosso de la Vega
RZ
TW
TM
Resultados Resultados (horas)
P1 0 0 0,5 57148,58 8 72,42
P2 1,59 2 0,5 57057,12 8 66,65
P3 1,59 4 0,5 57040,43 8 65,60
P4 1,59 6 0,1 57120,56 8 70,65
P5 3,96 2 0,1 65109,25 9 69,94
P6 3,96 4 0,5 89188,22 12 74,91
P7 3,96 6 0,5 186017,52 24 127,20
P8 7,14 2 0,5 81497,19 11 94,39
P9 7,14 4 0,1 138329,89 18 146,90
P10 7,14 6 0,1 236196,02 30 264,55 Tabla 3: Resultados de los experimentos sobre la red de Sevilla.
En ellos se puede observar los valores tomados por los diferentes parámetros,
excepto los que se han tomado como fijos, y el valor numérico de fitness
acompañado del número de vehículos utilizados para cubrir la ruta.
Adicionalmente y para una mejor comprensión de estos resultados se muestran
una “traducción” de estos a horas. Cabe decir que se ha mostrado únicamente
el mejor resultado obtenido de cada problema acompañado del valor de la tasa
de mutación con que obtuvo.
A modo de análisis de los resultados se puede decir que en los cuatro primeros
problemas el tamaño de la zona restringida es casi irrelevante para la solución,
incluso la duración de la ventana temporal pues el número de vehículos es el
mismo para todos y el valor numérico del fitness varia poco si se mira desde el
punto de vista del número medio de horas que debe estar en ruta cada
vehículo (estas son de 8 horas y media a nueve aproximadamente).
En el problema 5, en el que el valor del tamaño de la zona restringida es 3.96
Km, se puede ver que el número de vehículos necesarios para cubrir la ruta
aumenta en una unidad, como es lógico al aumentar dicho parámetro; pero si
se analiza el número medio de horas que consumen cada uno de ellos se
observa que es sensiblemente inferior al de los cuatro primeros problemas.
Esto se puede deber a que la influencia en la optimización de las rutas del
aumento del tamaño de la zona restringida requiere más vehículos, aunque
estos se ven obligados a realizar rutas más cortas en el tiempo. Esta tendencia
continúa también en los problemas 6 y 7 donde va aumentando la duración de
la ventana temporal. Dado que la zona restringida es mayor y el número de
horas en las que los vehículos no pueden interactuar con ella aumenta, las
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
83 Rafael Grosso de la Vega
rutas óptimas buscan repartir en la zona restringida en las primeras horas de la
jornada laboral para después regresar al depósito pasando por alguna parada
situada fuera de esta, o viceversa, es decir repartir primero fuera de la zona
restringida para hacerlo dentro de ella al final de la jornada, pudiendo incluso
comenzar la jornada laboral en un tiempo mayor al tiempo cero; provocando
esto que la duración total de estas rutas sea menor.
También se puede observar que el número total de horas necesarias para
realizar las rutas en los primeros 6 problemas no sufre cambios significativos.
En el problema 8 se observa que el número de vehículos disminuye
considerablemente con respecto al problema anterior, siendo esto lógico pues
aunque el tamaño de la zona restringida es mayor la duración de la ventana
temporal es sólo de 2 horas por lo que los vehículos pueden encontrar rutas
optimas más fácilmente. Aunque comparando con el problema 5, que tiene
igual duración de ventana temporal, si se observa un aumento lógico del
número de vehículos provocado por la diferencia en el tamaño de la zona
restringida.
Cabe decir para los restantes problemas que el aumento del número de
vehículos ya es considerable y que el tiempo medio en que los vehículos están
en ruta crece con respecto a los tiempos medios de los problemas intermedios,
hasta igualarse, en términos generales, con los tiempos medios de ruta de los
problemas iniciales.
A modo ilustrativo se expone a continuación la evolución del fitness comparado
con el fitness medio de uno de los experimentos realizados sobre el modelo de
la ciudad de Sevilla. Concretamente la ilustración corresponde al problema 10.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
84 Rafael Grosso de la Vega
Ilustración 29: Evolución del fitness y del fitness medio en el problema 10 realizado sobre el modelo de la ciudad
de Sevilla.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
85 Rafael Grosso de la Vega
8 CONCLUSIONES. Llegado a este punto del proyecto es preciso recordar los objetivos de este
para así centrar mejor las conclusiones sacadas.
Los objetivos, después de haber presentado el problema, eran poder sacar
conclusiones de los sobrecostes generados en una empresa de reparto de
mercancía cuando se ve obligada a actuar en una ciudad, en este caso Sevilla,
donde se implantan medidas de restricción de tráfico en una determinada zona
de esta.
Para ello se han resuelto diferentes problemas de este supuesto en el modelo
generado de la ciudad. Estos diferentes problemas van desde el supuesto de
que no exista restricción de tráfico alguna en toda la ciudad, hasta el supuesto
de una restricción de tráfico y horario que ocupa gran parte de la ciudad y más
de la mitad del horario comercial tipo.
Y a la vista de los resultados obtenidos (véase tabla 3) se puede concluir que
los sobrecostes, en términos temporales, pueden llegar al 400%. Observando
un poco más detalladamente se puede ver:
• En los problemas con el menor tamaño de zona restringida se aprecia
una variación pequeña con respecto al caso nulo, pero si se aprecia una
diferencia mayor cuando la duración de la ventana temporal es la mayor.
• En los problemas con el tamaño medio de zona restringida ya se puede
observar una diferencia significativa, siendo esta aun más marcada en el
caso que dure la ventana temporal 6 horas.
• En los problemas con el tamaño de la zona restringida mayor las
diferencias apreciadas son marcadamente amplias. Es curioso la
comparación de que el caso de tamaño de zona restringida mayor y
longitud de ventana temporal pequeño tenga una solución mejor que el
caso de tamaño de zona restringida medio y longitud de ventana
temporal mayor. De lo que se deduce que la duración de la ventana
temporal influye en el problema de manera significativa a medida que va
aumentando el tamaño de la zona restringida.
Por tanto se puede decir que la implantación de este tipo de medidas de
restricción de tráfico en determinadas zonas de las ciudades esta directamente
relacionado con un sobrecoste, cuya cuantía puede variar dependiendo del
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
86 Rafael Grosso de la Vega
número de clientes que puedan sufrir dicha restricción además del tamaño y
horario de esta, que deberán soportar las empresas de reparto que actúen en
la ciudad en cuestión.
Estas conclusiones aparentemente obvias, no lo son tanto si el problema es
analizado sin el enfoque práctico y cuantificador que se ha intentado hacer en
este trabajo. Es más, después de observar que los estudios, por parte de las
administraciones locales, sobre logística urbana de mercancías son nulos o
simplemente incipientes, se puede deducir que la decisión de implantar sobre
los cascos antiguos medidas tales como zonas restrictivas con ventanas
temporales se tomaron sin tener en cuenta conclusiones como las sacadas en
este proyecto.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
87 Rafael Grosso de la Vega
9 BIBLIOGRAFÍA.
[1] Uchimura, K & Sakaguchi, H 'Vehicle routing problem using genetic
algorithms based on adjacencyrelations', Vehicle Navigation and Information
Systems Conference, . Proceedings. In conjunction w ith the Pacific Rim
TransTech Conference. 6th International VNIS. 'A Ri de into the Future' ,
Seattle, WA, USA, pp. 214-217
[2] Muñuzuri, J. (2003). La logística urbana de mercancías: soluciones,
modelado y evaluación. PhD Tesis, Universidad de Sevilla.
[3] Larrañeta, J., Muñuzuri, J., Montero, G. y Canca, D. La logística urbana de
mercancías en España. IV Congreso de Ingeniería de Organización, 2001.
[4] Munuzuri, J., Larraneta, J., Onieva, L. and Cortes, P., "Solutions applicable
by local administrations for urban logistics improvement," Cities, v22, pp. 15-28,
2005.
[5] Arbelaitz, O. 2002, “Soluciones basadas en Simulated Annealing para el
VRPTW”, Tesis doctoral, Universidad del País Vasco, Donostia.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
88 Rafael Grosso de la Vega
ANEXO: PROGRAMACIÓN DEL ALGORITMO. Como se ha comentado anteriormente para la programación e implementación del algoritmo genético que ocupa este proyecto se
ha utilizado la herramienta informática Matlab. La elección de esta no ha seguido ningún criterio de búsqueda de herramientas que
permitan una programación más eficiente o especializada en el tipo de algoritmos utilizados, sino que se ha elegido por su
cercanía y familiaridad. Aun así se esta hablando de una herramienta lo suficientemente potente como para soportar la
programación que se le exige y lo suficientemente eficiente para las exigencias de un proyecto fin de carrera como este.
Así utilizando los elementos básicos de programación en esta herramienta informática como son las sentencias if, while, for se ha
ido programando línea a línea todo el algoritmo que se expone a continuación.
La estructura general seguida en la programación del proyecto, y que esta determinada por la elección de los parámetros que se
tienen en cuenta, es la siguiente:
• Generación de los problemas : como primer paso se generan todos los problemas que posteriormente se evaluaran con
el algoritmo genético. Entendiendo como problemas la red de nodos y arcos con los diferentes valores de los parámetros
del problema (número deparadas, tamaño de la zona restringida y longitud de la ventana temporal).
• Resolución de los problemas : posteriormente se implementará un programa que toma cada problema y lo evalúa con los
diferentes algoritmos genéticos que surgen de los diferentes valores de los parámetros de los AAGG (tamaño de población,
número de iteraciones y tasa de mutación)
Obviamente cada una de estas divisiones constará de diferentes programas y archivos de datos.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
89 Rafael Grosso de la Vega
1 Red de prueba.
1.1 Generación de los problemas.
El programa que genera los problemas es:
clear load ParametrosProblemas ; NumeroProblema=0; for indVNP=1:2 for indVTZR=1:2 for indVVT=1:2 NumeroProblema=NumeroProblema+1 Numparadas=VectorNumeroParadas(indVNP) Distanciarestringidos=VectorTamanoZR(in dVTZR) TiempoVC=VectorVentanaTemporal(indVVT,1 ) TiempoVA=VectorVentanaTemporal(indVVT,2 ) A_parametros; B_creanodos; C_construirmatrizincidencias; D_zonarestringida; E_nodosinicioydestino; F_rutasminimas; if NumeroProblema==1 save Problema_1 end if NumeroProblema==2 save Problema_2 end if NumeroProblema==3 save Problema_3 end if NumeroProblema==4 save Problema_4
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
90 Rafael Grosso de la Vega
end if NumeroProblema==5 save Problema_5 end if NumeroProblema==6 save Problema_6 end if NumeroProblema==7 save Problema_7 end if NumeroProblema==8 save Problema_8 end save NumeroProblema NumeroProblema indVNP indVTZR indVVT clear load NumeroProblema ; load ParametrosProblemas ; end end end
Este llama al archivo ParametrosProblemas , previamente diseñado, que contiene los tres vectores de datos en los cuales se
encuentran los diferentes valores de los parámetros de los problemas. Posteriormente se almacenan los problemas
generados en archivos con indicadores numéricos que servirán para su diferenciación.
También llama a los diferentes archivos que se muestran a continuación y que realizan las diferentes acciones necesarias
para la generación de la red.
1.1.1 A_parametros:
Este archivo contiene algunos parámetros del problema.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
91 Rafael Grosso de la Vega
Costevehiculo=8000; % A aplicar a partir del segundo vehiculo; Findia=4400; %660/0.15; Tiempoentregamax=20;
1.1.2 B_creanodos:
Este archivo genera los nodos de la red y los saca en una ventana grafica.
% Tamano de la red se utiliza tanto para el número de nodos como para la extension de la ciudad numnodos=900; %La red de pruebas consta de 900 nodos nodos=zeros(numnodos,2); for i=1:30 for j=1:30 nodos((i-1)*30+j,1)=2*(i-1); nodos((i-1)*30+j,2)=2*(j-1); end end nodos=nodos+ones(numnodos,2); %Se le suma una matriz de unos para que el nodo-1 n o este en las coordenadas %(0,0) sino (1,1) plot(nodos(1:numnodos,1),nodos(1:numnodos,2), 'b.' ); %Dibuja los nodos como puntos de color azul title( 'Red de Nodos' ) hold on %Mantiene lo pintado en los siguientes graficos
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
92 Rafael Grosso de la Vega
1.1.3 C_construirmatrizincidencias:
Con el se genera la matriz de incidencias que es una matriz que determina la dirección y sentido en la que se puede circular por la
red. También se genera a partir de la anterior la matriz Distancias que alverga la distancia de los arcos de la red.
%Construccion de la matriz de incidencias Matrizincidencias=zeros(numnodos); for mi=1:60:871 for mj=0:28 Matrizincidencias(mi+mj,mi+mj+1)=1; %La matriz de incidencias se contruye de la siguien te manera: end %El elemento (i,j)=1 indica que se puede ir del nod o "i" al "j" end %El elemento (k,l)=0 No se puede ir del nodo "k" al nodo "l" for mi=31:60:871 %Los nodos se comunican de la siguiente manera: for mj=1:29 %Por filas: Matrizincidencias(mi+mj,mi+mj-1)=1; %Si impar: Van hacia la izquierda end %Si par: Van hacia la derecha end %Por columnas: %Si impar: Van hacia arriba for mj=0:2:28 %Si par: Van hacia abajo for mi=31:30:871 %En cada fila o columna solo hay uno o dos unos, en general a cada Matrizincidencias(mi+mj,mi+mj-30)=1; %nodo se puede llegar desde otros dos nodos end end for mj=1:2:29 for mi=31:30:871 Matrizincidencias(mi+mj-30,mi+mj)=1; end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
93 Rafael Grosso de la Vega
end Distancia=2*Matrizincidencias; %Porque una longitud de arco de 2 son 100 metros Matrizincidencias=sparse(Matrizincidencias); %sparse de una matriz dispersa(es una matriz con gr an número de ceros) %coge solo los valores significativos (los distinto s de ceros) Distancia=sparse(Distancia);
1.1.4 D_zonarestringida:
Con este archivo se determina los nodos que formaran parte de la zona restringida a partir deltamaño de dicha zona y de un nodo
central de esta.
% Identificacion de nodos de la zona restringida centrozonarestringida=435; Nodosrestringido=zeros(1,numnodos); Nodosrestringido(centrozonarestringida)=1; Matrizincidencias2=Matrizincidencias'+Matrizinciden cias; Distancia2=2*Matrizincidencias2; lambda=100000*ones(numnodos,1); lambda(centrozonarestringida)=0; cambio=1; while cambio>0 cambio=0; for j=1:numnodos Adyacentesanteriores=find(Matrizincidencias 2(1:numnodos,j)); for i=1:length(Adyacentesanteriores) if lambda(Adyacentesanteriores(i))>lambda(j)+Distanci a2(Adyacentesanteriores(i),j) lambda(Adyacentesanteriores(i))=lam bda(j)+Distancia2(Adyacentesanteriores(i),j); cambio=1; end end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
94 Rafael Grosso de la Vega
end end Nodosrestringido(find(lambda<Distanciarestringidos) )=1; % Identificacion de impresion de arcos de la zona r estringida Indicesrestringidos=find(Nodosrestringido); for k=1:length(Indicesrestringidos) for j=1:numnodos if Matrizincidencias(Indicesrestringidos(k),j)>0 plot(nodos(Indicesrestringidos(k),1),no dos(Indicesrestringidos(k),2), 'rs' ) end end end hold on
1.1.5 E_nodosinicioydestino:
Aquí se seleccionan el nodo inicial o depósito y los diferentes nodos destinos partiendo del número de paradas que tenga cada
problema.
Probabilidaddestino=0.03; % Tiene que ser un número entre 0 y 1 nodosaleatorio=randperm(numnodos); % Identificacion e impresion de nodo origen cambio2=1; posibleorigen=2; while cambio2>0 cambio2=0; Nodoorigen=nodosaleatorio(posibleorigen); if (Nodosrestringido(Nodoorigen))==1 cambio2=1; posibleorigen=posibleorigen+1;
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
95 Rafael Grosso de la Vega
end end plot(nodos(Nodoorigen,1),nodos(Nodoorigen,2), 'ks' ); % Identificacion e impresion de nodos destino Nodosdestino=zeros(1,numnodos); Destinosenrestringido=0; Nodosdestino(Nodoorigen)=1; numparadas=0; salirbucle=0; nodosdesorden=randperm(numnodos); while salirbucle==0 for i=1:numnodos if (i~=Nodoorigen)&(Nodosdestino(nodosdesorden(i))~=1 ) if Nodosrestringido(nodosdesorden(i))==1 if (rand<3*Probabilidaddestino)&(numparadas<Numparad as) Nodosdestino(nodosdesorden(i))= 1; numparadas=numparadas+1; if numparadas==Numparadas salirbucle=1; end Destinosenrestringido=Destinose nrestringido+1; end else if (rand<Probabilidaddestino)&(numparadas<Numparadas ) Nodosdestino(nodosdesorden(i))= 1; numparadas=numparadas+1; if numparadas==Numparadas salirbucle=1; end end end end end end for i=1:numnodos if i~=Nodoorigen
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
96 Rafael Grosso de la Vega
if Nodosdestino(i)==1 plot(nodos(i,1),nodos(i,2), 'bo' ); end end end hold off
1.1.6 F_rutasminimas:
En este archivo se calculan las rutas minimas entre cada par de nodos destino además de las distancias dentro y distancias fuera
de la ZR que después se utilizaran en el calculo del fitness de cada individuo.
Indicesdestinos=find(Nodosdestino); paradas=find(Indicesdestinos~=Nodoorigen); Indicesparadas=Indicesdestinos(paradas); Indicesdestinos=[Indicesparadas,Nodoorigen]; % CALCULO DE LAS RUTAS MINIMAS Matrizcostes=Distancia; Longitudrutas=zeros(length(Indicesdestinos)); % cada elemento refleja la longitud de la ruta entr e cada par de nodos destino Rutas=zeros(numnodos,length(Indicesdestinos)); % cada elemento (i,j) refleja hacia que nodo se deb e ir desde i en la ruta hacia j for k=1:length(Indicesdestinos) lambda1=100000*ones(numnodos,1); lambda1(Indicesdestinos(k))=0; cambio=1; while cambio>0 cambio=0; for j=1:numnodos Adyacentesanteriores=find(Matrizinciden cias(1:numnodos,j));
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
97 Rafael Grosso de la Vega
for i=1:length(Adyacentesanteriores) if lambda1(Adyacentesanteriores(i))>lambda1(j)+Matriz costes(Adyacentesanteriores(i),j) lambda1(Adyacentesanteriores(i) )=lambda1(j)+Matrizcostes(Adyacentesanteriores(i),j ); Rutas(Adyacentesanteriores(i),k )=j; cambio=1; end end end end Longitudrutas(1:length(Indicesdestinos),k)=lamb da1(Indicesdestinos); end % CALCULO DE LA MATRIZ DE RECORRIDOS INTERNOS % % Es una matriz con tantas filas y columnas como destinos, con todo ceros salvo: % - Si i no pertenece a la zona restringida y j s i, (i,j) es el tiempo de la ruta i-j que se recorre dentro de la zona restringida % - Si i pertenece a la zona restringida y j no, (i,j) es el tiempo de la ruta i-j que se recorre de ntro de la zona restringida LongitudDentro=zeros(length(Indicesdestinos)); for i=1:length(Indicesdestinos) for j=1:length(Indicesdestinos) if (Nodosrestringido(Indicesdestinos(i))==0)&(Nodosre stringido(Indicesdestinos(j))==1) longitudtrozodentro=0; nodoinicial=Indicesdestinos(i); while nodoinicial~=Indicesdestinos(j) nodofinal=Rutas(nodoinicial,j); if (Nodosrestringido(nodofinal)==1)&(Nodosrestringido (nodoinicial)==1) longitudtrozodentro=longitudtro zodentro+Distancia(nodoinicial,nodofinal); end nodoinicial=nodofinal; end LongitudDentro(i,j)=longitudtrozodentro ; %Si el nodo "i" pertenece a la ZR y el nodo "j" NO pertenece a la ZR elseif (Nodosrestringido(Indicesdestinos(i))==1)&(Nodosre stringido(Indicesdestinos(j))==0) longitudtrozodentro=0;
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
98 Rafael Grosso de la Vega
nodoinicial=Indicesdestinos(i); while nodoinicial~=Indicesdestinos(j) nodofinal=Rutas(nodoinicial,j); if (Nodosrestringido(nodoinicial)==1) longitudtrozodentro=longitudtro zodentro+Distancia(nodoinicial,nodofinal); end nodoinicial=nodofinal; end LongitudDentro(i,j)=longitudtrozodentro ; end end end
1.2 Resolución de los problemas.
El programa que resuelve los problemas es el siguiente:
clear NumeroExperimento=0; for indExperimento=1:8 load Parametros ; if indExperimento==1 load Problema_1 ; end if indExperimento==2 load Problema_2 ; end if indExperimento==3 load Problema_3 ; end if indExperimento==4 load Problema_4 ; end if indExperimento==5
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
99 Rafael Grosso de la Vega
load Problema_5 ; end if indExperimento==6 load Problema_6 ; end if indExperimento==7 load Problema_7 ; end if indExperimento==8 load Problema_8 ; end for indTP=1:2 for indNMI=1:2 for indTM=1:2 NumeroExperimento=NumeroExperimento +1; Tamanopoblacion=VectorTP(indTP)*Num paradas Tasamutacion=VectorTM(indTM) evolucion=0; cambiar=0; it=0; convergencia=0; Poblacionnueva=0; % Probabilidades de ser eliminados para el operador de seleccion en funcion del ranking Probabilidades=zeros(2*Tamanopoblac ion,1); for contaprob=1:2*Tamanopoblacion Probabilidades(contaprob)=(cont aprob-1)/(2*Tamanopoblacion); end Probabilidades=ones(length(Probabil idades),1)-Probabilidades; tic G_poblinicial; H_paradasZR; I_previofitness; FitnessEvolucion=FitnessFinal(:,Num paradas+1:Numparadas+2); MejorIndividuo=FitnessFinal(1,1:Num paradas+1); while convergencia==0
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
100 Rafael Grosso de la Vega
it=it+1 K_cruce; L_mutacion; M_previofitnessDescendientes; N_seleccionporranking; if ((sum(FitnessEvolucion(:,(end-1)),1))/(Tamanopobla cion))<((1.1)*(RutaMejor(end,1))) cambiar8=cambiar8+1; else cambiar8=0; end if cambiar8==1 O_poblinicial2; P_previofitnesspoblinicial2 ; disp( 'Poblacion nueva' ) cambiar8=0; end if it==VectorNMI(indNMI)*Numparadas convergencia=1; disp( 'Parada por número de iteraciones' ) end end TiempoResolucion=toc FO=evolucion(end) if NumeroExperimento==1 save Experimento_1 end if NumeroExperimento==2 save Experimento_2 end
. . .
if NumeroExperimento==63
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
101 Rafael Grosso de la Vega
save Experimento_63 end if NumeroExperimento==64 save Experimento_64 end end end end save indExperimento indExperimento NumeroExperimento ; clear load indExperimento ; end
El programa repite el proceso de llamar al archivo Parametros que contiene los tres vectores en los cuales se encuentran
los diferentes valores delos parámetros del AAGG. También llama a cada tipo de problema y lo resuelve con los 8 diferentes
tipos de AAGG generando así los 64 experimentos diferentes que componen el análisis de sensibilidad que se almacenaran
en sus archivos correspondientes.
Se puede apreciar que este programa sigue la estructura del diagrama de flujos del algoritmo genético diseñado y que esta
expuesto en apartados anteriores.
Se detalla a continuación los diferentes archivos que compones este programa.
1.2.1 G_poblinicial:
Genera aleatoriamente la población inicial según el tamaño de población y el número deparadas del problema.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
102 Rafael Grosso de la Vega
Poblacion1=zeros(Tamanopoblacion,Numparadas); for i=1:Tamanopoblacion Poblacion1(i,1:Numparadas)=randperm(Numparadas) ; end
1.2.2 H_paradasZR:
Busca y encuentra las paradas que se encuentran dentro de la zona restringida para que el fitness las pueda identificar.
%Busca los indices de las paradas que estan en la Z R y los pone en IndicesparadasZR IndicesparadasZR=zeros(1,numnodos); for i=1:length(Indicesparadas) if find(Indicesparadas(i)==Indicesrestringidos(1:leng th(Indicesrestringidos)))>0 IndicesparadasZR(Indicesparadas(i))=1; end end
1.2.3 I_previofitness:
Prepara los vectores de tiempo y matrices de almacenamiento de estos además de los índices que gobiernan el fitness.
Posteriormente almacena la mejor ruta encontrada en cada problema para su posterior utilización.
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
103 Rafael Grosso de la Vega
MatriztiemposrutaSalida=zeros(1,length(Indicesparad as)); MatriztiemposrutaEntrada=zeros(1,length(Indicespara das)); Indicesrutamejor=zeros(length(Poblacion1(:,1)),1); FitnessInicial=zeros(1,2); nv=1; i=1; j=0; k=0; n=0; m=0; pasoveh=1; iAux=0; finfitness=0; for m=1:Tamanopoblacion nv=1; FitnessAux=0; i=1; j=0; k=0; n=0; pasoveh=1; iAux=0; TiemposrutaEntrada=zeros(1,length(Indicesparada s)); TiemposrutaSalida=zeros(1,length(Indicesparadas )); VectorPoblacion=Poblacion1(m,1:length(Indicespa radas)); VectorPoblacionAux=VectorPoblacion; while finfitness==0 I_fitness; end %calculamos el fitness restando el max tiempo menos el menor tiempo que %es el de inicio de ruta FitnessAuxMax=(max(TiemposrutaSalida)+Longitudr utas(VectorPoblacion(i-1),Numparadas+1)); FitnessAuxMin=(TiemposrutaEntrada(1)-Longitudru tas(Numparadas+1,VectorPoblacion(1))); FitnessAux=FitnessAux+(FitnessAuxMax-FitnessAux Min); FitnessInicial=[FitnessInicial;FitnessAux,nv]; MatriztiemposrutaEntrada=[MatriztiemposrutaEntr ada;TiemposrutaEntrada]; MatriztiemposrutaSalida=[MatriztiemposrutaSalid a;TiemposrutaSalida];
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
104 Rafael Grosso de la Vega
finfitness=0; end FitnessInicial=FitnessInicial(2:length(FitnessInici al),:); %Aplicamos al fitness el costo fijo de los vehiculo s adicionales for indvehiculo=1:length(FitnessInicial(:,1)) if FitnessInicial(indvehiculo,2)>=2 FitnessInicial(indvehiculo,1)=FitnessInicia l(indvehiculo,1)+Costevehiculo*((FitnessInicial(ind vehiculo,2))-1); end end Indicefitness=[1:Tamanopoblacion]; Indicefitness=Indicefitness'; FitnessInicial=[Poblacion1,FitnessInicial,Indicefit ness,Indicesrutamejor]; FitnessFinal=sortrows(FitnessInicial,Numparadas+1); %Fitness ordenado de mejor a peor FitnessEvolucion=FitnessFinal(:,Numparadas+1:Numpar adas+2); RutaMejor=zeros(FitnessFinal(1,Numparadas+2)+1,Nump aradas); if FitnessFinal(1,Numparadas+2)==1 RutaMejor(1,:)=FitnessFinal(1,1:Numparadas); RutaMejor(2,1)=FitnessFinal(1,Numparadas+1); else for indnv=1:(FitnessFinal(1,Numparadas+2))-1 if indnv==1 RutaMejor(indnv,1:FitnessFinal(1,Numparadas+3+indnv ))=FitnessFinal(1,1:FitnessFinal(1,Numparadas+3+ind nv)); end if indnv==(FitnessFinal(1,Numparadas+2))-1 RutaMejor(indnv+1,1:(Numparadas-(FitnessFinal(1,Numparadas+3+indnv))))=FitnessFinal (1,1+FitnessFinal(1,Numparadas+3+indnv):Numparadas) ; end if (1<=indnv)&&(indnv<(FitnessFinal(1,Numparadas+2))- 1) RutaMejor(indnv+1,1:((FitnessFinal(1,Nu mparadas+4+indnv))-(FitnessFinal(1,Numparadas+3+indnv))))=FitnessFinal (1,1+FitnessFinal(1,Numparadas+3+indnv):FitnessFina l(1,Numparadas+4+indnv)); end end RutaMejor(indnv+2,1)=FitnessFinal(1,Numparadas+ 1);
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
105 Rafael Grosso de la Vega
end
1.2.3.1 I_fitness:
Este archivo contiene el código del fitness propiamente dicho, siguiendo la estructura del diagrama de flujos expuesto con
anterioridad.
if i==1 TiemposrutaEntrada(i)=Longitudrutas(Numparadas+ 1,VectorPoblacion(i)); TiemposrutaSalida(i)=TiemposrutaEntrada(i)+Tiem poentregamax; else TiemposrutaEntrada(i)=TiemposrutaSalida(i-1)+Lo ngitudrutas(VectorPoblacion(i-1),VectorPoblacion(i) ); TiemposrutaSalida(i)=TiemposrutaEntrada(i)+Tiem poentregamax; end if (IndicesparadasZR(Indicesparadas(VectorPoblacion (i)))==1) %Si igual a uno,la parada estara en la ZR if ((TiemposrutaSalida(i)>TiempoVC)&&(TiempoVA>Tiempos rutaSalida(i)))||((TiemposrutaEntrada(i)>TiempoVC)& &(TiempoVA>TiemposrutaEntrada(i))) I_1_bucle_J; else if ((i>1)&&(((TiemposrutaSalida(i-1)>TiempoVC)&&( TiempoVA>TiemposrutaSalida(i-1)))||((TiemposrutaEntrada(i-1)>TiempoVC)&&(TiempoV A>TiemposrutaEntrada(i-1))))) if ((i>1)&&(TiempoVA>TiemposrutaEntrada(i)+LongitudDe ntro(VectorPoblacion(i-1),VectorPoblacion(i)))) I_1_bucle_J; end end end else I_2_bucle_N; end if i>0
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
106 Rafael Grosso de la Vega
if TiemposrutaSalida(i)+Longitudrutas(VectorPoblaci on(i),Numparadas+1)>Findia I_3_vehiculosiguiente; end if (i+iAux)>=length(Indicesparadas) finfitness=1; end else end i=i+1;
1.2.3.1.1 I_1_bucle_J:
La función de este bloque ha sido explicada ya.
j=i; j=j-1; cam=0; if j>=1 while cam==0 if j==1 TiemposrutaSalida(j)=TiempoVA-(Longitud rutas(VectorPoblacion(j),VectorPoblacion(j+1))-LongitudDentro(VectorPoblacion(j),VectorPoblacion(j +1))); cam=1; else if IndicesparadasZR(Indicesparadas(VectorPoblacion( j)))==0 %Si igual a cero,la parada NO estara en la ZR TiemposrutaSalida(j)=TiempoVA-(Long itudrutas(VectorPoblacion(j),VectorPoblacion(j+1))-LongitudDentro(VectorPoblacion(j),VectorPoblacion(j +1))); TiemposrutaEntrada(j)=TiemposrutaSa lida(j)-Tiempoentregamax; cam=1; else
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
107 Rafael Grosso de la Vega
j=j-1; end end end k=j; j=j+1; while j<=i TiemposrutaEntrada(j)=TiemposrutaSalida(j-1 )+Longitudrutas(VectorPoblacion(j-1),VectorPoblacio n(j)); TiemposrutaSalida(j)=TiemposrutaEntrada(j)+ Tiempoentregamax; j=j+1; end k=k-1; J_bucle_K; end
1.2.3.1.2 J_bucle_K:
La función de este bloque ha sido explicada ya.
for k=(k):-1:1 TiemposrutaSalida(k)=TiemposrutaEntrada(k+1)-Lo ngitudrutas(VectorPoblacion(k),VectorPoblacion(k+1) ); TiemposrutaEntrada(k)=TiemposrutaSalida(k)-Tiem poentregamax; if IndicesparadasZR(Indicesparadas(VectorPoblacion(k) ))==1 %Si igual a uno,la parada estara en la ZR if ((TiempoVA>TiemposrutaSalida(k)>TiempoVC)|(TiempoV A>TiemposrutaEntrada(k)>TiempoVC)) TiemposrutaSalida(k)=TiempoVC-LongitudDen tro(VectorPoblacion(k),VectorPoblacion(k+1)); TiemposrutaEntrada(k)=TiemposrutaSalida(k )-Tiempoentregamax; end end end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
108 Rafael Grosso de la Vega
1.2.3.1.3 I_2_bucle_N:
La función de este bloque ha sido explicada ya.
bucleN2=0; bucleN=0; if k~=1 n=i-1; if n>0 if IndicesparadasZR(Indicesparadas(VectorPoblacion(n) ))==1 %Si igual a uno,la parada estara en la ZR if (((TiemposrutaSalida(n)+LongitudDentro(VectorPoblac ion(n),VectorPoblacion(n+1)))<=TiempoVC)||((Tiempos rutaSalida(n)+LongitudDentro(VectorPoblacion(n),VectorPoblacion(n +1)))>=TiempoVA)) else while bucleN==0 n=n-1; if n>0 if IndicesparadasZR(Indicesparadas(VectorPoblacion( n)))==1 %Si igual a uno,la parada estara en la ZR else bucleN=1; k=n; TiemposrutaEntrada(n+1)=TiempoVA+LongitudDentro(Vec torPoblacion(n),VectorPoblacion(n+1)); TiemposrutaSalida(n+1)= TiemposrutaEntrada(n+1)+Tiempoentregamax; n=n+2; while bucleN2==0 if n==0 else TiemposrutaEntr ada(n)=TiemposrutaSalida(n-1)+Longitudrutas(VectorP oblacion(n-1),VectorPoblacion(n)); TiemposrutaSali da(n)=TiemposrutaEntrada(n)+Tiempoentregamax; if TiemposrutaSalida(n)+Longitudrutas(VectorPoblacio n(n),Numparadas+1)>Findia J_bucle_K;
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
109 Rafael Grosso de la Vega
i=n; I_3_vehicul osiguiente; bucleN2=1; else if n==i bucleN2 =1; J_bucle _K; else n=n+1; end end bucleN=1; end end end else bucleN=1; end end end end end end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
110 Rafael Grosso de la Vega
1.2.4 K_cruce:
Uno de las partes del algoritmo más complejas y difíciles de programar, sigue el proceso explicado en su apartado
correspondiente.
if Poblacionnueva==1 FitnessFinal=FitnessFinalPoblacionNueva; Poblacionnueva=0; end ordencruce=randperm(Tamanopoblacion); yaexisten=zeros(4,1); yaexistenmayores=zeros(3,1); Descendientes=Poblacion1; %Creamos los descendientes con dos puntos de cruce elegidos aleatoriamente para cada vector for i2=1:2:Tamanopoblacion-1 vectororden=randperm(Numparadas-1); puntoscruce=[vectororden(1) vectororden(Numpara das-1)]; puntoscruce=sort(puntoscruce); Descendientes(ordencruce(i2:i2+1),puntoscruce(1 ):puntoscruce(2))=Poblacion1(ordencruce(i2+1:-1:i2),puntoscruce(1):puntoscruce(2)); end %Buscamos y almacenamos en el vector yaexisten las paradas repetidas que existen en los descendientes provocadas por el cruce for i3=1:Tamanopoblacion for i4=1:Numparadas for i5=(i4+1):Numparadas if Descendientes(i3,i4)==Descendientes(i3,i5) yaexisten=[yaexisten [i3;i4;i5;Desc endientes(i3,i4)]]; end end end end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
111 Rafael Grosso de la Vega
yaexisten=yaexisten(:,2:length(yaexisten(1,:))); %Comparamos las longitudes de ruta de las paradas r epeticas con sus adyacentes y almacenamos las mayor es para despues sustituirlas for i6=1:length(yaexisten(1,:)) if (yaexisten(2,i6)==1&yaexisten(3,i6)==Numparadas) %Si las paradas repetidas son la primera y la ultim a del vector descendiente if (Longitudrutas(Numparadas+1,Descendientes(yaexisten (1,i6),yaexisten(2,i6)))+Longitudrutas((Descendient es(yaexisten(1,i6),yaexisten(2,i6))),(Descendientes(yaexisten(1,i 6),(yaexisten(2,i6)+1)))))>(((Longitudrutas(Descend ientes(yaexisten(1,i6),yaexisten(3,i6)-1),Descendientes(yaexisten(1,i6),yaexisten(3,i6)))+ Longitudrutas((Descendientes(yaexisten(1,i6),yaexis ten(3,i6))),Numparadas+1)))) yaexistenmayores=[yaexistenmayores [yae xisten(1,i6);yaexisten(3,i6);yaexisten(4,i6)]]; else yaexistenmayores=[yaexistenmayores [yae xisten(1,i6);yaexisten(2,i6);yaexisten(4,i6)]]; end elseif yaexisten(2,i6)==1 %Si las paradas repetidas son la primera y otra del vector descendiente if (Longitudrutas(Numparadas+1,Descendientes(yaexisten (1,i6),yaexisten(2,i6)))+Longitudrutas((Descendient es(yaexisten(1,i6),yaexisten(2,i6))),(Descendientes(yaexisten(1,i 6),(yaexisten(2,i6)+1)))))>(Longitudrutas(Descendie ntes(yaexisten(1,i6),yaexisten(3,i6)-1),Descendientes(yaexisten(1,i6),yaexisten(3,i6)))+ Longitudrutas((Descendientes(yaexisten(1,i6),yaexis ten(3,i6))),(Descendientes(yaexisten(1,i6),(yaexisten(3,i6)+1)))) ) yaexistenmayores=[yaexistenmayores [yae xisten(1,i6);yaexisten(3,i6);yaexisten(4,i6)]]; else yaexistenmayores=[yaexistenmayores [yae xisten(1,i6);yaexisten(2,i6);yaexisten(4,i6)]]; end elseif yaexisten(3,i6)==Numparadas %Si las paradas repetidas son otra y la ultima del vector descendiente if ((Longitudrutas(Descendientes(yaexisten(1,i6),yaex isten(2,i6)-1),Descendientes(yaexisten(1,i6),yaexisten(2,i6)))+ Longitudrutas((Descendientes(yaexisten(1,i6),yaexis ten(2,i6))),Descendientes(yaexisten(1,i6),yaexisten(2,i6)+1))))>( ((Longitudrutas(Descendientes(yaexisten(1,i6),yaexi sten(3,i6)-1),Descendientes(yaexisten(1,i6),yaexisten(3,i6)))+ Longitudrutas((Descendientes(yaexisten(1,i6),yaexis ten(3,i6))),Numparadas+1)))) yaexistenmayores=[yaexistenmayores [yae xisten(1,i6);yaexisten(3,i6);yaexisten(4,i6)]]; else yaexistenmayores=[yaexistenmayores [yae xisten(1,i6);yaexisten(2,i6);yaexisten(4,i6)]]; end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
112 Rafael Grosso de la Vega
else %Si las paradas repetidas no son ni la primera ni l a ultima ni las dos cosas if (Longitudrutas(Descendientes((yaexisten(1,i6)),ya existen(2,i6)-1),(Descendientes(yaexisten(1,i6),yaexisten(2,i6))) )+(Longitudrutas((Descendientes(yaexisten(1,i6),yae xisten(2,i6))),(Descendientes(yaexisten(1,i6),(yaexisten(2,i6)+1) ))))>((Longitudrutas(Descendientes(yaexisten(1,i6), (yaexisten(3,i6)-1)),Descendientes(yaexisten(1,i6),yaexisten(3,i6))) )+(Longitudrutas((Descendientes(yaexisten(1,i6),yae xisten(3,i6))),(Descendientes(yaexisten(1,i6),(yaexisten(3,i6)+1) )))))) yaexistenmayores=[yaexistenmayores [yae xisten(1,i6);yaexisten(3,i6);yaexisten(4,i6)]]; else yaexistenmayores=[yaexistenmayores [yae xisten(1,i6);yaexisten(2,i6);yaexisten(4,i6)]]; end end end yaexistenmayores=yaexistenmayores(:,2:length(yaexis tenmayores(1,:))); %Buscamos los indices de las paradas que faltan el los vectores decendientes por haber tenido paradas repetidas for i7=1:length(Descendientes(:,1)) [faltanenDescendientes] = SETDIFF(Poblacion1(i7 ,:),Descendientes(i7,:)); longitudfaltan=0; indyaexmy=0; for i8=1:length(faltanenDescendientes) %Almacenamos en una matriz cuadrada los valores de las distancias de cada parada que falta evaluada en cada hueco posible i10=1; for i9=1:length(yaexistenmayores(1,:)) if (yaexistenmayores(1,i9)==i7) %Asi solo evaluamos las paradas que le faltan al ve ctor descendiente correspondiente if (yaexistenmayores(2,i9)==1) %Si las parada a eliminar es la primera longitudfaltan(i8,i10)=(Longitudrutas(Numparadas+1, faltanenDescendientes(i8))+Longitudrutas(faltanenDe scendientes(i8),(Descendientes(yaexistenmayores(1,i9),yaexistenma yores(2,i9)+1)))); elseif (yaexistenmayores(2,i9)==Numparadas) %Si las parada a eliminar es la ultima longitudfaltan(i8,i10)=(Longitudrutas((Descendiente s(yaexistenmayores(1,i9),yaexistenmayores(2,i9)-1)),faltanenDescendientes(i8))+Longitudrutas(faltan enDescendientes(i8),Numparadas+1)); else %En otro caso longitudfaltan(i8,i10)=(Longitudrutas((Descendiente s(yaexistenmayores(1,i9),yaexistenmayores(2,i9)-
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
113 Rafael Grosso de la Vega
1)),faltanenDescendientes(i8))+Longitudrutas(faltan enDescendientes(i8),(Descendientes(yaexistenmayores (1,i9),yaexistenmayores(2,i9)+1)))); end indyaexmy(1,i10)=(i9); i10=i10+1; end end end %Buscando el minimo de la matriz anterior y ponemos la parada que falta correspondiente en el hueco correspondiente, haciendo la fila y la columna 1000 0 aseguramos que la siguiente no se asigne en el mi smo sitio if longitudfaltan==0 else for i11=1:length(longitudfaltan) [minporfilas,indminporfilas]=min(longit udfaltan); [mintotal,indmintotal]=min(minporfilas) ; Descendientes(i7,yaexistenmayores(2,indyaexmy(1,ind mintotal)))=(faltanenDescendientes(indminporfilas(i ndmintotal))); longitudfaltan(indminporfilas(indmintot al),:)=10000*ones(1,length(longitudfaltan)); longitudfaltan(:,indmintotal)=10000*one s(length(longitudfaltan),1); end end end
1.2.5 L_mutacion:
La función de este archivo ha sido explicada ya.
% Se escogen los individuos a mutar aleatoriamente segun la tasa de mutacion % Para los individuos a mutar, se intercambian dos elementos aleatoriamente for imut1=1:Tamanopoblacion
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
114 Rafael Grosso de la Vega
if rand<Tasamutacion puntosmutacion=randperm(Numparadas); Intermedio=Descendientes(imut1,puntosmutaci on(1)); Descendientes(imut1,puntosmutacion(1))=Desc endientes(imut1,puntosmutacion(2)); Descendientes(imut1,puntosmutacion(2))=Inte rmedio; end end
1.2.6 M_previofitnessDescendientes:
Simplemente prepara los vectores de tiempo y las matrices de almacenamiento para evaluar, por medio del fitness, la población de
descendientes.
MatriztiemposrutaSalida=zeros(1,length(Indicesparad as)); MatriztiemposrutaEntrada=zeros(1,length(Indicespara das)); Indicesrutamejor=zeros(length(Descendientes(:,1)),1 ); FitnessDescendientes=zeros(1,2); fallotiemponegativo=0; nv=1; i=1; j=0; k=0; n=0; m=0; pasoveh=1; iAux=0; finfitness=0; for m=1:Tamanopoblacion nv=1;
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
115 Rafael Grosso de la Vega
FitnessAux=0; i=1; j=0; k=0; n=0; pasoveh=1; iAux=0; TiemposrutaEntrada=zeros(1,length(Indicesparada s)); TiemposrutaSalida=zeros(1,length(Indicesparadas )); VectorPoblacion=Descendientes(m,1:length(Indice sparadas)); VectorPoblacionAux=VectorPoblacion; while finfitness==0 I_fitness; end FitnessAuxMax=(max(TiemposrutaSalida)+Longitudr utas(VectorPoblacion(i-1),Numparadas+1)); FitnessAuxMin=(TiemposrutaEntrada(1)-Longitudru tas(Numparadas+1,VectorPoblacion(1))); if FitnessAuxMin<0 fallotiemponegativo=1; disp( 'M' ); end FitnessAux=FitnessAux+(FitnessAuxMax-FitnessAux Min); FitnessDescendientes=[FitnessDescendientes;Fitn essAux,nv]; MatriztiemposrutaEntrada=[MatriztiemposrutaEntr ada;TiemposrutaEntrada]; MatriztiemposrutaSalida=[MatriztiemposrutaSalid a;TiemposrutaSalida]; finfitness=0; end FitnessDescendientes=FitnessDescendientes(2:length( FitnessDescendientes),:); %Aplicamos al fitness el costo fijo de los vehiculo s adicionales for indvehiculo2=1:length(FitnessDescendientes(:,1)) if FitnessDescendientes(indvehiculo,2)>=2 FitnessDescendientes(indvehiculo2,1)=FitnessDescend ientes(indvehiculo2,1)+Costevehiculo*((FitnessDesce ndientes(indvehiculo2,2))-1); end end Indicefitness=[1:Tamanopoblacion];
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
116 Rafael Grosso de la Vega
Indicefitness=Indicefitness'; FitnessDescendientes=[Descendientes,FitnessDescendi entes,Indicefitness,Indicesrutamejor]; FitnessDescendientesFinal=sortrows(FitnessDescendie ntes,Numparadas+1); %Fitness ordenado de mejor a peor
1.2.7 N_seleccionporranking:
Realiza la selección por ranking y almacena la ruta mejor hasta el momento.
%Adecuamos el tamaño de las matrices a unir diferenciacolumnas=(length(FitnessFinal(1,:)))-(len gth(FitnessDescendientesFinal(1,:))); if diferenciacolumnas>0 FitnessDescendientesFinal=[FitnessDescendientesF inal zeros(length(FitnessDescendientesFinal(:,1)),difere nciacolumnas)]; end if diferenciacolumnas<0 FitnessFinal=[FitnessFinal zeros(length(FitnessF inal(:,1)),(-diferenciacolumnas))]; end PoblDesc=[FitnessFinal;FitnessDescendientesFinal]; PoblDesc=sortrows(PoblDesc,Numparadas+1); %Elegimos por probabilidad los individuos a quedars e en la poblacion inicial de la siguiente generacio n Indicesamantener=zeros(2*Tamanopoblacion,1); Numindividuosamantener=0; contaprob=1; while Numindividuosamantener<Tamanopoblacion if Indicesamantener(contaprob)==0 if rand<Probabilidades(contaprob)
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
117 Rafael Grosso de la Vega
Indicesamantener(contaprob)=1; Numindividuosamantener=Numindividuosama ntener+1; end end contaprob=contaprob+1; if contaprob>2*Tamanopoblacion-1 contaprob=2; end end Indicesamantener=find(Indicesamantener==1); %creamos la matriz siguiente para verificar que nos quedamos siempre con el individuo mejor en cada se leccion por ranking %MatrizIndicesamantener=[MatrizIndicesamantener Ind icesamantener]; FitnessFinal=0; for indseleccFila=1:Tamanopoblacion for indseleccColumna=1:length(PoblDesc(1,:)) FitnessFinal(indseleccFila,indseleccColumna )=PoblDesc(Indicesamantener(indseleccFila),indselec cColumna); end end Poblacion1=FitnessFinal(:,1:Numparadas); Dpoblacion1=FitnessFinal(:,Numparadas+1:Numparadas+ 2); Indices_nv=FitnessFinal(:,Numparadas+3:end); %FitnessFinal=[Poblacion1 Dpoblacion1 Indices_nv]; FitnessEvolucion=[FitnessEvolucion Dpoblacion1]; %Creamos la matriz rutamejor if FitnessFinal(1,Numparadas+1)<(max(RutaMejor(:,1))) RutaMejor=zeros(FitnessFinal(1,Numparadas+2)+1,N umparadas); if FitnessFinal(1,Numparadas+2)==1 RutaMejor(1,:)=FitnessFinal(1,1:Numparadas); RutaMejor(2,1)=FitnessFinal(1,Numparadas+1); else for indnv=1:(FitnessFinal(1,Numparadas+2))-1
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
118 Rafael Grosso de la Vega
if indnv==1 RutaMejor(indnv,1:FitnessFinal(1,Numparadas+3+indnv ))=FitnessFinal(1,1:FitnessFinal(1,Numparadas+3+ind nv)); end if indnv==(FitnessFinal(1,Numparadas+2))-1 RutaMejor(indnv+1,1:(Numparadas-(FitnessFinal(1,Numparadas+3+indnv))))=FitnessFinal (1,1+FitnessFinal(1,Numparadas+3+indnv):Numparadas) ; end if (1<=indnv)&(indnv<(FitnessFinal(1,Numparadas+2))-1 ) RutaMejor(indnv+1,1:((FitnessFinal(1, Numparadas+4+indnv))-(FitnessFinal(1,Numparadas+3+indnv))))=FitnessFinal (1,1+FitnessFinal(1,Numparadas+3+indnv):FitnessFina l(1,Numparadas+4+indnv)); end end RutaMejor(indnv+2,1)=FitnessFinal(1,Numparad as+1); end end evolucion=[FitnessEvolucion(1,1:2:length(FitnessEvo lucion(1,:)))];
1.2.8 O_poblinicial2:
Genera una población nueva aleatoria excepto por los tres mejores individuos de la población desechada.
%Reiniciamos con otra poblacion inicial nueva salvo los 3 individuos mejores PoblacionNueva=FitnessFinal(:,1:Numparadas); for indpobl=4:Tamanopoblacion PoblacionNueva(indpobl,1:Numparadas)=randperm(N umparadas); end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
119 Rafael Grosso de la Vega
Poblacion1=PoblacionNueva;
1.2.9 P_previofitnesspoblinicial2:
Prepara los vectores de tiempo y las matrices de almacenamiento para la evolución, por medio del fitness, de la población nueva
recién generada.
MatriztiemposrutaSalida=zeros(1,length(Indicesparad as)); MatriztiemposrutaEntrada=zeros(1,length(Indicespara das)); Indicesrutamejor=zeros(length(PoblacionNueva(:,1)), 1); FitnessNueva=zeros(1,2); fallotiemponegativo=0; nv=1; i=1; j=0; k=0; n=0; m=0; iAux=0; finfitness=0; for m=1:Tamanopoblacion nv=1; FitnessAux=0; i=1; j=0; k=0; n=0; pasoveh=1; iAux=0; TiemposrutaEntrada=zeros(1,length(Indicesparada s)); TiemposrutaSalida=zeros(1,length(Indicesparadas ));
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
120 Rafael Grosso de la Vega
VectorPoblacion=PoblacionNueva(m,1:length(Indic esparadas)); VectorPoblacionAux=VectorPoblacion; while finfitness==0 I_fitness; end FitnessAuxMax=(max(TiemposrutaSalida)+Longitudr utas(VectorPoblacion(i-1),Numparadas+1)); FitnessAuxMin=(TiemposrutaEntrada(1)-Longitudru tas(Numparadas+1,VectorPoblacion(1))); if FitnessAuxMin<0 fallotiemponegativo=1; disp( 'P' ); end FitnessAux=FitnessAux+(FitnessAuxMax-FitnessAux Min); FitnessNueva=[FitnessNueva;FitnessAux,nv]; MatriztiemposrutaEntrada=[MatriztiemposrutaEntr ada;TiemposrutaEntrada]; MatriztiemposrutaSalida=[MatriztiemposrutaSalid a;TiemposrutaSalida]; finfitness=0; end FitnessNueva=FitnessNueva(2:length(FitnessNueva),: ); %Aplicamos al fitness el costo fijo de los vehiculo s adicionales for indvehiculo=1:length(FitnessNueva(:,1)) if FitnessNueva(indvehiculo,2)>=2 FitnessNueva(indvehiculo,1)=FitnessNueva(in dvehiculo,1)+Costevehiculo*(FitnessNueva(indvehicul o,2)-1); end end Indicefitness=[1:Tamanopoblacion]; Indicefitness=Indicefitness'; FitnessNueva=[PoblacionNueva,FitnessNueva,Indicefi tness,Indicesrutamejor]; FitnessFinalPoblacionNueva=sortrows(FitnessNueva,N umparadas+1); %Fitness ordenado de mejor a peor
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
121 Rafael Grosso de la Vega
2 RED DE SEVILLA. Se prescindirá aquí del apartado de resolución de problemas pues es exactamente igual al mostrado en la red de prueba.
2.1 Generación de los problemas. En este caso de la red de Sevilla la generación de problema difiere un poco del caso anterior pues los datos de la ubicación de los
nodos y de la distancia de los arcos los toma el programa de un archivo de datos externo. Así se expondrán solo los archivos que
varían con respecto al caso de la red de prueba.
El archivo que genera los problemas es:
clear load ParametrosProblemas ; NumeroProblema=1; for indVTZR=1:3 for indVVT=1:3 load Nodosdestino ; NumeroProblema=NumeroProblema+1; Numparadas=100; Distanciarestringidos=VectorTamanoZR(in dVTZR); TiempoVC=VectorVentanaTemporal(indVVT,1 ); TiempoVA=VectorVentanaTemporal(indVVT,2 ); load arcossevilla ; load nodosSevilla2 ; A_parametros; B_creanodosSevilla; C_construirmatrizincidenciasSev; D_zonarestringidaSev; E_nodosinicioydestinoSevde100; F_rutasminimasSev;
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
122 Rafael Grosso de la Vega
if NumeroProblema==1 save Problema_1 end if NumeroProblema==2 save Problema_2 end if NumeroProblema==3 save Problema_3 end if NumeroProblema==4 save Problema_4 end if NumeroProblema==5 save Problema_5 end if NumeroProblema==6 save Problema_6 end if NumeroProblema==7 save Problema_7 end if NumeroProblema==8 save Problema_8 end if NumeroProblema==9 save Problema_9 end if NumeroProblema==10 save Problema_10 end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
123 Rafael Grosso de la Vega
save NumeroProblema NumeroProblema indVTZR indVVT ; clear load NumeroProblema ; load ParametrosProblemas ; end end Como se puede observar el programa vuelve a llamar al archivo ParametrosProblemas donde están los vectores de datos de los
parámetros. Además se observa que también llama a los archivos arcossevilla y nodosSevilla2 donde se encuentran los datos
de la red de Sevilla. Posteriormente el programa funciona de la misma manera que el descrito en la red prueba con la salvedad de
los archivos específicos de esta red de Sevilla y que se enumeran a continuación.
2.1.1 B_creanodosSevilla
%Renumeramos los nodos del modelo de sevilla y lo d ibujamos Matrizanterior=coordenadas_sevilla; numnodos=length(Matrizanterior); Arcos=[nodosorigen nodosdestino longitudarco]; for indnodo= 1:numnodos Indicesustituir=find(Arcos(:,1)==Matrizanterior (indnodo,1)); for indnodo2=1:length(Indicesustituir) Arcos(Indicesustituir(indnodo2),4)=indnodo; end Indicesustituir2=find(Arcos(:,2)==Matrizanterio r(indnodo,1)); for indnodo3=1:length(Indicesustituir2) Arcos(Indicesustituir2(indnodo3),5)=indnodo ; end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
124 Rafael Grosso de la Vega
end MatrizanteriorFinal=[[1:numnodos]' Matrizanterior(: ,3) Matrizanterior(:,4)]; ArcosFinal=[Arcos(:,4) Arcos(:,5) Arcos(:,3)]; plot(MatrizanteriorFinal(1:numnodos,2),Matrizanteri orFinal(1:numnodos,3), 'b.' ); %Dibuja los nodos como puntos de color azul title( 'Red de Sevilla' )
2.1.2 C_construirmatrizincidenciasSev
MatrizincidenciasSevilla=zeros(numnodos,numnodos); DistanciasSevilla=zeros(numnodos,numnodos); for h=1:length(ArcosFinal) MatrizincidenciasSevilla(ArcosFinal(h,1),ArcosF inal(h,2))=1; DistanciasSevilla(ArcosFinal(h,1),ArcosFinal(h, 2))=ArcosFinal(h,3); end MatrizincidenciasSevilla=sparse(MatrizincidenciasSe villa); %sparse de una matriz dispersa(es una matriz con gr an número de ceros) %coge solo los valores significativos (los distinto s de ceros) DistanciasSevilla=sparse(DistanciasSevilla);
2.1.3 D_zonarestringidaSev
% Identificacion de nodos de la zona restringida centrozonarestringida=406; Nodosrestringido=zeros(1,numnodos); Nodosrestringido(centrozonarestringida)=1; %Para Sevilla Matrizincidencias=MatrizincidenciasSevilla;
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
125 Rafael Grosso de la Vega
Matrizincidencias2=Matrizincidencias'+Matrizinciden cias; Distancia2=DistanciasSevilla; lambda=100000*ones(numnodos,1); lambda(centrozonarestringida)=0; cambio=1; while cambio>0 cambio=0; for j=1:numnodos Adyacentesanteriores=find(Matrizincidenci as2(1:numnodos,j)); for i=1:length(Adyacentesanteriores) if lambda(Adyacentesanteriores(i))>lambda(j)+Distanci a2(Adyacentesanteriores(i),j) lambda(Adyacentesanteriore s(i))=lambda(j)+Distancia2(Adyacentesanteriores(i), j); cambio=1; end end end end Nodosrestringido(find(lambda<Distanciarestringidos) )=1; % Identificacion de impresion de arcos de la zona r estringida Indicesrestringidos=find(Nodosrestringido); for k=1:length(Indicesrestringidos) for j=1:numnodos if Matrizincidencias(Indicesrestringidos(k),j)>0 plot(MatrizanteriorFinal(Indicesrestrin gidos(k),2),MatrizanteriorFinal(Indicesrestringidos (k),3), 'rs' ) end end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
126 Rafael Grosso de la Vega
end hold on
2.1.4 E_nodosinicioydestinoSevde100
Probabilidaddestino=0.03; % Tiene que ser un número entre 0 y 1 nodosaleatorio=randperm(numnodos); % Identificacion e impresion de nodo origen cambio2=1; posibleorigen=2; while cambio2>0 cambio2=0; Nodoorigen=nodosaleatorio(posibleorigen); if (Nodosrestringido(Nodoorigen))==1 cambio2=1; posibleorigen=posibleorigen+1; end end plot(MatrizanteriorFinal(Nodoorigen,2),Matrizanteri orFinal(Nodoorigen,3), 'ks' ); % Identificacion e impresion de nodos destino Nodosdestino=zeros(1,numnodos); Destinosenrestringido=0; Nodosdestino(Nodoorigen)=1; numparadas=0;
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
127 Rafael Grosso de la Vega
salirbucle=0; nodosdesorden=randperm(numnodos); while salirbucle==0 for i=1:numnodos if (i~=Nodoorigen)&(Nodosdestino(nodosdesorden(i))~=1 ) if Nodosrestringido(nodosdesorden(i))==1 if (rand<3*Probabilidaddestino)&(numparadas<Numparad as) Nodosdestino(nodosdesorden(i))=1; numparadas=numparadas+1; if numparadas==Numparadas salirbucle=1; end Destinosenrestringido=Destinosenr estringido+1; end else if (rand<Probabilidaddestino)&(numparadas<Numparadas ) Nodosdestino(nodosdesorden(i))=1; numparadas=numparadas+1; if numparadas==Numparadas salirbucle=1; end end end end end end for i=1:numnodos if i~=Nodoorigen if Nodosdestino(i)==1 plot(MatrizanteriorFinal(i,2),Matrizant eriorFinal(i,3), 'bo' ); end end end
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
128 Rafael Grosso de la Vega
hold off
2.1.5 F_rutasminimasSev
Indicesdestinos=find(Nodosdestino); paradas=find(Indicesdestinos~=Nodoorigen); Indicesparadas=Indicesdestinos(paradas); Indicesdestinos=[Indicesparadas,Nodoorigen]; % CALCULO DE LAS RUTAS MINIMAS Distancia=DistanciasSevilla; Matrizcostes=Distancia; Longitudrutas=zeros(length(Indicesdestinos)); % cada elemento refleja la longitud de la ruta entr e cada par de nodos destino Rutas=zeros(numnodos,length(Indicesdestinos)); % cada elemento (i,j) refleja hacia que nodo se deb e ir desde i en la ruta hacia j for k=1:length(Indicesdestinos) lambda1=100000*ones(numnodos,1); lambda1(Indicesdestinos(k))=0; cambio=1; while cambio>0 cambio=0; for j=1:numnodos Adyacentesanteriores=find(Matrizinciden cias(1:numnodos,j));
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
129 Rafael Grosso de la Vega
for i=1:length(Adyacentesanteriores) if lambda1(Adyacentesanteriores(i))>lambda1(j)+Matriz costes(Adyacentesanteriores(i),j) lambda1(Adyacentesanteriores(i) )=lambda1(j)+Matrizcostes(Adyacentesanteriores(i),j ); Rutas(Adyacentesanteriores(i),k )=j; cambio=1; end end end end Longitudrutas(1:length(Indicesdestinos),k)=lamb da1(Indicesdestinos); end % CALCULO DE LA MATRIZ DE RECORRIDOS INTERNOS % % Es una matriz con tantas filas y columnas como destinos, con todo ceros salvo: % - Si i no pertenece a la zona restringida y j s i, (i,j) es el tiempo de la ruta i-j que se recorre dentro de la zona restringida % - Si i pertenece a la zona restringida y j no, (i,j) es el tiempo de la ruta i-j que se recorre de ntro de la zona restringida LongitudDentro=zeros(length(Indicesdestinos)); for i=1:length(Indicesdestinos) for j=1:length(Indicesdestinos)
CÁLCULO DE RUTAS DE VEHÍCULOS DE REPARTO EN UNA CIUDAD CON VENTANAS TEMPORALES DE ACCESO.
130 Rafael Grosso de la Vega
if (Nodosrestringido(Indicesdestinos(i))==0)&(Nodosre stringido(Indicesdestinos(j))==1) longitudtrozodentro=0; nodoinicial=Indicesdestinos(i); while nodoinicial~=Indicesdestinos(j) nodofinal=Rutas(nodoinicial,j); if (Nodosrestringido(nodofinal)==1)&(Nodosrestringido (nodoinicial)==1) longitudtrozodentro=longitudtro zodentro+Distancia(nodoinicial,nodofinal); end nodoinicial=nodofinal; end LongitudDentro(i,j)=longitudtrozodentro ; %Si el nodo "i" pertenece a la ZR y el nodo "j" NO pertenece a la ZR elseif (Nodosrestringido(Indicesdestinos(i))==1)&(Nodosre stringido(Indicesdestinos(j))==0) longitudtrozodentro=0; nodoinicial=Indicesdestinos(i); while nodoinicial~=Indicesdestinos(j) nodofinal=Rutas(nodoinicial,j); if (Nodosrestringido(nodoinicial)==1) longitudtrozodentro=longitudtro zodentro+Distancia(nodoinicial,nodofinal); end