Proyecto Final de Carrera - Francisco Vázquez...

139
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

Transcript of Proyecto Final de Carrera - Francisco Vázquez...

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

2 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

A mis padres, mis hermanas, mi novia, mis amigos y a todos

aquellos que me han apoyado a lo largo de mi vida.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

3 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

ÍNDICE

1. INTRODUCCIÓN Y OBJETO DEL PROYECTO ............................................... 5

2. TRANSPORTE URBANO DE MERCANCIAS .................................................. 8

2.1. Importancia del transporte urbano de mercancías. ................................... 8

2.1.1. Problemas producidos por el transporte urbano de mercancías ...... 8

2.1.2. Necesidad de su existencia ..................................................................... 9

2.2. Sectores implicados......................................................................................... 9

2.2.1. 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

2.3. 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. El Transporte Urbano de Mercancías en Sevilla ....................................... 15

3. 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

4. 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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

4 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

4.4.3. Métodos Metaheurísticos ..................................................................... 37

5. 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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

5 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

6 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

7 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

8 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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,

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

9 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

10 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

11 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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:

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

12 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

13 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

14 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

15 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

16 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

17 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

18 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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:

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

19 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

20 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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).

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

21 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

22 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

23 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

24 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

A continuación se muestra el modelo matemático del problema.

∑ ∑

(

)

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

25 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

26 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

[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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

27 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

28 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

29 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

30 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

31 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

32 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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].

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

33 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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) GRASP.

b) Algoritmos Genéticos (GA).

c) Búsqueda Tabú.

d) 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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

34 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

35 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

36 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

37 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

38 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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)

II. Variación de la estructura de entornos. (Metaheurística de búsqueda de

entornos variables)

III. Realizar movimientos que empeoren la solución para salir del óptimo

local. Simulated annealing y Búsqueda Tabú.

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

39 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

40 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

41 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

42 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

43 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

44 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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)

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

45 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

46 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

47 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

48 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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ú.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

49 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

50 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

51 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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ú

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

52 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

6. DESARROLLO DEL ALGORITMO BÚSQUEDA

TABÚ

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

53 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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 = Instante de salida desde el nodo destino (i) hacia el siguiente

nodo (i+1)

h = Duración de la entrega en el nodo destino = 20 minutos. Este valor

está fijado para todas las entregas independientemente del nodo destino.

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

54 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

55 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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”.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

56 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

57 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

58 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

59 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

60 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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 máximo

“numeroiteracionesmax” (parámetro del problema).

Que se haya producido el anterior salto comentado por incapacidad de

intercambio.

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

61 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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 “vecifitness” mejores

medidas tomadas.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

62 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

63 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

64 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

65 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

66 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

o En caso de que si se haya superado, se selecciona otro elemento-

posició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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

67 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

68 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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)

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

69 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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”.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

70 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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:

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

71 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

72 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

- 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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

73 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

74 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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á

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

75 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

76 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

77 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

78 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

79 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

80 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

81 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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:

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

82 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

Tabla 5: Comparativa de los tiempos medios obtenidos por los algoritmos Búsqueda

Tabú

Gráfica 3: Gráfica de tiempos medios obtenidos

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

83 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

84 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

85 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

Gráfica 4: Incrementos de tiempo respecto a la variación del radio de la Zona

Restringida en el algoritmo Búsqueda Tabú Simple.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

86 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

87 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

88 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

89 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

90 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

91 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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:

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

92 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

93 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

94 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

95 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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-95-

SC.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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

96 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

[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 en Optimización

Combinatoria”, Matemàtiques, vol. 1, no. 1, pp. 3-62.

[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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

97 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

[25] Toth P. and Vigo D. 2002, “The vehicle routing problem”, SIAM

Monographs on Discrete Mathematics and Applications, vol. 9, 157-193,

Philadelphia, PA.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

98 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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.

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

99 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

100 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

101 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

102 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

103 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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);

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

104 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

105 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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);

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

106 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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 reales nodonuevo=Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1)));% Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1)))=Sol_inten(i); Sol_inten(i)=nodonuevo;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

107 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

108 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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)) %si es mejor el fitness pero no a costa de

sumarle un camión valorfitnessmejor=valorfitness; Mejor_Solucion=RutaMejor; 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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

109 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

110 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

111 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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)) %dándole un valor a conta alto me dice

que las ultimas soluciones finales no varían. diver=1; end end numiter=numiter+1 % 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ú Simple

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

112 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

113 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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));

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

114 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

115 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

116 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

% 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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

117 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

118 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

%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); 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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

119 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

[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((i-

1),Vecinos(k))+Longitudrutas(Vecinos(k),(i))+Longitudrutas(i,(Numparadas+1)); distvecinalinser(2*k)=Longitudrutas((i-

1),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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

120 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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((i-

1),Vecinos(k))+Longitudrutas(Vecinos(k),(i))+Longitudrutas(i,(i+1)); distvecinalinser(k)=Longitudrutas((i-

1),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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

121 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

122 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

123 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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);

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

124 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

125 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

[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 reales nodonuevo=Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1)));% Sol_inten(Vecinos(matrizdistvecinalorden(lugar1,1)))=Sol_inten(i); Sol_inten(i)=nodonuevo;

nodonuevoreal=Sol_inten_real(Vecinos(matrizdistvecinalorden(lugar1,1))); Sol_inten_real(Vecinos(matrizdistvecinalorden(lugar1,1)))=Sol_inten_real(i); Sol_inten_real(i)=nodonuevoreal;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

126 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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);

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

127 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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)) %si es mejor el fitness pero no a costa de

sumarle un camión valorfitnessmejor=valorfitness; Mejor_Solucion=RutaMejor;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

128 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

129 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

130 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

131 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

132 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

133 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

%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)

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

134 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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)

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

135 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

136 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

137 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

138 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

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;

Proyecto Final de Carrera - Francisco Vázquez Delgado 2012

139 Escuela Técnica Superior de Ingenieros

Universidad de Sevilla

if ((porcen2>0.1)||(porcen<0))||((porcen>porcenmax)||(conta==50)) %dándole un valor a “conta” alto me dice

que las últimas soluciones finales no varían. diver=1; end end numiter=numiter+1

% 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.