440 likes | 647 Views
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.
E N D
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 Local s 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)) // Shaking s´´ LocalSearch(s´) // Local Search if f(s´´) < f(s) then // Move or Not s s´´ k 1 Else k k+1 End if End 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)) // Shaking s´´ LocalSearch(s´) // Local Search if f(s´´) < f(s) then // Move or Not s s´´ k 1 Else k k+1 End if End 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 do s´ ÓptimaMejora(k(s)) if f(s´) < f(s) then s s´ k 1 Else k k+1 End if End 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) then s s´´; k 1 Else k k+1 End if End 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) then s s´´; k 1 Else k k+1 End if End 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) = kr=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)) // Shaking s´´ TabuCol(s´) // Local Search if f(s´´) < f(s) then // Move or Not s s´´; t 1 IVNS 0 Else t t+1 End 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. • Básica. • De cadena. • Granada. • Fuego artificial. • Permutación. • Vecindades de clase. • Vaciar-rellenar. • Conjunto estable. • Clase vacía. • Clase tabú. • Vecindades no-crecientes. • Culverson. • 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 (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)) // Shaking s´´ TabuCol(s´) // Local Search if f(s´´) < f(s) then // Move or Not s s´´; t 1 IVNS 0 Else if IVNS es múltiplo de MaxVNS/6 t t+1 End if End 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) • Fases • Generar las soluciones iniciales. • Heurística constructiva. • Eliminación de rutas. • Procedimiento de eliminación de rutas. • VND. • Procedimientos de mejora de rutas. • 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– 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.