1. Introducción IIC 2632 – Computación Evolutiva © Rodrigo Sandoval IIC 2632 – Computación Evolutiva Contenidos • • • • • • • Un poco de historia Solución de problemas ¿Cómo nos abstraemos? Un algoritmo genético básico Clasificación Ejemplos Aplicando conceptos en un ejemplo simple Base: José T. Eterovic 2008 Un poco de historia • En el siglo XIX, el estudio de la genética partió con Mendel. – Define que la información pasa “de alguna forma” de padres a hijos. • Paralelamente, Darwin propone que las especies evolucionan de generación en generación, logrando adaptarse mejor al ambiente. – Cada generación no tiene por qué ser mejor que la anterior, – … pero potencialmente lo es. Un poco de historia • A mediados de este mismo siglo se aisló por primera vez ADN. • Sólo a principios del siglo XX se supo que el ADN guardaba la información genética. Un poco de historia • En el año 1953, en una publicación en Nature, Watson y Crick presentan la estructura del ADN. En 1962 se les otorga el Nobel por eso • En 1957, Watson y Crick presentan la relación ADN - ARN - proteínas, lo que es la base de la biología molecular. Un poco de historia • En el año 1966 se presenta el concepto de programación evolutiva. – Lawrence Fogel, M. Evans, M. Walsh “Artificial Intelligence through Simulated Evolution” • Luego, en el año 1975 se presenta el concepto de algoritmo genético – John Holland, “Adaptation in Natural and Artificial Systems” • Posteriormente se han desarrollado versiones alternativas, finalmente definiéndose el concepto de Programas Evolutivos. Solución de Problemas • En la naturaleza, el problema es adaptarse al medio (sobrevivir). • La naturaleza no sabe cómo solucionar el problema, pero si sabe como evaluarlo (selección natural). • Cada especie es la solución al problema de adaptarse a su ambiente particular. • Cada problema (ambiente) tiene más de una solución. • Las soluciones no son óptimas, pero son suficientemente buenas. ¿Y eso qué? • Podemos extrapolar la forma que tiene la naturaleza para solucionar el problema de la adaptación al medio, aplicándolo a la solución de algún otro. • Tenemos que entender la molécula de ADN como un repositorio de información, que define la solución propuesta. Todo lo que se necesita para definir una posible solución al problema está aquí. Abstrayendo . . . • Una solución, generada en parte por más de una solución “padre”, es potencialmente mejor que cada uno de los padres por separado. • Existe un nivel de incertidumbre en la copia de la información de una generación a la siguiente. • La selección natural elige a los que mejor solucionan el problema para que sean los padres de la próxima generación. Partamos por el principio … ALGORITMO GENÉTICO Optimización • Escalada global local Optimización … (2) • Multi-montañistas Optimización … (3) • Algoritmo Genético No estoy en la cumbre ¡Mi altura es mejor! mejor! Estoy en la cumbre La altura es … Voy a continuar Optimización … (4) • Algoritmo Genético … poco después Un Algoritmo Genético Básico Procedure GA Generar una población inicial repeat Función Objetivo Evaluación de “optimalidad” de cada individuo. Evaluar cada uno de los individuos Seleccionar los padres de la sig. generación Crear la siguiente generación Selección, modificación y Modificar algunos de los individuos nueva Generación Criterios que determinan cómo until Condición de término se recorre el dominio. Condición de Término Criterio que impide seguir “para siempre”. Determina cuándo es suficiente. No garantiza encontrar un real “óptimo”. Un Algoritmo Genético Básico • Un proceso evolutivo que busca el individuo más apto (el óptimo de acuerdo a una función objetivo). Varias Generaciones Primera Generación Selección y operadores ¡El más apto se queda! 7 7 7 2 3 4 Recombinación 3 8 5 1 3 4 1 2 ¿Qué tan 2 aptos son? 3 Mutación 2 ¿Qué tan aptos son estos ahora? 8 ... 7 11 8 10 6 9 Clasificación • Representación lineal – Algoritmos genéticos: se basan en la recombinación. – Estrategias evolutivas: se basan en la mutación. – Algoritmos de estimación de distribución • En un solo operador mezclan la recombinación y mutación. • Un individuo es hijo de toda la generación anterior, en lugar de 2 padres. • Representaciones no lineales Aplicación en casos reales EJEMPLOS Ejemplo - Optimización Ejemplo - Optimización Ejemplo – Arte Evolutivo Ejemplo – Movimiento de Robots Proceso de deposición (semiconductor) • Un proceso que depende de los ángulos utilizados por el cañón de iones. • La implantación depende de tres parámetros dependientes de ángulo y tiempo: – sputcn (n: 1,2,4) – time. Proceso de deposición (semiconductor) Proceso de deposición (semiconductor) • Función Objetivo para Optimización (función de fitness). T = F(sputc1, sputc2, sputc4, time) • Optimización: encontrar la combinación de parámetros para producer una capa de Nitrato adecuada, con la sig. forma: – – – Ta1 cerca de 0.27 μm Ta2 cerca de 0.25 μm Ta3 cerca de 0.01 μm Aplicando los conceptos EJEMPLO DE OPTIMIZACIÓN [Michalewicz 1996] Optimización de una función simple • Max f(x) f (x) = x · sin(10 π x) + 1 • Restricción: El valor de x debe estar dentro del rango [−1, 2] Optimización simple - Representación • En GA se usa un vector para representar la solución, en este caso un vector binario. • ¿Qué tan largo? Para este experimento utilizaremos una precisión de 6 dígitos decimales, mientras que el largo de 3 se usa para la parte entera dentro del rango definido. • Entonces, necesitaremos 22 bits por valor, es decir, cada uno de nuestros individuos es un arreglo de 22 bits. • Finalmente, el valor representado (función de mapeo) es: −1 + 3x/(222 −1) Optimización simple - Representación −1 + 3x/(222 −1) • Por ejemplo, el valor representado por el cromosoma 1000101110110101000111 es −1 + 3·2288967/4194303 = 0.637197 • Los bordes del dominio: – 0000000000000000000000 x = -1.0 – 1111111111111111111111 x = 2.0 • La población inicial es un conjunto de arreglos de bits de tamaño 22, inicializados de manera aleatoria. Optimización simple – Función objetivo • Como lo que queremos es maximizar la función f (x) = x · sin(10 π x) + 1, el cálculo del valor de esta función para cada uno de los valores representados por nuestros individuos será una excelente función de evaluación. Optimización simple - Recombinación • Crossover: basado en 2 padres, genera 2 hijos. • Se selecciona aleatoriamente un punto de corte. • El primer hijo tiene la región inicial (hasta el punto de corte) igual al primer padre, y la región final (desde el punto de corte) igual al segundo padre. • El segundo hijo es el opuesto del primero. p = 000101010000|1111010101 • Ejemplo: p = 010111010100|0101001110 1 2 h1 = 000101010000|0101001110 h2 = 010111010100|1111010101 Optimización simple - Mutación • Este operador modifica el valor de uno de los bits de un individuo, regenerándolo. • El índice de ese valor es generado de manera aleatoria. • Como el valor es regenerado, es posible (50% de probabilidad) que el individuo no sufra cambios. • Ejemplo: i = 0010101101010001010100 i’= 0010101101110001010100 Optimización simple - Parámetros • Probabilidad de recombinación (pc): Probabilidad de que 2 padres escogidos, realmente sean recombinados y no pasen como copias a la siguiente generación. • Probabilidad de mutación (pm): Probabilidad de que un individuo sufra una mutación en una generación en particular. • Cantidad de iteraciones (iter): Cantidad de generaciones por las que se llevará a cabo la simulación. • Tamaño de la población (pop_size): Cantidad de individuos existentes en cada generación Optimización simple - Resultados • pr = 0.8, pm = 0.5, iter = 100, pop_size = 20 Aplicando los conceptos PRIMEROS EJEMPLOS [A.E. Eiben & J.E. Smith] Ejemplo: Maximizar f(x) = x2 Goldberg ‘89 (1) • max x2 sobre {0,1,…,31} • Definir: – Representación. – Parámetros de Ejecución. ¿Cuáles? – Operadores de Búsqueda. – Esquema de Selección. Ejemplo: Maximizar f(x) = x2 • Representación – binaria, e.g. 01101 13 • Parámetros de Ejecución: – Tamaño población: 4 – ¿Condición de término? • Sin mejoras por más de N generaciones • ¿Solución inicial? – Probabilidad de Crossover. – Probabilidad de Mutación. Ejemplo: Maximizar f(x) = x2 • Operadores de Búsqueda: – Crossover: • ¿1 punto o más? • Probabilidad de ser seleccionado para crossover. – Mutación • Probabilidad de ser seleccionado para mutación. • Selección Selección Crossover Mutación Aplicando los conceptos OTROS EJEMPLOS [Michalewicz 1996] Otros Ejemplos • Dilema del Prisionero – Hay 2 prisioneros acusados de un crimen, cada uno en celda separada, siendo interrogados. – A cada uno de ellos se les dice que si delatan al otro, y éste no lo delata, el otro recibirá una condena de 5 años y ellos saldrán libres. – Si ninguno de los dos delata al otro, ambos reciben una condena de 1 año. – Si ambos delatan al otro, ambos reciben una condena de 3 años ¿Cómo debería comportarse un prisionero dada la historia de comportamiento de su compañero? Dilema del Prisionero • Representación – Por simplicidad, vamos a asumir que el prisionero recuerda las últimas 3 situaciones en las que estuvo con este compañero como prisioneros. – Por lo que sólo basta que el prisionero tenga una decisión tomada para cada posibilidad de historia (64 posibilidades), tomando esa decisión cuando le corresponda. Dilema del Prisionero • Representación – Se puede representar como un arreglo de bits de tamaño 64, con un 1 si se debe delatar y con un 0 si no se debe delatar. – Hay que agregarle decisiones para los casos en los que aún no existen 3 situaciones anteriores (16 casos para la tercera vez, 4 casos para la segunda vez y 1 caso para la primera vez), con lo que la cantidad de casos es 85. Vendedor Viajero • Dada una colección de ciudades y el costo de viajar entre pares de éstas, el Problema del Vendedor Viajero (TSP), consiste en encontrar la forma más barata de recorrer todas las ciudades y volver al punto de inicio. • Se asume costo de viajar de XY, equivalente a viajar YX. TSP n minimize: n cij xij i 1 j 1 n subject to: x 1 x 1 j 0 n ij 1 i n (out degrees = 1) 1 j n (in degrees = 1) i 0 ti t j nxij n 1 2 i, j n (??) ij • cij = distance from city i to city j • xij = 1 if tour visits i then j, and 0 otherwise (binary) • ti = arbitrary real numbers we need to solve for