Memoria Proyecto Tabu Search

Anuncio
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA
UNIVERSIDAD DE SEVILLA
Proyecto Final de Carrera
Titulación: Ingeniería Industrial
Título del proyecto:
Implementación de un algoritmo basado en la Búsqueda
Tabú para la resolución de un problema de ruteo de
vehículos con ventana temporal de acceso.
Autor: Francisco de Asís Vázquez Delgado
Tutor: Rafael Grosso de la Vega
Sevilla, Noviembre 2012
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
A mis padres, mis hermanas, mi novia, mis amigos y a todos
aquellos que me han apoyado a lo largo de mi vida.
2
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
ÍNDICE
1.
INTRODUCCIÓN Y OBJETO DEL PROYECTO ............................................... 5
2.
TRANSPORTE URBANO DE MERCANCIAS .................................................. 8
2.1.
2.1.1.
Problemas producidos por el transporte urbano de mercancías ...... 8
2.1.2.
Necesidad de su existencia ..................................................................... 9
2.2.
Planificación y gestión .......................................................................... 10
2.2.2.
Producción y comercialización ............................................................ 10
2.2.3.
Distribución ............................................................................................ 10
2.2.4.
Clientes .................................................................................................... 11
2.2.5.
Administración local ............................................................................. 11
Mecanismo de control administrativo ....................................................... 11
2.3.1.
Posibilidades de aplicación: ................................................................. 12
2.3.2.
Establecimiento de una regulación ..................................................... 13
2.3.3.
Impuestos ................................................................................................ 14
2.3.4.
Creación de subvenciones y desarrollo de la infraestructura ......... 14
2.4.
4.
Sectores implicados......................................................................................... 9
2.2.1.
2.3.
3.
Importancia del transporte urbano de mercancías. ................................... 8
El Transporte Urbano de Mercancías en Sevilla ....................................... 15
PRESENTACIÓN DEL PROBLEMA PLANTEADO ...................................... 16
3.1.
Definiciones de elementos del problema................................................... 16
3.2.
Presentación del problema .......................................................................... 19
3.2.1.
Proceso general ...................................................................................... 19
3.2.2.
Restricciones del problema .................................................................. 21
3.2.3.
El modelo matemático del problema .................................................. 22
RESOLUCIÓN DEL PROBLEMA DE RUTEO DE VEHÍCULOS (VRP) ...... 27
4.1.
Introducción al Problema de Ruteo de Vehículos .................................... 27
4.2.
El VRP en la práctica. ................................................................................... 28
4.3.
Variantes del VRP ......................................................................................... 30
4.4.
Algoritmos para el VRP ............................................................................... 32
4.4.1.
Métodos Exactos .................................................................................... 33
4.4.2.
Métodos Heurísticos ............................................................................. 34
3
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
4.4.3.
5.
2012
Métodos Metaheurísticos ..................................................................... 37
ALGORITMO BÚSQUEDA TABÚ .................................................................... 40
5.1.
Desarrollo histórico....................................................................................... 40
5.2.
Definiciones ................................................................................................... 41
5.3.
Conceptos de la búsqueda tabú .................................................................. 42
5.4.
Características de la búsqueda tabú (uso de la memoria)....................... 45
6.
DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚ ............................... 52
6.1.
Introducción a la situación planteada ........................................................ 52
6.2.
Diagrama de flujo general ........................................................................... 53
6.3.
Presentación de los parámetros .................................................................. 54
6.4.
Diseño de los algoritmos .............................................................................. 55
6.5.
Desarrollo del algoritmo básico .................................................................. 56
6.6.
Desarrollo del algoritmo complejo. ............................................................ 60
7.
PARAMETRIZACIÓN SOBRE LA RED DE PRUEBA ................................... 67
7.1.
Red de prueba................................................................................................ 67
7.2.
Experimentos realizados .............................................................................. 69
8.
RESULTADOS SOBRE LA RED DE SEVILLA ................................................ 73
8.1.
Red de Sevilla ................................................................................................ 73
8.2.
Imposiciones sobre el problema ................................................................. 74
8.3.
Parámetros del problema ............................................................................. 75
8.4.
Resultados obtenidos.................................................................................... 76
9.
CONCLUSIONES ................................................................................................. 93
10.
BIBLIOGRAFÍA ................................................................................................ 95
11.
ANEXOS ............................................................................................................ 98
11.1.
Algoritmo Búsqueda Tabú Simple ......................................................... 99
11.1.1.
Bloque Intensificación ..................................................................... 101
11.1.2.
Bloque Diversificación..................................................................... 109
11.2.
Algoritmo Búsqueda Tabú Complejo................................................... 112
11.2.1.
Bloque Intensificación ..................................................................... 113
11.2.2.
Bloque Pre-Diversificación. ............................................................ 129
11.2.3.
Bloque Diversificación..................................................................... 131
4
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
1. INTRODUCCIÓN Y OBJETO DEL PROYECTO
El transporte urbano de mercancías es una de las actividades que afectan de
una forma más notoria a los habitantes de una ciudad. Principalmente, afecta
de forma directa al tráfico y al medio ambiente (calidad del aire y
contaminación acústica) de la ciudad.
Tanto la fluidez del tráfico como el medio ambiente de una determinada ciudad
son dos de los aspectos que definen la calidad de vida de sus habitantes, y por
ello, desde finales de los años 80 se ha llevado a cabo la imposición de normas
de tráfico que regulan el transporte urbano de mercancías en el área urbana.
Para el caso de ciudades en las que la mayor parte de su actividad comercial se
desarrolla en el casco antiguo de la ciudad, la problemática se ve agravada por
varios aspectos. En los cascos antiguos de ciudades históricas, como pueden ser
las principales capitales españolas y europeas, la calles suelen tener una
disposición sinuosa y en la mayoría de los casos la anchura no permite la
existencia de varios carriles para vehículos en la calzada, lo que dificulta de
sobremanera que haya un tráfico fluido. Si se diera lugar la afluencia de clientes
en hora punta a la vez que se produce la entrega de la mercancía por parte de
las empresas se provocaría un colapso del tráfico debido a que el espacio sería
insuficiente para que ambos sectores desarrollen su actividad de un modo
confortable.
Una de las estrategias seguidas por las administraciones públicas de las
ciudades ha sido regular el acceso a los cascos antiguos mediante restricciones
temporales de acceso. Estas restricciones están orientadas principalmente a
conseguir una mejor complementariedad de todas las personas que acceden a
diario a los cascos antiguos. Se consigue repartir el flujo de vehículos de la
manera más homogénea posible a lo largo del horizonte temporal de la jornada
laboral.
Las consecuencias de las restricciones impuestas por la administración local de
una ciudad son favorables para la ordenación del tráfico y la disminución de la
contaminación medioambiental, pero a su vez son perjudiciales en términos
económicos para las empresas de reparto de mercancías.
Se produce la aparición de problemas en el reparto de mercancías derivados de
la regulación del tráfico, que provocan que se necesiten más recursos por parte
de las empresas para repartir la mercancía dentro del horizonte temporal de la
jornada laboral. Más recursos significa más dinero, y el aspecto económico es
5
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
una fuerza mayor a la hora de impulsar el estudio de cualquier aspecto de la
ciencia y la sociedad.
La aparición de sobrecostes en las empresas sirvió de impulso para que se
dedicaran esfuerzos en el estudio matemático del problema con el objetivo de
buscar la mejor solución. El estudio continuado de los algoritmos exactos y las
metaheurísticas aplicadas a este tipo de problemas es clave para conseguir el
objetivo de principal de cualquier empresa de transporte de mercancías:
conseguir disminuir costes sin perjudicar a la calidad del servicio prestado.
Así, en este proyecto se realiza el estudio de la problemática planteada
mediante el uso de la programación computacional (lenguaje M) en Matlab. La
programación no es más que la herramienta que se ha utilizado para obtener los
resultados, sin embargo, el elemento importante es la estrategia utilizada para
realizar el estudio.
El problema que se plantea para ser estudiado y analizado es el de “Ruteo de
Vehículos con Ventana Temporal de Acceso”, siendo sus siglas VRPATW
(Vehicle Routing Problem with Access Time Window) el cual, es una variante
del tradicional “Problema de Ruteo de Vehículos” (Vehicle Routing Problem,
VRP). La ventana temporal de acceso hace referencia a la restricción de acceso a
la zona de mayor densidad de negocio en cierta ciudad. Para el proyecto que se
desarrolla se ha tomado a la ciudad de Sevilla como escenario de estudio.
Una posible estrategia sería utilizar métodos exactos para la resolución del
modelo matemático que representa al problema real planteado. Sin embargo, la
cantidad vasta de recursos necesarios para obtener la solución exacta de un
problema de las dimensiones de este problema hace que resulte poco viable la
implementación del método exacto.
Ya que en este tipo de problemas no es necesario obtener el óptimo global para
considerar un resultado como bueno, en este proyecto se ha optado por el
desarrollo de la metaheurística denominada Búsqueda Tabú, ya que permite
encontrar soluciones cercanas al óptimo global sin requerir tantos recursos
como en el caso del método exacto.
El objetivo del proyecto es realizar el estudio de sobrecostes de los resultados
obtenidos de la ejecución de simulaciones de algoritmos basados en la
Búsqueda Tabú en los diferentes escenarios propuestos, así como realizar una
comparación de metaheurísticas tomando los resultados obtenidos por un
algoritmo Genético sobre los mismos escenarios que los usados en las
simulaciones del algoritmo Búsqueda Tabú. Para ello, previamente se diseñarán
6
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
y se programarán dos algoritmos basados en la Búsqueda Tabú, referidos como
“básico” y “complejo”.
Los resultados obtenidos mediante un algoritmo Genético que servirán de base
para la comparación de los resultados obtenidos mediante el algoritmo
Búsqueda Tabú son resultado de una investigación llevada a cabo por el
Departamento de Organización Industrial de la Escuela Superior de Ingeniería
de la Universidad de Sevilla, habiendo sido publicados dichos resultados en el
artículo científico:

Muñuzuri, J., Grosso, R., Cortés, P. & Guadix, J. 2012, "Estimating the
extra costs imposed on delivery vehicles using access time windows in a
city", Computers, Environment and Urban Systems, in press.
El desarrollo del proyecto ha constado de cinco fases muy diferenciadas:

Estudio del estado del arte, donde se ha procedido a la búsqueda y
posterior lectura de la bibliografía relacionada con el campo bajo estudio
en el proyecto final de carrera.

Diseño del algoritmo. Tomando como base las normas y características
que debe tener un algoritmo para ser considerado Búsqueda Tabú, se ha
diseñado una combinación de estrategias de actuación para el algoritmo
que respetan las características comentadas y capaz de obtener una
solución cercana al optimo global.

Implementación. Se ha implementado el algoritmo diseñado en lenguaje
M para ser ejecutado con la herramienta informática Matlab.

Experimentación. Se ha realizado la ejecución del algoritmo
implementado en Matlab sobre los diferentes escenarios propuestos.

Análisis de resultados. Una vez se han obtenido los resultados mediante
la experimentación se han analizado los sobrecostes y se han comparado
la metaheurísticas Búsqueda Tabú y Algoritmo Genético tomando los
resultados obtenidos con el algoritmo Genético publicados en el artículo
científico antes comentado.
7
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
2. TRANSPORTE URBANO DE MERCANCIAS
2.1. Importancia del transporte urbano de mercancías.
En Europa más del 75 % de la población reside en áreas urbanas [17] y por esta
razón, la producción industrial se concentra también en esas mismas zonas.
Esto hace que en estas zonas exista un gran potencial para el sector del
transporte de mercancías.
De la totalidad del tráfico propio de las áreas urbanas, el transporte de
mercancías (camiones de más de 3,5 toneladas) supone alrededor del 10 %. Si
incluimos los coches y las furgonetas, que están cobrando más importancia en
los últimos años, este tanto por ciento sería aún mayor [17].
La importancia del transporte urbano de mercancías se puede ver también en la
distribución de costes dentro de la cadena de transporte de mercancías. La
proporción de las actividades de recogida y reparto, que normalmente tienen
lugar en las áreas urbanas, supone en el transporte combinado alrededor de un
40% [7] sobre el coste total de las actividades de transporte que se realizan a
domicilio. Estos costes se ven incrementados enormemente por la reducción de
los “stocks”, el menor tamaño de la mercancía y el aumento del número de
pedidos.
2.1.1. Problemas producidos por el transporte urbano de mercancías
Debido a la elevada densidad de población de las áreas urbanas y a los
limitados recursos existentes (infraestructura, recursos medioambientales,...), el
transporte urbano de mercancías se ha de enfrentar con numerosas dificultades.
Aparte de la alta densidad de población y el elevado consumo que se produce
en estas zonas, es necesario hacer referencia también a la gran cantidad de
edificios que hay en ellas. Además, la infraestructura de tráfico es muy escasa y
las posibilidades de ampliarla se ven limitadas por la escasez de zonas libres.
Por otra parte, la construcción de una infraestructura subterránea resulta muy
cara y su financiación es posible sólo en algunos casos.
Además de los obstáculos originados por la infraestructura de tráfico, los
problemas medioambientales son de vital importancia en las áreas urbanas. La
importancia de estos aspectos guarda relación con lo densamente poblada que
se encuentran estas zonas.
En el área urbana de Bremen, Alemania (~500’000 habitantes) el tráfico (de
mercancías y de pasajeros) consume más de 500 toneladas de carburante al día,
8
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
lo que produce la emisión al aire de las siguientes sustancias contaminantes
[17]:

Monóxido de carbono 34 ton./día

Partículas en suspensión 0.16 ton./día

NOx 18 ton./día

CH 8 ton./día
El porcentaje de energía consumida y de contaminación producida por el
transporte de mercancías es mayor que el del correspondiente porcentaje de
vehículos kilómetro [17].
Otro aspecto de importancia dentro del ámbito del medio ambiente es la
contaminación acústica producida por el tráfico en las áreas urbanas. En la
ciudad de Zúrich, Suiza, un tercio de la población reside en áreas con emisiones
acústicas por encima de los límites fijados por la ley federal de protección
contra el ruido [22].
2.1.2. Necesidad de su existencia
A pesar de los problemas descritos en el apartado anterior, las ventajas para la
sociedad en su totalidad que podría acarrear la restricción del transporte de
mercancías en el área urbana no están muy claras.
Para la competitividad económica de un área urbana es muy importante
garantizar que en esa zona tenga lugar un intercambio de productos que resulte
libre y económico. La zona centro delas ciudades se puede ver resentida, en
comparación con los centros comerciales de la periferia, si el tráfico de
distribución de productos resulta demasiado caro. En este contexto, a menudo
hay que tener en cuenta que un camión que se encargue de la distribución de
productos a un atienda situada en una zona residencial causa menos problemas
de tráfico que 100 coches particulares recogiendo de un centro comercial alejado
del centro la misma cantidad de productos que el camión.
2.2. Sectores implicados
9
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
2.2.1. Planificación y gestión
Tradicionalmente, el sector del urbanismo y el sector de la ingeniería del
transporte presentan puntos de vista complementarios. Los urbanistas se
preocupan de la distribución del espacio y la forma estética en la ciudad y en las
viviendas, pero a menudo quedan fuera de juego cuando la perspectiva a tratar
son los servicios de una ciudad, sus flujos de movilidad o su funcionalidad.
Sólo a principios de la década de los 90 se planteó explícitamente que la ciudad
la definen redes y no zonas. Por otro lado, los ingenieros de tráfico y transporte,
históricamente preocupados por la fluidez del tráfico y la seguridad vial, están
en proceso de descubrimiento de la “democratización” de la vía pública (uso
del mismo para todos los modos de transportes) y de la planificación y gestión
de la movilidad sostenible. Poco a poco los profesionales se van
comprometiendo no solo con los efectos sino también con las causas que los
producen.
2.2.2. Producción y comercialización
Las empresas, en su búsqueda de ampliar el nicho de mercado, lanzan
estrategias de comercialización cada vez más sofisticadas desde el punto de
vista competitivo. Los niveles de servicio ofrecidos se ponen metas crecientes:
por ejemplo, una empresa de E-commerce (venta de libros, CD, etc.) ofrece un
servicio de entrega a domicilio en 4 horas para las ciudades de Barcelona y
Madrid. En el caso de la distribución de mercancías, ante la solución más
evidente de consolidar proveedores para su posterior distribución, el sector de
la producción antepone sus lícitos intereses de tipo estratégico (discreción y
exclusividad en la relación con sus clientes, etc.) y económico (ventajas para el
cargador con menor red de distribución). Las nuevas tecnologías han sido
aplicadas, por ahora, casi exclusivamente como medio para acercarse a un
cliente más lejano y exigente, por lo tanto el nuevo desafío de las empresas está
en la aplicación de éstas mismas tecnologías a la optimización de los recursos
usados para el cumplimiento del servicio.
2.2.3. Distribución
Ante la necesidad de lograr la productividad por medio de la rapidez, los
transportistas pueden llegar a utilizar prácticas poco ortodoxas en cuanto a
interferencias para la movilidad de la ciudad. En otro sector como el de los
suministros urbanos (gas, agua, saneamientos, teléfonos, electricidad, etc.), las
ineficiencias suelen quedar enmascaradas porque, por ejemplo, quien se ve
entorpecido por las obras de tendido de redes no tiene la posibilidad de evaluar
el nivel de la planificación de éstas. En resumen, es más evidente un camión
10
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
aparcado en una zona no permitida, que la duplicación de obras, producto de
una planificación independiente de cada servicio.
2.2.4. Clientes
Los clientes de la ciudad deben percibir que el beneficio que obtienen por vivir,
invertir o visitar la cuidad, es igual o superior al que otra localidad le
proporcionaría. El cliente ya superó la condición de "cautivo" debida a sus
activos fijos y pasó de ser un "cliente leal" (valor simbólico de la ciudad) a un
cliente que busca la mejor localización de su negocio (valor debido a las
propiedades de la ciudad), para el logro de una ventaja competitiva sostenible.
2.2.5. Administración local
La administración local en su búsqueda de mejorar la calidad de vida de la
población a la que sirve (reducción de la congestión, de la contaminación
atmosférica y acústica, mejora de la seguridad vial, etc.), a menudo se ve
condicionada por perspectivas parciales y olvida las necesidades logísticas que
permiten la sostenibilidad de la ciudad. Es desde las administraciones desde
donde se debería promocionar un transporte urbano de mercancías de calidad,
pero para ello debe conocer cuáles son las prácticas a "premiar o penalizar".
Dado que un buen uso del espacio urbano repercute positivamente en toda la
sociedad, es también la administración quien debería canalizar esfuerzos de
formación y concienciación en el sector dirigidos a todos los sectores
comprometidos en la eficiencia logística de la ciudad.
2.3. Mecanismo de control administrativo
Como ya se ha visto en apartados anteriores, el transporte urbano de
mercancías es un área que aporta desarrollo económico cumpliendo uno de los
principales objetivos de cualquier actividad dentro de la totalidad de la
sociedad. Estos objetivos se pueden considerar también como la optimización
de un sistema económico y social con carácter global [15].
Los sistemas propios de las distintas partes involucradas (fabricantes,
compañías de distribución, destinatarios) tienen un tamaño mucho más
reducido y, por lo tanto, sus intereses no están en demasiada consonancia con
los de la sociedad en general. Los intereses de la sociedad en su totalidad
deberían estar representados por las autoridades locales. Estos intereses, u
objetivos, se pueden resumir de la siguiente manera:
11
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012

Hacer un uso óptimo de la limitada capacidad infraestructural.

Minimizar las emisiones contaminantes.

Lograr bienestar económico y competitividad en el área urbana.

A pesar de que la mayoría de estos objetivos aún no se han logrado cumplir
de manera satisfactoria, los problemas derivados del transporte urbano de
mercancías todavía no han sido abordados por muchas de las autoridades
responsables. Alrededor del 20 % de las ciudades no tienen personal
dedicado a estos asuntos, y sólo un cuarto de las ciudades tienen al menos
un responsable trabajando en este asunto a jornada completa [15].
2.3.1. Posibilidades de aplicación:

Las formas de participación dentro del proceso de transporte urbano de
mercancías, y del transporte en general, son muy variadas. Sólo se
encontrarán soluciones adecuadas a los problemas que puedan surgir si
se comprende cómo se desarrolla la totalidad del proceso de transporte
urbano de mercancías y la forma en que participan todas las partes
involucradas en dicho proceso (autoridades públicas/policía, vendedores
al por menor, asociaciones de comerciantes, transportistas, agencias de
transporte, compañías distribuidoras, etc.). Por lo tanto, para que se
pueda crear un marco a partir del que llegar a posibles acuerdos, es
necesario que exista cooperación entre las distintas partes involucradas a
nivel local.

Para obtener una imagen real de cuál es la situación actual, es necesario
que las autoridades locales recopilen y analicen los datos estadísticos
sobre transporte de mercancías. Por lo tanto, también es importante
coordinar la política de mercancías urbanas con las de las ciudades
vecinas, especialmente si están situadas en la misma área metropolitana.

La política de transporte urbano de mercancías debe estar integrada
dentro de la política de transporte de un área metropolitana. Por tanto, es
importante que exista también un programa global de planificación del
transporte y de la infraestructura/uso del suelo en el área urbana.

Los distintos medios a disposición del sector público para influir en el
sistema de transporte se pueden dividir en tres grupos distintos:
o Establecimiento de una regulación al respecto.
12
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
o Impuestos.
o Subvenciones y desarrollo de la infraestructura.
2.3.2. Establecimiento de una regulación
El término ‘restricción’ se utilizaba en el pasado para expresar la reducción de
ciertos medios de transporte. Hoy en día, el concepto de restricción ha sido
sustituido por el de regulación, que supone una influencia más directa por
parte de las autoridades.

Peso: Establecer restricciones en cuanto al peso es una práctica habitual
en las Ciudades Europeas. En la mayoría de los casos, se limita el acceso
a la ciudad a camiones con un peso superior a las 3.5 ton. También hay
que tener en cuenta que las restricciones en cuanto al peso de los
vehículos tienen como consecuencia el uso de vehículos pequeños en
estas zonas. Evidentemente, el uso de estos vehículos pequeños conlleva
la realización de mayor número de trayectos, lo que no resulta
necesariamente beneficioso.

Emisiones: Las emisiones de gases contaminantes producidas por los
vehículos son restringidas por la Comisión Europea. Sin embargo, en
muchas ciudades, especialmente en aquellas que tienen un importante
atractivo, únicamente se permite el acceso a la zona centro a vehículos
que no producen emisiones contaminantes.

Tiempo de reparto: Las restricciones en cuanto al tiempo de reparto
únicamente permiten el acceso de los vehículos de reparto a la zona
centro de las ciudades durante un periodo de tiempo determinado. No
está muy claro cómo se pueden llevar a la práctica estas restricciones de
forma eficaz. Uno de los problemas básicos en este sentido es la posible
incapacidad de realizar el reparto en estas zonas debido a las propias
restricciones de tiempo, que puede originar un mayor número de
trayectos.

Carreteras de acceso: Las restricciones en el uso de carreteras especiales
tienen como consecuencia una concentración del tráfico en cualquier otro
punto de la red vial. La congestión de varias carreteras a la vez también
puede tener ese efecto.
Zonas de carga: Las labores de carga y descarga en el centro urbano a
menudo se ven entorpecidas por los coches estacionados en esa misma
zona. Por lo tanto, es necesario que las autoridades locales faciliten una
zona apropiada para estas labores. En algunas ciudades como París, los

13
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
establecimientos de un cierto tamaño han tenido que habilitar un espacio
destinado a este fin.
2.3.3. Impuestos
La recaudación de impuestos en el tráfico urbano se realiza principalmente con
el fin de reducir el tráfico de vehículos privados. Es una medida más inusual en
el transporte de mercancías. Sin embargo, la recaudación de impuestos en el
transporte de mercancías se está utilizando como medida de internalización de
gastos externos, como el peaje del tráfico pesado o el establecimiento de
impuestos adicionales para vehículos altamente contaminantes. Pero estas
medidas son de carácter general y no tienen demasiada importancia en las áreas
urbanas.
2.3.4. Creación de subvenciones y desarrollo de la infraestructura
Subvención y regulación son dos términos muy cercanos entre sí. En lugar de
limitar los posibles modos de afrontar una consecuencia negativa, se pueden
subvencionar fórmulas más favorables, por ejemplo, fomentando el uso de
vehículos que producen bajas emisiones contaminantes, o los camiones con
gran capacidad de carga. En este sentido, otorgar subvenciones no sólo significa
premiar económicamente un determinado esfuerzo, también puede significar,
por ejemplo, favorecer un mejor acceso a la infraestructura mediante la creación
de, por ejemplo, carriles de alta ocupación [15].
El riesgo de las subvenciones reside en que pueden provocar efectos
secundarios no deseados. Subvencionar el uso de camiones de gran capacidad
puede dar lugar a movimientos y flujos innecesarios.
Las subvenciones dentro del ámbito del transporte urbano de mercancías
también pueden consistir en el fomento de determinadas estructuras logísticas,
como pueden ser el transporte intermodal, las ciudades del transporte o los
centros de distribución de mercancías. Por lo tanto, resulta útil contar con la
infraestructura necesaria, como pueden ser las terminales de transbordo para el
transporte intermodal, o los corredores de transporte.
No obstante, al poner en práctica estas medidas hay que asegurarse de que no
aparezcan efectos secundarios no deseados. Es muy difícil determinar cuál es la
medida más adecuada en cada caso.
14
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
2.4. El Transporte Urbano de Mercancías en Sevilla
En una ciudad donde el casco antiguo de la ciudad coincide con su foco
principal de comercio, el transporte urbano de mercancías cobra mucha
importancia. En el caso de Sevilla, se da el supuesto anterior, pero además,
existe otro factor que influye fuertemente sobre la logística urbana, y es la
problemática de ser una ciudad con el tercer casco antiguo más grande de
Europa (superado por los cascos antiguos de Génova y Venecia).
La tendencia cada vez mayor por parte de la administración de promover la
salud arquitectónica y medioambiental de la ciudad, hace que cada vez existan
más dificultades a la hora de dar un servicio logístico de calidad en el centro de
la ciudad.
Los principales problemas derivados de la logística urbana relacionados con el
tráfico en Sevilla se comentan a continuación:

Zonas de carga y descarga: Aun existiendo placas de tráfico limitando las
zonas de carga y descarga donde se informa de los horarios donde se
destinan esas zonas a su función, por lo general, no se respetan los
citados horarios por parte de los vehículos privados. Esto genera
conflictos de tráfico debido a la obligación del transportista de realizar su
carga/descarga ocupando una zona no destinada a ello.

Horarios de acceso: Al existir una limitación temporal impuesta por la
administración para acceder al centro de la ciudad, no se puede realizar
un plan de entregas/recogidas de mercancía todo lo bueno que pudiera
ser, conllevando consigo en la mayoría de los casos un aumento de los
costes logísticos para las empresas.

Peatonalización y accesibilidad: cada vez con más frecuencia la
administración peatonaliza zonas del centro, lo cual provoca un acceso
cada vez más difícil a las zonas de reparto afectadas por las
peatonalizaciones.
15
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
3. PRESENTACIÓN DEL PROBLEMA PLANTEADO
Brevemente se va a proceder a introducir el problema sobre el que se basa este
proyecto así como las razones por las que se realiza éste.
Se plantea la realización del diseño de un algoritmo búsqueda tabú para
resolver el problema de ruteo de vehículos con ventana temporal de acceso
(VRPATW). El algoritmo Búsqueda Tabú es una metaheurística basada en la
memoria a corto y a largo plazo con gran capacidad de variabilidad en las
estrategias a seguir. A lo largo de la realización del proyecto se ha procedido a
seleccionar las estrategias que tendrán lugar durante la ejecución del algoritmo,
así como a implementar en lenguaje M el algoritmo completo para realizar
ciertas simulaciones determinadas. En capítulos posteriores se detallan las
características del algoritmo resultante del diseño.
Existen dos razones principales por las que se ha decido aplicar el algoritmo
diseñado al problema VRPATW. La primera se debe a que con anterioridad se
ha resuelto el mismo problema mediante la aplicación de un algoritmo Genético
y se va a proceder a la comparar los resultados obtenidos por este algoritmo con
los resultados que se han obtenido tras las simulaciones del algoritmo
Búsqueda Tabú. La segunda razón es porque es un modelo de problema que no
ha sido objeto de muchos estudios debido a que se trata de un problema
“joven”. Esta juventud comentada se debe a que el problema surge tras la
aparición de las restricciones temporales de acceso impuestas por las
administraciones locales para acceder determinadas zonas de la ciudad (suele
ser la zona donde se concentra el mayor número de negocios de la ciudad, el
casco antiguo, zonas protegibles de contaminación, etc.).
3.1. Definiciones de elementos del problema
Antes de plantear el problema se deben conocer los diferentes elementos que
intervienen en su modelado, así como algunas condiciones adoptadas en su
planteamiento.

Partimos del conocimiento del grafo completo que contiene todos los
posibles arcos entre los diferentes nodos del problema de optimización
de rutas: G=[N,L]. Siendo “N” y “L” el conjunto de nodos y de arcos
totales del problema respectivamente.
16
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado

2012
Dentro del conjunto de nodos “N” existen tres subconjuntos en relación a
los niveles de oferta y demanda que tienen los nodos:
o Subconjunto “ ”: los nodos tienen unos niveles de demanda
positiva y oferta igual a cero (clientes).
o Subconjunto “ ̅ ”: los nodos tienen unos niveles de demanda y
oferta igual a cero.
o Subconjunto “ 1”: compuesto por un único nodo con un nivel de
oferta positivo.
o Subconjunto “ 2”: donde los nodos tienen unos niveles de oferta
y demanda nulos.

Dentro del conjunto “N” existen dos subconjuntos en relación a la
restricción de acceso al centro.
o Subconjunto “RZ”: Son aquellos situados dentro de la
denominada zona restringida. La restricción de acceso que tienen
es que no se pueden realizar incursiones a la zona restringida ni
permanecer dentro de la zona restringida mientras nos
encontremos dentro de la ventana temporal “TW”. Además,
tenemos que
y que ̅
. Es decir, dentro de la
zona restringida habrá forzosamente nodos clientes, pero también
se obliga a que no todos los nodos situados dentro de la zona
restringida sean clientes.

El número de vehículos de transporte de mercancías que realizarán las
rutas por el grafo se define por “V”.

El objetivo del problema es suministrar a los nodos del subconjunto “ ”
(clientes, y a los que nos referiremos como “nodos destinos” a partir de
ahora) la demanda requerida mediante el uso de vehículos de transporte
de mercancías “V”, dentro del horizonte temporal definido por [to,tf].
Los vehículos saldrán desde el nodo “d”, denominado “nodo origen” y
desarrollaran una ruta teniendo en cuenta ciertas restricciones.

El tiempo necesario para recorrer un arco entre dos nodos viene
modelado por unos costes temporales “T”. Teniendo un coste de tij
cuando vayamos desde el nodo “i” al nodo “j”, con
, y este valor
temporal es independiente de la mercancía que transporte el vehículo.
17
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012

Existirá otro coste temporal, será aquel asociado al tiempo de entrega de
la mercancía. El coste será de “h” y se incurrirá en el cada vez que se
realice una entrega a un cliente (nodos del subconjunto “ ”).

La Ventana Temporal comentada anteriormente será única y efectiva
para todos los nodos del subconjunto “RZ”. Este espacio de tiempo viene
definido por el intervalo [tVC,tVA]. Lógicamente, este intervalo de tiempo
será menor que la duración de la jornada laboral [to,tf].

Por último, se añadirá un coste adicional “cvehiculo” por cada vehículo
adicional (a parte del primer vehículo) que se utilice para completar las
entregas a todos los clientes.
El problema a resolver es conseguir obtener un conjunto de rutas con el menor
coste posible con inicio y llegada en el mismo nodo de manera que se entreguen
todos los pedidos a los a los nodos clientes. El problema se puede considerar
una variante del VRPTW ya que cumple con las características de este y además
se imponen restricciones relacionadas con la zona restringida. Las restricciones
que se deberán respetar son las que se detallan a continuación:

Cada pedido debe ser entregado por un único vehículo.

Todos los pedidos deben ser entregados 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.
Un esquema visual del espacio donde se desarrolla el problema puede ser el
que se muestra en la figura 1:
18
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Figura 1: Esquema general de situación
3.2. Presentación del problema
3.2.1. Proceso general
Dentro del horizonte temporal de un día se debe ejecutar la entrega de todos los
pedidos realizados por los clientes que tienen que ser entregados en ese día.
Los clientes se modelan como nodos de la red, algunos estarán fuera de la zona
restringida y otros dentro. Al conjunto de nodos que requieran una entrega se
les llama “nodos paradas”, quedando excluido de las paradas el nodo del que
parten y al que vuelven los vehículos tras finalizar su jornada, al cual nos
referiremos como “nodo origen”. En nuestro caso, es preferible utilizar el menor
número de vehículos posible en vez de utilizar más vehículos y tardar menos
tiempo en entregar todos los pedidos, lo cual conllevaría un gasto mayor.
El problema se resolverá mediante la ejecución de los algoritmos Búsqueda
Tabú que se han creado. Concretamente se han diseñado dos algoritmos
búsqueda tabú, uno denominado “Simple”, donde se ejecutan las estrategias
sencillas básicas de la Búsqueda Tabú, y un algoritmo denominado “Complejo”,
donde se han implementado estrategias más avanzadas que requieren más
cálculos computacionales.
19
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Los algoritmos están diseñados para que vayan añadiendo vehículos a fin de
cumplir las restricciones del problema, por lo que se empieza a realizar las
entregas con un solo vehículo, el cual, parte del nodo origen, recorre los arcos
hasta el primer nodo parada, donde realiza la entrega durante un cierto tiempo
determinado, y una vez hecha la entrega se pueden dar dos situaciones:
1. que deba esperar un tiempo antes de partir hacia el segundo nodo
parada debido a que no pueda entrar aún en la zona restringida, en cuyo
caso esperaría el tiempo necesario antes de salir.
2. que no sea necesario esperar, por lo que saldría inmediatamente después
realizar la entrega.
El camino recorrido a través de los arcos entre los nodos es siempre el menor
camino posible entre ellos. Así se procede con todos los clientes y la jornada
finaliza con el regreso del vehículo al nodo origen tras haber realizado las
entregas a todos los clientes.
A lo largo del recorrido del vehículo por el grafo pueden surgir situaciones que
entren en conflicto con las restricciones del problema, ya sea con las de la
ventana temporal o con las restricciones de la zona restringida. Es a raíz de
estas situaciones cuando el algoritmo opta por alguna de las soluciones
disponibles, como pueden ser asignar un tiempo de espera a un vehículo para
que no entre en la zona restringida mientras se encuentra la ventana temporal
cerrada o también puede optar por añadir un vehículo ya que no ve capaz
entregar todos los pedidos antes de llegar al límite del horizonte temporal. En el
caso de que se necesite un nuevo vehículo (es decir, en caso de no poder
satisfacer la demanda antes del final del horizonte temporal respetando las
restricciones de la zona restringida y de la ventana temporal), un nuevo
vehículo partirá del nodo origen desde el inicio del horizonte temporal (to=0)
siguiendo la ruta que habría seguido el vehículo anterior (es decir, el vehículo
que el programa asignó anteriormente para recorrer el grafo). Todos los
vehículos, para finalizar correctamente su ruta, deben llegar al nodo origen
antes del límite del horizonte temporal.
La función objetivo (podríamos referirnos a ella en este caso como una función
de coste temporal), que los algoritmos “Búsqueda Tabú” minimizarán, será en
términos temporales, y estará compuesta por el tiempo empleado en cada ruta
(desde que el vehículo sale del nodo origen hasta que vuelve a él para finalizar
la ruta) por cada vehículo más un coste adicional por cada vehículo de más que
se necesite a partir del segundo (incluyendo éste).
20
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
3.2.2. Restricciones del problema
Las restricciones que se tienen en cuenta para modelar el problema real no
ayudan a asemejar el problema real al planteado para su resolución, sin
embargo son restricciones necesarias para poder llegar a una solución concreta
de una manera factible en términos computacionales y de tiempo. Así, las
restricciones nos permiten mantener los objetivos de la realización de este
estudio respetando la finalidad. Se listan a continuación las restricciones
consideradas individualmente y con interés aclaratorio:
1. Los vehículos no tendrán límite de capacidad. Esta restricción hace
referencia a que se considera que la carga que ha de ser entregada no
tiene un tamaño grande y es de poco peso. Así con un vehículo de
reparto de mercancías medio sería posible hacer la entrega de todos los
pedidos a los clientes sin necesidad de utilizar otro vehículo obligado
por la falta de espacio ni por sobrepasar la limitación de peso máximo
del vehículo. En modelos de problemas sobre logística urbana con carga
fraccionada, esta restricción es muy común por lo ya explicado
anteriormente (mercancía de poco tamaño).
2. La función objetivo debe ser expresada en términos de tiempo. Cabe
resaltar que los costes cij también serán expresados en términos de
tiempo. Para el cálculo de los costes se ha fijado como velocidad media
de cada trayecto entre nodo y nodo una velocidad de 20 km/h. Esta
velocidad tiene en cuenta la aparición de los diferentes agentes que
intervienen en un trayecto por ciudad, como pueden ser los semáforos, la
aparición de peatones, atascos, etc... Además, conociendo la distancia en
términos de longitud entre los nodos de todo el grafo se consigue hacer
el cálculo de los costes cij de cada arco en términos temporales.
3. La Longitud de la Ventana Temporal, [tVC , tVA], se ha tomado como
parámetro del problema, y cuyo valor se irá variando para realizar el
estudio sobre su repercusión en el valor de la función objetivo, además
de su repercusión sobre otras variables de interés, como puede ser el
tiempo de ejecución del algoritmo.
4. La dimensión de la Zona Restringida es otro de los parámetros del
problema cuyo valor se variará para estudiar el comportamiento del
algoritmo ante diferentes situaciones. La Zona Restringida tendrá como
límite geográfico siempre los últimos nodos que se encuentren dentro del
radio que se fije en cada problema, es decir, para entrar o salir de la zona
21
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
restringida es obligatorio pasar por algún nodo, no se produciría la
entrada en la Zona Restringida o la salida de ésta durante el recorrido de
un arco.
5. El Tiempo de Entrega se define en el modelo como h = 20min. Se toma
este valor como el tiempo medio de entrega a un cliente.
6. La duración del horizonte temporal se ha fijado como una jornada
laboral de 10 horas, siendo: [to , tf] = 10h = 600 min.
3.2.3. El modelo matemático del problema
Se define la siguiente nomenclatura para modelar el problema:

G(N, A): grafo de nodos y arcos representativo del área urbana.

N: nodo que representa al único depósito del modelo.

D: conjunto de nodos destino (clientes del problema).

Q: nodo que representa el final de la ruta (mismo que el nodo N en el
caso de este proyecto).

AV: Longitud del horizonte temporal (en unidades de tiempo) anterior al
periodo con restricción de acceso a la Zona Restringida.

V: Periodo con Restricción de Acceso (unidades de tiempo).

DV: Longitud del horizonte temporal (en unidades de tiempo) posterior
al periodo con restricción de acceso a la Zona Restringida.

cij: Duración (en unidades del tiempo) del trayecto entre el nodo i y el
nodo j a través del arco (i, j) fuera del período con restricción de acceso a
la zona restringida.

TD: tiempo que el vehículo permanece en el nodo destino D.
22
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado

2012
dij: Duración (en unidades del tiempo) del trayecto entre el nodo i y el
nodo j a través del arco (i, j) dentro del período con restricción de acceso
a la zona restringida. Si los nodos i y j están fuera de la zona restringida,
dij = cij, sin embargo, si alguno de los dos se encuentra dentro de la zona
restringida dij es un valor alto (simulando infinito).

K: coste fijo por vehículo utilizado.

K': constante de valor muy elevado.

: para cada arco (i, j) del grafo, es igual a 1 si el vehículo t recorre el
arco antes del comienzo del período con restricción, y 0 en caso
contrario.

: para cada arco (i, j) del grafo, es igual a 1 si el vehículo t recorre el
arco durante período con restricción, y 0 en caso contrario.

: para cada arco (i, j) del grafo, es igual a 1 si el vehículo t recorre el
arco después de la finalización del período con restricción, y 0 en caso
contrario.

: instante de tiempo en el que el vehículo t pasa por el nodo j.

: es igual a 1 si el vehículo t realiza una entrega en el nodo destino D
antes del comienzo del período con restricción de acceso, y 0 en caso
contrario.

: es igual a 1 si el vehículo t realiza una entrega en el nodo destino D
durante el período con restricción de acceso, y 0 en caso contrario.

: es igual a 1 si el vehículo t realiza una entrega en el nodo destino D
después de finalizar el período con restricción de acceso, y 0 en caso
contrario.
El modelo que se presenta es lineal y está gobernado por variables binarias. La
función objetivo representa el coste en unidades temporales de realizar las
rutas, diferenciando entre tres tipos de entregas, las que se realizan antes,
durante y después del periodo con restricción de acceso. Además también se
tiene en consideración el coste incurrido por cada vehículo utilizado para
completar las rutas.
23
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
A continuación se muestra el modelo matemático del problema.
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
∑
(
)
24
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Se procede a mostrar la interpretación de cada restricción del modelo.
[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.
[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
restrictivo, 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.
25
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
[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.
26
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
4. RESOLUCIÓN DEL PROBLEMA DE RUTEO DE
VEHÍCULOS (VRP)
4.1. Introducción al Problema de Ruteo de Vehículos
Para comprender el mecanismo de los algoritmos de cálculo de rutas, primero
se deben entender los problemas para los que están diseñados, además de
comprender las diferentes variantes que pueden surgir. Por esta razón se realiza
una ligera introducción a este tipo de problema más conocido por su
denominación en inglés “Vehicule Routing Problem” (VRP).
El principal objetivo del problema de ruteo de vehículos [25] es suministrar los
pedidos a un grupo de clientes que por lo general se encontrarán dispersos a lo
largo de una zona geográfica de manera que se minimice el coste.
Principalmente las características de este problema son:
1. Se cuenta con demanda determinista (conocida), exceptuando a la
variante del problema que sufre demandas estocásticas.
2. Las entregas deben realizarse con el mínimo coste, para ello se deben
optimizar las rutas de los vehículos que tienen origen y final en el
depósito o almacén.
Los clientes solo pueden ser atendidos una vez, por lo tanto, el vehículo que le
suministre el pedido deberá tener una capacidad mayor que la demanda total
del cliente.
Todos los clientes deben ser atendidos una sola vez, por lo que a cada uno le
visitara un vehículo con una capacidad de carga mayor que la demanda del
cliente. Todas las variantes de un problema de ruteo de vehículos tienen tres
aspectos comunes:
1. Los clientes:
Un cliente tiene siempre una demanda que tendrá que ser satisfecha por
un solo vehículo. Para la mayoría de los problemas, la demanda es un
producto o un bien que tiene asignado un volumen dentro del vehículo.
Pero a veces, la demanda no se entiende como un bien o un producto,
sino como simplemente la realización de un servicio que dura cierto
tiempo, así, en estos casos el vehículo solo deberá visitar al cliente.
27
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
A lo largo del capítulo, se mostrarán los diferentes VRP en los cuales los
clientes tienen restricciones temporales, por ejemplo, sobre cuando
pueden ser atendidos y cuando no. Se crean las denominadas ventanas
temporales.
2. El depósito o almacén:
Tanto los bienes a distribuir vehículos como los vehículos suelen
encontrarse ubicados en depósitos o almacenes. Generalmente las rutas
seguidas por los vehículos de reparto empiezan y finalizan en el
depósito. Se puede dar el caso de tener varios depósitos con una flota
determinada de vehículos.
Pueden existir restricciones temporales asociadas a la carga de los bienes
en los vehículos, es decir, ventanas temporales sobre el depósito, con el
objetivo de evitar que varios vehículos acudan a la vez a cargar la
mercancía al depósito.
3. Los vehículos:
La “capacidad” de un vehículo de transporte puede expresarse en
términos de volumen, de peso, de número visitas máximas a clientes,
etc. y en ciertos problemas es deseable que la capacidad soportada por
cada vehículo sea más o menos pareja.
Cada vehículo, por lo general, se asume que recorrerá una única ruta
durante el horizonte temporal, pero en los últimos años se han realizado
estudios de modelos en los que el número de rutas de un vehículo puede
ser mayor.
4.2. El VRP en la práctica.
Debido a la importancia que ha cobrado en los últimos siglos el transporte de
mercancías como una necesidad de una sociedad moderna, el VRP se ha
desarrollado con velocidad, obteniendo una capacidad de aplicación fuerte en
múltiples sectores.
Un factor muy importante para el desarrollo económico de una región es contar
con una buena red de transporte, donde la relación y la comunicación entre los
diferentes sistemas de transporte son básicas. A lo largo de la historia, se ha
28
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
demostrado que las regiones con mejores redes de transporte han prosperado
más que las que no lo poseen, y eso entre otros factores se debe a que su
existencia facilita las relaciones comerciales entre las empresas.
Para una empresa, la reducción de costes es una de las tareas que siempre está
en continua gestación. Una buena política de logística por parte de la empresa
permitirá a ésta una disminución muy considerable de los costes asociados y
repercutirá directamente en el margen de beneficio de ésta. Para una empresa
que preste servicios de entrega comprometidos en tiempo, el VRP se convierte
en un problema fundamental a resolver con el mejor resultado posible, puesto
que competirán con las demás empresas ofreciendo un mejor servicio [14].
El VRP es motivo de estudios continuados ya que es un reto resolver el modelo
de una manera óptima. Para casos en los que el problema no consta de muchos
nodos (clientes), es posible encontrar soluciones exactas numéricamente en
tiempos razonables. Sin embargo, a medida que el problema aumenta de
tamaño, los tiempos se van haciendo muy grandes y llega a ser inviable su
resolución tanto por tiempo de resolución como por lo complicado del modelo.
Matemáticamente el VRP se dice que es un problema del tipo NP.
Llegar a saber a qué grupo pertenece cada problema es primordial, ya que
permite no intentar resolver el problema con un algoritmo exacto y optar por
aplicar métodos no exactos de resolución que sin embargo pueden obtener un
resultado muy aproximado al óptimo. Estos métodos no exactos son las
heurísticas y metaheurísticas. El alcanzar una solución cercana al óptimo, en la
mayoría de los casos reales donde se aplican estos métodos, es ya considerado
como un buen resultado. Aplicar heurísticas o metaheurísticas proporciona
estas soluciones y disminuyen considerablemente el tiempo empleado para ello
con respecto a los métodos exactos [18].
La variedad de VRP existentes hace que la función objetivo de estos problemas
no sea siempre alcanzar la ruta más corta posible, sino que se debe buscar la
solución óptima respetando las restricciones impuestas intentando obtener el
menor coste posible.
29
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
4.3. Variantes del VRP
La base del problema es siempre el VRP original, pero en los casos reales, los
diferentes VRP tienen una serie de restricciones con aspectos muy
característicos que hacen que cada uno se enfoque de manera diferente.
A continuación se encuentran expuestas algunas de las variantes principales del
Vehicule Routing Problem, cuyos modelos pueden ser resueltos por algoritmos
cada vez más avanzados en la búsqueda conjunta de mejorar la función objetivo
mientras se respetan las restricciones del problema. En la figura 2 se muestra la
relación entre ellas:
Figura 2: Variantes principales de VRP
1. Capacited VRP (CVRP): Para esta variante del VRP se tiene una capacidad
de carga uniforme en los vehículos y se debe minimizar el coste de
transporte de atender las demandas conocidas de los clientes [8].
Así, sobre el problema original VRP se añade la restricción de capacidad de
que los vehículos poseen una capacidad de carga uniforme de un solo
producto.
30
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
2. Multiple Depot VRP (MDVRP): Se dispone de varios depósitos desde los
que pueden ser atendidos los clientes. Si es posible separar grupos de
clientes que estén cerca de cada depósito, podría resolverse el problema
como un conjunto de problemas independientes VRP.
En el MDVRP se requiere una asignación de cada cliente a un depósito,
además de conocer el número de vehículos establecidos en cada depósito.
Un vehículo inicia su ruta en un depósito, atiende a sus clientes y regresa al
depósito.
3. Periodic VRP (PVRP): Es la variante que tiene en cuenta que el periodo se
extiende a varios días, y por lo tanto su planificación. En el VRP original, el
periodo de planificación es de un día.
4. Split Delivery VRP (SDVRP): En esta variante la restricción que limita la
visita de un cliente a una sola vez es eliminada, y por lo tanto, un vehículo
pasa a poder visitar a un cliente más de una vez a lo largo del horizonte
temporal.
5. Stochastic VRP (SVRP): En este caso, uno o más de los datos que en el VRP
original eran conocidos serán en este caso aleatorios. Podrían ser los
clientes, las demandas…
6. VRP with Backhauls (VRPB): La particularidad de esta variante es que
existe la posibilidad de que se produzca una recogida o entrega de bienes a
los clientes.
7. VRP with Pick-Up and Delivering (VRPPD): Como su propio nombre
indica, se realiza una recogida de mercancía de ciertos clientes y se reparte
en otros.
8. VRP with Satellite Facilities (VRPSF): Es un caso especial ya que se permite
el reabastecimiento de vehículos sin necesitar que vuelvan al depósito.
9. VRP with Time Windows (VRPTW): Esta variante introduce las ventanas
temporales. Se establece o puede establecerse un intervalo de tiempo en el
que se permite o se restringe la entrega de mercancía a los clientes, también
pudiendo tener restricciones temporales el acceso de los vehículos al
depósito.
31
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
10. VRP with Access Time Windows (VRPATW): En el VRPATW se agrega una
restricción temporal relacionada con el acceso a ciertas zonas de las
ciudades. Este tipo de problemas surge de la restricción por parte de las
administraciones locales de acceder a ciertas zonas de la ciudad
(principalmente el centro de la ciudad) durante una franja horaria del día
determinada debido a razones sociales, ambientales y económicas.
En general, cada problema VRP de la vida real supone en sí mismo una variante
del problema original, ya que cada caso tiene sus características y restricciones
propias. Es por esto que necesitan “adaptarse” los algoritmos existentes al
problema concreto.
4.4. Algoritmos para el VRP
Los problemas derivados del transporte de mercancías están relacionados de
manera directa con el VRP, pero éste a su vez no solo se ha desarrollado en ese
ámbito, sino en muchos otros, por lo que se convirtió pronto en un problema
importante de optimización, para el que se han desarrollado diversas
soluciones a lo largo de las últimas cinco décadas.
Fueron Dantzing y Ramser quienes en 1959 propusieron un método de
resolución para un modelo que representaba una situación real. Se modeló el
abastecimiento de las gasolineras de combustible, y éste método se convirtió en
la primera formulación matemática para solucionarlo.
G. Clarke y J.M. Wright [4] presentaron en 1964 un método heurístico capaz de
mejorar la solución conseguida por Dantzing y Ramser. A partir de ahí, han
aparecido una gran cantidad de métodos para resolver las diversas variantes
del VRP. En algunos casos se intenta encontrar la solución óptima, en otros
simplemente una buena aproximación a ella. Las metodologías de resolución se
agrupan según la finalidad y el modo de intentar obtener la solución.
Se va a proceder a presentar algunos de los métodos más importantes en la
resolución de problemas VRP hasta la fecha. La mejora de estos métodos es
continua y acaban existiendo muchas posibilidades a la hora de afrontar una
familia de problemas. Las distintas necesidades de recursos de cada algoritmo
de resolución provocan que existan ventajas e inconvenientes relacionadas con
los tiempos de computación necesarios para resolver los problemas [18].
32
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Se distinguen tres familias de algoritmos utilizados para resolver el VRP, las
cuales se listan a continuación:
1. Los métodos Exactos
2. Los métodos Heurísticos. Dentro de ellos, se explican brevemente los
siguientes algoritmos:
a) Clarke & Wright.
b) Método del barrido.
c) Búsqueda local (Lin y Kernighan)
3. Los métodos Metaheurísticos. De los cuales, los más destacados son los
siguientes:
a)
b)
c)
d)
GRASP.
Algoritmos Genéticos (GA).
Búsqueda Tabú.
Simulated Annealing (SA).
4.4.1. Métodos Exactos
Debido a la complejidad de los modelos matemáticos, solo los problemas con
hasta 100 clientes (aproximadamente) pueden ser resueltos mediante métodos
exactos. En estas metodologías, la resolución suele aplicarse a problemas
relajados y suelen utilizarse variantes del método Branch and Bound
(ramificación y poda). Además, se han desarrollado algoritmos de
programación dinámica, los cuales se ven acelerados los cálculos a partir de
una relajación del espacio de estados. Sobresale también el método de
generación de columnas, que resulta ser muy efectivo en problemas con
ventanas temporales muy ajustadas.
Destacamos dos métodos exactos para resolver problemas VRP: El método de
Branch and Bound (Ramificación y Poda) y el método de Branch and Cut
(Ramificación y Corte) [3]:
1. Branch and Bound (Ramificación y poda): Este método se basa en la idea
de “divide y vencerás”. Con dividir se refiere a ramificar el conjunto de
soluciones enteras en subconjuntos separados cada vez de menor
tamaño. Posteriormente se determina el valor de la mejor solución del
subconjunto. En base a una cota superior o inferior establecida el
33
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
algoritmo elimina (poda) la rama del árbol que no puede contener la
solución óptima.
2. Branch and Cut (Ramificación y Corte): Es una mezcla de métodos en sí
mismo basado en el método de Branch and Bound y también en el
método de planos de corte en los nodos. Primero se comienza eligiendo
un nodo al que evaluar (inicialmente el nodo raíz). Posteriormente
decide si se van a generar planos de corte o no. Finalmente se aplican los
criterios del método de ramificación y poda.
Debido a que generalmente los métodos exactos se aplican solo a problemas con
una pequeña cantidad de nodos, son desarrollados en su mayoría para fines
académicos, ya que en los problemas reales de VRP se tiene una estructura
nodal muy amplia y por lo tanto no son recomendables porque requerirían
mucho tiempo de computación.
4.4.2. Métodos Heurísticos
1. Algoritmo de Clarke & Wright (Método de los ahorros)
Este algoritmo se diseñó para un problema donde existe un depósito central y
se cuenta con uno o más vehículos de entrega para n clientes, cada una
demanda conocida previamente. El objetivo principal es proporcionar las rutas
de los vehículos que hagan que se cumpla la demanda de cada cliente
respetando las restricciones de minimización de costes.
G. Clarke y J.M. Wright en “Scheduling of Vehicles from a Central Depot to a
Number of Delivery Points” [4], proponen un algoritmo para resolver el
problema. Este algoritmo de Clark & Wright consigue soluciones aceptables, y
es bastante utilizado en la práctica, por su simplicidad de aplicación y por el
poco tiempo que se precisa para resolver el problema.
Se identifica el depósito en la localización 0, y los clientes en las localizaciones
posteriores hasta n, y se consideran conocidos los costes por trayecto desde el
depósito a cada cliente; esto es:

coj = Coste de realizar el trayecto desde el depósito hasta el cliente.
Para desarrollar el método, es fundamental conocer el coste del trayecto entre
todos los clientes, lo que significa que se considera que se conocen todos los
costes de cada trayecto.
34
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado

2012
cij = Coste de realizar el trayecto desde el cliente i al cliente j.
En la práctica, se hace la consideración de que cij = cji, para todo i>=1 y n>=j.
Se expone una explicación de cómo procede el algoritmo a continuación:
Primero debe suponerse que hay una asignación de vehículos hecha para cada
cliente. Es una solución inicial compuesta por n rutas desde el depósito hasta
cada cliente. Así el coste total derivado de todas las rutas en este caso es:
∑
Posteriormente, se realiza el enlace entre los clientes i y j, lo que provoca que
ahora el vehículo se dirija desde el depósito a i, después a j y finalmente regrese
al depósito.
Tras realizar esto, se ha conseguido un ahorro en el coste de:
(
)
(
)
El algoritmo calcula para cada posible pareja de combinaciones (i,j) el ahorro Sij
ordena los resultados en orden decreciente. El número total de combinaciones
posibles viene determinado por el número combinatorio:
( )
2. Método del Barrido.
En este método, se representa el mapa de clientes y el depósito como puntos
sobre un plano en coordenadas polares (r,), siendo r la distancia en línea recta
entre el depósito y el cliente, y el ángulo formado entre los dos
Se procede haciendo rotar una recta con origen en el depósito y “barrer” el
plano hasta que las demandas de los clientes que han sido barridos sean igual a
la capacidad máxima permitida por el vehículo.
35
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Así, obtenemos diversos conjuntos de clientes donde la suma de la demanda
total requerida por cada conjunto es menor o igual a la que un vehículo es
capaz de suplir debido a su limitación de capacidad.
Para obtener la mejor ruta dentro de cada conjunto debe emplearse un
algoritmo destinado a esté a fin, como podría ser el anteriormente comentado
“Método de los ahorros”, consiguiendo así la ruta más económica posible para
cada conjunto.
La figura 3 muestra el modo en el que se forman los conjuntos de clientes
donde la demanda total es menor o igual que la que es capaz de proporcionar
un vehículo limitado por su capacidad.
Figura 3: Ejemplo Método de Barrido
3. Técnicas de búsqueda local
En este caso, el algoritmo también parte del conocimiento de una solución
inicial que deberá mejorar progresivamente. En cada iteración, el algoritmo se
mueve hacia una solución mejor que la anterior y el proceso global finaliza
cuando no es posible encontrar el movimiento que hace que la solución mejore.
Debido al procedimiento de las técnicas de búsqueda local, es normal que
lleguen a obtener la solución correspondiente de un óptimo local.
36
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Para resolver esta problemática, tendría que existir la posibilidad de que el
algoritmo pudiese moverse hacia soluciones “peores” para intentar encontrar
otra vía de avance hacia otro óptimo diferente del anterior. Esta posibilidad
conllevaría un algoritmo algo más complejo.
Lin y Kernighan desarrollaron un algoritmo que se basa en este hecho y
proponen movimientos compuestos, donde puede ocurrir un movimiento
simple que no mejore exclusivamente, pero que sin embargo, el global de todos
los movimientos si consiga mejorar la solución original.
La idea es la de realizar movimientos de mejora y de empeoramiento de forma
consecutiva, pero respetando la finalidad del algoritmo de manera que no se
pierda nunca el control sobre la mejora global de la búsqueda.
4.4.3. Métodos Metaheurísticos
Los métodos metaheurísticos están ligados a los procedimientos heurísticos ya
que intentan proporcionar mejoras sobre estos últimos. Se puede hacer una
clasificación según el tipo de heurística que se aborde, en este caso los métodos
metaheurísticos se clasifican en:
a) Métodos constructivos.
Aquellos donde se introducen elementos a una solución inicial vacía (algoritmo
GRASP).
b) Métodos Evolutivos.
Estos métodos construyen grupos de soluciones completas, realizan una
selección basándose en el valor de ciertos atributos, posteriormente se
combinan algunas de las soluciones seleccionadas y se remplazan finalmente el
grupo de soluciones (Algoritmo Genético, Búsqueda Dispersa).
c) Métodos de búsqueda.
Los métodos de búsqueda dan por hecho que debe existir una solución óptima
y ejecutan un procedimiento que no llega a la solución del óptimo global del
problema pero sí a una solución muy cercana a ésta. El riesgo más común de
estos métodos es el de obtener la solución de un óptimo local y quedar atrapado
en él.
37
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Los métodos de búsqueda local más importantes se desarrollan según la
manera que tienen de salir del óptimo local. Hay tres maneras de proceder:
I.
Retornar a una solución inicial diferente y volver a comenzar. (Multi
start)
Variación de la estructura de entornos. (Metaheurística de búsqueda de
entornos variables)
Realizar movimientos que empeoren la solución para salir del óptimo
local. Simulated annealing y Búsqueda Tabú.
II.
III.
1. GRASP. Greedy Randomized Adaptive Search Procedure
El algoritmo GRASP (en español puede traducirse como “Procedimiento de
Búsqueda Voraz Aleatorio y Adaptativo) fue desarrollado por (T.A. Feo and
M.G.C. Resende en 1995 [9] y se presentó como una metaheurística con
propósito general. En este método, cada iteración o paso, tiene dos fases:
construcción y mejora.
Durante la construcción se ejecuta una heurística constructiva de la que se
obtiene una solución inicial. Posteriormente en la fase de mejora, esta solución
inicial es tratada con un algoritmo de búsqueda local para ser mejorada.
El componente particular de este algoritmo es una función que se encarga de
seleccionar al elemento a incluir en la solución actual que proporciona el mejor
resultado sin llevar en consideración otros puntos de vista (de aquí la
característica de voraz)
El concepto de que es adaptativo viene de que tras cada iteración es actualizado
el beneficio conseguido tras la adición del elemento a la solución.
2.
Algoritmo Genético
El algoritmo genético genera en cada iteración un grupo de soluciones. Las
soluciones posteriores resultantes son una mezcla de las soluciones anteriores.
Así, a diferencia de otros algoritmos, aquí no se produce la transformación de
una única solución.
La teoría de la evolución de las especies de Darwin es la base de este algoritmo.
Las soluciones generadas a partir de otras conservarán algunas características
de éstas dependiendo del grado de mutación que se quiera conseguir en cada
iteración.
38
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
La mutación es el aspecto aleatorio de este algoritmo, y gracias a esta
característica queda resuelta la problemática de los óptimos locales
anteriormente comentada.
3. Simulated Annealing (Algoritmo de Recocido Simulado)
Básicamente es un método donde se construyen nuevas soluciones de un modo
aleatorio basado en determinadas reglas probabilísticas.
Es un algoritmo denominado Hill-Climbing y está basado en el recocido de los
metales donde se "calienta" a alta temperatura el sistema que se quiere
optimizar, para después rebajar la temperatura lentamente, hasta que ya no
ocurran modificaciones en el sistema. Aunque los cambios de temperatura
durante el proceso real se dan de forma continua, en el algoritmo sólo se
producen de forma escalonada.
4. Búsqueda Tabú
El algoritmo búsqueda tabú está basado en el concepto de movimientos
prohibidos (movimientos tabú) dentro de la solución que se quiere mejorar.
Estos movimientos tabú permiten al algoritmo moverse por una zona más
amplia de posibles soluciones sin caer en soluciones anteriormente ya
encontradas. Es lo que se conoce como “memoria”, y en la búsqueda tabú se
encuentra el desarrollo de memoria tanto a corto plazo como a largo plazo.
Debido a esto, se dice que es una búsqueda inteligente que aprende a medida
que itera el algoritmo a partir de la solución inicial. El modo de salir de óptimos
locales encontrados es mediante técnicas de diversificación aleatorias pero
inteligentes, es decir, respetando a la memoria a largo plazo, que es la que guía
a la diversificación hacia zonas inexploradas.
39
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
5. ALGORITMO BÚSQUEDA TABÚ
La búsqueda Tabú se origina tras intentar dar “inteligencia” a los algoritmos
basados en la búsqueda local. Fred Glover fue el primero que la definió, “La
búsqueda tabú conduce un procedimiento de búsqueda local para explorar el
espacio de soluciones alternativas al óptimo local”.
La Inteligencia Artificial proporciona a la búsqueda tabú el uso de “memoria”,
la cual es implementada a partir de estructuras simples para lograr direccionar
la búsqueda contando con la historia de la memoria. El procedimiento extrae
información de lo que sucedió anteriormente y actúa en consecuencia. Debido a
esto, se dice que existe aprendizaje y que es una búsqueda inteligente.
La búsqueda tabú permite trasladarse a soluciones que no sean tan buenas
como la actual, de este modo puede escapar de óptimos locales para continuar
estratégicamente buscando soluciones aún mejores [6].
5.1. Desarrollo histórico
El origen de la Búsqueda Tabú (Tabú Search) data de finales de los 70. Fred
Glover introdujo oficialmente el nombre y su metodología en dos artículos en
1989 [12].
En palabras de Glover:
“La búsqueda tabú tiene sus orígenes en procedimientos
combinatorios aplicados a problemas de cubrimiento no
lineales en los finales de los años 70 y aplicada
subsecuentemente a una diversa colección de problemas
que van desde secuenciación y balance de canales de
computación hasta análisis de clusters y planeamiento de
espacio”
El término tabú (taboo) procede de la Polinesia [10], donde los aborígenes de la
isla Tonga usan el término cuando se refieren a elementos que no se pueden
tocar porque son sagrados. Una definición más moderna es: “Una prohibición
impuesta por costumbres sociales como una medida de protección”, y también
como “marcada como que constituye un riesgo”, esta acepción es la que está
más cerca de la esencia del método donde el riesgo a ser evitado es el de seguir
40
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
un camino no productivo, incluyendo el de ser conducido a una trampa de la
que no se puede salir (óptimo local).
5.2. Definiciones
Se presentan primero algunos conceptos propios de los métodos de búsqueda y
luego los conceptos específicos de la búsqueda tabú.
Conceptos de los métodos de búsqueda:

Dado un problema P de optimización combinatoria utilizaremos x para
denotar el conjunto de soluciones posibles del problema y c para la
función objetivo.

Cada solución tiene un conjunto de posibles soluciones asociadas, que se
denomina entorno o vecindario de x y se denota como N(x).

Cada solución del entorno puede obtenerse directamente a partir de x
mediante una operación llamada movimiento.
La solución Inicial xo dependerá del algoritmo específico que la genera, se
puede usar una heurística para proporcionar una buena solución inicial o se
puede partir de una solución obtenida aleatoriamente, lo usual es utilizar el
conocimiento que se tiene de dónde podría haber una buena solución, pero, si
no se tiene ninguna información puede partirse de cualquier valor y mejorarlo
en el proceso de solución.
Un procedimiento de búsqueda local parte de una solución inicial xo, calcula su
vecindario N(xo) y escoge una nueva solución x1 en ese vecindario, de acuerdo a
un criterio de selección pre establecido. Es decir, realiza un movimiento que
aplicado a xo da como resultado x1, este proceso se realiza reiteradamente.
Se pueden definir diferentes criterios para seleccionar una nueva solución del
entorno. Uno de los criterios más simples consiste en tomar la solución con
mejor evaluación de la función objetivo, siempre que la nueva solución sea
mejor que la actual. Este criterio, conocido como greedy (voraz, goloso), permite
ir mejorando la solución actual mientras se pueda.
Como especifica Martí [19] “El óptimo local alcanzado no puede mejorarse
mediante el movimiento definido. Sin embargo, el método empleado no
41
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
permite garantizar, de ningún modo, que sea el óptimo global del problema.
Más aún, dada la “miopía” de la búsqueda local, es de esperar que en
problemas de cierta dificultad, en general no lo sea.”
El algoritmo se detiene cuando la solución no puede ser mejorada o cuando se
cumple el criterio de parada. El riesgo que se corre es el de haber encontrado
una solución óptima local, no la solución global del problema dada la “miopía”
del método utilizado.
Al aplicar un método de búsqueda cualquiera pueden presentarse dos
problemas:
1. El algoritmo puede ciclar, revisitando soluciones ya vistas, por lo que
habría que introducir un mecanismo que lo impida.
2. El algoritmo podría iterar indefinidamente, por lo que se establece un
criterio de parada.
Esta limitación de los métodos de búsqueda es el punto de inicio de muchas de
las técnicas metaheurísticas, entre ellas la Búsqueda Tabú.
5.3. Conceptos de la búsqueda tabú
La búsqueda tabú puede ser aplicada directamente a expresiones verbales o
simbólicas, sin necesidad de transformarlas a expresiones matemáticas, el
requerimiento x∈S (x es una solución factible) puede, por ejemplo, especificar
condiciones lógicas o interconexiones que pueden ser difíciles de expresar
matemáticamente por lo tanto será mejor dejarlas como expresiones verbales y
codificarlas como reglas. Una solución pertenece al conjunto de élite
dependiendo de su puntaje, (threshold) el cual está relacionado con la función
objetivo de la mejor solución encontrada durante la búsqueda, un óptimo local
pertenece al conjunto de élite.
La característica que distingue a la Búsqueda Tabú de las otras metaheurísticas
de búsqueda es el uso de la memoria la cual tiene una estructura basada en una
lista tabú y unos mecanismos de selección del siguiente movimiento.
La lista tabú es una lista (linked list) en el contexto computacional [5], donde se
registran aquellas soluciones o atributos de soluciones que no deben ser
elegidas.
Una forma sencilla de construir una lista tabú consiste en que cada vez que se
realiza un movimiento, se introduce su inverso (si se pasó de xo a x1 , el inverso
42
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
es x1 a xo) en una lista circular, de forma que los elementos de dicha lista están
penalizados durante un cierto tiempo.
Por tanto, si un movimiento está en la lista tabú no será aceptado, aunque
aparentemente sea mejor solución que la solución actual.
La lista tabú puede contener:

Soluciones visitadas recientemente

Movimientos realizados recientemente o

Atributos o características que tenían las soluciones visitadas.
El tamaño de la lista tabú (tabu tenure) es el tiempo o número de iteraciones
que un elemento (movimiento o atributo) permanece en la lista tabú. Si todos
los elementos tienen la misma “tenure”, ésta estará identificada por la longitud
de la lista tabú, sin embargo si es variable, todos los elementos de la lista tabú
no tendrán la misma “tenure”, un elemento que entró a la lista tabú antes que
otro podría salir mucho después. Esto es, por ejemplo si existiesen dos tipos de
movimientos, denominados tipo 1 y tipo 2, si un movimiento tipo 1 tiene
asociada una “tenure” de 5 y entra a la lista tabú en la iteración 30, (saldrá en la
iteración 35) y si un movimiento tipo 2 tiene asociada una “tenure” de 2 y entra
a la lista tabú en la iteración 31, saldrá de la misma en la iteración 33, entró
después, pero sale antes.
Por ejemplo si se está construyendo un árbol en un grafo, se parte de un nodo y
se van agregando nodos (con su consiguiente arista), después de algunas
iteraciones puede necesitarse retirar una arista (con su correspondiente nodo),
se tienen pues dos tipos de movimientos: agregar una arista (tipo 1) y retirar
una arista (tipo 2). Cuando una arista se agrega al árbol se hace una entrada a la
lista tabú que penaliza su salida durante k1 iteraciones, análogamente cuando
sale se hace una entrada en la lista tabú que penaliza su entrada durante k2
iteraciones, como hay más aristas fuera del árbol que en él, se ve razonable
implementar una estructura tabú que mantenga a una arista recientemente
retirada con la condición tabú más tiempo (para dar oportunidad a otras
aristas) que a una arista recientemente agregada [10].
Al igual que las costumbres sociales pueden cambiar con el tiempo, las
soluciones tabú pueden dejar de serlo sobre la base de una memoria cambiante.
Debe haber una forma de “olvido estratégico”, es decir, que una solución o
atributo pueda salir de la lista tabú antes de que se cumpla su plazo.
43
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Esto se implementa a través del Criterio de Aspiración, el cual permite que un
movimiento sea admisible aunque esté clasificado como tabú.
Las aspiraciones son de dos clases:

aspiraciones de movimiento.

aspiraciones de atributo.
Una aspiración de movimiento, cuando se satisface, revoca la condición tabú
del movimiento. Una aspiración de atributo, cuando se satisface revoca el status
tabú del atributo. En éste último caso el movimiento puede o no cambiar su
condición de tabú, dependiendo de sí la restricción tabú puede activarse por
más de un atributo.
Se pueden tener los siguientes criterios de aspiración:

Aspiración por Default: Si todos los movimientos posibles son
clasificados como tabú, entonces se selecciona el movimiento “menos
tabú”, es decir, si el movimiento m1 está penalizado en la lista tabú
durante 2 iteraciones más y m2 está penalizado durante 1, m2 es menos
tabú que m1.

Aspiración por Objetivo: Una aspiración de movimiento se satisface,
permitiendo que un movimiento x sea un candidato para seleccionarse
si, por ejemplo, F(x) < mejor costo (en un problema de minimización).

Aspiración por Dirección de Búsqueda: Un atributo de aspiración para la
solución “s” se satisface si la dirección en “s” proporciona una mejora y
el actual movimiento es un movimiento de mejora. Entonces “s” se
considera un candidato.
Se define el concepto de movimiento por ser esencial para comprender el
método de Búsqueda Tabú [12].
Sea la función objetivo de un problema P de optimización combinatoria

Minimizar c(x) : x ∈ X en Rn
Donde X es el conjunto de soluciones factibles (discreto)
44
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Para resolver P se puede establecer convenientemente una secuencia de
movimientos que llevan de una solución tentativa a otra.
Se define un movimiento “s” como el mapeo definido en un subconjunto X(s)
de X, s: X(s) → X
Por ejemplo si el algoritmo está en el nodo i, (la solución factible i) los
movimientos posibles son aquellos arcos que unen el nodo i con alguno de sus
nodos adyacentes (otras posibles soluciones que se derivan de la solución i).
A x ∈ X está asociado el conjunto N(x) (vecindario o entorno) el cual contiene
los movimientos s ∈ S que pueden ser aplicados a x, es decir:
N(x) = {s ∈ S: x ∈ X(s)}
En la i-ésima iteración, para evolucionar hacia otras soluciones, se selecciona
éstas en un entorno N(xi), pero que no estén en la lista Tabú: (N(xi) – {Lista
Tabú}), evaluando cada una de las soluciones y quedándose con la mejor (que
obviamente no es tabú).
Para realizar una búsqueda completa, es deseable que el tamaño del entorno no
sea elevado. Si se considera un entorno de tamaño grande, con objeto de reducir
el tiempo de computación, se puede realizar la búsqueda en un subconjunto
tomado aleatoriamente.
Supongamos que el vecindario que se debe evaluar para determinar el siguiente
movimiento es “grande” y es muy costoso en términos de tiempo de
computación evaluar todos y cada uno de los vecinos, se pueden usar algunos
procedimientos aleatorios tales como los métodos de Monte Carlo que
muestrean el espacio de búsqueda hasta terminar finalmente mediante alguna
forma de limitación de iteración. En todo caso se debe determinar el número de
muestras y el tamaño de las mismas de tal modo que no ocasione más tiempo
de procesamiento que una revisión exhaustiva del vecindario.
5.4. Características de la búsqueda tabú (uso de la
memoria)
La búsqueda tabú se caracteriza porque utiliza una estrategia basada en el uso
de estructuras de memoria para escapar de los óptimos locales, en los que se
puede caer al “moverse” de una solución a otra por el espacio de soluciones.
45
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Las estructuras de memoria usadas son de dos tipos:

Explicita: Cuando la solución se almacena de manera completa, se
registran soluciones de élite visitadas durante la búsqueda. por ejemplo
{x1,x5,x7} donde las xi son soluciones ocurridas en iteraciones anteriores.
Una extensión de esta memoria explícita registra vecindarios altamente
atractivos pero inexplorados de las soluciones de élite.

De atributos: Se guarda información acerca de ciertos atributos de las
soluciones pasadas, para propósitos de orientación de la búsqueda. Este
tipo de memoria registra información acerca de los atributos o
características que cambian al moverse de una solución a otra. Por
ejemplo en un grafo los atributos pueden consistir en nodos o arcos que
son aumentados, eliminados o reposicionados por el mecanismo de
movimientos.
La memoria, por lo tanto puede ser explícita o de atributos o ambas.
En síntesis, la estructura de memoria explicita almacena soluciones de élite (que
dan un óptimo local) y la memoria de atributos tiene como propósito guiar la
búsqueda.
Es importante considerar que los métodos basados en búsqueda local requieren
de la exploración de un gran número de soluciones en poco tiempo, por ello es
crítico el reducir al mínimo el esfuerzo computacional de las operaciones que se
realizan a menudo, lo que se puede conseguir registrando los atributos de las
soluciones en vez de éstas para orientar la búsqueda más rápidamente.
La estructura de la memoria en la metaheurística de búsqueda tabú opera en
relación a cuatro dimensiones principales [10]:

Calidad

Influencia

Corto plazo (lo reciente)

Largo plazo (lo frecuente)
La calidad se refiere a la habilidad para diferenciar el mérito de las soluciones,
identifica qué las hace tan buenas e incentiva la búsqueda para reforzar las
acciones que conducen a una buena solución y desalienta aquellas que
conducen a soluciones pobres.
46
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
La flexibilidad de la estructura de memoria permite que la búsqueda sea guiada
en un contexto multiobjetivo, donde la bondad de una dirección de búsqueda
particular puede estar determinada por más de una función, el concepto de
calidad en la búsqueda tabú es más amplio que el usado implícitamente en los
métodos de optimización, en los cuales se considera que un movimiento es de
mejor calidad que otro porque produce una mejor “mejora” (tal es el caso del
descenso más rápido), bajo el enfoque de búsqueda tabú un movimiento puede
ser de mejor calidad si, por ejemplo, su frecuencia de ocurrencia en el pasado es
baja o no ha ocurrido antes y nos permite explorar nuevas regiones. La
definición de calidad de una solución es flexible y puede ser adaptado a la
naturaleza del problema.
La dimensión influencia, considera el impacto de las elecciones hechas durante
la búsqueda, mide el grado de cambio inducido en la estructura de la solución o
factibilidad, no sólo en calidad sino también en estructura, en un sentido la
calidad puede entenderse como una forma de influencia. Registrar información
acerca de las elecciones de un elemento de una solución particular incorpora un
nivel adicional de aprendizaje, registra qué elementos o atributos generan ese
impacto. Esta noción puede ser ilustrada para el problema de distribuir objetos
desigualmente pesados entre cajas, donde el objetivo es dar a cada caja, tan
aproximadamente como sea posible, el mismo peso. Un movimiento que
transfiere un objeto muy pesado de una es un movimiento de alta influencia,
cambia significativamente la estructura de la solución actual, otro que
intercambia objetos de pesos similares entre dos cajas no introduce mayor
influencia. Tal movimiento puede no mejorar la solución actual, la solución
actual es relativamente buena.
Se privilegian los movimientos etiquetados como influyentes, pero esto no
quiere decir que no se opte en alguna iteración por uno poco influyente, pues
éstos pueden ser tolerados si proporcionan mejores valores hasta que las
mejoras a partir de ellos parezcan ser insignificantes. En tal punto, y en
ausencia de movimientos de mejora, los criterios de aspiración cambian para
dar a los movimientos influyentes un rango mayor y éstos puedan salir de la
lista tabú antes del plazo establecido en su tabú tenure.
En el problema de distribuir objetos desigualmente pesados entre cajas, donde
el objetivo es dar a cada caja, tan aproximadamente como sea posible, el mismo
peso, una solución de calidad puede ser aquella que hace que la diferencia de
pesos de las cajas sea pequeña, es decir las cajas están aproximadamente
balanceadas.
47
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Estas dos dimensiones de la memoria: calidad e influencia, pueden estar
consideradas de manera explícita en el algoritmo tabú, es decir, incluir una
estructura de datos que registre la etiqueta de un movimiento o solución como
de calidad y/o influyente paralela al registro de su condición tabú o no tabú; o
puede estar dada de manera implícita, como considerar que es de calidad si es
un óptimo local y/o considerar que es influyente si permite diversificar la
búsqueda. Sin embargo las otras dos dimensiones: memoria de corto plazo y la
de largo plazo, siempre van expresadas de manera explícita por medio de la
lista tabú y de la tabla de frecuencias.
Una distinción importante en la búsqueda tabú es la de diferenciar la memoria
de corto plazo y la de largo plazo, cada tipo de memoria tiene sus propias
estrategias, sin embargo, el efecto de la utilización de ambos tipos de memoria
es el mismo: modificar el vecindario N(x) de la solución actual x (convertirlo en
un nuevo vecindario N’(x)) En la memoria de corto plazo, el vecindario es
generalmente:
N’(x) = {N(x) – Lista Tabú} , N’(x) ⊂ N(x)
En las estrategias que usan la memoria de largo plazo N’(x) puede ser
expandido para incluir otras soluciones que no están en N(x).
En ambos casos el vecindario de x, N(x) no es un conjunto estático sino un
conjunto que varía dinámicamente de acuerdo a la historia de la solución x.
En esencia la memoria de corto plazo utiliza la estructura tabú para penalizar la
búsqueda y la memoria de largo plazo utiliza las frecuencias para determinar si
un movimiento no tabú puede ser elegido o no.
Memoria basada en lo reciente (corto plazo)
Es una “memoria” donde se almacenan los últimos movimientos realizados, y
que puede ser utilizada para “recordar” aquellos movimientos que hacen caer
de nuevo en soluciones ya exploradas. Su objetivo es penalizar la búsqueda
para evitar el ciclado.
Es una manera de definir el entorno o vecindario reducido de una solución,
consiste en etiquetar como tabú las soluciones previamente visitadas en un
pasado cercano (recency), ciertos movimientos se consideran prohibidos (tabú),
de forma que no serán aceptados durante un cierto tiempo o un cierto número
de iteraciones, se considera que tras un cierto número de iteraciones la
búsqueda está en una región distinta y puede liberarse del status tabú.
48
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Memoria basada en frecuencia (largo plazo)
La memoria basada en frecuencia proporciona un tipo de información que
complementa la información proporcionada por la memoria basada en lo
reciente, ampliando la base para seleccionar movimientos preferidos. Como lo
reciente, la frecuencia a menudo toma en cuenta las dimensiones de calidad de
la solución e influencia del movimiento. En esta estructura de memoria se
registra la frecuencia de ocurrencias de los movimientos, las soluciones o sus
atributos y puede ser:

Frecuencia de transiciones.- Cantidad de veces que una solución es la
mejor o cantidad de veces que un atributo pertenece a una solución
generada.

Frecuencia de residencia.- Cantidad de iteraciones durante la cual un
atributo pertenece a la solución generada.
Una alta frecuencia de residencia, por ejemplo, puede indicar que un atributo es
altamente atractivo si S es una secuencia de soluciones de alta calidad, o puede
indicar lo contrario si S es una secuencia de soluciones de baja calidad. Por otro
lado, una frecuencia de residencia que es alta (baja) cuando S contiene tanto
soluciones de alta como de baja calidad puede apuntar a atributo fortalecido (o
excluido) que restringe al espacio de búsqueda, y que necesita ser desechado (o
incorporado) para permitir diversidad.
La memoria a largo plazo tiene dos estrategias asociadas:

Intensificación de la búsqueda.

Diversificación de la búsqueda.
La intensificación consiste en regresar a regiones ya exploradas para
estudiarlas más a fondo. Para ello se favorece la aparición de aquellos atributos
asociados a buenas soluciones encontradas.
Para evitar regresar a óptimos locales cada cierto número de iteraciones, la
búsqueda tabú utiliza además otra estrategia, como es la diversificación.
La diversificación consiste en visitar nuevas áreas no exploradas del espacio de
soluciones. Para ello se modifican las reglas de elección para incorporar a las
soluciones atributos que no han sido usados frecuentemente.
49
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Una forma clásica de diversificación consiste en reiniciar periódicamente la
búsqueda desde puntos elegidos aleatoriamente, si se tiene alguna información
acerca de la región factible se puede hacer un “muestreo” para cubrir la región
en lo posible, si no, cada vez se escoge aleatoriamente un punto de partida
(método multi arranque).
Otro método para diversificar propone registrar los atributos de los
movimientos más utilizados en los anteriores movimientos, penalizándolos a
través de una lista tabú a largo plazo y así explorar otros entornos.
El uso racional de estas dos estrategias da lugar a dos características de la
búsqueda tabú, el reencadenamiento de trayectorias y la oscilación estratégica.
Una integración de las estrategias de intensificación y diversificación consiste
en el re-encadenamiento de trayectorias (path relinking) [13].
Este acercamiento genera soluciones nuevas explorando trayectorias que
“conectan” soluciones de élite, (óptimos locales) comenzando desde una de esas
soluciones, llamada solución inicial, y generando un camino en el vecindario
que conduce a otras soluciones, llamadas soluciones que sirven de guía. En una
colección dada de soluciones de élite, el papel de la solución inicial y una
solución guía se pueden alternar. Esto es, se puede generar simultáneamente un
conjunto de soluciones actuales, extendiendo caminos diferentes, y permitiendo
que una solución inicial sea reemplazada (como una solución orientadora para
las otras) por otra, si ésta satisface un criterio de aspiración suficientemente
fuerte. Debido a que sus papeles son intercambiables, la solución inicial y la
guía son llamadas soluciones de referencia.
El proceso de generar caminos entre soluciones de referencia está acompañado
por movimientos de selección que introducen atributos contenidos en las
soluciones que operan como soluciones guías.
El proceso también puede continuar más allá de una solución de referencia
cambiando el criterio de selección de movimiento que estratégicamente
introducen atributos que no están en las soluciones guías.
En ambos casos, estos atributos están ponderados para determinar a cuáles
movimientos se les da una prioridad superior. La generación de tales caminos
dentro de un vecindario “reasocia” puntos previos en formas diferentes a las
registradas en la historia previa de búsqueda.
La oscilación estratégica guía los movimientos hasta que se llega a un límite
que por lo general representaría un punto donde el método debe parar. En
50
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
lugar de parar, se le permite al procedimiento cruzar ese límite modificando la
definición de entorno y el criterio de evaluación, La repetición de este proceso
oscilatorio de cruce de límite proporciona un marco adecuado para combinar
estrategias de intensificación y diversificación.
Una ventaja de esta estrategia es que al moverse fuera de la frontera y retornar
desde una diferente dirección se descubren oportunidades para mejoramiento
que no son alcanzables cuando la búsqueda está confinada de una manera
estrecha [12].
En la tabla 1 se presentan una lista de componentes del algoritmo Búsqueda
Tabú que es preciso que estén definidos de forma inequívoca.
Tabla 1: Componentes de la Búsqueda Tabú
51
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
6. DESARROLLO
TABÚ
DEL
ALGORITMO
2012
BÚSQUEDA
6.1. Introducción a la situación planteada
El algoritmo desarrollado está diseñado para aplicarse a Problemas de Ruteo de
Vehículos con Ventana Temporal de Acceso, habiendo respetado las
características generales de la Búsqueda Tabú anteriormente mostradas y
habiendo sido añadidas ciertas estrategias de intensificación y diversificación
que se desarrollarán a continuación durante este capítulo.
El esquema temporal que se plantea es el mostrado en la figura 4 mostrada a
continuación:
Figura 4: Esquema temporal
Siendo:

to = Inicio del horizonte temporal
 tf = Final del horizonte temporal
 tvc = Instante en el que comienza a actuar la ventana temporal
 tva = Instante en el que deja de actuar la ventana temporal
Haciendo referencia al modelo matemático del capítulo 3 de este proyecto, se
identifican tres variables temporales que se relacionan con las variables del
esquema temporal arriba expuesto:

La variable TVC (periodo con restricción de acceso)
o TVC = tva - tvc

La variable TA (periodo de tiempo previo al inicio del periodo con
restricción de acceso)
o TA = tvc – to
52
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado

2012
La variable TP (periodo de tiempo posterior al periodo con restricción de
acceso)
o TP = tf - tva
Otras variables temporales a tener en cuenta son las relacionadas con las
entradas y las salidas de los nodos destino durante la ruta. Se diferencian tres
variables, una de las cuales será dato del problema:

tin = Instante de llegada al nodo destino

tout

h = Duración de la entrega en el nodo destino = 20 minutos. Este valor
está fijado para todas las entregas independientemente del nodo destino.
= Instante de salida desde el nodo destino (i) hacia el siguiente
nodo (i+1)
6.2. Diagrama de flujo general
El diagrama de flujo principal de un algoritmo Búsqueda Tabú (figura 5) consta
realmente de 2 componentes principales, siendo estos, la Intensificación y la
Diversificación.
La búsqueda tabú es un algoritmo que actúa sobre
una solución inicial de entrada, por lo que se incluye
en este el proyecto el diseño del algoritmo que crea
la solución inicial, sin embargo la creación de la
solución inicial no forma parte del algoritmo
Búsqueda Tabú.
El bloque Intensificación es quizás el más importante
ya que es el encargado de la optimización local,
mientras que el bloque de Diversificación se encarga
de mover la solución hacía zonas inexploradas pero
de un modo que no optimiza, sino que empeora la
solución para poder salir del posible optimo local
alcanzado en la Intensificación.
Figura 5: Diagrama de
flujo general
53
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
6.3. Presentación de los parámetros
La complejidad del algoritmo, y sobre todo de su programación, obliga a definir
ciertos parámetros de modelización. Los parámetros del modelo son
parámetros de entrada que definen el comportamiento del algoritmo. Algunos
de ellos se han considerado críticos y se ha decidido hacer un estudio con el
objetivo de optimizar el rendimiento del algoritmo en términos de “calidad” de
la solución respecto a las iteraciones realizadas. El resto que no ha sido
considerado crítico, ha recibido un valor fijo y ha pasado a ser dato. Resulta
muy complicado hacer un estudio de optimización de parámetros considerando
todos ellos como críticos debido al tamaño del problema.
Se diferencian dos tipos de parámetros, los relacionados exclusivamente con
este proyecto en particular (Particulares) y aquellos comunes del problema de
ruteo de vehículos con ventana temporal de acceso (Comunes).
Parámetros Particulares y Críticos
a) “vecifitness”: Puede definirse como el número máximo de nodos
sometidos a evaluación por cada estrategia de intensificación.
b) “numelite”: Hace referencia al número de vectores solución (salidas de la
intensificación) consecutivos que se evalúan para definir el conjunto de
“cadenas élite”.
c) “radio”: Es el radio de búsqueda de vecinos cercanos entorno al nodo
bajo análisis.
d) “porcenmax”: Es el parámetro-condición que limita la pérdida de valor
de la función objetivo tras aplicar la diversificación sobre el vector
solución.
e) “numeroiteracionesmax”: Es el número máximo de iteraciones que se
ejecuta el algoritmo.
54
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Parámetros Comunes:
a) “Numparadas”: Es el número de clientes que se han de visitar. Define el
tamaño del problema.
b) “Radio de la zona restringida”: Es el radio que tiene la zona restringida
del problema a la que no se puede acceder mientras permanezca cerrada
la venta temporal de acceso.
c) “Tiempo VC”: Es el instante dentro del horizonte temporal a partir del
cual se cierra el acceso a la zona restringida. (Ventana Cerrada).
d) “Tiempo VA”: Es el instante dentro del horizonte temporal a partir del
cual se permite el acceso a la zona restringida. (Ventana Abierta).
Datos de Entrada:
1. “Porcen2”: Indica el número máximo de movimientos permitidos en la
Diversificación. Se ha tomado este valor como el 10% del número total de
paradas del problema.
2. “Numerotabu”: Define el número de iteraciones que permanece una
relación entre nodos calificada como tabú después de realizarse una
operación de intercambio o inserción entre ellas.
3. “Tiempoentregamax”: Es el tiempo que tarda un cliente en ser atendido.
Es un valor fijo, es decir, todas las paradas que los vehículos realizan en
los clientes duran el mismo tiempo.
6.4. Diseño de los algoritmos
Como se ha expuesto en el objetivo de este proyecto final de carrera, uno de
ellos es diseñar dos algoritmos basados en la búsqueda tabú y comparar los
resultados de sus experimentos con los obtenidos por aquellos realizados con
un algoritmo genético. A continuación se exponen dos algoritmos basados en la
búsqueda tabú: uno “básico” y otro “complejo”.
55
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
6.5. Desarrollo del algoritmo básico
El algoritmo básico está diseñado con las estrategias más sencillas posibles de
intensificación y diversificación.
El algoritmo comienza recibiendo una solución inicial en forma de vector de n
componentes (la metodología para obtener la solución inicial será expuesta en
apartados posteriores). Este vector de solución inicial será el elemento de
entrada al bloque de Intensificación (solo para la primera iteración, en las
posteriores el elemento de entrada será el vector solución de salida de la
Diversificación).
Debido a que uno de los objetivos de este proyecto es realizar una comparación
de los resultados obtenidos por este algoritmo con los obtenidos por el
algoritmo genético, se ha decidido usar el mismo método de evaluación para el
vector solución. Este método es una función llamada “Fitness” que se ejecuta
cada vez que quiero evaluar una posible solución. Así, a partir de ahora, cada
vez que nos refiramos al término “evaluación”, “evaluar”, etc… nos estaremos
refiriendo a aplicar la función Fitness sobre un vector solución. La salida de esta
función está compuesta por una matriz donde se expone el número de
vehículos utilizados, la ruta que cada vehículo realiza y el valor de la función
objetivo del modelo del programa, además de por dos matrices más que ofrecen
información sobre el instante de tiempo en el que cada vehículo llega y sale de
cada nodo destino.
El algoritmo “básico” aquí descrito posee una estructura igual a la mostrada en
el diagrama de flujo de la figura expuesta anteriormente.
El algoritmo comienza evaluando la solución inicial que es un elemento de
entrada provisto por un algoritmo externo a este. Posteriormente se entra en el
bloque Intensificación.
Bloque Intensificación
La intensificación es iterativa siempre que no se cumplan las condiciones de
salida de la intensificación. Comienza con la elección del primer nodo del vector
solución, nodo i. Primero se comprueba la situación temporal y geográfica en la
que se encuentra el nodo, esto es, indicar si es un nodo interno o externo a la
zona restringida y ver el instante de tiempo que es respecto al horizonte
temporal. Dependiendo de la situación temporal y geográfica, se le asignará un
56
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
valor a un indicador, llamado “indicador2”, que dice qué tipo de vecinos se
deben buscar.
A continuación se pasa a la búsqueda de vecinos, este es un proceso simple,
donde se localizan los nodos cercanos (el radio de búsqueda es uno de los
parámetros que se han estudiado para encontrar la parametrización óptima) y
que cumplen las condiciones impuestas por el indicador antes comentado.
Una vez obtenidos los vecinos, se procede al análisis de la estrategia de
intensificación implantada. En este caso se ha optado por la estrategia
denominada “Intercambio puro de vecinos” cuyo proceder es el siguiente:
1. Para cada vecino, se realiza el cálculo de la distancia que resultaría de
intercambiar el nodo bajo estudio “i” por el vecino “k”, esto es la suma
de distancias entre la parada "(i-1)" y el vecino k y entre el vecino k y la
parada “(i+1)”. Es decir:

Distancia medida = Distancia ((i-1), (k)) + Distancia ((k), (i+1))
2. Se almacenan las distancias anteriores de una forma ordenada de
menor a mayor (las “vecifitness” menores distancias, siendo
“vecifitness” un parámetro del problema analizado) puesto que
buscamos disminuir la distancia entre (i-1) e (i+1), creándose una matriz
denominada: “matrizdistvecinalorden”.
3. Ahora se pasa a “evaluar” cada posible intercambio de nodo y
almacenamos los resultados de la evaluación. Si a lo largo de la
evaluación nos encontramos con un vecino tabú (nos referimos a que el
intercambio entre el nodo parada bajo estudio y el vecino sea prohibido
por así indicarlo la lista tabú) el algoritmo se saltará el vecino y no
evaluará su intercambio con el nodo bajo estudio, a no ser que se
cumpla el Criterio de Aspiración tenido en cuenta: si la primera fila de
“matrizdistvecinalorden” corresponde a un vecino tabú, entonces sí se
tiene en cuenta para su evaluación.
4. Tras la evaluación, se selecciona el vecino para el que conseguimos el
valor mínimo de la evaluación (función objetivo mínima) y se compara
con el valor de la función objetivo que tiene el vector solución actual sin
realizar el intercambio con el vecino seleccionado.
57
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
A modo de aclaración se puede apreciar en la figura 6 el proceso de intercambio
puro:
Figura 6: Esquema de intercambio puro
La comparación realizada puede dar lugar a dos situaciones, que se realice el
intercambio o que no se realice. En el caso de que se realice el intercambio en el
vector solución, se modificará la lista tabú incrementándose con el Número
Tabú (parámetro del problema) el nodo (k,i) de la matriz “ListaTabu”. Si no se
realiza ningún intercambio, lo que significaría que la función objetivo actual es
menor que la ofrecida por el mejor intercambio, entonces no se realiza ninguna
acción sobre la Lista Tabú. A continuación se pasa a estudiar la siguiente
posición del vector solución, y así se procede hasta completar todas las
posiciones del vector solución (vector de tamaño igual a “Numparadas”, que es
parámetro del problema).
Tras estudiar el último nodo del vector solución, se pasa a comprobar el valor
de la función objetivo final con la que se tenía al iniciar la intensificación. Si
estos valores son iguales, o si el número de veces que se ha ejecutado la
intensificación es mayor a 40, entonces finaliza la intensificación, en caso
contrario se vuelve a iterar la intensificación.
Tras salir del bucle de la intensificación se realiza la actualización de la Lista
Tabú, esto es, disminuir los valores de la Lista en una unidad (menos los
valores aumentados durante la intensificación). Seguidamente comienza el
bloque de Diversificación.
58
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Bloque Diversificación
La idea de la Diversificación es salirse de los posibles óptimos locales
encontrados durante la intensificación y llegar a otras posibles soluciones que
conduzcan a diferentes óptimos locales o incluso al óptimo global. Para ello se
realiza una inserción de nodos aleatoria con condiciones siguiendo el siguiente
proceso:
Primero se seleccionan aleatoriamente dos elementos (“aleat”) del vector
solución, llamados “aleat” y “aleat2”. Seguidamente se realiza el intercambio
entre ellos y se evalúa el intercambio realizado con la función “fitness”.
A continuación se someten los resultados de la evaluación a las condiciones de
la diversificación:

Condición de Intercambio: comprueba que tras hacer el intercambio no
se ha incrementado más del 20% el valor de la función objetivo. En caso
de que si se haya superado, primero se deshace el intercambio anterior y
se procede la selección aleatoria de otros dos elementos para proceder al
proceso de intercambio. Si continuamente (50 veces) ocurre esto, es decir,
que se aumenta más del 20% el valor de la función objetivo, al final el
algoritmo finaliza esta etapa y pasa a las siguientes condiciones de
diversificación.

Condiciones de Diversificación: Si se cumple alguna de ellas, el
algoritmo finaliza la diversificación, si no se cumple ninguna, vuelve a
iterar desde el inicio de la diversificación. Las condiciones son:
o Que se hayan hecho más intercambios que un 10% del número
total de nodos destino
o Que la pérdida del valor de la función objetivo sea mayor al
máximo permitido “porcenmax” (parámetro del problema )
o Que al realizar algún intercambio haya disminuido la función
objetivo (haya mejorado)
o Que se haya producido el salto desde la condición de intercambio
por incapacidad de intercambiar los elementos seleccionados.
59
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Una vez que se cumple alguna de las Condiciones de Diversificación el
algoritmo pasa la comprobación final, que son las condiciones finales, éstas
son simplemente dos, y si se cumple alguna de ellas el algoritmo finaliza su
ejecución, las condiciones son las siguientes:

Que se haya llegado a un número de iteraciones
“numeroiteracionesmax” (parámetro del problema).

Que se haya producido el anterior salto comentado por incapacidad de
intercambio.
máximo
Tras cumplir alguna de las condiciones finales el algoritmo finaliza quedando
guardadas las diferentes soluciones obtenidas a lo largo de las intensificaciones
realizadas por el algoritmo.
6.6. Desarrollo del algoritmo complejo.
El diagrama de flujo del algoritmo complejo diseñado tiene una variante
respecto al diagrama de flujo general antes mostrado. Como paso intermedio
entre la intensificación
y la diversificación se ha añadido el bloque Pre-
Diversificación, en el cual, se preparan ciertos elementos del programa para su
posterior entrada en la Diversificación. La figura 7 a continuación muestra el
diagrama de flujo final para el algoritmo complejo:
Figura 7: Diagrama de flujo del algoritmo Búsqueda Tabú Complejo
Además de haber añadido un bloque adicional al diagrama, también se han
añadido ciertas estrategias dentro de los bloques de Intensificación y
Diversificación. A continuación se expone el modo de actuar del algoritmo
“complejo” haciendo comparaciones con el algoritmo “básico” para ver las
principales diferencias de diseño.
60
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Al igual que en el algoritmo “básico”, el algoritmo “complejo” también es
alimentado con una solución inicial, la cual se obtiene con la misma
metodología que la solución inicial del algoritmo “básico”. Ésta se evalúa y
seguidamente empieza la intensificación.
Bloque Intensificación
El bloque de intensificación del algoritmo “complejo” sufre una modificación
sustancial respecto al del algoritmo “básico” ya que cuenta con dos estrategias
de mejora en lugar de una.
El desarrollo del proceso de intensificación transcurre exactamente del mismo
modo que en el algoritmo “básico” salvo porque a la hora de analizar los
vecinos primero se analizan mediante la estrategia ya conocida “Intercambio
puro de vecinos” y posteriormente con la estrategia añadida “Inserción de
vecinos”. Las estrategias son totalmente independientes la una de la otra. El
hecho de implementar en Matlab una estrategia antes que la otra es irrelevante.
A continuación se va a explicar el procedimiento de la estrategia “Inserción de
vecinos” y se va a omitir la de la estrategia “Intercambio puro de vecinos”
puesto que ya ha sido explicada anteriormente en el apartado anterior donde se
desarrolló el algoritmo “básico”. La estrategia “Inserción de vecinos” procede
del siguiente modo:
1. De un modo parecido a la estrategia “Intercambio de vecinos”
anteriormente explicada se realiza el cálculo de distancias. Esta vez
obtendremos dos distancias diferentes para cada vecino, según se
inserte el vecino delante o detrás del nodo (i) bajo estudio, es decir:


Distancia medida 1 = Distancia ((i-1), (k)) + Distancia ((k), (i)) +
Distancia ((i), (i+1))
Distancia medida 2 = Distancia ((i-1), (i)) + Distancia ((i), (k)) +
Distancia ((k), (i+1))
2. Tras esto se procede al ordenamiento de las
medidas tomadas.
“vecifitness” mejores
61
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
3. Se continúa con la “evaluación” de cada posible inserción de nodo y se
almacenan los resultados de la evaluación. Si a lo largo de la evaluación
nos encontramos con un vecino tabú (nos referimos a que el
intercambio o inserción entre el nodo parada bajo estudio y el vecino
sea prohibido por así indicarlo la lista tabú) el algoritmo se saltará el
vecino y no evaluará su intercambio con el nodo bajo estudio, a no ser
que se cumpla el Criterio de Aspiración tenido en cuenta: si la primera
fila de “matrizdistvecinalordeninser” corresponde a un vecino tabú,
entonces sí se tiene en cuenta para su evaluación.
4. Para finalizar, terminada la evaluación, se busca el vecino para el que
conseguimos el valor mínimo de la evaluación y lo almacenamos para
compararlo con el resultado que se obtuvo en la primera estrategia de
intensificación. Se muestra a continuación la figura 8 donde se exponen
las dos opciones de inserción.
Figura 8: Esquema de la inserción de vecinos
Una vez que tenemos los resultados óptimos de las dos estrategias de
intensificación se comparan los resultados (nos referimos al valor de la función
objetivo obtenido de las evaluaciones) con el valor de la función objetivo actual,
es decir, la que le corresponde al vector solución sin realizarse ningún
intercambio o inserción.
En el caso de que se realice alguna modificación en el vector solución, se
modificará la lista tabú (incrementándose con el Número Tabú el nodo (k,i) de
la matriz “ListaTabu”. Si no se realizase ninguna modificación, es decir, que la
función objetivo actual sea menor que la ofrecida por el mejor intercambio y la
mejor inserción, entonces no se realizaría ninguna acción sobre la Lista Tabú. A
continuación se pasaría a estudiar la siguiente posición del vector solución, y así
se procedería hasta completar las “nodos paradas” posiciones del vector
solución.
62
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Tras estudiar el último nodo del vector solución, se pasa a comprobar el valor
de la función objetivo final con la que se tenía al iniciar la intensificación. Si
estos valores son iguales, o si el número de veces que se ha ejecutado la
intensificación es mayor a 40 finaliza la intensificación pasando al bloque de
Pre-Diversificación, en caso contrario se vuelve a iterar la intensificación.
Bloque Pre-Diversificación: creación de Cadenas Élite
Este es un bloque donde no se modifica el vector solución, sino donde se
preparan ciertas estructuras matriciales que serán de utilidad para las
estrategias empleadas para diversificar la búsqueda. Inicialmente se realiza la
actualización de la Lista Tabú (disminuir los valores de la Lista en una unidad
salvo los valores aumentados durante la intensificación).
Posteriormente se procede a la creación de la matriz de cadenas élite. Una
cadena élite se define como una cadena de como mínimo 3 nodos que se repite
en los últimos vectores solución resultantes de las ultimas intensificaciones
(Nos referimos con “últimos” al valor del parámetro “numelite” antes
expuesto).
La estrategia de cadenas elite que se ha aplicado deriva de una estrategia
propuesta en el año 2000 por Tan K.C., Lee L.H. y Zhu K.Q. [23].Se va a
proceder a explicar la metodología para su creación:
1. Una vez se tienen almacenadas como mínimo un número de “numelite”
soluciones óptimas locales obtenidas de la intensificación comienza la
creación de la matriz de cadenas élite.
2. Se selecciona un elemento del vector solución (1). Se busca en la solución
anterior que el elemento seleccionado y los dos posteriores estén los tres
seguidos en el mismo orden independientemente de su posición dentro
del vector solución de la intensificación anterior (2). Si esto ocurre, se
pasa a buscar la misma cadena en el vector solución siguiente (3), y así
hasta comprobar los “numelite” vectores soluciones óptimos locales. Si la
cadena bajo análisis, se encuentra en todos los vectores solución
comprobados, entonces se declara cadena elite, se almacena en la matriz
de cadenas élite y el bucle comienza de nuevo.
3. En el caso de que una cadena no se encuentre en todos los vectores
solución óptimos locales anteriores, el bucle comienza de nuevo
seleccionando el elemento inmediatamente posterior para analizarlo.
Este procedimiento se realiza un número de “Numparadas-2” veces,
tantas como cadenas diferentes puede haber.
63
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
En la figura 9 se muestra un esquema del proceso:
Figura 9: Cadenas élite
Tras terminar de crear la matriz de cadenas élite comienza el bloque de
Diversificación.
Bloque Diversificación
El bloque de diversificación del algoritmo “complejo” sufre dos modificaciones
sustanciales respecto al del algoritmo “básico”. Se sustituye la estrategia de
diversificación “completamente” aleatoria implementada en el algoritmo
“básico” por una estrategia compuesta por dos estrategias simples, la estrategia
de cadenas elite y una estrategia basada en listas tabú.
A continuación se explica el procedimiento completo de la diversificación:
1. Primero se selecciona aleatoriamente un elemento (“ele”) del vector
solución, compruebo que es un elemento que no he seleccionado en
alguna iteración anterior de la diversificación en la que nos encontramos
(se comprueba mediante una lista en forma de vector llamada
“ListaTabu2” donde los elementos toman valor uno cuando han sido
seleccionados y movidos de su posición), en caso de haber sido
seleccionado anteriormente se volvería a escoger aleatoriamente un
nuevo nodo (“ele”) como al principio. Una vez superado esa
comprobación el algoritmo continúa seguidamente comprobando si el
elemento pertenece a una cadena élite o no. En caso de que pertenezca
volverá al inicio a seleccionar un nuevo elemento (“ele”) aleatoriamente.
64
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
2. Tras tener seleccionado el elemento que se va a insertar en alguna
posición aleatoria del vector solución, se procede a seleccionar la
posición donde se va a insertar. El algoritmo no selecciona realmente una
posición, sino otro elemento (llamado “coloq”) en cuya posición se
insertará el elemento “ele”. El algoritmo comprobará que el elemento
seleccionado “coloq” no está en medio de ninguna cadena élite, sin
embargo si puede estar en algún extremo. En caso de que sí esté en
medio de alguna cadena élite, el algoritmo volverá a seleccionar un
elemento “coloq” aleatoriamente. La figura 10 ilustra el mecanismo
expuesto:
Figura 10: mecanismo del a diversificación con cadenas élite
3. Después de realizar la inserción, deben comprobarse ciertas condiciones:

Condición de Inserción: comprueba que tras hacer la inserción no se
ha incrementado más del 20% el valor de la función objetivo:
o En caso de que no se haya superado, se aumenta en una unidad el
elemento de la matriz “ListaTabu2” (que indica que a lo largo de
la diversificación actual no se podrá seleccionar el elemento “ele”
otra vez para insertarlo en otra posición), se certifica en el vector
solución la inserción realizada, y por último se aumenta en una
unidad la variable que cuantifica el número de inserciones
realizadas en la diversificación.
65
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
o En caso de que si se haya superado, se selecciona otro elementoposición “coloq” aleatoriamente y se vuelve a iniciar el proceso de
inserción. Si continuamente (50 veces) ocurre esto, es decir, que se
aumenta más del 20% el valor de la función objetivo, el algoritmo
finaliza esta etapa y pasa a las siguientes condiciones de
diversificación.

Condiciones de Diversificación: aquellas que hacen que se vuelva a
iniciar el proceso de diversificación desde el inicio (elección de un
elemento para su inserción), son 4. Si se cumple alguna de ellas, el
algoritmo finaliza la diversificación, si no se cumple ninguna, vuelve a
iterar desde el inicio de la diversificación. Las condiciones son:
o Que se hayan hecho más inserciones que un 10% del número
total de nodos destino
o Que la pérdida del valor de la función objetivo sea mayor al
máximo permitido “porcenmax” (parámetro del problema )
o Que al realizar alguna inserción haya disminuido la función
objetivo (haya mejorado)
o Que se haya producido el salto desde la condición de inserción
por incapacidad de insertar el elemento seleccionado.
4. Una vez que se cumple alguna de las Condiciones de Diversificación el
algoritmo pasa a la comprobar las condiciones finales, éstas son
simplemente dos, y si se cumple alguna de ellas el algoritmo finaliza su
ejecución, en caso de cumplirse ninguna las condiciones son las
siguientes:

Que se haya llegado a un número de iteraciones máximo
“numeroiteracionesmax”.

Que se haya producido el anterior salto comentado por incapacidad
de inserción o lo que es lo mismo, incapacidad de diversificar
respetando las cadenas élites.
66
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
7. PARAMETRIZACIÓN SOBRE LA RED DE PRUEBA
7.1. Red de prueba
Para realizar el análisis de los parámetros del problema e intentar encontrar los
valores óptimos de estos se ha hecho uso de un modelo de ciudad denominado
red de prueba. Sobre este modelo se han realizado un total de 256 experimentos
del algoritmo búsqueda tabú que posteriormente se implementará para
ejecutarse sobre el modelo de la red de Sevilla.
La red de prueba está compuesta por un total de 900 nodos (30 X 30) unidos por
arcos que representan una distancia de 200 metros. La dirección de estos arcos
no es aleatoria, esta predeterminada. En la figura 11 se muestra la red de
prueba:
Figura 11: Construcción de la red de prueba
Como se ha comentado, la dirección de los arcos no es aleatoria (la flechas
indican la dirección en la que se permite el movimiento de un nodo a otro),
pudiéndose apreciar en la figura anterior la alternancia de las direcciones tanto
en sentido vertical como en horizontal.
67
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
La zona restringida se sitúa en el centro de la red de prueba como se muestra en
la siguiente figura. Su forma está definida por el modo en la que se ha creado.
En torno al nodo número 435, se construye la zona restringida tomando
distancias equidistantes respecto a este nodo. Las distancias no son en línea
recta, sino son las distancias recorridas por el grafo respetando las direcciones
de los arcos. Debido a que en la realidad se produce una mayor concentración
de clientes dentro de la zona restringida. Se ha programado la creación de esta
de modo que no sea del todo aleatoria la localización de los clientes, sino que se
producirá una concentración mayor de clientes (nodos destino) dentro de la
zona restringida, así sean cuales sean los valores de los parámetros del radio de
la zona restringida y el número de clientes, se conseguirá obtener una red de
prueba fiel a la realidad en ese aspecto. La figura 12 muestra la red de prueba y
la zona restringida implementadas en Matlab.
Figura 12: Red de prueba y zona restringida
El mapa de la red de prueba proporciona la información sobre parámetros clave
del problema así como el escenario geográfico detallado. Entre los parámetros,
la red de prueba muestra:

El número total de nodos destinos. (nodos rodeados con un circulo de
color azul)
68
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado


2012
Cuáles de los nodos destinos se sitúan dentro de la zona restringida. Los
nodos que pertenecen a la zona restringida son los que se sitúan dentro
de cuadrados de color rojo.
Localización del depósito (nodo origen), este se diferencia del resto
porque está dentro de un cuadrado de color negro.
7.2. Experimentos realizados
Como se comentó anteriormente, los parámetros seleccionados para realizar el
estudio de sensibilidad son 5 parámetros del algoritmo y tres parámetros del
problema:
Parámetros del algoritmo:
a) Vecifitness: Número máximo de nodos sometidos a evaluación por cada
estrategia de intensificación.
b) numelite: Número de vectores solución que definen el conjunto de
“cadenas élite”.
c) radio: Es el radio de búsqueda de vecinos.
d) porcenmax: Es el parámetro-condición que limita la pérdida de valor de
la función objetivo tras aplicar la diversificación sobre el vector solución.
e) numeroiteracionesmax: Es el número máximo de iteraciones que se
ejecuta el algoritmo.
Parámetros del problema:
f) Numparadas: Es el número de clientes que se han de visitar.
g) Radio de la zona restringida.
h) Duración del periodo de tiempo con acceso restringido, este valor viene
definido por el valor de los parámetros “Tiempo VC” y “Tiempo VA”.
69
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Se han realizado 256 experimentos tomando para cada parámetro dos valores
(28=256). Los valores que se han elegido para cada parámetro son los siguientes:

Vecifitness = (5, 8)

Numelite = (5, 10)

Radio de búsqueda de vecinos = (15, 25)

Porcenmax = (0.12, 0.18)

Numeroiteraciones = (125, 250)

Numparadas = (50, 120)

Radio de la zona restringida = (20, 30)

Periodo con restricción de acceso = (4, 8)
Los resultados obtenidos proporcionan información sobre el valor de la función
objetivo obtenida con cada configuración además del número de vehículos
totales empleado en cada uno de los problemas. Como se esperaba, los
resultados obtenidos sirven para identificar que configuración de parámetros
tiene un comportamiento óptimo (por óptimo nos referimos respecto al total de
posibles combinaciones de parámetros que hemos realizado, que son un total
de 256).
Evidentemente el estudio de sensibilidad podría haberse realizado con tantas
configuraciones de parámetros diferentes como se hubiera querido, ya que no
dejan de ser parámetros lineales. El problema está en conseguir elegir unos
valores de parámetros en un tiempo prudente, siendo éste suficiente para
proporcionar un número de experimentos lo suficientemente grande como para
que quede constancia de que no se han elegido los valores al azar, sino con una
buena base para la decisión.
En la figura 13 se muestra parte de la tabla de resultados donde se concentran
los mejores resultados de los experimentos sobre de cada uno de los 8
escenarios propuestos:
70
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Figura 13: Resultados red de prueba
En base a los resultados obtenidos se deben decidir los valores para los
parámetros estudiados. Se pueden sacar las siguientes conclusiones para cada
parámetro:
-
Vecifitness: Se observa que a mayor valor, mejores resultados se obtienen.
Esto es lógico ya que mientras más vecinos entren en el análisis más
posibilidades habrá encontrar al mejor vecino posible. Debido a esto, se
elige asignar el valor de 8 al parámetro “vecifitness”.
-
Numelite: Puede verse en la tabla que la mayoría de los resultados
resaltados (los mejores de cada escenario) se encuentran en problemas con
un valor del parámetro “Numelite” igual a 5. Esto también es lógico debido
al diseño de la estrategia de cadenas élite; un número alto supondría la
ausencia de cadenas elite, y sin embargo un valor demasiado bajo
provocaría que se considerasen muchas cadenas. El valor seleccionado para
realizar los experimentos sobre la red de Sevilla es 5.
-
Radio de búsqueda de vecinos: La conclusión que se saca de los resultados
es acorde con la programación del algoritmo. A más radio, mas vecinos se
encuentran, y si a la vez el valor de “vecifitness” es alto, entonces se
encuentran los mejores resultados. Sin embargo para respetar al algoritmo
búsqueda tabú, se debe seleccionar un radio acorde con el tamaño y la
densidad de nodos destinos (clientes) del problema. Es decir, no se puede
imponer un radio de busca demasiado grande, porque la búsqueda local
dejaría de ser “local” propiamente dicha, pasaría a ser global puesto que se
evaluaría un área demasiado grande de posibles vecinos.
71
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
-
2012
Porcenmax: Se observa que no existe una dependencia clara de los
resultados respecto a este parámetro, por lo que se escoge un valor
intermedio entre 0.12 y 0.18, así se decide asignar el valor de 0.14 al
parámetro.
-
Número de iteraciones: El número de iteraciones del algoritmo es
importante, ya que debe ser lo suficientemente grande como para permitir
encontrar un valor muy cercano al óptimo, pero a su vez debe permitir
ejecutar el algoritmo en unos tiempos de computación aceptables. Los
resultados muestran que con 125 iteraciones ya se encuentran valores
buenos del problema. Un posterior estudio, representado por la figura 14,
permite saber en qué iteración se han encontrado los mejores resultados.
Este estudio muestra como en la mayoría de los casos se encuentra el mejor
resultado en iteraciones tempranas, así se decide emplear un máximo de
150 iteraciones para el modelo de la red de Sevilla.
Figura 14: Ocurrencia de mejores resultados
72
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
8. RESULTADOS SOBRE LA RED DE SEVILLA
La red de prueba permite realizar las comprobaciones y validaciones sobre el
funcionamiento correcto del algoritmo diseñado, entendiéndose como correcto,
no el hecho de ser más o menos eficiente, sino de verificar que el algoritmo se
ejecuta tal como se pretendía con el diseño inicial.
Una vez que se consigue la anterior verificación se ha proseguido con la
búsqueda de la eficiencia del algoritmo a partir de su parametrización. Este
proceso es el que se ha explicado en el capítulo anterior.
Uno de los objetivos del proyecto es aplicar el algoritmo un grafo que simula la
ciudad de Sevilla para estudiar sus resultados, y posteriormente realizar
comparaciones con los resultados obtenidos mediante un algoritmo Genético,
de manera que se pueden evaluar los sobrecostes debidos a las restricciones del
problema.
El procedimiento a seguir para la obtención de los resultados es parecido al
seguido para la obtención de los resultados sobre la red de prueba. Se realizarán
un total de 600 experimentos, 300 correspondientes al algoritmo “Complejo” y
otros tantos correspondientes al algoritmo “Básico”.
La estructura de los experimentos está compuesta por 10 distribuciones de
clientes diferentes y 30 escenarios diferentes, donde varían el número de nodos
destinos (clientes), la longitud de la ventana temporal de restricción de acceso y
el radio de la zona con restricción de acceso.
8.1. Red de Sevilla
La red de Sevilla sobre la que se ejecuta el algoritmo tiene una estructura
diferente a la de la red de prueba. Esta variación lleva consigo la obligatoriedad
de modificar la programación del algoritmo para adaptarlo a la nueva red. Está
compuesta por un grafo con nodos y arcos definidos simulando la geografía de
la ciudad de Sevilla. En la figura 15 se ilustra la red de Sevilla utilizada.
73
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Figura 15: Red de Sevilla
La red de Sevilla se compone de una matriz de distancias y otra matriz de
localización de nodos. La matriz de distancias contiene las distancias existentes
entre cada nodo mediante el uso de los arcos del grafo y la matriz de
localización contiene la posición de cada nodo en coordenadas cartesianas.
8.2. Imposiciones sobre el problema
Existen ciertas imposiciones de diseño que se han de mencionar, referentes a la
ventana temporal, velocidad de los vehículos, tiempo de entrega, localización
del nodo origen, etc.
Uno de los aspectos de la red de Sevilla que será fijo a lo largo de los diferentes
escenarios es la localización del nodo origen (depósito o almacén), el cual
siempre se situará fuera de la zona restringida por defecto. Esta localización
siempre externa a la zona restringida se debe a la suposición de que se sitúa el
almacén o deposito en un polígono industrial de la ciudad.
La ventana temporal se situara en el medio del horizonte temporal, y será de
diferentes tamaños (como ya se comentó anteriormente). Así siempre se tendrá
74
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
el mismo tiempo sin restricción de acceso a la zona restringida antes y después
de la ventana temporal.
La velocidad de los vehículos de reparto será constante. Se estima en este tipo
de problemas que la velocidad media durante el trayecto de estos vehículos por
la ciudad es de 20 km/h. Esto se debe a la aparición de semáforos, atascos
típicos de las zonas céntricas de las ciudades, etc. El tiempo de entrega será
también fijo, de valor 20 minutos.
Debido a que se ha hecho coincidir la zona restringida, con el centro del mapa
de la red de Sevilla, el centro de la zona restringida está situada en el centro la
red, siendo ésta de forma circular y de radio variable. Esto se ha modelado de
esta forma ya que este tipo de restricciones se suelen imponer en los centros
históricos de las ciudades, como en el caso de Sevilla, donde durante ciertos
años se impuso la restricción de acceso al casco antiguo durante determinadas
franjas horarias del día.
8.3. Parámetros del problema
Como ya se comentó anteriormente existen 3 parámetros del problema que
variarán para ir creando los diferentes escenarios.
El radio de la zona restringida será uno de los parámetros que variarán a la
hora de realizar los experimentos. Se tendrán en cuenta un total de 3 valores
diferentes del radio:



1,59 km
3,96 km
7,14 km
El efecto que tiene este valor sobre la solución final es muy importante ya que
delimita la zona de actuación de los vehículos, obligando a realizar paradas que
suponen un incremento sustancial en la función objetivo.
La ventana temporal es el parámetro temporal del problema y varía entre 3
valores: 2, 4 y 6 horas. Cabe destacar que si el valor de la ventana temporal
fuera 0, la zona restringida nunca estaría restringida al acceso. Es decir, tendría
el mismo efecto decir que no hay ventana temporal o que no hay zona
restringida.
75
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
El parámetro base del problema, el que determina el tamaño de éste, es el
número de nodos destino. Toma 3 posibles valores: 50, 100 y 150 nodos. Las
distintas distribuciones de nodos (escenarios diferentes) son las mismas que las
que se usaron en los experimentos realizados con el algoritmo Genético con los
que se van a comparar los resultados. Son 10 distribuciones diferentes de nodos.
8.4. Resultados obtenidos
Se han generado 2 tablas de resultados, una por cada algoritmo búsqueda tabú
diseñado. Las dos tienen la misma estructura y a continuación en la tabla 2 se
muestra una de ellas, concretamente la referente al algoritmo complejo.
Tabla 2: Resultados algoritmo Búsqueda Tabú Complejo
En esta tabla a cada experimento le corresponden dos celdas, una indica el valor
del tiempo ya comentado y la de su derecha indica el número de vehículos
empleados. Están representados los resultados obtenidos de los experimentos
expresados en horas, es decir, cada celda de resultado indica el tiempo que han
empleado el total de los vehículos de ese experimento en completar las
entregas.
De estas tablas se puede obtener mucha información. En general se va a realizar
el análisis desde el punto de vista temporal, pero sin dejar de lado el aspecto
económico, como es la evaluación de los sobrecostes, el cual también es parte
de los objetivos de este proyecto.
76
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Se ha decidido estudiar las medias de los incrementos de los resultados respecto
al escenario con las condiciones más favorables, este es el escenario 2, cuyas
condiciones son: 50 nodos destino, ventana temporal de 2 horas y zona
restringida de radio 1,59 km.
En cada una de las dos siguientes tablas (tabla 3 y tabla 4) se muestran dos
columnas con datos calculados a partir de los resultados de los experimentos.
Las celdas de la columna “Media” indican el valor medio de los experimentos
del mismo escenario. Las celdas de la columna de su derecha indican el
incremento porcentual de los valores de la columna “Media” respecto a los
escenarios con las condiciones más favorables (se han omitido los resultados de
los escenarios que corresponden a situaciones sin ventana temporal y sin radio
de zona restringida).
Además se incluyen dos graficas donde se exponen los incrementos calculados
en cada tabla (gráfica 1 y gráfica 2). Cada línea de cada grafica representa la
evolución del incremento de tiempo empleado medio total (suma de los
tiempos empleados por todos los vehículos para realizar todas las entregas)
manteniendo fijado el número de nodos destino y el radio de la zona
restringida, es decir, la evolución del tiempo empleado total con respecto a la
variación del tamaño de la Ventana Temporal.
Se van a realizar dos análisis referentes al comportamiento del tiempo total
empleado medio en satisfacer la demanda de los clientes. El primer análisis será
en función de la variación de la longitud de la ventana temporal mientras que el
segundo será en función de la variación del radio de la Zona Restringida.
1. Para el primer análisis se desarrollan dos tablas (tabla 3 y tabla 4) con sus
dos gráficas correspondientes (gráfica 1 y gráfica 2). Para cada algoritmo se
representan 1 tabla y 1 gráfica con 9 líneas. Para cada línea de cada grafica se
encuentran fijados dos de los tres parámetros de la tabla, el número de
Nodos Destino del escenario y el valor del radio de la Zona Restringida. Así,
queda reflejado el incremento del tiempo total empleado en satisfacer a los
clientes en función del aumento de la longitud de la Ventana Temporal.
77
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado

2012
Búsqueda Tabú Simple:
Tabla 3: Incrementos de tiempo medio respecto a la variación de la longitud de la
ventana temporal en el algoritmo Búsqueda Tabú Simple.
78
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Gráfica 1: Incrementos de tiempo medio respecto a la variación de la longitud de la
ventana temporal en el algoritmo Búsqueda Tabú Simple
-
La penalización sobre el resultado final es mayor a medida que el valor de
la longitud de la ventana temporal aumenta. Aunque se puede observar
que esta penalización no es lineal para cada línea del grafico (cada línea
corresponde a un tamaño diferente de radio de zona restringida). Se
observa un comportamiento análogo entre las líneas correspondientes a
los radios mayores. Donde el incremento es más pronunciado a medida
que el radio de la Zona Restringida es mayor. De hecho, para los casos en
los que el radio de la Zona Restringida es el menor, el incremento se
observa que tiende a la linealidad en comparación con los otros casos.
79
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado

2012
Búsqueda Tabú Complejo
Tabla 4: Incrementos de tiempo respecto a la variación de la longitud de la ventana
temporal en el algoritmo Búsqueda Tabú Complejo.
80
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Gráfica 2: Incrementos de tiempo medio respecto a la variación de la longitud de la
ventana temporal en el algoritmo Búsqueda Tabú Simple
-
Respecto al comportamiento de las gráficas se observa un comportamiento
similar de ambos algoritmos, la diferencia radica en los tiempos medios
empleados.
A continuación se muestra la tabla 5, donde se realiza una comparación de los
tiempos medios empleados en cada escenario por cada algoritmo, además de
la gráfica 3 donde se observan las tendencias producidas:
81
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Tabla 5: Comparativa de los tiempos medios obtenidos por los algoritmos Búsqueda
Tabú
Gráfica 3: Gráfica de tiempos medios obtenidos
82
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Como puede observarse en la tabla 5 y en la gráfica 3 originada a partir de los
datos de la tabla 5, existe un beneficio temporal evidente al aplicar el algoritmo
Búsqueda Tabú Complejo en lugar del algoritmo Búsqueda Tabú Simple. Esta
reducción del tiempo se ve disminuida a medida que el radio de la zona
restringida aumenta, llegando simplemente a mejorar en torno al 5 % en el
escenario con las condiciones más desfavorables, independientemente del
número de Nodos Destino del problema. Sin embargo para un radio de la Zona
Restringida relativamente pequeño, la mejoría es mayor llegando a obtener un
46.3% de reducción del tiempo en el caso más favorable, que corresponde a
unas condiciones de 50 Nodos Destino, radio de la Zona Restringida de 1.59 km
y 2 horas de Ventana Temporal.
2. En el segundo análisis se expone (de forma análoga al primer análisis) la
tabla 6 y la gráfica 4 donde se observan los incrementos de tiempo total
empleado en función de la variación del radio de la Zona Restringida.
83
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado

2012
Algoritmo Búsqueda Tabú Simple
Tabla 6: Incrementos de tiempo respecto a la variación del radio de la Zona Restringida
en el algoritmo Búsqueda Tabú Simple.
84
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Gráfica 4: Incrementos de tiempo respecto a la variación del radio de la Zona
Restringida en el algoritmo Búsqueda Tabú Simple.
85
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado

2012
Algoritmo Búsqueda Tabú Complejo
Tabla 7: Incrementos de tiempo respecto a la variación del radio de la Zona Restringida
en el algoritmo Búsqueda Tabú Complejo.
86
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Gráfica 5: Incrementos de tiempo respecto a la variación del radio de la Zona
Restringida en el algoritmo Búsqueda Tabú Complejo.
-
Se observa como el comportamiento a media que aumenta el radio de Zona
Restringida es similar en ambos algoritmos, con la salvedad del valor de los
incrementos. Es decir, proporcionalmente se producen las mismas
variaciones ambos algoritmos, pero el valor absoluto de los incrementos es
muy diferente entre ambos.
-
En valor absoluto, se producen incrementos porcentuales mayores en el
algoritmo complejo, sin embargo el valor de los tiempos totales empleados
son menores en éste que en el algoritmo Simple.
-
Se observa que el incremento en el resultado final producido por el
aumento del radio de la Zona Restringida es mayor que el incremento
producido por la variación de la longitud de la Ventana Temporal. Luego se
concluye que el radio de la zona restringida es más influyente que la
longitud de la Ventana Temporal.
87
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Para realizar la comparación de los resultados obtenidos por los algoritmos
Búsqueda Tabú y el Algoritmo Genético primero se muestra en la tabla donde
se comparan los resultados medios obtenidos para cada escenario por los tres
algoritmos.
Tabla 8: Comparación de tiempos medios de los algoritmos Búsqueda Tabú y el
algoritmo Genético
Los resultados obtenidos por el algoritmo Genético, a nivel de resultado
numérico, están en el mismo orden de magnitud que los resultados obtenidos
por los algoritmos Búsqueda Tabú. Es un hecho que el algoritmo Genético
obtiene mejores resultados para escenarios con un número de nodos destino
elevado. Pero la comparación más importante entre los tres algoritmos no
88
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
radica en el resultado numérico sino en el tiempo empleado para obtener los
resultados. Mientras que para el caso del algoritmo Búsqueda Tabú Complejo,
la ejecución del algoritmo para el escenario más desfavorable se realiza en 35-40
minutos, en el caso del algoritmo genético este tiempo es mucho mayor
llegando a obtenerse tiempos del orden de días.
En las siguientes gráficas (figura 17), obtenida a partir de los resultados de la
tabla 8, se observa la evolución de los tiempos de reparto según el escenario y
los Nodos Destino. Cabe destacar que coincide que en las tres gráficas, en
escenarios más favorables, el algoritmo complejo obtiene los mejores resultados
mientras que a medida que las condiciones empeoran, es el algoritmo Genético
el que tiende a ser el mejor.
Figura 16: Gráficas representativas de los tiempos medios de los tres algoritmos
Respecto a la evaluación de los sobrecostes producidos al endurecer las
restricciones, cabe destacar que el impacto producido por la utilización de un
solo vehículo más es muchísimo más significante que las repercusiones
89
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
económicas producidas por las diferencias existentes entre el tiempo empleado
en recorrer las rutas de los diferentes algoritmos. Esto se debe a que el coste de
tener la posibilidad de poder utilizar un vehículo (disponibilidad del vehículo,
compra de un vehículo más, salario del conductor, seguro del vehículo…) es
mucho mayor que en el que se incurre por utilizarlo (recorrer distancias solo
produce gasto de gasolina). Teniendo en cuenta esto, tendremos en cuenta para
evaluar los sobrecostes el número de vehículos utilizado.
Se toman los datos sobre los vehículos utilizados de la tabla 9 para los
algoritmos Búsqueda Tabú Complejo y Genético. Estudiaremos el caso del
escenario con 150 nodos destino. Se pueden sacar diversas conclusiones de la
gráfica 6, que representa la evolución del uso de vehículos respecto a la
variación de la longitud de la ventana temporal para el escenario de 150 nodos
destino.
Gráfica 6: Evolución y comparación del uso de vehículos respecto a la variación de la
longitud de la ventana temporal para el escenario de 150 nodos destino.
90
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Tabla 9: Evolución del uso de vehículos respecto a la variación de la longitud de la
ventana temporal para el escenario de 150 nodos destino.
Puede observarse lo siguiente:

El sobrecoste producido por aumentar la longitud de la ventana
temporal es mayor cuando se pasa de una longitud de 4h. a 6h. que
cuando se pasa de 2h. a 4h. De hecho, se llega a triplicar el coste en los
escenarios con radios de la zona restringida de 3.96 km y 7.14 km.

El sobrecoste producido al utilizar el algoritmo Búsqueda Tabú es
ligeramente menor ((28%-24%)/24%=16.6% menos) en el caso de un radio
de zona restringida de 1.59 km y ligeramente mayor ((177%166%)/166%=6.62% para RZ=3.96 km y (194%-170%)/170%=14.1% para
RZ=7.14 km) en los otros dos casos.

El sobrecoste ocasionado por aumentar el radio de la zona restringida es
alto en el caso de pasar del radio menor al intermedio, y más pequeño al
pasar del radio intermedio al radio mayor.
A continuación se muestra en la tabla 10 la evolución de los incrementos de los
tiempos totales empleados en cada escenario en función de la variación de la
longitud de la Ventana Temporal incluyendo los datos del algoritmo Genético:
91
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Tabla 10: Incrementos medios de tiempo de los tres algoritmos en función de la
variación de la Ventana Temporal
Como puede observarse, el incremento de tiempo experimentado en el
algoritmo Genético es más suave que en el algoritmo Búsqueda Tabú Complejo.
Esto se debe a que en el caso del algoritmo Complejo el valor inicial sobre el que
se mide es menor que en el caso del algoritmo Genético, sin embargo, el valor
final es ligeramente mayor, por esta razón el incremento es más suave en uno y
más brusco en otro.
92
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
9. CONCLUSIONES
Tras exponer los datos recopilados de los experimentos realizados, se recopilan
las conclusiones que se han ido detallando durante la presentación de los
resultados y se añaden más conclusiones generales relacionadas con los
objetivos del proyecto final de carrera.
Cabe recordar que los objetivos del proyecto son realizar el estudio de
sobrecostes de los resultados obtenidos de la ejecución de simulaciones de
algoritmos basados en la Búsqueda Tabú en los diferentes escenarios
propuestos, y realizar una comparación de metaheurísticas tomando los
resultados obtenidos por un algoritmo Genético sobre los mismos escenarios
que los usados en las simulaciones de los algoritmos Búsqueda Tabú
implementados.
Tras el análisis de los resultados, se puede decir que el Algoritmo Búsqueda
Tabú es un método de búsqueda local que permite en un tiempo de ejecución
aceptable obtener resultados cercanos al óptimo global sin hacer uso de
recursos de computación altos.
El algoritmo genético proporciona resultados cercanos al optimo ligeramente
mejores en algunos escenarios pero con el hándicap de haberlos conseguido en
tiempos de ejecución más de 30 veces mayores que el empleado por el
algoritmo Búsqueda Tabú Complejo y más de 50 veces mayores si los
comparamos con el algoritmo Búsqueda Tabú Simple.
Desde el punto de vista puramente temporal, se pueden sacar las siguientes
conclusiones dependiendo del tipo de escenario que se plantee. Para escenarios
donde las condiciones de radio de la Zona Restringida y longitud de la Ventana
Temporal no son fuertemente restrictivas, el algoritmo Búsqueda Tabú
Complejo obtiene los mejores resultados, pero a medida que estas condiciones
se endurecen, el algoritmo Genético es el que consigue los mejores resultados.
En el caso de haber empleado el mismo tiempo de computación en los tres
algoritmos es predecible que el algoritmo complejo obtendría los mejores
resultados, sin embargo durante el diseño de los experimentos se concluyó que
sería más factible limitar el número de iteraciones del algoritmo en lugar de
obligar a continuar su ejecución durante un tiempo determinado.
93
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Desde el punto de vista de una empresa de reparto de mercancías a nivel local,
donde los planes de reparto se hacen en la mayoría de los casos en el mismo día
debido por un lado a la competencia y por otro lado al nivel de servicio exigido
por los clientes, la utilización de un algoritmo búsqueda Tabú sería más
beneficioso en términos temporales que la utilización de un algoritmo Genético
para calcular sus rutas. Sin embargo, si el tiempo disponible para el cálculo de
las rutas es mayor, quizás les beneficie más la utilización el algoritmo Genético
cuyos resultados se muestran en este proyecto.
Cabe destacar que los algoritmos Búsqueda Tabú presentados en este proyecto
son mejorables desde el punto de vista del diseño de la programación
computacional, lo que mejoraría considerablemente los tiempos de ejecución
obtenidos. También, desde el punto de vista del diseño funcional, al algoritmo
búsqueda Tabú se le pueden aplicar una cantidad muy diversa de estrategias
tanto de intensificación como de diversificación que con toda seguridad
podrían mejorar los resultados obtenidos en este proyecto. El estudio del
algoritmo Búsqueda Tabú es relativamente moderno por lo que existen muchas
vías abiertas para la mejora de éste.
94
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
10. BIBLIOGRAFÍA
[1]
Aarts, E. and Lenstra, J. 2003, “Local search in combinatorial
optimization”, John Wiley & Sons.
[2]
Applegate, D. L.; Bixby, R. E.; Chvátal, V. and Cook, W. J. 2006, “The
traveling salesman problem: a computational study”. Princeton University
Press.
[3]
Bard, J. F.; Huang, L.; Dror, M. and Jaillet, P. 1997, “A branch and cut
algorithm for the VRP with satellite facilities”, IIE Transactions, no. 30, pp.
821-834.
[4]
Clarke, G. and Wright, W. 1964, “Scheduling of vehicles from a central
depot to a number of delivery points”. Operations Research, no. 12.
[5]
Cormen T. H., et al 1999, “Introduction to Algorithms”, pp. 180-204,
Massachusett.
[6]
Díaz, A., Glover, F., Ghaziri, H.M., et al 1996, “Optimización Heurística y
Redes Neuronales”, Paraninfo, Madrid.
[7]
ETH Zürich. 1996, “Operation Forms for the Network Modes IN-95SC.001”, Impulse European Commission, Bruxelles.
[8]
Faulin J. and Juan A. 2008, “The Algacea-1 method for the Capacitated
Vehicle Routing Problem”, International Transactions in Operational
Research.
[9]
Feo T.A. and Resende M.G.C. 1995, “Greedy randomized adaptive search
procedures”, Journals of Global Optimization, no. 6, pp. 109–133.
[10] Glover, F. and Laguna, M. (eds.) 1997, “Tabu search”, Kluwer Academic
Publishers, Boston.
[11] Glover, F. and Melian, B. 2003, “Tabu search”, Revista Iberoamericana de
Inteligencia Artificial, no. 19, pp. 29-48.
[12] Glover, F. 1989, “Tabu Search – Part I”, ORSA Journal on computing, vol.
1, no. 3, pp. 190-206.
95
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
[13] Glover, F. and Kochenberger G. A. (eds.) 2003, “Handbook of
Metaheuristics”, Kluwer Academic Publishers, Boston.
[14] Golden B., Raghavan S. and Wasil E.E. 2008, “The Vehicle Routing
Problem: Latest Advances and New Challenges”, Springer. New York,
USA.
[15] Huschebeck, M. March 2001, “Best Urban Freight Solutions”, European
Commission.
[16] Johnson, D. S. and McGeoch, L. A. 1995, “The traveling salesman problem:
a case study in local optimization”.
[17] Koriath H. and Thetrich W. 1998, “Urban Goods Transport”, Final report
of the action Office for Official Publications of the EC, Bruxelles,
Luxembourg.
[18] Laporte, G.; Gendreau, M.; Potvin, J. and Semet, F. 2000, “Classical and
modern heuristics for the vehicle routing problem”, International
Transaction in Operational Research, no. 7, pp. 285-300.
[19] Martí, Rafael. “Procedimientos Metaheurísticos
Combinatoria”, Matemàtiques, vol. 1, no. 1, pp. 3-62.
en
Optimización
[20] Robusté, F. 1999, “Logística de la distribución urbana de mercancías”, I
Congreso Internacional de Ingeniería de Tráfico Urbano, Madrid.
[21] Schäffeler, U., Wichser, J. 2003, “Inner Urban Freight Transport and City
Logistics”, written material, pp. 1-51.
[22] Stadt Zürich. Umweltbericht 2001, Umwelt- und Gesundheitsschutz
Zürich (UGZ) Umweltschutzfachstelle, Zürich.
[23] Tan K.C., Lee L.H. and Zhu K.Q. 2000, “Heuristic Methods for Vehicle
Routing Problem with Time Windows”, Proceedings of the 6th
International Symposium on Artificial Intelligence and Mathematics, Ft.
Lauderdale, Florida.
[24] Toth P. and Vigo D. 2003, “The Granular Tabu Search and its Application
to the Vehicle Routing Problem”, Informs Journal on Computing Fall.
96
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
[25] Toth P. and Vigo D. 2002, “The vehicle routing problem”, SIAM
Monographs on Discrete Mathematics and Applications, vol. 9, 157-193,
Philadelphia, PA.
97
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
11. ANEXOS
A continuación se va a mostrar el código en lenguaje M de los algoritmos Búsqueda Tabú Complejo y Simple. Teniendo en cuenta
las estructuras de los algoritmos, que ya se ha visto anteriormente, se van a presentar los diferentes bloques de los algoritmos por
separado para una mejor visualización. Previamente se van a presentar ciertos vectores importantes para una mejor comprensión.
Sol_inten: Vector de tamaño igual al número de nodos parada (nodos clientes). Es el vector que indica la solución al problema, es
decir, la secuencia de nodos parada que debe seguirse por los vehículos de entrega. En él, los nodos no se identifican con su número
real dentro de la red de nodos del mapa sino con índices que van desde el 1 al N (siendo N igual al número de nodos parada).
Sol_inten_real: Indica lo mismo que el vector Sol_inten pero en este caso, los nodos si se indican con su número real.
Lista tabú: Es una matriz de NxN (siendo N igual al número de nodos parada) donde los elementos (un elemento i,j) indican qué
pareja de nodos (la pareja i,j por ejemplo) ha sufrido un intercambio o una inserción en las estrategias de intensificación. Un
número mayor que cero de un elemento indica que han intervenido en alguna de las estrategias y serán considerados movimientos
tabú.
RutaMejor: Es la matriz de salida más importante de la función Fitness. Indica las rutas que deben seguir cada vehículo para
completar las entregas además de indicar el valor de la función objetivo (también indicado por la variable “valorfitness”) del
modelo.
Longitudrutas: Matriz de orden NxN que indica la distancia mínima entre los “Nodos parada” del problema.
98
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
11.1. Algoritmo Búsqueda Tabú Simple
El algoritmo se divide en dos bloques denominados Intensificación y Diversificación que se exponen a continuación. Antes del
comienzo de la intensificación, se crean varias constantes y vectores de entrada así como ciertas variables necesarias para la
ejecución correcta del algoritmo. Así, se expone el código a continuación:
tic;
format short
conta=0;
vecifitness=8;
numelite=5;
radio=3500;
porcenmax=0.14;
numeroiteracionesmax=150;
Tiempoentregamax=5.2870;
Costevehiculo=8000;
num_iter_de_inten=40; % Número de iteraciones de intensificación como máximo
Numerotabu=round(2*sqrt(Numparadas)); % número de iteraciones de intensificación que un movimiento es considerado
tabú
valorfitnessmejor=9000000000;
nej=500;
fallotiemponeg=0;
num_intercambios=0;
num_inserciones=0;
num_iter_cambio=0;% Número de iteraciones a partir de las cuales tengo en cuenta el fitness completo.
Sol_inten=Indicessolucioninicial;%Sol_inten está compuesto de las posiciones en la matriz Longitudrutas, de las
soluciones
Sol_inten_real=Solucioninicial;%Sol_inten_real está compuesto de los nodos reales.
ListaTabu=zeros(Numparadas+1);
ListaTabuContador=zeros(Numparadas+1);
Matrizsolucionesintensificacion=zeros(1,num_iter_de_inten);
problemafinal=0;
numiter=0;
iter_de_inten=0;
99
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
iguales=0;
valorfitness=0;
Matrizultimassoluciones=zeros(numelite,length(Indicesparadas));
I_previofitnessmio;
[qw,qe]=size(RutaMejor);
Vectorsolucionesfinales=RutaMejor(qw,1);
while problemafinal==0;
% WHILE DEL ALGORITMO COMPLETO
Vectorsolucionesintensificacion=zeros(1,num_iter_de_inten);
iter=1;
100
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
11.1.1. Bloque Intensificación
Se muestra el bloque de Intensificación, el cual consta de una estrategia única de mejora. Se pueden diferenciar las diferentes etapas
existentes dentro del bloque que se explican en capítulos anteriores.
while (iter_de_inten<=40)&&(iguales==0)
RutaMejorInicial=RutaMejor;
valorfitnessinicial=valorfitness;
for i=1:Numparadas
[m,n]=find(RutaMejor==Sol_inten(i));% Localizo fila y columna en RutaMejor del nodo que estoy analizando
if (IndicesparadasZR(Sol_inten_real(i))==1)% Pregunto si es interno
if n==1
T_ac=MatriztiemposrutaSalida(m,n)-Tiempoentregamax-Longitudrutas(Numparadas+1,Sol_inten(i));%el T_ac =
tiempo acumulado hasta hacer la entrega en el nodo anterior.
if T_ac<TiempoVC
Indicador2=0;
else
if T_ac>=TiempoVA
Indicador2=2;
else
Indicador2=1;
end
end
else
T_ac=MatriztiemposrutaEntrada(m,n)-Longitudrutas(Sol_inten(i-1),Sol_inten(i));
if T_ac<TiempoVC
Indicador2=0;
else
if T_ac>=TiempoVA
Indicador2=2;
101
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
else
a=n-1;
b=0;
while (a>0)&&(b==0)
if (IndicesparadasZR(Sol_inten_real(a))==0)
b=1;
end
a=a-1;
end
if b==1
Indicador2=2;
else
Indicador2=1;
end
end
end
end
else
if n==1
T_ac=MatriztiemposrutaSalida(m,n)-Tiempoentregamax-Longitudrutas(Numparadas+1,Sol_inten(i));
if T_ac<TiempoVC
Indicador2=0;
else
if T_ac<TiempoVA
Indicador2=1;
else
Indicador2=2;
end
end
else
T_ac=MatriztiemposrutaEntrada(m,n)-Longitudrutas(Sol_inten(i-1),Sol_inten(i));
if T_ac<TiempoVC
Indicador2=2;
else
if T_ac<TiempoVA
Indicador2=1;
else
102
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Indicador2=2;
end
end
end
end
% BUSQUEDA DE VECINOS
Vecinosaux=zeros(1,Numparadas);
for k=1:Numparadas
%Calculo los vecinos que tengo para la parada i.
if Indicador2==0
if (Distanciaentrenodos0(i,k)>0)&&(Distanciaentrenodos0(i,k)<radio)
Vecinosaux(k)=1;
end
end
if Indicador2==1
if (Distanciaentrenodos1(i,k)>0)&&(Distanciaentrenodos1(i,k)<radio)
Vecinosaux(k)=1;
end
end
if Indicador2==2
if (Distanciaentrenodos2(i,k)>0)&&(Distanciaentrenodos2(i,k)<radio)
Vecinosaux(k)=1;
end
end
end
Vecinos=find(Vecinosaux);
%vector de vecinos, ej: Vecinos={2 8 13 17 18 29...) son las posiciones en la matriz
de longituderutas de los nodos que son vecinos.
%HAY QUE TENER EN CUENTA QUE EL ORDENAMIENTO DE LOS NODOS EN LONGITUDRUTAS
%ES EL MISMO QUE EN INDICESPARADAS
%ESTRATEGIA DE INTERCAMBIO DURO DE VECINOS.
%Cálculo de distancias entre la parada "(i-1)" y los vecinos y el "i" actual
q=length(Vecinos);
103
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
distvecinal=zeros(1,q);
if i==1
for k=1:q
distvecinal(k)=Longitudrutas(Numparadas+1,Vecinos(k))+Longitudrutas(Vecinos(k),(i+1)); %vector de
distancias desde el (i-1) a vecinos.
end
else
if i==Numparadas
for k=1:q
distvecinal(k)=Longitudrutas((i-1),Vecinos(k))+Longitudrutas(Vecinos(k),(Numparadas+1)); %vector de
distancias desde el (i-1) a vecinos.
end
else
for k=1:q
distvecinal(k)=Longitudrutas((i-1),Vecinos(k))+Longitudrutas(Vecinos(k),(i+1)); %vector de
distancias desde el (i-1) a vecinos.
end
end
end
%por si acaso el tamaño del vector de vecinos es menor que
%el número de vecinos a los que les quiero hacer el fitness
if q<=vecifitness
d=q;
else
d=vecifitness;
end
matrizdistvecinalorden=zeros(d,2);
k=1;
t=1;
while t<=d
[valor,posicion]=min(distvecinal); %calculo el menor valor que queda en el vector distvecinal
if (ListaTabu(Vecinos(posicion),Sol_inten(i))>0)||(ListaTabu(Sol_inten(i),Vecinos(posicion))>0)%pregunto si
es tabú su intercambio
if k==1
%CRITERIO DE ASPIRACION
matrizdistvecinalorden(k,1)=posicion;
104
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
matrizdistvecinalorden(k,2)=valor;
distvecinal(posicion)=200000000000000;
k=k+1; %indicador de rellenado de marizdistvecinalorden
t=t+1; %indicador de recorrido del vector distvecinal
end
distvecinal(posicion)=20000000000000;
t=t+1;
% SI ES TABÚ, Y NO ES EL MÍNIMO, ENTONCES NOS LO SALTAMOS,
% PONIENDO MUY ALTO SU VALOR EN EL VECTOR "distvecinal"
else
matrizdistvecinalorden(k,1)=posicion;
matrizdistvecinalorden(k,2)=valor;
distvecinal(posicion)=20000000000000;
k=k+1;
t=t+1;
end
end
d=k-1;%ahora "d" pasa a ser el número de filas de matrizdistvecinalorden
matrizdistvecinalorden=matrizdistvecinalorden(1:d,:);
Vectorfitnessvecinos=zeros(1,d);
Matriz_sol_inten_aux=zeros(d,Numparadas);
Matriz_sol_inten_real_aux=zeros(d,Numparadas);
for k=1:d
%intercambio de nodos tanto en los índices como en los reales
nodonuevo=Sol_inten(Vecinos(matrizdistvecinalorden(k,1)));%
Sol_inten_aux=Sol_inten;
Sol_inten_aux(i)=nodonuevo;
Sol_inten_aux(Vecinos(matrizdistvecinalorden(k,1)))=Sol_inten(i);
Matriz_sol_inten_aux(k,:)=Sol_inten_aux;
nodonuevoreal=Sol_inten_real(Vecinos(matrizdistvecinalorden(k,1)));
Sol_inten_real_aux=Sol_inten_real;
Sol_inten_real_aux(i)=nodonuevoreal;
Sol_inten_real_aux(Vecinos(matrizdistvecinalorden(k,1)))=Sol_inten_real(i);
105
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Matriz_sol_inten_real_aux(k,:)=Sol_inten_real_aux;
%Sol_inten_aux y Sol_inten_real_aux ya tienen los nodos intercambiados
% hacerle el ftnesspeq o el fitness normal depende del número de numiter
fallotiemponeg=0;
if numiter<num_iter_cambio
[RutaMejoraux,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitnesspeq(Sol_inten_real_aux,Numpara
das,TiempoVC,TiempoVA,IndicesparadasZR,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten_aux,Costevehiculo,Tie
mpoentregamax,Findia);
else
[RutaMejoraux,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitness(Sol_inten_real_aux,Numparadas
,TiempoVC,TiempoVA,IndicesparadasZR,LongitudDentro,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten_aux,Coste
vehiculo,Tiempoentregamax,Findia);
end
Vectorfitnessvecinos(k)=valorfitness;
end
[minfit1,lugar1]=min(Vectorfitnessvecinos);
[m,n]=size(RutaMejor);
%
if RutaMejor(m,1)>minfit1
if minfit2>minfit1
num_intercabios=num_intercambios+1;
% %intercambio definitivo de nodos tanto en los indices como en los
nodonuevo=Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1)));%
Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1)))=Sol_inten(i);
Sol_inten(i)=nodonuevo;
reales
106
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
nodonuevoreal=Sol_inten_real(Vecinos(matrizdistvecinalorden(lugar1,1)));
Sol_inten_real(Vecinos(matrizdistvecinalorden(lugar1,1)))=Sol_inten_real(i);
Sol_inten_real(i)=nodonuevoreal;
% PENALIACIÓN EN LISTA TABÚ
ListaTabu(Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1))),Sol_inten(i))=Numerotabu+1;
ListaTabuContador(Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1))),Sol_inten(i))=ListaTabuContador(S
ol_inten(Vecinos(matrizdistvecinalorden(lugar1,1))),Sol_inten(i))+1;
% Calculo de tiempos, rutamejor...
fallotiemponeg=0;
if numiter<num_iter_cambio
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitnesspeq(Sol_inten_real,Numparadas,Tie
mpoVC,TiempoVA,IndicesparadasZR,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten,Costevehiculo,Tiempoentregam
ax,Findia);
else
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitness(Sol_inten_real,Numparadas,Tiempo
VC,TiempoVA,IndicesparadasZR,LongitudDentro,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten,Costevehiculo,Ti
empoentregamax,Findia);
end
end
if valorfitnessinicial==valorfitness
iguales=1;
end
iter_de_inten=iter_de_inten+1;
Vectorsolucionesintensificacion(iter)=valorfitness;
iter=iter+1;
end
%FINAL DEL BUCLE WHILE DE INTENSIFICACIÓN
iguales=0;
107
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
iter_de_inten=0;
valorfitnessintensificacion=valorfitness;
Matrizsolucionesintensificacion=[Matrizsolucionesintensificacion;Vectorsolucionesintensificacion];
Vectorsolucionesfinales=[Vectorsolucionesfinales;valorfitnessintensificacion];
[m,n]=size(RutaMejor);
valorneg=0; %para no tener en cuenta posibles valores erróneos de matriztiempostrutaentrada.
for k=1:(m-1)
if MatriztiemposrutaEntrada(k,1)<Longitudrutas((Numparadas+1),RutaMejor(k,1))
valorneg=1;
end
end
if ((((valorfitness<valorfitnessmejor)&&(n<=nej)))&& (valorneg==0))
sumarle un camión
valorfitnessmejor=valorfitness;
Mejor_Solucion=RutaMejor;
Mejor_Solucion_tiemposrutaEntrada=MatriztiemposrutaEntrada;
Mejor_Solucion_tiemposrutaSalida=MatriztiemposrutaSalida;
%si es mejor el fitness pero no a costa de
[mej,nej]=size(Mejor_Solucion);
end
% Actualización lista tabú
for k=1:(Numparadas+1)
for kp=1:(Numparadas+1)
if ListaTabu(k,kp)>0
ListaTabu(k,kp)=ListaTabu(k,kp)-1;
end
end
end
108
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
11.1.2. Bloque Diversificación
El Bloque Diversificación actúa de manera totalmente aleatoria
% SELECIÓN Y COLOCACIÓN DE ELEMENTOS
diver=0;
ListaTabu2=zeros(1,Numparadas);
mov=0; %me cuenta el número de movimientos que hago en la diversificación
conta=0;
Sol_inten_aux=Sol_inten;
Sol_inten_real_aux=Sol_inten_real;
while diver==0;
diver1=0;
diver2=0;
while diver2==0
% Sol_inten_aux=Sol_inten;
% Sol_inten_real_aux=Sol_inten_real;
diver3=0;
diver4=0;
diver5=0;
aleat=rand;
nodointer1=round(Numparadas*aleat);
if nodointer1<1
nodointer1=1;
end
aleat2=rand;
nodointer2=round(Numparadas*aleat2);
if nodointer2<1
nodointer2=1;
109
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
end
Sol_inten_aux(nodointer1)=Sol_inten(nodointer2);
Sol_inten_aux(nodointer2)=Sol_inten(nodointer1);
Sol_inten_real_aux(nodointer1)=Sol_inten_real(nodointer2);
Sol_inten_real_aux(nodointer2)=Sol_inten_real(nodointer1);
fallotiemponeg=0;
if numiter<num_iter_cambio
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitnesspeq(Sol_inten_real_aux,Numparadas
,TiempoVC,TiempoVA,IndicesparadasZR,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten_aux,Costevehiculo,Tiempo
entregamax,Findia);
else
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitness(Sol_inten_real_aux,Numparadas,Ti
empoVC,TiempoVA,IndicesparadasZR,LongitudDentro,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten_aux,Costeveh
iculo,Tiempoentregamax,Findia);
end
porcen=1-(valorfitnessintensificacion/valorfitness); %para la condición de perdida de fitness
if porcen<0.2
Sol_inten=Sol_inten_aux;
Sol_inten_real=Sol_inten_real_aux;
mov=mov+1;
diver2=1;
else
Sol_inten_aux=Sol_inten;
Sol_inten_real_aux=Sol_inten_real;
end
end
110
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
conta=conta+1;
fallotiemponeg=0;
if numiter<num_iter_cambio
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitnesspeq(Sol_inten_real,Numparadas,Tie
mpoVC,TiempoVA,IndicesparadasZR,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten,Costevehiculo,Tiempoentregam
ax,Findia);
else
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitness(Sol_inten_real,Numparadas,Tiempo
VC,TiempoVA,IndicesparadasZR,LongitudDentro,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten,Costevehiculo,Ti
empoentregamax,Findia);
end
%CONDICIONES DE LA DIVERSIFICACIÓN
porcen=1-(valorfitnessintensificacion/valorfitness); %para la condición de perdida de fitness
porcen2=mov/Numparadas;
if ((porcen2>0.1)||(porcen<0))||((porcen>porcenmax)||(conta==50))
que las ultimas soluciones finales no varían.
diver=1;
end
end
numiter=numiter+1
% CONDICIONES FINALES.
%dándole un valor a conta alto me dice
sol_totales=length(Vectorsolucionesfinales);
porcen3=Vectorsolucionesfinales(sol_totales)/Vectorsolucionesfinales(sol_totales-1);
if (numiter>numeroiteracionesmax)||(conta==50)
problemafinal=1;
end
end
tiempo_tabu=toc;
Fin del algoritmo Búsqueda Tabú Simple
111
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
11.2. Algoritmo Búsqueda Tabú Complejo
El algoritmo comienza definiendo ciertas constantes y vectores necesarios para la ejecución antes de comenzar a ejecutarse el bucle
“while” de la intensificación.
num_iter_de_inten=40; % Número de iteraciones de intensificación como máximo
Numerotabu=round(2*sqrt(Numparadas)); % Número de penalización sufrida por una pareja de nodos denominada como tabú.
valorfitnessmejor=9000000000;
nej=500;
fallotiemponeg=0;
num_intercambios=0;
num_inserciones=0;
num_iter_cambio=0;% Número de iteraciones a partir de las cuales tengo en cuenta el fitness completo.
Sol_inten=Indicessolucioninicial; %Sol_inten está compuesto de las posiciones en la matriz Longitudrutas, de las
soluciones
Sol_inten_real=Solucioninicial; %Sol_inten_real está compuesto de los nodos reales.
ListaTabu=zeros(Numparadas+1);
ListaTabuContador=zeros(Numparadas+1);
Matrizsolucionesintensificacion=zeros(1,num_iter_de_inten);
problemafinal=0;
numiter=0;
iter_de_inten=0;
iguales=0;
valorfitness=0;
Matrizultimassoluciones=zeros(numelite,length(Indicesparadas));
I_previofitnessmio;
%Fitness aplicado a la solución inicial de entrada.
[qw,qe]=size(RutaMejor);
Vectorsolucionesfinales=RutaMejor(qw,1);
while problemafinal==0; % WHILE DEL PROBLEMA COMPLETO
Vectorsolucionesintensificacion=zeros(1,num_iter_de_inten);
iter=1;
112
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
11.2.1. Bloque Intensificación
En este bloque se desarrolla un bucle “while” donde se ejecuta la intensificación, para posteriormente actualizar ciertos vectores y
constantes también dentro de la intensificación, pero fuera del bucle “while”. A continuación se muestra el bloque completo.
while (iter_de_inten<=40)&&(iguales==0)
RutaMejorInicial=RutaMejor;
valorfitnessinicial=valorfitness;
for i=1:Numparadas
[m,n]=find(RutaMejor==Sol_inten(i));% Localizo fila y columna en RutaMejor del nodo que estoy analizando
%BLOQUE DONDE SE SELECCIONA EL TIPO DE NODO QUE SE TIENE QUE BUSCAR EN LA BÚSQUEDA DE VECINOS, DENTRO DE LA RZ,
FUERA DE LA RZ, O DA IGUAL
if (IndicesparadasZR(Sol_inten_real(i))==1)% Pregunto si es interno a la zona restringida
if n==1 % caso afirmativo
T_ac=MatriztiemposrutaSalida(m,n)-Tiempoentregamax-Longitudrutas(Numparadas+1,Sol_inten(i));%el T_ac =
tiempo acumulado hasta hacer la entrega en el nodo anterior.
if T_ac<TiempoVC
Indicador2=0;
else
if T_ac>=TiempoVA
Indicador2=2;
else
Indicador2=1;
end
end
else
T_ac=MatriztiemposrutaEntrada(m,n)-Longitudrutas(Sol_inten(i-1),Sol_inten(i));
113
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
if T_ac<TiempoVC
Indicador2=0;
else
if T_ac>=TiempoVA
Indicador2=2;
else
a=n-1;
b=0;
while (a>0)&&(b==0)
if (IndicesparadasZR(Sol_inten_real(a))==0)
b=1;
end
a=a-1;
end
if b==1
Indicador2=2;
else
Indicador2=1;
end
end
end
end
else
if n==1
T_ac=MatriztiemposrutaSalida(m,n)-Tiempoentregamax-Longitudrutas(Numparadas+1,Sol_inten(i));
if T_ac<TiempoVC
Indicador2=0;
else
if T_ac<TiempoVA
Indicador2=1;
else
Indicador2=2;
end
end
else
T_ac=MatriztiemposrutaEntrada(m,n)-Longitudrutas(Sol_inten(i-1),Sol_inten(i));
if T_ac<TiempoVC
114
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Indicador2=2;
else
if T_ac<TiempoVA
Indicador2=1;
else
Indicador2=2;
end
end
end
end
%AHORA COMIENZA LA BUSQUEDA DE VECINOS
Vecinosaux=zeros(1,Numparadas);
for k=1:Numparadas
%Calculo los vecinos que tengo para la parada i.
if Indicador2==0
if (Distanciaentrenodos0(i,k)>0)&&(Distanciaentrenodos0(i,k)<radio)
Vecinosaux(k)=1;
end
end
if Indicador2==1
if (Distanciaentrenodos1(i,k)>0)&&(Distanciaentrenodos1(i,k)<radio)
Vecinosaux(k)=1;
end
end
if Indicador2==2
if (Distanciaentrenodos2(i,k)>0)&&(Distanciaentrenodos2(i,k)<radio)
Vecinosaux(k)=1;
end
end
end
Vecinos=find(Vecinosaux);
%vector de vecinos, ej: Vecinos={2 8 13 17 18 29...) son las posiciones en la matriz
de longituderutas de los nodos que son vecinos.
%HAY QUE TENER EN CUENTA QUE EL ORDENAMIENTO DE LOS NODOS EN LONGITUDRUTAS ES EL
MISMO QUE EN INDICESPARADAS
115
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
% ESTRATEGIA DE INTERCAMBIO PURO DE VECINOS
%Cálculo de distancias entre la parada "(i-1)" y los vecinos y el "i" actual
q=length(Vecinos);
distvecinal=zeros(1,q);
if i==1
for k=1:q
distvecinal(k)=Longitudrutas(Numparadas+1,Vecinos(k))+Longitudrutas(Vecinos(k),(i+1)); %vector de
distancias desde el (i-1) a vecinos.
end
else
if i==Numparadas
for k=1:q
distvecinal(k)=Longitudrutas((i-1),Vecinos(k))+Longitudrutas(Vecinos(k),(Numparadas+1)); %vector de
distancias desde el (i-1) a vecinos.
end
else
for k=1:q
distvecinal(k)=Longitudrutas((i-1),Vecinos(k))+Longitudrutas(Vecinos(k),(i+1)); %vector de
distancias desde el (i-1) a vecinos.
end
end
end
%por si acaso el tamaño del vector de vecinos es menor que
%el número de vecinos a los que les quiero hacer el fitness
if q<=vecifitness
d=q;
else
d=vecifitness;
end
116
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
matrizdistvecinalorden=zeros(d,2);
k=1;
t=1;
while t<=d
[valor,posicion]=min(distvecinal); %calculo el menor valor que queda en el vector distvecinal
if (ListaTabu(Vecinos(posicion),Sol_inten(i))>0)||(ListaTabu(Sol_inten(i),Vecinos(posicion))>0)%pregunto si
es tabú su intercambio
if k==1
%CRITERIO DE ASPIRACIÓN
matrizdistvecinalorden(k,1)=posicion;
matrizdistvecinalorden(k,2)=valor;
distvecinal(posicion)=200000000000000;
k=k+1; %indicador de rellenado de marizdistvecinalorden
t=t+1; %indicador de recorrido del vector distvecinal
end
distvecinal(posicion)=20000000000000;
t=t+1;
% SI ES TABÚ, Y NO ES EL MÍNIMO, ENTONCES NOS LO SALTAMOS,
% PONIENDO MUY ALTO SU VALOR EN EL VECTOR "distvecinal"
else
matrizdistvecinalorden(k,1)=posicion;
matrizdistvecinalorden(k,2)=valor;
distvecinal(posicion)=20000000000000;
k=k+1;
t=t+1;
end
end
d=k-1; %ahora "d" pasa a ser el número de filas de matrizdistvecinalorden
matrizdistvecinalorden=matrizdistvecinalorden(1:d,:);
Vectorfitnessvecinos=zeros(1,d);
Matriz_sol_inten_aux=zeros(d,Numparadas);
Matriz_sol_inten_real_aux=zeros(d,Numparadas);
for k=1:d
117
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
%intercambio de nodos tanto en los índices como en los
nodonuevo=Sol_inten(Vecinos(matrizdistvecinalorden(k,1)));%
Sol_inten_aux=Sol_inten;
Sol_inten_aux(i)=nodonuevo;
Sol_inten_aux(Vecinos(matrizdistvecinalorden(k,1)))=Sol_inten(i);
Matriz_sol_inten_aux(k,:)=Sol_inten_aux;
2012
reales
nodonuevoreal=Sol_inten_real(Vecinos(matrizdistvecinalorden(k,1)));
Sol_inten_real_aux=Sol_inten_real;
Sol_inten_real_aux(i)=nodonuevoreal;
Sol_inten_real_aux(Vecinos(matrizdistvecinalorden(k,1)))=Sol_inten_real(i);
Matriz_sol_inten_real_aux(k,:)=Sol_inten_real_aux;
%Sol_inten_aux y Sol_inten_real_aux ya tienen los nodos intercambiados
% hacerle el ftnesspeq o el fitness normal depende del número de numiter
fallotiemponeg=0;
if numiter<num_iter_cambio % siempre se ejecutará el programa fitness, el fitnesspeq es otro más simple que
al final se ha decidido que no se ejecute nunca
[RutaMejoraux,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitnesspeq(Sol_inten_real_aux,Numpara
das,TiempoVC,TiempoVA,IndicesparadasZR,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten_aux,Costevehiculo,Tie
mpoentregamax,Findia);
else
[RutaMejoraux,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitness(Sol_inten_real_aux,Numparadas
,TiempoVC,TiempoVA,IndicesparadasZR,LongitudDentro,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten_aux,Coste
vehiculo,Tiempoentregamax,Findia);
end
Vectorfitnessvecinos(k)=valorfitness;
end
118
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
[minfit1,lugar1]=min(Vectorfitnessvecinos);
% ESTRATEGIA DE INSERCIÓN DE VECINOS
q=length(Vecinos);
distvecinalinser=zeros(1,(2*q));
[m,n]=find(RutaMejor==Sol_inten(i));
if i==1
for k=1:q
if Sol_inten(i+1)~=Vecinos(k)
distvecinalinser((2*k)1)=Longitudrutas(Numparadas+1,Vecinos(k))+Longitudrutas(Vecinos(k),(i))+Longitudrutas(i,(i+1)); %vector de
distancias desde el (i-1) a vecinos.
distvecinalinser(2*k)=Longitudrutas(Numparadas+1,i)+Longitudrutas(i,Vecinos(k))+Longitudrutas(Vecinos(k),(i+1));
else
distvecinalinser((2*k)-1)=20000000000000;
distvecinalinser(2*k)=2000000000000000;
end
end
else
if i==Numparadas
for k=1:q
if Sol_inten(i-1)~=Vecinos(k)
distvecinalinser((2*k)-1)=Longitudrutas((i1),Vecinos(k))+Longitudrutas(Vecinos(k),(i))+Longitudrutas(i,(Numparadas+1));
distvecinalinser(2*k)=Longitudrutas((i1),i)+Longitudrutas(i,Vecinos(k))+Longitudrutas(Vecinos(k),(Numparadas+1)); %vector de distancias desde el (i-1) a
vecinos.
else
distvecinalinser((2*k)-1)=20000000000000;
119
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
distvecinalinser(2*k)=2000000000000000;
end
end
else
for k=1:q
if (Sol_inten(i-1)~=Vecinos(k))&&(Sol_inten(i+1)~=Vecinos(k))
distvecinalinser((2*k)-1)=Longitudrutas((i1),Vecinos(k))+Longitudrutas(Vecinos(k),(i))+Longitudrutas(i,(i+1));
distvecinalinser(k)=Longitudrutas((i1),i)+Longitudrutas(i,Vecinos(k))+Longitudrutas(Vecinos(k),(i+1)); %vector de distancias desde el (i-1) a vecinos.
else
distvecinalinser((2*k)-1)=20000000000000;
distvecinalinser(2*k)=2000000000000000;
end
end
end
end
%por si acaso el tamaño del vector de vecinos es menor que
%el número de vecinos a los que les quiero hacer el fitness
if q<=vecifitness
d=q;
else
d=vecifitness;
end
matrizdistvecinalordeninser=zeros(d,3);
k=1;
t=1;
while t<=d
[valor,posicion]=min(distvecinalinser); %calculo el menor valor que queda en el vector distvecinal
if rem(posicion,2)~=0
posicionlista=(posicion+1)/2; %porque no es lo mismo la posicion en el vector distvecinales que en el
vector Vecinos, porque cada vecino hay 2 elementos en distvecinales
else
posicionlista=posicion/2;
end
120
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
if
(ListaTabu(Vecinos(posicionlista),Sol_inten(i))>0)||(ListaTabu(Sol_inten(i),Vecinos(posicionlista))>0)%pregunto si
es tabú su intercambio
if k==1
%CRITERIO DE ASPIRACION
matrizdistvecinalordeninser(k,1)=posicionlista;
matrizdistvecinalordeninser(k,2)=valor;
if rem(posicion,2)~=0
matrizdistvecinalordeninser(k,3)=1; % el 1 simboliza que va antes del nodo "i", porque no es lo
mismo la posición en el vector distvecinales que en el vector Vecinos, porque cada vecino hay 2 elementos en
distvecinales
else
matrizdistvecinalordeninser(k,3)=2; % el 2 simboliza que va después del nodo "i"
end
distvecinalinser(posicion)=200000000000000;
k=k+1; %indicador de rellenado de marizdistvecinalorden
t=t+1; %indicador de recorrido del vector distvecinal
end
distvecinalinser(posicion)=20000000000000;
t=t+1;
% SI ES TABÚ, Y NO ES EL MÍNIMO, ENTONCES NOS LO SALTAMOS,
% PONIENDO MUY ALTO SU VALOR EN EL VECTOR "distvecinal"
else
matrizdistvecinalordeninser(k,1)=posicionlista;
matrizdistvecinalordeninser(k,2)=valor;
if rem(posicion,2)~=0
matrizdistvecinalordeninser(k,3)=1; % el 1 simboliza que va antes del nodo "i", porque no es lo
mismo la posición en el vector distvecinales que en el vector Vecinos, porque cada vecino hay 2 elementos en
distvecinales
else
matrizdistvecinalordeninser(k,3)=2; % el 2 simboliza que va después del nodo "i"
end
distvecinalinser(posicion)=20000000000000;
121
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
k=k+1;
t=t+1;
end
end
d=k-1; %ahora "d" pasa a ser el número de filas de matrizdistvecinalorden
matrizdistvecinalordeninser=matrizdistvecinalordeninser(1:d,:);
Vectorfitnessvecinosinser=zeros(1,d);
Matriz_sol_inten_aux_inser=zeros(d,Numparadas);
Matriz_sol_inten_real_aux_inser=zeros(d,Numparadas);
% Hago la inserción de nodos tanto en los índices como en los
reales
for k=1:d
Sol_inten_aux_inser=Sol_inten;
Sol_inten_real_aux_inser=Sol_inten_real;
if matrizdistvecinalordeninser(k,3)==1 %lo meto antes del nodo i
if i<Vecinos(matrizdistvecinalordeninser(k,1))
%modificación de índices
coloqaux=Sol_inten(Vecinos(matrizdistvecinalordeninser(k,1)));
for kr=(Vecinos(matrizdistvecinalordeninser(k,1))):-1:(i+1)
Sol_inten_aux_inser(kr)=Sol_inten_aux_inser(kr-1);
end
Sol_inten_aux_inser(i)=coloqaux;
Matriz_sol_inten_aux_inser(k,:)=Sol_inten_aux_inser;
%modificación de nodos reales
coloqaux=Sol_inten_real(Vecinos(matrizdistvecinalordeninser(k,1)));
for kr=(Vecinos(matrizdistvecinalordeninser(k,1))):-1:(i+1)
Sol_inten_real_aux_inser(kr)=Sol_inten_real_aux_inser(kr-1);
end
Sol_inten_real_aux_inser(i)=coloqaux;
Matriz_sol_inten_real_aux_inser(k,:)=Sol_inten_real_aux_inser;
122
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
else
%modificación de índices
coloqaux=Sol_inten(Vecinos(matrizdistvecinalordeninser(k,1)));
for kr=(Vecinos(matrizdistvecinalordeninser(k,1))):(i-2)
Sol_inten_aux_inser(kr)=Sol_inten_aux_inser(kr+1);
end
Sol_inten_aux_inser(i-1)=coloqaux;
Matriz_sol_inten_aux_inser(k,:)=Sol_inten_aux_inser;
%modificación de nodos reales
coloqaux=Sol_inten_real(Vecinos(matrizdistvecinalordeninser(k,1)));
for kr=(Vecinos(matrizdistvecinalordeninser(k,1))):(i-2)
Sol_inten_real_aux_inser(kr)=Sol_inten_real_aux_inser(kr+1);
end
Sol_inten_real_aux_inser(i-1)=coloqaux;
Matriz_sol_inten_real_aux_inser(k,:)=Sol_inten_real_aux_inser;
end
else
%lo meto después del nodo i
if i<Vecinos(matrizdistvecinalordeninser(k,1))
%modificación de índices
coloqaux=Sol_inten(Vecinos(matrizdistvecinalordeninser(k,1)));
for kr=(Vecinos(matrizdistvecinalordeninser(k,1))):-1:(i+2)
Sol_inten_aux_inser(kr)=Sol_inten_aux_inser(kr-1);
end
Sol_inten_aux_inser(i+1)=coloqaux;
Matriz_sol_inten_aux_inser(k,:)=Sol_inten_aux_inser;
%modificación de nodos reales
coloqaux=Sol_inten_real(Vecinos(matrizdistvecinalordeninser(k,1)));
for kr=(Vecinos(matrizdistvecinalordeninser(k,1))):-1:(i+2)
Sol_inten_real_aux_inser(kr)=Sol_inten_real_aux_inser(kr-1);
123
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
end
Sol_inten_real_aux_inser(i+1)=coloqaux;
Matriz_sol_inten_real_aux_inser(k,:)=Sol_inten_real_aux_inser;
else
%modificación de índices
coloqaux=Sol_inten(Vecinos(matrizdistvecinalordeninser(k,1)));
for kr=(Vecinos(matrizdistvecinalordeninser(k,1))):(i-1)
Sol_inten_aux_inser(kr)=Sol_inten_aux_inser(kr+1);
end
Sol_inten_aux_inser(i)=coloqaux;
Matriz_sol_inten_aux_inser(k,:)=Sol_inten_aux_inser;
%modificación de nodos reales
coloqaux=Sol_inten_real(Vecinos(matrizdistvecinalordeninser(k,1)));
for kr=(Vecinos(matrizdistvecinalordeninser(k,1))):(i-1)
Sol_inten_real_aux_inser(kr)=Sol_inten_real_aux_inser(kr+1);
end
Sol_inten_real_aux_inser(i)=coloqaux;
Matriz_sol_inten_real_aux_inser(k,:)=Sol_inten_real_aux_inser;
end
end
%Sol_inten_aux_inser y Sol_inten_real_aux_inser ya tienen los nodos intercambiados
% hacerle el ftnesspeq o el fitness normal depende del número de numiter
fallotiemponeg=0;
if numiter<num_iter_cambio % siempre se ejecutará el programa fitness, el fitnesspeq es otro más simple que
al final he decidido que no se ejecute nunca
124
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
[RutaMejoraux,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitnesspeq(Sol_inten_real_aux_inser,N
umparadas,TiempoVC,TiempoVA,IndicesparadasZR,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten_aux_inser,Coste
vehiculo,Tiempoentregamax,Findia);
else
[RutaMejoraux,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitness(Sol_inten_real_aux_inser,Nump
aradas,TiempoVC,TiempoVA,IndicesparadasZR,LongitudDentro,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten_aux
_inser,Costevehiculo,Tiempoentregamax,Findia);
end
Vectorfitnessvecinosinser(k)=valorfitness;
end
[minfit2,lugar2]=min(Vectorfitnessvecinosinser);
% COMPARACIÓN DE LOS RESULTADOS OBTENIDOS DE LAS DOS ESTRATEGIAS
[m,n]=size(RutaMejor);
if RutaMejor(m,1)>minfit1
if minfit2>minfit1
num_intercabios=num_intercambios+1;
%intercambio definitivo de nodos tanto en los indices como en los
nodonuevo=Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1)));%
Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1)))=Sol_inten(i);
Sol_inten(i)=nodonuevo;
reales
nodonuevoreal=Sol_inten_real(Vecinos(matrizdistvecinalorden(lugar1,1)));
Sol_inten_real(Vecinos(matrizdistvecinalorden(lugar1,1)))=Sol_inten_real(i);
Sol_inten_real(i)=nodonuevoreal;
125
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
ListaTabu(Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1))),Sol_inten(i))=Numerotabu+1;
ListaTabuContador(Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1))),Sol_inten(i))=ListaTabuContador(Sol_inten(Vec
inos(matrizdistvecinalorden(lugar1,1))),Sol_inten(i))+1;
else
num_inserciones=num_inserciones+1;
Sol_inten=Matriz_sol_inten_aux_inser(lugar2,:);
Sol_inten_real=Matriz_sol_inten_real_aux_inser(lugar2,:);
ListaTabu(Sol_inten(Vecinos(matrizdistvecinalordeninser(lugar2,1))),Sol_inten(i))=Numerotabu+1;
ListaTabuContador(Sol_inten(Vecinos(matrizdistvecinalordeninser(lugar2,1))),Sol_inten(i))=ListaTabuContador(Sol_inte
n(Vecinos(matrizdistvecinalordeninser(lugar2,1))),Sol_inten(i))+1;
end
end
%si no se hace ningún intercambio, se actualiza también la lista tabú
%al final pero no se agrega nada a la lista tabú como en 4
%líneas más arriba
% Cálculo de tiempos, rutamejor...
fallotiemponeg=0;
if numiter<num_iter_cambio % siempre se ejecutará el programa fitness, el fitnesspeq es otro más simple que al
final he decidido que no se ejecute nunca
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitnesspeq(Sol_inten_real,Numparadas,Tie
mpoVC,TiempoVA,IndicesparadasZR,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten,Costevehiculo,Tiempoentregam
ax,Findia);
else
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitness(Sol_inten_real,Numparadas,Tiempo
VC,TiempoVA,IndicesparadasZR,LongitudDentro,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten,Costevehiculo,Ti
empoentregamax,Findia);
126
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
end
end %FINAL DEL RECORRIDO POR TODO EL VECTOR SOLUCIÓN, ES EL END DEL FOR RECORRE EL VECTOR SOLUCIÓN
if valorfitnessinicial==valorfitness
iguales=1;
end
iter_de_inten=iter_de_inten+1;
Vectorsolucionesintensificacion(iter)=valorfitness;
iter=iter+1;
end
% FINAL DEL WHILE DE INTENSIFICACIÓN
iguales=0;
iter_de_inten=0;
valorfitnessintensificacion=valorfitness;
Matrizsolucionesintensificacion=[Matrizsolucionesintensificacion;Vectorsolucionesintensificacion];
Vectorsolucionesfinales=[Vectorsolucionesfinales;valorfitnessintensificacion];
[m,n]=size(RutaMejor);
valorneg=0; %para no tener en cuenta posibles valores erroneos de matriztiempostrutaentrada.
for k=1:(m-1)
if MatriztiemposrutaEntrada(k,1)<Longitudrutas((Numparadas+1),RutaMejor(k,1))
valorneg=1;
end
end
if ((((valorfitness<valorfitnessmejor)&&(n<=nej)))&& (valorneg==0))
sumarle un camión
valorfitnessmejor=valorfitness;
Mejor_Solucion=RutaMejor;
%si es mejor el fitness pero no a costa de
127
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Mejor_Solucion_tiemposrutaEntrada=MatriztiemposrutaEntrada;
Mejor_Solucion_tiemposrutaSalida=MatriztiemposrutaSalida;
[mej,nej]=size(Mejor_Solucion);
end
% Actualización lista tabú
for k=1:(Numparadas+1)
for kp=1:(Numparadas+1)
if ListaTabu(k,kp)>0
ListaTabu(k,kp)=ListaTabu(k,kp)-1;
end
end
end
128
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
11.2.2. Bloque Pre-Diversificación.
Es un bloque intermedio entre los dos más importantes donde el vector solución no sufre modificaciones, sino que se crea una
matriz de trozos (cadenas de un mínimo 3 nodos) de soluciones anteriores que se consideran “élites”, a las cuales se las ha
denominado “Cadenas élite”. A continuación se muestra el código:
Matrizultimassoluciones=[Matrizultimassoluciones;Sol_inten]; %se agrega la última solución de la inten
Matrizultimassoluciones=Matrizultimassoluciones(2:(numelite+1),:); %se elimina la más antigua
if numiter>numelite
Matrizcadenaselites=[0 0 0];
for k=1:(Numparadas-2) %voy comprobando de uno en uno cadena de 3 elementos hasta el final
por=0;
por1=1;
cadenaaux=[Sol_inten(k) Sol_inten(k+1) Sol_inten(k+2)];
while por==0
por3=find(Matrizultimassoluciones(por1,:)==Sol_inten(k));
if por3<(Numparadas-1)%para asegurarnos que no esta al final del vector soluciona
cadenaaux2=[Matrizultimassoluciones(por1,por3),Matrizultimassoluciones(por1,por3+1),Matrizultimassoluciones(por1,por
3+2)];
if cadenaaux(1)==cadenaaux2(1)
if cadenaaux(2)==cadenaaux2(2)
if cadenaaux(3)==cadenaaux2(3)
por1=por1+1; %aqui se avanza en una fila de la matrizultimassoluciones
else
por=1;
end
else
por=1;
end
else
129
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
por=1;
end
else
por=1;
end
if por1==numelite
Matrizcadenaselites=[Matrizcadenaselites;cadenaaux];
por=1;
end
end
end
[por4,por5]=size(Matrizcadenaselites);
Matrizcadenaselites=Matrizcadenaselites(2:por4,:);
else
Matrizcadenaselites=[0 0 0;0 0 0;0 0 0];
por4=4;
end
130
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
11.2.3. Bloque Diversificación
En este último bloque del algoritmo se desarrolla la diversificación en la búsqueda de soluciones del problema. Se hace teniendo en
cuenta a las cadenas elites creadas en el bloque anterior del modo que se explica en capítulos anteriores.
% SELECIÓN Y COLOCACION DE ELEMENTOS
diver=0;
ListaTabu2=zeros(1,Numparadas);
mov=0; %ME CUENTA EL NÚMERO DE MOVIMIENTOS QUE HAGO EN LA DIVERSIFICACIÓN
conta=0;
while diver==0;
Sol_inten_aux=Sol_inten;
Sol_inten_real_aux=Sol_inten_real;
diver1=0;
diver2=0;
ty=0;
while ty==0
ele=round(Numparadas*rand);%selecciono aleatoriamente un elemento del vector Sol_inten
if ele<1
ele=1;
end
if ListaTabu2(Sol_inten(ele))==0
ty=1;
end
end
if numiter>numelite
% pregunto si pertenece a alguna cadena élite.
for n=1:(por4-1)
for m=1:3
131
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
if Matrizcadenaselites(n,m)==Sol_inten(ele)
diver1=1;
end
end
end
end
% lo inserto entre dos nodos
if diver1==0
while diver2==0
Sol_inten_aux=Sol_inten;
Sol_inten_real_aux=Sol_inten_real;
diver3=0;
diver4=0;
diver5=0;
aleat=rand;
coloq=round(Numparadas*aleat);
%elijo una posición aleatoria
if coloq<1
coloq=1;
end
if coloq~=ele
if coloq==1
%le pregunto si es el primer nodo
if numiter>numelite
for n=1:(por4-1)
%si es el primero, compruebo si pertenece a una cadena
if Matrizcadenaselites(n,1)==Sol_inten(coloq)
diver3=1;
end
end
end
if diver3==0
%modificación de índices
coloqaux=Sol_inten(ele);
for k=ele:-1:coloq+2
Sol_inten_aux(k)=Sol_inten_aux(k-1);
end
Sol_inten_aux(coloq+1)=coloqaux;
132
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
%modificación de nodos reales
coloqaux=Sol_inten_real(ele);
for k=ele:-1:coloq+2
Sol_inten_real_aux(k)=Sol_inten_real_aux(k-1);
end
Sol_inten_real_aux(coloq+1)=coloqaux;
end
else
if coloq==Numparadas
%le pregunto si es la ultima
if numiter>numelite
for n=1:(por4-1)
%si es la última, compruebo si pertenece a una cadena
if Matrizcadenaselites(n,3)==Sol_inten(coloq)
diver3=1;
end
end
end
if diver3==0
%modificación de índices
coloqaux=Sol_inten(ele);
for k=ele:Numparadas-2
Sol_inten_aux(k)=Sol_inten_aux(k+1);
end
Sol_inten_aux(coloq-1)=coloqaux;
%modificación de nodos reales
coloqaux=Sol_inten_real(ele);
for k=ele:Numparadas-2
Sol_inten_real_aux(k)=Sol_inten_real_aux(k+1);
end
Sol_inten_real_aux(coloq-1)=coloqaux;
end
else
% entonces es entre dos nodos intermedios donde lo voy a insertar
if numiter>numelite
for n=1:(por4-1)
133
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
for m=1:3
if Matrizcadenaselites(n,m)==Sol_inten(coloq)
diver3=1;
end
end
end
end
if diver3==1
for n=1:(por4-1)
for m=1:3
if Matrizcadenaselites(n,m)==Sol_inten(coloq+1)
diver4=1;
end
end
end
if diver4==0
if ele<coloq
%modificación de índices
coloqaux=Sol_inten(ele);
for k=ele:(coloq-1)
Sol_inten_aux(k)=Sol_inten_aux(k+1);
end
Sol_inten_aux(coloq)=coloqaux;
%modificación de nodos reales
coloqaux=Sol_inten_real(ele);
for k=ele:(coloq-1)
Sol_inten_real_aux(k)=Sol_inten_real_aux(k+1);
end
Sol_inten_real_aux(coloq)=coloqaux;
else
%modificación de índices
coloqaux=Sol_inten(ele);
for k=ele:-1:(coloq+2)
134
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
Sol_inten_aux(k)=Sol_inten_aux(k-1);
end
Sol_inten_aux(coloq+1)=coloqaux;
%modificación de nodos reales
coloqaux=Sol_inten_real(ele);
for k=ele:-1:(coloq+2)
Sol_inten_real_aux(k)=Sol_inten_real_aux(k-1);
end
Sol_inten_real_aux(coloq+1)=coloqaux;
end
else
for n=1:(por4-1)
for m=1:3
if Matrizcadenaselites(n,m)==Sol_inten(coloq-1)
diver5=1;
end
end
end
if diver5==0
if ele<coloq
%modificación de índices
coloqaux=Sol_inten(ele);
for k=ele:(coloq-2)
Sol_inten_aux(k)=Sol_inten_aux(k+1);
end
Sol_inten_aux(coloq-1)=coloqaux;
%modificación de nodos reales
coloqaux=Sol_inten_real(ele);
for k=ele:(coloq-2)
Sol_inten_real_aux(k)=Sol_inten_real_aux(k+1);
end
Sol_inten_real_aux(coloq-1)=coloqaux;
135
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
else
%modificación de índices
coloqaux=Sol_inten(ele);
for k=ele:-1:(coloq+1)
Sol_inten_aux(k)=Sol_inten_aux(k-1);
end
Sol_inten_aux(coloq)=coloqaux;
%modificación de nodos reales
coloqaux=Sol_inten_real(ele);
for k=ele:-1:(coloq+1)
Sol_inten_real_aux(k)=Sol_inten_real_aux(k-1);
end
Sol_inten_real_aux(coloq)=coloqaux;
end
end
end
else
if ele<coloq
%modificación de índices
coloqaux=Sol_inten(ele);
for k=ele:(coloq-1)
Sol_inten_aux(k)=Sol_inten_aux(k+1);
end
Sol_inten_aux(coloq)=coloqaux;
%modificación de nodos reales
coloqaux=Sol_inten_real(ele);
for k=ele:(coloq-1)
Sol_inten_real_aux(k)=Sol_inten_real_aux(k+1);
end
Sol_inten_real_aux(coloq)=coloqaux;
else
%modificación de índices
136
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
coloqaux=Sol_inten(ele);
for k=ele:-1:(coloq+2)
Sol_inten_aux(k)=Sol_inten_aux(k-1);
end
Sol_inten_aux(coloq+1)=coloqaux;
%modificación de nodos reales
coloqaux=Sol_inten_real(ele);
for k=ele:-1:(coloq+2)
Sol_inten_real_aux(k)=Sol_inten_real_aux(k-1);
end
Sol_inten_real_aux(coloq+1)=coloqaux;
end
end
end
end
end
fallotiemponeg=0;
if numiter<num_iter_cambio % siempre se ejecutará el programa fitness, el fitnesspeq es otro más simple
que al final he decidido que no se ejecute nunca
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitnesspeq(Sol_inten_real_aux,Numparadas
,TiempoVC,TiempoVA,IndicesparadasZR,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten_aux,Costevehiculo,Tiempo
entregamax,Findia);
else
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitness(Sol_inten_real_aux,Numparadas,Ti
empoVC,TiempoVA,IndicesparadasZR,LongitudDentro,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten_aux,Costeveh
iculo,Tiempoentregamax,Findia);
end
porcen=1-(valorfitnessintensificacion/valorfitness); %para la condición de perdida de fitness
137
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
2012
if porcen<0.2
ListaTabu2(Sol_inten(ele))=1;
Sol_inten=Sol_inten_aux;
Sol_inten_real=Sol_inten_real_aux;
mov=mov+1;
diver2=1;
end
end
end
conta=conta+1; %contador de que no puede ni siquiera diversificar manteniendo las reglas de las cadenas elites.
fallotiemponeg=0;
if numiter<num_iter_cambio % siempre se ejecutará el programa fitness, el fitnesspeq es otro más simple que al
final he decidido que no se ejecute nunca
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitnesspeq(Sol_inten_real,Numparadas,Tie
mpoVC,TiempoVA,IndicesparadasZR,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten,Costevehiculo,Tiempoentregam
ax,Findia);
else
[RutaMejor,r,valorfitness,MatriztiemposrutaEntrada,MatriztiemposrutaSalida]=fitness(Sol_inten_real,Numparadas,Tiempo
VC,TiempoVA,IndicesparadasZR,LongitudDentro,Longitudrutasres,Longitudrutas,Indicesparadas,Sol_inten,Costevehiculo,Ti
empoentregamax,Findia);
end
%CONDICIONES DE LA DIVERSIFICACION
porcen=1-(valorfitnessintensificacion/valorfitness); %para la condición de perdida de fitness
porcen2=mov/Numparadas;
138
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Proyecto Final de Carrera - Francisco Vázquez Delgado
if ((porcen2>0.1)||(porcen<0))||((porcen>porcenmax)||(conta==50))
que las últimas soluciones finales no varían.
diver=1;
end
end
numiter=numiter+1
2012
%dándole un valor a “conta” alto me dice
% CONDICIONES FINALES.
sol_totales=length(Vectorsolucionesfinales);
porcen3=Vectorsolucionesfinales(sol_totales)/Vectorsolucionesfinales(sol_totales-1);
if (numiter>numeroiteracionesmax)||(conta==50)
problemafinal=1;
end
end
tiempo_tabu=toc;
Fin del algoritmo Búsqueda Tabú Complejo.
139
Escuela Técnica Superior de Ingenieros
Universidad de Sevilla
Descargar