Algoritmos genéticos en grafos Algoritmos evolutivos Jesús García López de Lacalle E. Universitaria de Informática (UPM) Características de los GAs • También se llaman EAs • Fueron introducidos por John Holland ∼ 1970 • Están inspirados en sistemas biológicos Hay una población de individuos La población evoluciona con un criterio de selección natural Los individuos se reproducen y mueren Pueden aparecer mutaciones en los individuos Los individuos tienen material genético 1 Material genético • Cromosoma conjunto de alelos = { 0, 1} 01001100010100101000100001110011101 longitud = w • Cada individuo tiene un único cromosoma • Mutación 10001010101101010 10001010100101010 Reproducción Los individuos “más aptos” • Tienen mayor probabilidad de ser padres • Tienen más hijos Recombinación cromosómica Padres Hijos 10001010101101010 10001010101111001 01100101000111001 01100101000101010 2 Selección natural El tamaño de la población se mantiene constante Evolución de la población en una generación • Reproducción • Mutaciones (afectan a los hijos) • Muerte de los individuos “menos aptos” Criterio de selección natural • v : { individuos } → R • a es más apto que b ⇔ v(a) > v(b) Parámetros de los algoritmos genéticos I a = Número de alelos w = Longitud de los cromosomas n = Tamaño de la población m = Número de generaciones r = Número de parejas que se reproducen f = Distribución de probabilidad de ser padre p = Probabilidad de mutación de un alelo v = función de evaluación 3 Algoritmo genético general I • Obtener aleatoriamente la primera generación P1 • Para 1 ≤ i < m – Para 1 ≤ j ≤ r • • • • Elegir en Pi una pareja de individuos Recombinarlos Mutar sus alelos con probabilidad pm Incluirlos en la población Pi – Eliminar de Pi los 2r individuos menos aptos – Hacer Pi+1 = Pi • Devolver el individuo más apto de Pm Parámetros de los algoritmos genéticos II a = Número de alelos w = Longitud de los cromosomas n = Tamaño de la población m = Número de generaciones pc = Probabilidad de combinación de una pareja f = Distribución de probabilidad de ser padre pm = Probabilidad de mutación de un alelo v = función de evaluación 4 Algoritmo genético general II • Obtener aleatoriamente la primera generación P1 • Para 1 ≤ i < m – Para 1 ≤ j ≤ n/2 • • • • Elegir en Pi una pareja de individuos Recombinarlos con probabilidad pc Mutar sus alelos con probabilidad pm Incluirlos en la población Pi+1 • Devolver el individuo más apto de todas las generaciones P1, P2, ..., Pm Ejemplo 1 Problema: Calcular la cadena de 20 bits (cromosoma) que mayor número de 1’s contiene Parámetros: ¿ 11111111111111111111 ? •a=2 •r=7 • w = 20 • p = 0.01 • n = 15 • v(x) = núm. de 1’s de x • m = 12 • función f 5 Función f Dada la población P = {u1,u2,u3,...,un} Entonces: f(x) = Σ { v(uj) − vmin − b | j ≤ x } U u1 u2 u3 un Ejemplo 1 Problema: Calcular la cadena de 20 bits (cromosoma) que mayor número de 1’s contiene Parámetros: •a=2 • w = 20 • n = 15 • m = 12 •f → b=0 y1 •r=7 • p = 0.01 • v(x) = núm. de 1’s de x Ejecución del GA... 6 Conclusiones del ejemplo 1 b = 0: La población converge demasiado deprisa (se pierde rápidamente la diversidad) b = 1: La población converge más despacio obteniéndose un resultado mejor Principio básico: Los parámetros de un GA deben ajustarse de modo que no se produzca una convergencia rápida de la población Ejemplo 2 Problema: Dado el siguiente conjunto de cláusulas ternarias determinar si existe una asignación de valores de verdad a las variables de forma que se cumplan todas las cláusulas x1∨¬ x2∨¬ x3 x4∨¬ x5∨¬ x6 x7∨¬ x8∨¬ x9 x10∨¬ x11∨¬ x12 x1∨ x2∨ x3 x4∨ x5∨ x6 x7∨ x8∨ x9 x10∨ x11∨ x12 x1∨¬ x2∨ x3 x4∨¬ x5∨ x6 x7∨¬ x8∨ x9 x10∨¬ x11∨ x12 x1∨ x2∨¬ x3 x4∨ x5∨¬ x6 x7∨ x8∨¬ x9 x10∨ x11∨¬ x12 ¬ x1∨ x2∨¬ x3 ¬ x4∨ x5∨¬ x6 ¬ x7∨ x8∨¬ x9 ¬ x10∨ x11∨¬ x12 ¬ x1∨ x2∨ x3 ¬ x4∨ x5∨ x6 ¬ x7∨ x8∨ x9 ¬ x10∨ x11∨ x12 ¬ x1∨¬ x2∨ x3 ¬ x4∨¬ x5∨ x6 ¬ x7∨¬ x8∨ x9 ¬ x10∨¬ x11∨ x12 x1∨¬ x4∨¬ x7 ¬ x2∨ x6∨¬ x10 ¬ x3∨¬ x8∨ x11 x5∨¬ x9∨¬ x12 7 Ejemplo 2 Cromosoma: x = 011001010011 Alelo(i) = valor de la variable xi Parámetros: •a=2 •r=7 • w = 12 (núm. Variables) • p = 0.01 • v(x) = núm. Cláusulas • n = 15 satisfechas por x • m = 12 •f → b=1 • nc = 32 (núm. de cláusulas) Ejecución del GA... Características de los GAs • Son aplicables en problemas de optimización • Son “heurísticos” • Realizan una búsqueda global • Suprimen la búsqueda en si los resultados son malos • Son apropiados para problemas NP 8 Teorema fundamental de los GAs • Para GAs de tipo II • Esquema: Orden: H = *11***0** O(H) = 3 Longitud: L(H) = 5 • Número esperado de individuos que cumplen el esquema H en la generación t: m(H,t) • Valoración de H: v(H) = 1 Σ |Pt∩H| • Valoración de P: v(P) = 1 |Pt| { v(u) | u∈Pt∩H } Σ { v(u) | u∈Pt } • Teorema: m(H,t+1) ≥ m(H,t) v(H) v(P) 1– pc L(H) – O(H)pm w–1 Un GA para coloración de grafos • Está basado en el algoritmo voraz de coloración: 1- Elegir una ordenación de los vértices 2- Asignar a cada vértice el color permitido más pequeño 1 Permutación de vértices: 1 3 5 2 2 42531 Conjunto de colores: {1,2,3,4,5} 1 4 3 3 • Los cromosomas son permutaciones de los vértices 9 Un GA para coloración de grafos • Recombinación cromosómica: Padres Hijos 685932147 786495321 684935127 986315427 • Mutaciones: 685932147 685392147 Un GA para coloración de grafos Función de evaluación: • Longitud de los cromosomas w • Número cromático del cromosoma x χ(x) • Función de evaluación v(x) = w − χ(x) 10 Ejemplo 3 Calcular el número cromático del siguiente grafo Ejecución del GA... Un GA para el problema del viajante • Dado un grafo ponderado completo encontrar el ciclo hamiltoniano de menor peso 1 2 2 5 2 1 1 1 4 ciclo C = 32541 1 2 1 1 Solución: 1 peso w(C) = 5 3 • Los cromosomas son permutaciones de los vértices 11 Un GA para el problema del viajante • Recombinación cromosómica: Padres Hijo1 685932147 786495321 684935127 628934157 652938147 645932187 • Mutaciones: 685932147 785932146 Un GA para el problema del viajante • Mutación II: 685932147 623958147 12 Un GA para el problema del viajante Función de evaluación: • Lista ordenada de pesos L = { w1,w2,...,wq } • Peso del grafo W = w1 + w2 + ... + wq • Ciclo hamiltoniano C = v1,v2,...,vn • Peso del ciclo w(C) = w(v1v2) + w(v2v3) + ... + w(vnv1) v(C) = W − w(C) v(C) = n*w1 − w(C) v(C) = w1 + w2 + ... + wn − w(C) Un GA para ciclos hamiltonianos • Calcular, si existe, un ciclo hamiltoniano en G = (V,A) • Construir un grafo ponderado completo G´= (V,A´) w(a) = 1 si a∈A w(a) = 2 si a∉A • Aplicar el AG para el problema del viajante a G´ Sea C el ciclo de menor peso obtenido C es hamiltoniano ⇔ w(C) = n w(C) − n = núm. de aristas de C que no están en G 13 Ejemplo 4 Determinar si el siguiente grafo es hamiltoniano Ejecución del GA... Ejemplo 5 Determinar si el siguiente grafo es hamiltoniano Ejecución del GA... 14 Referencias • D.E. Goldberg, Genetic Algorithms in Search, Optimization and Machine Learning, Addison-Wesley, 1989. • L. Davis, Handbook of Genetic Algorithms, Van Nostrand Reinhold, 1991. • W.M. Spears, Evolutionary Algorithms. The Role of Mutation and Recombination, Springer, 2000. 15