Algoritmos evolutivos híbridos para coloreo de grafos

16
Algoritmos evolutivos híbridos para coloreo de grafos Ivo Koch Metaheurísticas 1er cuatrimestre 2009

description

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 - PowerPoint PPT Presentation

Transcript of Algoritmos evolutivos híbridos para coloreo de grafos

Page 1: Algoritmos evolutivos híbridos para coloreo de grafos

Algoritmos evolutivos híbridos para coloreo de grafos

Ivo Koch

Metaheurísticas1er cuatrimestre 2009

Page 2: Algoritmos evolutivos híbridos para coloreo de grafos

Introducción

P. Galinier, J. Hao (1999). Hybrid evolutionary algorithms for graph coloring Journal of Combinatorial Optimization, vol. 3, no. 4, pp. 379-397.

P. Galinier, J. Hao (1999). Hybrid evolutionary algorithms for graph coloring Journal of Combinatorial Optimization, vol. 3, no. 4, pp. 379-397.

Porumbel, J.-K. Hao, P. Kuntz (2009).

Diversity control and multi-parent recombination for evolutionary graph coloring algorithms9th European Conference on Evolutionary Computation in Combinatorial Optimisation

Porumbel, J.-K. Hao, P. Kuntz (2009).

Diversity control and multi-parent recombination for evolutionary graph coloring algorithms9th European Conference on Evolutionary Computation in Combinatorial Optimisation

HCAHCA

EVOCOLEVOCOL

AlgoritmosResultadosConclusiones

Papers ElegidosEspecificación del problema

Page 3: Algoritmos evolutivos híbridos para coloreo de grafos

IntroducciónAlgoritmosResultados

Papers Elegidos

Conclusiones

Especificación del problema

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 }|

Page 4: Algoritmos evolutivos híbridos para coloreo de grafos

Introducción 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

•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

AlgoritmosResultadosConclusiones

InitPopulation HCA2 parent Crossover HCAMultiparent Crossover EVOCOL

Local SearchAccept Offspring EVOCOLUpdatePopulation EVOCOLParámetros de los algoritmos

Page 5: Algoritmos evolutivos híbridos para coloreo de grafos

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

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

InitPopulation HCA

Introducción Esquema general de EVOCOL y HCAAlgoritmosResultadosConclusiones

InitPopulation HCA2 parent Crossover HCAMultiparent Crossover EVOCOL

Local SearchAccept Offspring EVOCOLUpdatePopulation EVOCOLParámetros de los algoritmos

Page 6: Algoritmos evolutivos híbridos para coloreo de grafos

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 C2Fin para Asignar al azar clases color de Ch a los vértices que quedaron.

•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 C2Fin para Asignar al azar clases color de Ch a los vértices que quedaron.

Introducción Esquema general de EVOCOL y HCAAlgoritmosResultadosConclusiones

InitPopulation HCA2 parent Crossover HCAMultiparent Crossover EVOCOL

Local SearchAccept Offspring EVOCOLUpdatePopulation EVOCOLParámetros de los algoritmos

Page 7: Algoritmos evolutivos híbridos para coloreo de grafos

•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] = currentColorForeach unassigned v Ch O[v] =un color que genera el menor número de conflictos

•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] = currentColorForeach unassigned v Ch O[v] =un color que genera el menor número de conflictos

Multiparent Crossover EVOCOL

Introducción Esquema general de EVOCOL y HCAAlgoritmosResultadosConclusiones

InitPopulation HCA2 parent Crossover HCAMultiparent Crossover EVOCOL

Local SearchAccept Offspring EVOCOLUpdatePopulation EVOCOLParámetros de los algoritmos

Page 8: Algoritmos evolutivos híbridos para coloreo de grafos

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 coloringComputing, 39(4):345–351, 1987.

A. Hertz and D. Werra

Using tabu search techniques for graph coloringComputing, 39(4):345–351, 1987.

Introducción Esquema general de EVOCOL y HCAAlgoritmosResultadosConclusiones

InitPopulation HCA2 parent Crossover HCAMultiparent Crossover EVOCOL

Local SearchAccept Offspring EVOCOLUpdatePopulation EVOCOLParámetros de los algoritmos

Page 9: Algoritmos evolutivos híbridos para coloreo de grafos

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)d(Ca, Cb) = |V| - s(Ca, Cb)

Introducción Esquema general de EVOCOL y HCAAlgoritmosResultadosConclusiones

InitPopulation HCA2 parent Crossover HCAMultiparent Crossover EVOCOL

Local SearchAccept Offspring EVOCOLUpdatePopulation EVOCOLParámetros de los algoritmos

Page 10: Algoritmos evolutivos híbridos para coloreo de grafos

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

2 0 0

1 1 0

0 1 1

Ejemplo

Ca = {A, B}{C, D}{E,F}

Cb = {A, B,C}{D,E}{F} Ca

Cb

Introducción Esquema general de EVOCOL y HCAAlgoritmosResultadosConclusiones

InitPopulation HCA2 parent Crossover HCAMultiparent Crossover EVOCOL

Local SearchAccept Offspring EVOCOLUpdatePopulation EVOCOLParámetros de los algoritmos

Page 11: Algoritmos evolutivos híbridos para coloreo de grafos

•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 integerForeach C Pop − {Ca1} If d(I,Ca1) <minDist If AcceptCandidate(C) minDist = d(C,C1) Ca2 = CIf f(Ca1) < f(Ca2) Return Ca2Else Return Ca1

•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 integerForeach C Pop − {Ca1} If d(I,Ca1) <minDist If AcceptCandidate(C) minDist = d(C,C1) Ca2 = CIf f(Ca1) < f(Ca2) Return Ca2Else Return Ca1

Eliminate() Elección del individuo a eliminar de la población

Introducción Esquema general de EVOCOL y HCAAlgoritmosResultadosConclusiones

InitPopulation HCA2 parent Crossover HCAMultiparent Crossover EVOCOL

Local SearchAccept Offspring EVOCOLUpdatePopulation EVOCOLParámetros de los algoritmos

Page 12: Algoritmos evolutivos híbridos para coloreo de grafos

AcceptCandidate (Es el individuo un candidato para ser eliminado?)

C tq. f(C) < fm

fm = mediana de f(C), C P

C tq. f(C) > fm

Se acepta siempre para ser eliminado

Se acepta para ser eliminado con una probabilidad de 1/2

No se acepta nunca para ser eliminado

C tq. f(C) es la mejor encontrada

Introducción Esquema general de EVOCOL y HCAAlgoritmosResultadosConclusiones

InitPopulation HCA2 parent Crossover HCAMultiparent Crossover EVOCOL

Local SearchAccept Offspring EVOCOLUpdatePopulation EVOCOLParámetros de los algoritmos

Page 13: Algoritmos evolutivos híbridos para coloreo de grafos

Tamaño de la población

Cant. máxima de iteraciones del TabuSearch

Valor fijado (empíricamente)

10

500-16000

Parámetros que determinan tamaño de lista Tabu

Cantidad de hijos por generación

Cantidad de padres de cada hijo

Umbral de rechazo de un hijo por (escasa) diversidad 10%|V|

HCAHCA EVOCOLEVOCOL

Introducción Esquema general de EVOCOL y HCAAlgoritmosResultadosConclusiones

InitPopulation HCA2 parent Crossover HCAMultiparent Crossover EVOCOL

Local SearchAccept Offspring EVOCOLUpdatePopulation EVOCOLParámetros de los algoritmos

3

15

1000000

3-7

Tl = α * f(C) + random(A) + floor(M / Mmax)

A = 10, α = 0.6,Mmax = 1000

A = 10, α = 0.6

Page 14: Algoritmos evolutivos híbridos para coloreo de grafos

Fuente de los grafos benchmark: 2nd DIMACS Implementation Challenge (http://dimacs.rutgers.edu/)

Introducción HCA vs Tabu SearchAlgoritmosResultadosConclusiones

HCA + EVOCOL + Estado del arte

Page 15: Algoritmos evolutivos híbridos para coloreo de grafos

20

T[s] *

EVOCOL

T[s] **

HCA

928

142818044688

13251848756903152

44

99564591

110494508

32520

79

EVOCOL HCA

1608

13550

327118

8827

* 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

Introducción HCA vs Tabu SearchAlgoritmosResultadosConclusiones

HCA + EVOCOL + Estado del arte

Page 16: Algoritmos evolutivos híbridos para coloreo de grafos

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)

IntroducciónAlgoritmosResultadosConclusiones

Conclusiones