Algoritmos Genéticos Y Optimización Heurística Dr. Adrian Will Grupo de Aplicaciones de Inteligencia Artificial Universidad Nacional de Tucumán awill@herrera.unt.edu.ar Cuando Aplicar métodos Heurísticos Cuando no se pueda aplicar otro método, en general por falta de hipótesis para aplicar algoritmos determinísticos (funciones no derivables o no continuas, o que no son funciones, etc.) Problemas ruidosos o mal condicionados (los algoritmos heurísticos o aleatorios tienden a ser robustos y poco sensibles a la presencia de ruido) Existencia de gran cantidad de óptimos locales (donde los algoritmos tradicionales basados en derivadas quedan atrapados) Problemas reales de gran complejidad, donde es suficiente con encontrar una buena solución al problema, aunque no sea necesariamente el óptimo global Problemas Reales – Función de Rastrigin Modelo Matemático Fábrica - 2003 Métodos Aleatorios Búsqueda Tabú Hill Climbing Métodos Heurísticos Simulated Annealing Algoritmos Genéticos Ant Colony Optimization Clasificación de métodos Heurísticos Secuenciales (consideran una sola solución en cada paso) Paralelos (consideran muchas soluciones a la vez, en cada paso) Evolutivos (se basan en la Evolución en el tiempo de un individuo o Población) No Evolutivos Greedy (o “plus strategy”, sólo acepta solución si es mejor que la actual) No Greedy (acepta soluciones no tan buenas como la actual, con alguna probabilidad) Mono Objetivo (el objetivo del problema es minimizar 1 parámetro) Multi Objetivo (el objetivo del problema es minimizar más de 1 parámetro, entre los cuales es necesario encontrar un compromiso) Hill Climbing Secuencial (una sola solución considerada en cada paso) Greedy (sólo acepta una solución si es mejor que la actual) No Evolutivo (Metáfora: Persona Caminando) Algoritmo: 1. Tomar Solución Inicial X 0 2. Crear vector de avance, R = (r1 ,..., rn ) , al azar 3. X = X 0 + εR 4. Evalúo y comparo F ( X ) con F ( X 0 ) 5. Si F ( X ) > F ( X 0 ) , entonces 6. Vuelve a 2 X = X0 Hill Climbing X 0 = ( X 01 ,..., X 0n ) R = ( R ,..., R ) (random) 1 0 n 0 X = X0 + ε R F F ( X ), F ( X 0 ) F(X ) ≥ F(X0) ? SI X0 = X NO Simulated Annealing Secuencial (una sola solución considerada en cada paso) No Greedy (Acepta soluciones de menor calidad que la actual, con alguna probabilidad) Evolutivo (Metáfora: Persona Caminando) Algoritmo: 1. Tomar Solución Inicial 2. Crear vector de avance, R = ( r1 ,..., rn ) , al azar 3. X = X 0 X0 + εR 4. Evalúo y comparo F ( X ) con F ( X 0 ) 5. Si F ( X ) > F ( X 0 ) , entonces X = X 0 6. Si no, acepto el nuevo valor con probabilidad p que depende del tiempo y de un parámetro (Temperatura Inicial) X 0 = ( X 01 ,..., X 0n ), t = 0, T0 t = t +1 R = ( R ,..., R ) (random) 1 0 n 0 X = X0 + ε R F F ( X ), F ( X 0 ) F(X ) ≥ F(X0) ? SI X0 = X NO s random P(T0 , t ) ≥ s ? SI NO Algoritmos Genéticos Los individuos mejor adaptados tienen más posibilidades de reproducirse que los menos adaptados: Los menos adaptados también tienen posibilidades de reproducirse Dados los 2 padres, el gen de los hijos se obtiene como una combinación aleatoria de los genes de los padres Periódicamente la naturaleza envía una catástrofe Esquema de un Algoritmo Genético Población Inicial Operador de Selección Operador de Cruzamiento Operador de Mutación Nueva Población Finaliza ? Población Final Algoritmos Genéticos • Paralelo (consideran muchas soluciones a la vez en cada paso, llamada “Población”) • Evolutivo (Están inspirados en el principio de Evolución y Selección Natural de Darwin) Initial Population Final Population Mutation CrossOver Selection Operador de Selección – Ruleta con pesos Operador de Cruzamiento Single Point Padre I A B C D E F G Padre II 1 2 3 4 5 6 7 Hijo I A B C D 5 6 7 Hijo II 1 2 3 E F G 4 Operador de Mutación Hijo n Hijo Mutado A B C D E F G D B C A E F G Ejemplo F ( x, y ) = x + y, x, y ∈ [ −1,1] Tamaño de la Poblacion Inicial = 5 Generaciones = 4 Metodo de selección: Ruleta Crossover: Single Point Mutacion: Boundary Mutation Matriz de Bounds ⎡ −1 1⎤ Bounds = ⎢ ⎥ ⎣ −1 1⎦ Ejemplo S1 = ( 0, 0.5 ) F ( S1 ) = 0.5 S 2 = ( −0.5, 0.25 ) F ( S 2 ) = −0.25 S3 = (−0.3, −0.2) F ( S3 ) = −0.5 S 4 = (0.6, −0.4) F ( S 4 ) = 0.2 S5 = (−0.3, −0.7) F ( S5 ) = −1 Paso 1: Selección por el método de la ruleta Procedimiento? 0 1 Sol 1 Sol 2 Sol 3 Sol 4 {F ( S1 ),..., F ( S n )} → {F ( S1 ) − m,..., F ( S n ) − m} P = {F ( S1 ) − m / Sum,..., F ( S n ) − m / Sum}, Sol 5 m = min( F ( Si )) con n Sum = ∑ F ( Si ) − nm = F ( S1 ) + ... + F ( S n ) − nm i =1 P Distribución de Probabilidad s1 ,...., sn al azar P = {F ( S1 ) / Sum,..., F ( Sn ) / Sum}, Si = solucion i es seleccionado ⇔ si ∈ [ F ( Si ) / Sum, F ( Si +1 ) / Sum] ←{F (S1 ), F (S2 ), F (S3 ), F (S4 ), F (S5 )} 0.5 − 0.25 − 0.5 0.2 − 1 0.5 0.2 − 0.25 − 0.5 − 1 ←{F (S1 ), F (S4 ), F (S2 ), F (S3 ), F (S5 )} (reordenando) m = min(F (Si )) = −1 1.5 1.2 0.75 0.5 0 ← G = {F (S1 ) − m + ε ,..., F (Sn ) − m + ε} 1.6 1.3 0.85 0.6 0.1 ε = 0.1 ←G = G +ε Sum = sum(G) = 4.45 P= G./ sum(G) P (S1) P (S 4 ) P (S 2 ) P (S 3 ) P (S 5 ) 0 .3 6 0 .2 9 2 0 .1 9 1 0 .1 3 5 0 .0 2 2 0.36 0.292 0.191 0.135 0.022 P(S1) P(S4 ) P(S2 ) P(S3 ) P(S5 ) 0.36 0.652 0.843 0.978 1 ← 0 0.65 0.36 S1 cumsum(P) S4 0.84 S2 0.97 S3 generamos s1 ,..., s5 , al azar 0.95 → S3 0.23 → S1 0.61 → S4 0.48 → S4 0.89 → S3 0 0.65 0.36 S1 S4 0.84 S2 0.97 S3 Población Nueva (después de la Selección) NewPop={S1 ,S3 ,S3 ,S4 ,S4} ={(0,0.5),(-0.3,-0.2),(-0.3,-0.2),(0.6,-0.4),(0.6, −0.4)} ↓ Crossover se eligen parejas al azar y se realiza Single Point Crossover (x,y) → (x,w) (z,w) → ( z, y) Población luego de Crossover P1 = S1 = (0,0.5) C1 = (0.6,0.5) P2 = S4 = (0.6, −0.4) C2 = (0, −0.4) P1 ' = S4 = (0.6, −0.4) P2 ' = S3 = (−0.3, −0.2) → C1 ' = (0.6, −0.2) C2 ' = (−0.3, −0.4) NewPop= {(0.6,0.5),(0,-0.4),(0.6,-0.2),(-0.3,-0.4),(-0.3,-0.2)} Mutación – Boundary Mutation 1 - Se elige una coordenada de la solución, al azar 2 – Se elige una dirección, al azar (hacia arriba o hacia abajo del intervalo) 3 – Se cambia la coordenada correspondiente de la solución, por el borde correspondiente del intervalo, Bounds(i,1) o Bounds(i,2), según la dirección elegida S o lu c ió n E le g id a : S 3' = C 1 ' = ( 0 .6 , − 0 .2 ) C o o rd e n a d a E le g id a : 1 D ire c c io n E le g id a : a rrib a S 3' m u ta d o = (1, − 0 .2 ) NewPop (luego de Mutación y Crossover) = {(0.6,0.5),(0,-0.4),(1,-0.2),(-0.3,-0.4),(-0.3,-0.2)} Comparación 1ra y 2da Generación Y repetir hasta completar la cantidad prefijada de Generaciones