Inteligencia Artificial Sesión 8 “Algoritmos Genéticos” Ingeniería Superior en Informática, 4º Curso académico: 2008/2009 Profesores: Sascha Ossowski, Ramón Hermoso, y Matteo Vasirani Resumen: 2. Agentes basados en búsqueda 2.1. Búsqueda en espacios de estados 2.2 Búsqueda no-informada 2.3. Búsqueda heurística 2.4. Búsqueda multiagente 2.5. Búsqueda con espacios estructurados – Planificación – Satisfacción de Restricciones – Algoritmos Genéticos Motivación • La evolución y la selección natural es un principio exitoso para la búsqueda de individuos capaces de sobrevivir en un entorno. • Idea: imitar la selección natural para buscar soluciones a problemas complejos 1) Una posible solución a un problema se formaliza como un individuo que lucha para la sobrevivencia dentro de una población de individuos 2) Solo los mejores sobreviven y se reproducen Selección natural • Teoría introducida por Charles Darwin (1809-1882) – “El origen de las especies” (1859) • Observaciones: – Las especies se desarrollan continuamente – Las variaciones entre especies son enormes – Solo un pequeño porcentaje sobrevive hasta llegar a la edad adulta Terminología Cromosoma Individuo Gen Selección Cruce Inserción Mutación Operadores Genéticos Generación N Generación N+1 Cromosoma 1 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 Alelo • Cada cromosoma representa una solución, codificada como un conjunto de valores discretos (binarios, enteros …) • El valor de cada gen se llama alelo • Un cromosoma aislado no tiene significado, necesita una decodificación Algoritmos Genéticos: Estructura Inicializa población inicialización Selecciona padres selección Crea hijos cruce Muta hijos mutación Inserta hijos en la población inserción Generación N+1 Criterio de stop? no sí Devolver el mejor individuo encontrado a lo largo de la ejecución Crear un AG • • • Definir una representación (estructura y decodificación) del cromosoma Definir una función de fitness Definir los operadores genéticos – Inicialización, selección, cruce, mutación, inserción 1. Ejecutar el algoritmo – Monitorizar la fitness media – Evaluar el mejor individuo 2. Tunear el algoritmo – Ajustar la selección, estrategia de inserción, porcentajes de mutación Representación de un cromosoma Genotipo Fenotipo codificación decodificación Biología: UCGAACCGU bloques de ADN L Diseño: 100101010010 H cromosoma radio Representación de un cromosoma 4-Reinas: Genotipo Fenotipo codificación decodificación 2203 cromosoma Dependiendo del problema, se pueden usar diferentes representaciones – binaria {0, 1} – ternaria {0, 1, 2}, {A, B, C} – enteros {1, 2, 4,..., 16, 17, ...} – reales {1.2, 4.5, 5.77777, -0.566 } Fitness y probabilidad de selección • Típicamente la selección de los individuos candidatos a la reproducción (padres), es el paso más importante y más costoso computacionalmente solución candidata 100101010010 cromosoma La fitness determina la probabilidad de ser seleccionado x decodificación P(seleccionado) F Evaluar x respeto al objetivo del problema F = f(x) fitness Función de fitness • Cada cromosoma tiene un valor de fitness asociado – Mapear el objetivo del problema en una función de fitness • 4-Reinas: número de reinas amenazadas • Problema del viajero: longitud del camino • Asignación obras a empresas: coste total de la asignación • ... • Elegir una apropiada función de fitness es muy importante • Si el problema tiene vínculos de factibilidad, se pueden incluir: – En la función de fitness (penalidad por violación) – En la representación – En los operadores de cruce y mutación (crean individuos que no violan vínculos) Función de fitness • En general, a valores de fitness altos (no necesariamente positivos), corresponden individuos que son buenos candidatos para la reproducción • Problemas de maximización: – F = g(x) g(x) = objetivo – F = a · g(x) + b | a > 0, b tal que F > 0 – F = g(x)k • Problemas de minimización – F = 1/g(x) – F = K – g(x), K >> g(x) Selección • El objetivo de un operador de selección es seleccionar los padres para la creación de los individuos de la generación sucesiva • Un operador de selección debería favorecer la selección de los individuos con valor de fitness alto pero también preservar la diversidad en la población • Operadores de selección – Ruleta – Ranking – Torneo – … Selección de la ruleta • La probabilidad de una individuo x ∈ población de ser seleccionado está dada por: P(x) = Probabilidad proporcional al valor de fitness F(x) F( xi ) i Todos los individuos tienen probabilidad de ser seleccionados • Favorece los individuos con fitness mucho más alta de los demás • Converge más rápidamente (no siempre es bueno) Selección con ranking • Los individuos son ordenados según su valor de fitness del mejor al peor. El lugar ocupado en esta lista se denomina su ranking. • El ranking determina la probabilidad de ser seleccionado, de manera que individuos con alto ranking tengan más probabilidad P(x) = 1 ·[ rank(x) i 1/rank( xi ) ]-1 • Ejemplo: • F( x1 ) = 1000, F( x2 ) = 10, F( x3 ) = 1 • Ruleta: P( x1 ) = 0.99, P( x2 ) = 0.009, P( x3 ) = 0.0009 • Ranking: i 1/rank( xi ) = 1+1/2+1/3= 1.83, P( x1 ) = 0.55, P( x2 ) = 0.27, P( x3 ) = 0.18 Selección con ranking • Usando la selección por ranking, el individuo de ranking r en cualquier generación tendrá la misma probabilidad de ser seleccionado • En las primeras generaciones, esto es bueno porque evita la convergencia prematura, asignando a individuos de bajo ranking suficiente probabilidad de ser seleccionados • Cuando la desviación de la fitness media es pequeña (i.e., la población está formada por individuos medianamente aptos), es mejor asignar más probabilidad a los mejores individuos – Aumentar la presión selectiva a lo largo de las generaciones Selección con ranking • Calcular una fitness F' con la fórmula: F'(x) = min + (Max - min) · N - rank( xi ) N-1 • Aplicar la selección de la ruleta • Variar los valores min y Max para generar más o menos presión selectiva • Ejemplo: 1) min=100, Max=110 2) min=10, Max=110 • 1) F’(r1) = 110, F’(r2) = 100+10·1/2=105, F’(r3) = 100 o P(x1)=110/315=0.34, P(x2)=105/315=0.33, P(x3)=100/315=0.32 • 2) F’(r1) = 110, F’(r2) = 10+100·1/2=60, F’(r3) = 10 o P(x1)=110/180=0.61, P(x2)=60/180=0.33, P(x3)=10/180=0.06 Selección con distribución de Boltzmann (soft-max ) • La probabilidad de una individuo x ∈ población de ser seleccionado está dada por: eF(x)/T P(x) = eF(x)/T i • Variando el parámetro T (temperatura), se puede controlar la presión selectiva • Primeras generaciones T alta todos los individuos tienen buena probabilidad de ser seleccionados • Ultimas generaciones T baja los mejores tienen mucha más probabilidad de ser seleccionados Selección con torneo • Seleccionar k individuos aleatoriamente (k es el tamaño del torneo) y elegir el mejor Población Ganador Concursantes (k=3) f=2 f=3 f=9 f=2 f=1 f=9 f=8 f=2 f=9 f=2 f=5 f=7 f=8 f=8 2 1 f=2 3 Cruce cruce ??? ??? ¿Como se puede operar sobre x1 e x2 para crear dos hijos con la misma representación (longitud, decodificación, estructura de gen) ? Cruce en un solo punto Padres Hijos El punto de cruce se selecciona de manera aleatoria Cruce en dos (o más) puntos Padres Hijos Cruce: ejemplo • 4 reinas [ x1 x2 x3 x4 ] 3 3 1 3 f=4–3=1 [ x1 x2 x3 x4 ] 2 4 2 4 f=4–2=2 [ x1 x2 x3 x4 ] 2 4 1 3 f=4–0=4 Cruce • Un operador de cruce debe producir hijos consistentes con la representación • E.g.: el problema del viajero [ ciudad1 Bilbao [ ciudad1 Lugo [ ciudad1 Bilbao ciudad2 ciudad3 ... Sevilla Madrid Soria ciudad2 ciudad3 ... Madrid Sevilla ciudad2 ciudad3 ... Sevilla Sevilla ciudadN ] ciudadN ] Vigo ciudadN ] Vigo Hijo no consistente con la representación Cruce • Cruce para el problema del viajero [ ciudad1 Selecciono aleatoriamente un subcamino ciudad2 ciudad3 ciudad4 ciudad5 ciudad6 ciudad7 ] Lugo Madrid Sevilla Vigo Soria Bilbao Mostoles Madrid Lugo Sevilla Mostoles Bilbao Vigo Soria Completo el subcamino añadiendo la ciudades del segundo padre, que ya no están en el subcamino, según el orden en que aparecen [ ciudad1 Sevilla ciudad2 ciudad3 ciudad4 ciudad5 ciudad6 Vigo Bilbao Soria Madrid Lugo ciudad7 ] Mostoles Mutación • Dilemma – Poca mutación conduce a poblaciones con un pobre patrimonio genético a lo largo de las generaciones – Demasiada mutación ralentiza la convergencia • Características: – Actúan sobre un único cromosoma. • Modificar los cromosomas para recuperar diversidad genética (exploración) – Como los operadores de cruce, debe producir cromosomas validos Mutación • Ejemplo: juego genético. – La fitness de un invididuo es dada por el numero de “1” en el cromosoma Generación k Generación m 11000 01001 ... 10011 11011 11011 ... 11011 Fitness media: 3.4 Fitness media: 4 Sin mutación nunca aparecerá “1”, por lo tanto nunca se alcanzará la máxima fitness posible Mutación • Ejemplo: 4 reinas Sin mutación nunca se llegará a una solución Individuo 1 Individuo 2 Individuo 3 Individuo N Mutación • Posibles operadores: – Cada cromosoma tiene una probabilidad de mutar. Si un cromosoma ha sido seleccionado para la mutación, modificar cada gen con probabilidad Pm << 1 – Mutar un gen aleatoriamente en todos los cromosomas – Intercambiar dos genes de un cromosoma Inserción • El operador de inserción se encarga de crear la población de la generación K+1 • Posibles estrategias: – Remplazar la población entera • Seleccionar N/2 parejas de padres N=tamaño de la población • Crear N hijos y remplazar todos los padres • Un padre puede ser seleccionado más veces – Remplazar la población dos a dos • Seleccionar una pareja de padres • Crear un hijo y remplazar un padre (¿el peor?) – Elitismo • Los mejores individuos (e.g., 1%) son preservados en la generación K+1, los otros se crean con una de las dos estrategias anteriores Inicialización • Para poder ejecutar un algoritmo genético, hay que inicializar la población de la generación 0 • En general se inicializa de manera aleatoria, usando una distribución uniforme • Se pueden insertar en la generación 0 algunos buenos individuos, por ejemplo ejecutando una búsqueda voraz que rapidamente pueda encontrar algunas buenas soluciones Criterio de parada • No existe un criterio obvio • Algunas opciones: – Max número de generaciones (e.g. 100) – Desviación de la fitness media por debajo de un umbral (poca diversidad genética en la población) – Estancamiento (ninguna mejora evidente entre una generación y la succesiva) – Se ha encontrado un estado particular del espacio de búsqueda (e.g., en caso se sepa cual es el máximo valor de fitness posible, una vez encontrado un individuo con tal valor, el algoritmo puede parar) Convergencia Óptimo (desconocido) Convergencia demasiado rápida (poca mutación, demasiado elitismo?) La fitness promedia debería crecer, porqué los individuos buenos se preservan y se reproducen, mientras que los malos desaparecen Algoritmos genéticos • Buenas noticias – No se necesita mucho conocimiento sobre el problema • Representación del cromosoma y funcion de fitness – Aplicables a muchos problemas • Problemas de búsqueda donde el estado meta no es explicito, y no es importante el camino hasta el estado meta, si no el estado meta en sí (e.g. 4-reinas) • Malas noticias – No existe una “best practice” (ensayo-y-error) • Probar diferentes operadores de selección, cambiar los porcentajes de mutación... – Diseño de la función de fitness puede ser problemático – No maneja muy bien los problemas con vínculos de factibilidad – Criterio de parada