Iterated Local Search – ILS(Búsqueda local iterada) Explorar S* recorriendo desde un s* hacia otro cercano sin necesidad de la noción de vecindad Iterated local search logra esto heurísticamente
Iterated Local Search Dado s* aplicamos una perturbación que genera un estado intermedio s’ (perteneciente a S) Aplicamos búsqueda local a s’ y alcanzamos una solución s*’ en S* Si s*’ supera el test de aceptación entonces será el próximo elemento del camino en S*, si no se retorna a s*. Camino resultante es un caso de búsqueda estocástica sobre S*
Metaheurística Procedure Iterated Local Search s0 = GenerateInitialSolution s* = LocalSearch(s0) repeat s’ = Perturbation(s*, history) s*’ = LocalSearch(s’) s* = AcceptanceCriterion(s*, s*’, history) until termination condition met end
ILS con o sin memoria Mucha complejidad del ILS puede estar escondida en el uso de la historia. Mayoría de los trabajos hasta ahora NO utilizan memoria Perturbación y criterio de aceptación no utilizan soluciones previamente visitadas. Caminos “Markovianos” Si la perturbación depende de algún s* anterior, entonces el camino en S* es con memoria. Trabajos recientes que la incorporan han obtenido mejoras en la performance.
Resumiendo… Poder de ILS proviene de la guía que ofrece en el muestreo del conjunto de óptimos locales. Eficiencia del muestreo depende de: Tipo de perturbación Criterio de aceptación A pesar de contar con implementaciones muy simples de esas partes, ILS es mucho mejor que RR
Resumiendo…(cont) Mejores resultados si se optimizan los módulos que la componen. La complejidad puede agregarse de forma modular Es rápido: se pueden realizar k búsquedas locales embebidas en ILS más rápido que realizar las k búsquedas locales con RR
Obteniendo mejor performance Existen 4 componentes a considerar: Generar solución inicial Búsqueda local Perturbación Criterio de aceptación
Obteniendo mejor performanceConsideraciones Se puede comenzar con: Solución aleatoria Solución de alguna heurística de construcción “greedy” Para la mayoría de los problemas existe un algoritmo de búsqueda local ya disponible Para la perturbación, un movimiento aleatorio de mayor orden que el usado en la búsqueda local puede ser muy efectivo Primera idea: forzar que el costo decrezca
Obteniendo mejor performance (cont) Fácil mejorar la performance, mejorando cada uno de los 4 módulos Debido a: Complejidad se reduce por la modularidad Función de cada componente es fácil de entender Optimización global de ILS: como cada componente afecta al siguiente, se debe entender la interacción entre ellos Conclusión: El desarrollador puede elegir el nivel de optimización que quiera aplicar
Componentes Generar solución inicial Búsqueda local Perturbación Criterio de aceptación
Solución inicial La búsqueda local aplicada a la solución inicial s0 da el punto de partida s0* Soluciones standard para s0: Solución inicial aleatoria Solución retornada por heurística constructiva “greedy” Ventajas contra la solución aleatoria: Combinada con la búsqueda local resulta en soluciones s0* de mejor calidad Una búsqueda local a partir de una solución “greedy”, en promedio requiere menos tiempo de CPU
Solución inicial (cont) Tiempos de computación cortos: La solución inicial es muy importante para obtener soluciones de alta calidad Tiempos de computación largos: La dependencia de la solución final respecto de s0 se pierde cuando se realiza el recorrido en S* No hay siempre una opción clara acerca de cual es la mejor solución inicial Pocas corridas: soluciones greedy parecen obtener soluciones de bajo costo rápidamente. Muchas corridas: solución inicial parece ser menos relevante.
Componentes Generar solución inicial Búsqueda local Perturbación Criterio de aceptación
Búsqueda Local Búsqueda local iterada sensible a la elección de su heurística embebida Debe optimizarse la elección lo más posible. No siempre la mejor búsqueda local lleva a una mejora en ILS Si el tiempo de computación es fijo, puede ser mejor aplicar con más frecuencia un algoritmo de búsqueda local más rápido aunque menos efectivo, que uno más lento y más poderoso.
Búsqueda Local (cont) La elección debe basarse en cuánto más tiempo de computación se necesita para correr la mejor heurística Sin sentido utilizar una búsqueda local excelente si sistemáticamente deshace la perturbación Por esto se requiere una optimización global de ILS Para TSP el algoritmo de búsqueda local que se comporta mejor y más rápido es el de Lin-Kernighan.
Componentes Generar solución inicial Búsqueda local Perturbación Criterio de aceptación
Perturbación Fuerza de la perturbación: Número de componentes de la solución que son modificados La búsqueda local no debería ser capaz de deshacer la perturbación, ya que se caería en un óptimo local ya visitado Se pueden obtener mejores resultados si las perturbaciones tienen en cuenta propiedades del problema
Perturbación (cont) Cuanto debe cambiar la perturbación a la solución inicial? Muy fuerte: ILS se comporta como random restart y mejores soluciones solo se encuentran con una baja probabilidad Muy suave: La búsqueda local cae frecuentemente en un óptimo local ya visitado y la diversificación de la búsqueda queda muy limitada
Perturbación (cont) Problemas simples (como TSP): Se puede obtener resultados satisfactorios usando perturbaciones de tamaño fijo Ej.: Perturbación exitosapara TSP es eldouble-bridge move
Perturbación (cont) Problemas más complejos: Usar perturbaciones de largo fijo puede llevar a una pobre performance Regla general: Perturbaciones suaves usualmente llevan a ejecuciones más rápidas de la búsqueda local, como desventaja se puede caer en el mismo óptimo local
Página anterior | Volver al principio del trabajo | Página siguiente |