View
214
Download
0
Embed Size (px)
Citation preview
Búsqueda en Vecindades Variables
(Variable Neighborhood Search - VNS)
Germán Ferrari
Federico Laca
Grupo Nº 5
Introducción
Marco Teórico Vecindades Fundamentos Algoritmo básico Variantes
Aplicaciones GCP VRPTW
Resumen Conclusiones Preguntas
Marco Teórico - generalidades
Metaheurística para resolución de problemas de optimización combinatoria.
Propuesto por P.Hansen y N.Mladenovic (1997).
Extensión de Búsqueda Local que utiliza distintas vecindades a lo largo de la búsqueda.
OC en general, MAXSAT, grafos
Marco Teórico – vecindades (1)
Estructura de vecindad: Función :2, que define para cada s, un conjunto (s) de soluciones llamadas “vecinas” de s. El conjunto (s) se llama “vecindad” de s y cada elemento s´ (s) es una solución “vecina” de s.
Marco Teórico – vecindades (2)
Estructuras de Vecindad vs. Vecindades.
Soluciones “cercanas”.
Abstracciones del espacio de búsqueda.
Marco Teórico – clasificación
VNS Básico Sin memoria.
Aleatorio.
Trayectoria.
M / S / 1.
Marco Teórico – búsqueda local
Búsqueda Locals Generar SolucionInicial()
Repeat
s Mejorar(s,(s))
Until no hay mejora posible
Óptimo Local
Marco Teórico – fundamentos
Un mínimo local con una estructura de vecindades no lo es necesariamente con otra.
Un mínimo global es mínimo local con todas las posibles estructuras de vecindades.
Marco Teórico – algoritmo básico
Seleccionar un conjunto de estructuras de vecindad k, k = 1..kmax
s GenerarSolucionInicial()Mientras no se cumple condición de fin do
k 1
Mientras k < kmax do
s´ SeleccionarRandom(k(s)) // Shakings´´ LocalSearch(s´) // Local Searchif f(s´´) < f(s) then // Move or Not
s s´´k 1
Elsek k+1
End ifEnd mientras
End mientras
Marco Teórico – cond. de parada
Tiempo de cómputos.
Número de iteraciones.
Número de iteraciones sin mejorar la solución.
Marco Teórico – algoritmo básico
Seleccionar un conjunto de estructuras de vecindad k, k = 1..kmax
s GenerarSolucionInicial()Mientras no se cumple condición de fin do
k 1
Mientras k < kmax do
s´ SeleccionarRandom(k(s)) // Shakings´´ LocalSearch(s´) // Local Searchif f(s´´) < f(s) then // Move or Not
s s´´k 1
Elsek k+1
End ifEnd mientras
End mientras
Marco Teórico – variantes
VNS descendente (VND)
VNS sesgado (SVNS)
VNS con descomposición (VNDS)
Marco Teórico – variante VND
Seleccionar un conjunto de estructuras de vecindad k, k = 1..kmax
s GenerarSolucionInicial()Mientras no se cumple condición de fin do
k 1
Mientras k < kmax dos´ ÓptimaMejora(k(s)) if f(s´) < f(s) then
s s´k 1
Elsek k+1
End ifEnd mientras
End mientras
Marco Teórico – variante SVNS
Seleccionar un conjunto de estructuras de vecindad k, k = 1..kmax
s GenerarSolucionInicial()Mientras no se cumple condición de fin do
k 1
Mientras k < kmax do
s´ SeleccionarRandom(k(s)) ; s´´ LocalSearch(s´) if f(s´´) < f* then f* f (s’’); s* s’’ End if
if f(s´´) – (s,s”) < f(s) thens s´´; k 1
Elsek k+1
End ifEnd mientras
End mientras
Marco Teórico – variante VNDS
Seleccionar un conjunto de estructuras de vecindad k, k = 1..kmax
s GenerarSolucionInicial()Mientras no se cumple condición de fin do
k 1
Mientras k < kmax do
s´ SeleccionarRandom(k(s)) ;(s y s’ difieren en un conjunto de k atributos)s´´ LocalSearch(s´, atributos); (sólo k atributos involucrados)
if f(s´´) < f(s) thens s´´; k 1
Elsek k+1
End ifEnd mientras
End mientras
Aplicaciones
Problema de coloreado de grafos (GCP). A variable neighborhood search for graph
coloring (C.Avanthay, A.Hertz, N.Zufferey).
Problema de ruteo de vehículos con ventanas de tiempo (VRPTW). A reactive variable neighborhood search for
the vehicle routing problem with time windows (O.Bräysy).
Aplicación GCP
Coloreado de grafos.
NP-duro.
Métodos exactos (menos de 100 vértices).
Aplicación GCP – definiciones
k-coloreado de G: Dado k es una función c: V {1,...,k}. Dado un vértice v, c(v) es llamado el color de v.
Clase de color: Es un conjunto Vr de los vértices con el color r. Vértice conflictivo: Es un vértice que tiene otro vértice
adyacente del mismo color. Arista conflictiva: Es una arista que une dos vértices del
mismo color. Color conflictivo: Es un color para el cual existen vértices
conflictivos. Conjunto estable: Conjunto de vértices del mismo color sin
vértices conflictivos. k-coloreado legal: Es un k-coloreado sin aristas conflictivas.
Aplicación GCP – k-GCP
Minimizar el número de aristas conflictivas de un k-coloreado.
f(s) = kr=1 |Er|
Er es el conjunto de las aristas conflictivas que tienen sus dos vértices de color r.
Mejor método encontrado, híbrido que combina algoritmo genético con búsqueda tabú (Galinier y Hao).
Aplicación GCP – alternativas
Construir sucesivamente conjuntos estables maximales y quitarlos del grafo.
Partition approach Determinar una cota superior para k, y luego
resolver una serie de k-GCPs con k cada vez más chico hasta que no se pueda encontrar un k-coloreado legal.
Aplicación GCP – modelado
Solución factible: cualquier k-coloreado. Función objetivo: min f(s) = k
r=1 |Er|. Solución inicial: elegida randómicamente. Condición de parada: número de iteraciones
(MaxVNS) sin realizar ninguna mejora. Búsqueda local: Tabucol.
Maxtabu = 10*MaxVNS iteraciones sin mejora. Largo lista tabú = 10.
Aplicación GCP – algoritmo
1. Inicialización
Seleccionar un conjunto de estructuras de vecindad t, t = 1..tmax
s GenerarKColoreadoRandom()
IVNS 0; t 1
2. Repetir hasta IVNS = MaxVNS
IVNS IVNS + 1
s´ SeleccionarRandom(t(s)) // Shakings´´ TabuCol(s´) // Local Searchif f(s´´) < f(s) then // Move or Not
s s´´; t 1
IVNS 0Else
t t+1End if
End repetir
Aplicación GCP – vecindades (1)
Metodología general. Grupos de estructuras de vecindades. Pruebas independientes. Selección de “las mejores”. Pruebas de estructuras de vecindades
combinadas. Selección de la “mejor combinación”.
Aplicación GCP – vecindades (2)
Vecindades de vértice. Se generan cambiando el color de algunos vértices
conflictivos. Vecindades de clase.
Se generan cambiando el color de algunos o todos los vértices de una clase de color conflictiva.
Vecindades no-crecientes. Se generan cambiando el color de algunos vértices
pero nunca aumentando el número total de aristas conflictivas.
Aplicación GCP – vecindades (3)
Vecindades de vértice.1. Básica.2. De cadena.3. Granada.4. Fuego artificial.5. Permutación.
Vecindades de clase.6. Vaciar-rellenar.7. Conjunto estable.8. Clase vacía.9. Clase tabú.
Vecindades no-crecientes.10. Culverson.11. Sub-grafo.
Aplicación GCP – vecindades (4)
Vecindad de granada Se realiza i veces
Selecciono randómicamente un vértice conflictivo x de Vr (llamado vértice granada) y lo cambio a Vj
(mejor clase de color posible). A todos los nuevos vértices conflictivos de Vj se
les cambia a la mejor clase de color posible.
i random en {1,..,imax} imax decrece de 40 a 1 con IVNS
Aplicación GCP – vecindades (5)
Vecindad vaciar-rellenar Vaciar V*
Cada vértice se “mueve” a la mejor clase de color.
Rellenar con otros p vértices En lo posible nuevos vértices conflictivos.
Aplicación GCP – vecindades (6)
Pruebas individuales de las estructuras de vecindades. 9 grafos de tamaño mediano.
4 grafos aleatorios de 500 vértices y densidad 0.5. 2 grafos planos de 300 vértices con solución
óptima conocida 28 y 26. 2 grafos de Leighton de 50 vértices y solución
óptima conocida 15. 1 grafo aleatorio DSJ de 500 vértices y densidad
0.5.
Aplicación GCP – vecindades (7)
Aplicación GCP – vecindades (8)
Pruebas de estructuras de vecindades combinadas.
Ninguna permutación es mejor que otra.
Aplicación GCP – VNS propuesto
1. Inicialización
Considerar la permutación de {2,3,4,6,7,8}s GenerarKColoreadoRandom()
IVNS 0; t 1
2. Repetir hasta IVNS = MaxVNS
IVNS IVNS + 1
s´ SeleccionarRandom((t)(s)) // Shakings´´ TabuCol(s´) // Local Searchif f(s´´) < f(s) then // Move or Not
s s´´; t 1
IVNS 0Else
if IVNS es múltiplo de MaxVNS/6 t t+1 End ifEnd if
End repetir
Aplicación GCP – comparación
VNS no obtuvo mejoras significativas.
Mejor que Tabucol.
No compite con GH (híbrido que combina algoritmo genético con búsqueda tabú).
Aplicación VRPTW
Ruteo de vehículos con ventanas de tiempo.
VNS reactiva (RVNS). Robusta. Confiable. Soluciones de alta calidad.
Aplicación VRPTW – RVNS (1)
Fases1. Generar las soluciones iniciales.
Heurística constructiva.
2. Eliminación de rutas. Procedimiento de eliminación de rutas.
3. VND. Procedimientos de mejora de rutas.
4. Post-optimización. Reactividad.
Aplicación VRPTW – RVNS (2)
Metaheurística específica para el problema.
Desarrollo de procedimientos de mejora de soluciones (extensiones de métodos ya existentes). Construcción de soluciones iniciales. Eliminación de rutas. Mejora de rutas.
Aplicación VRPTW – RVNS (3)
Procedimientos de mejora de rutas (operadores de búsqueda local). Inter-ruta
ICROSS IRP
Intra-ruta IOPT O-opt
Definen estructuras de vecindad. Vecindades crecientes.
Aplicación VRPTW – pruebas
Sets de parámetros RVNS(1), RVNS(2), RVNS(3)
Sets de problemas conocidos. Clientes “clusterizados”, distribuidos
randómicamentes y combinaciones de los dos. Ventanas de tiempo estrechas y anchas. Distintas capacidades de vehículos.
Comparación con las mejores metaheurísticas presentadas para cada caso de prueba.
Aplicación VRPTW– resultados(1)
Aplicación VRPTW– resultados(2)
Aplicación VRPTW– resultados(3)
Aplicación VRPTW– conclusiones
Es posible desarrollar buenos métodos basados en VNS.
Para este problema utilizar vecindades variables resultó ser siempre mejor que cualquiera de las vecindades consideradas por separado.
Alterar la función objetivo puede ayudar a escapar de los mínimos locales.
Resumen
Varias estructuras de vecindad. Metaheurística “genérica”. Variantes (VND, SVNS y VNDS). Aplicación GCP
Metodología para seleccionar estructuras de vecindades.
Aplicación VRPTW RVNS.
Conclusiones generales
En general, el VNS consigue mejores resultados que la búsqueda local.
Las estructuras de vecindades seleccionadas y el orden en que se utilizan inciden fuertemente en los resultados obtenidos.
Utilizando información particular del problema, es posible conseguir muy buenas soluciones.
Preguntas...