15
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

6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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

Page 2: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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

Page 3: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.

Page 4: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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

Page 5: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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

Page 6: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.

Page 7: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.

Page 8: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.

Page 9: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.

Page 10: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.

Page 11: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.

Page 12: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.

Page 13: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.

Page 14: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.

Page 15: 6. DESARROLLO DEL ALGORITMO BÚSQUEDA TABÚbibing.us.es/proyectos/abreproy/5166/fichero/Volumen+1%2FCapítulo+6.pdf · El algoritmo desarrollado está diseñado para aplicarse a Problemas

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.