160 likes | 270 Views
Metaheurísticas 1er cuatrimestre 2009. Algoritmos evolutivos híbridos para coloreo de grafos. Ivo Koch. Papers Elegidos. Introducción. Algoritmos. Especificación del problema. Resultados. Conclusiones. HCA. P. Galinier, J. Hao (1999). Hybrid evolutionary algorithms for graph coloring
E N D
Metaheurísticas 1er cuatrimestre 2009 Algoritmos evolutivos híbridos para coloreo de grafos Ivo Koch
Papers Elegidos Introducción Algoritmos Especificación del problema Resultados Conclusiones HCA P. Galinier, J. Hao (1999). Hybrid evolutionary algorithms for graph coloring Journal of Combinatorial Optimization, vol. 3, no. 4, pp. 379-397. EVOCOL Porumbel, J.-K. Hao, P. Kuntz (2009). Diversity control and multi-parent recombination for evolutionary graph coloring algorithms 9th European Conference on Evolutionary Computation in Combinatorial Optimisation
Papers Elegidos Introducción Algoritmos Especificación del problema Resultados Conclusiones Considerar el problema de encontrar un k-coloreo para un grafo G(V, E), para k fijo. Dada una instancia (G, k) del problema, lo trataremos como un problema de optimización (Ω, f). El espacio de búsqueda Ω : s Ω es una partición s = {V1, V2, ..., Vk} de V en k subconjuntos. La función objetivo f : s Ω, f(s) = | {e E : ambos vértices de e están en el mismo Vi s }|
Esquema general de EVOCOL y HCA Local Search Introducción InitPopulation HCA Accept Offspring EVOCOL Algoritmos 2 parent Crossover HCA UpdatePopulation EVOCOL Resultados Conclusiones Multiparent Crossover EVOCOL Parámetros de los algoritmos Esquema general de EVOCOL y HCA • Input: Grafo G(V, E), entero k • Output: La mejor configuración encontrada • Procedimiento: • Pob = InitPopulation() • while not Stop-Condition() do • for i = i to ch hacer //ch es cantidad de hijos • repetir • (I1, I2, ..., In) = SelectParents(Pob, n) • Hi = CrossOver(I1, I2, ..., In) • Hi = LocalSearch(Hi, maxIter) • hasta AcceptOffspring(Pob, Hi) • end for • Pob = UpdatePopulation(Pob, H1, H2,...Hch) • end while
Esquema general de EVOCOL y HCA Local Search Introducción InitPopulation HCA Accept Offspring EVOCOL Algoritmos 2 parent Crossover HCA UpdatePopulation EVOCOL Resultados Conclusiones Multiparent Crossover EVOCOL Parámetros de los algoritmos InitPopulation HCA Para i = 1 hasta n Crear la configuración Ci, con k clases color vacías, V1 = V2 ... = Vk = Mientras sea posible Elegir vV tq v tiene el mínimo número de clases permitidas Elegir de las clases permitidas Vi para v la que tenga índice más chico. Fin mientras Si quedaron vértices sin asignar a una clase, colocarlo al azar en alguna. Aplicar Tabu Search a Ci fin para
Esquema general de EVOCOL y HCA Local Search Introducción InitPopulation HCA Accept Offspring EVOCOL Algoritmos 2 parent Crossover HCA UpdatePopulation EVOCOL Resultados Conclusiones Multiparent Crossover EVOCOL Parámetros de los algoritmos 2 parent Crossover HCA • Input: Dos configuraciones C1 y C2 • Output: Una configuración hija Ch • Procedimiento: • Para i = 1 hasta k • Si i es impar, Cactual = C1, sino Cactual = C2 • Elegir de Cactual la clase color Vj con la máxima • cardinalidad • Agregar a Ch la clase Vj • Eliminar los vértices de Vj de C1 y C2 • Fin para • Asignar al azar clases color de Ch a los vértices • que quedaron.
Esquema general de EVOCOL y HCA Local Search Introducción InitPopulation HCA Accept Offspring EVOCOL Algoritmos 2 parent Crossover HCA UpdatePopulation EVOCOL Resultados Conclusiones Multiparent Crossover EVOCOL Parámetros de los algoritmos Multiparent Crossover EVOCOL • Input: Varias configuraciones padre C1, ... Cn • Output: Una configuración hija Ch • Procedimiento: • Ch =empty • For currentColor= 1 To k • Foreach padre Ci {C1,C2, . . . , Cn} • Foreach color class Vji en Ci • Quitar de Vji todos los vértices que ya están en Ch • conflicts = |{(v1, v2) Vji × Vji : (v1, v2) E}| • classSize = |Vji| • score[Vji ] = conflicts×|V|-classSize • Elegir la clase color Vmejor con score mínimo • Foreach v Vmejor • Ch[v] = currentColor • Foreach unassigned v Ch • O[v] =un color que genera el menor número de conflictos
Esquema general de EVOCOL y HCA Local Search Introducción InitPopulation HCA Accept Offspring EVOCOL Algoritmos 2 parent Crossover HCA UpdatePopulation EVOCOL Resultados Conclusiones Multiparent Crossover EVOCOL Parámetros de los algoritmos Ambos algoritmos utilizan para esta fase el algoritmo de Tabu Search aplicado a graph coloring: A. Hertz and D. Werra Using tabu search techniques for graph coloring Computing, 39(4):345–351, 1987.
Esquema general de EVOCOL y HCA Local Search Introducción InitPopulation HCA Accept Offspring EVOCOL Algoritmos 2 parent Crossover HCA UpdatePopulation EVOCOL Resultados Conclusiones Multiparent Crossover EVOCOL Parámetros de los algoritmos Buscamos un algoritmo para decidir si el nuevo hijo es 'demasiado parecido' a algun individuo de la población. Dadas dos configuraciones Ca y Cb, la distancia entre Ca y Cb es el mínimo número de vértices que deben moverse entre clases color de Ca para que Ca = Cb. Notación : d(Ca, Cb) También podemos definir la distancia como el 'complemento' de la similitud entre dos configuraciones Ca y Cb. La similitud es el máximo número de elementos que NO necesitan cambiar su clase color en la transformación de Ca en Cb. Notación : Similitud s(Ca, Cb) d(Ca, Cb) = |V| - s(Ca, Cb)
Esquema general de EVOCOL y HCA Local Search Introducción InitPopulation HCA Accept Offspring EVOCOL Algoritmos 2 parent Crossover HCA UpdatePopulation EVOCOL Resultados Conclusiones Multiparent Crossover EVOCOL Parámetros de los algoritmos Si tenemos un algoritmo para computar la similitud s(Ca, Cb), ya está: Dado un hijo Ch, calculamos la similitud con todos los individuos de la población, y sólo lo aceptamos si supera un 'umbral de diversidad'. Dados Ca y Cb, definir una matriz S de k x k, con elementos Sij = |Via ∩ Vjb|. El problema puede transformarse en el de elegir un assignment (selección elem. de S tq no hay elems. en la misma fila ni columna) tal que la suma de los elem. seleccionados sea máxima. Este problema es conocido y se llama assignment problem Cb Ejemplo Ca = {A, B}{C, D}{E,F} Cb = {A, B,C}{D,E}{F} Ca
Esquema general de EVOCOL y HCA Local Search Introducción InitPopulation HCA Accept Offspring EVOCOL Algoritmos 2 parent Crossover HCA UpdatePopulation EVOCOL Resultados Conclusiones Multiparent Crossover EVOCOL Parámetros de los algoritmos Eliminate() Elección del individuo a eliminar de la población • Input: population Pop = (C1, C2, . . . , C|Pop|) • Output: La configuración a ser eliminada • Procedimiento: • Repeat • Ca1 = RandomIndividual(Pop) • Until AcceptCandidate(Ca1) (fitness-based acceptance) • minDist = maximum possible integer • Foreach C Pop − {Ca1} • If d(I,Ca1) <minDist • If AcceptCandidate(C) • minDist = d(C,C1) • Ca2 = C • If f(Ca1) < f(Ca2) • Return Ca2 • Else • Return Ca1
Esquema general de EVOCOL y HCA Local Search Introducción InitPopulation HCA Accept Offspring EVOCOL Algoritmos 2 parent Crossover HCA UpdatePopulation EVOCOL Resultados Conclusiones Multiparent Crossover EVOCOL Parámetros de los algoritmos AcceptCandidate (Es el individuo un candidato para ser eliminado?) Se acepta para ser eliminado con una probabilidad de 1/2 Se acepta siempre para ser eliminado No se acepta nunca para ser eliminado C tq. f(C) < fm C tq. f(C) > fm C tq. f(C) es la mejor encontrada fm = mediana de f(C), C P
Esquema general de EVOCOL y HCA Local Search Introducción InitPopulation HCA Accept Offspring EVOCOL Algoritmos 2 parent Crossover HCA UpdatePopulation EVOCOL Resultados Conclusiones Multiparent Crossover EVOCOL Parámetros de los algoritmos Valor fijado (empíricamente) HCA EVOCOL 10 15 Tamaño de la población 500-16000 Cant. máxima de iteraciones del TabuSearch 1000000 Parámetros que determinan tamaño de lista Tabu A = 10, α = 0.6, Mmax = 1000 A = 10, α = 0.6 Tl = α * f(C) + random(A) + floor(M / Mmax) 3 Cantidad de hijos por generación 3-7 Cantidad de padres de cada hijo 10%|V| Umbral de rechazo de un hijo por (escasa) diversidad
HCA vs Tabu Search Introducción Algoritmos HCA + EVOCOL + Estado del arte Resultados Conclusiones Fuente de los grafos benchmark: 2nd DIMACS Implementation Challenge (http://dimacs.rutgers.edu/)
HCA vs Tabu Search Introducción Algoritmos HCA + EVOCOL + Estado del arte Resultados Conclusiones EVOCOL HCA T[s] * EVOCOL T[s] ** HCA 20 79 928 1428 1608 1804 4688 13550 13251 8487 5690 327 3152 44 118 8827 9956 4591 11049 4508 32520 * Implementación en C++ compilado con opción –O3 de optimización, ejecutado en Xeon 2.8Ghz. ** Implementación en C++ compilado sin optimizar, ejecutado en UltraSparc-IIi 333Mhz con 132Mb RAM
Conclusiones Introducción Algoritmos Resultados Conclusiones Agregar características evolutivas a Tabu Search mejora notablemente los resultados en el problema de coloreo de grafos. Es fundamental para el buen funcionamiento de estos algoritmos: a.- El mantenimiento (explícito) de una población diversa. b.- El diseño de un 'buen' operador de crossover, basado en particiones de vértices en clases color (y NO en asignación de colores a vértices)