Algoritmos Genéticos Inteligencia Artificial Ingeniería Cibernética y en Sistemas Computacionales 8° Semestre Hernández Reyes Lidy López Suárez Ricardo Mendiola Illescas Rosa María Valdez Moreno Israel 12 de Mayo de 2011 Algoritmos Genéticos y su relación con el movimiento de una pierna robótica. Índice Índice ................................................................................................................................................... 1 Objetivos .............................................................................................................................................. 2 Definiciones y conceptos básicos del tema ........................................................................................ 2 Estructura......................................................................................................................................... 4 Tipos de Representación ............................................................................................................. 4 Tamaño de la población ............................................................................................................... 4 Población Inicial ........................................................................................................................... 4 Función Objetivo .......................................................................................................................... 4 Operador de Selección ................................................................................................................ 4 Operador de Cruce ...................................................................................................................... 5 Operador de Mutación ................................................................................................................. 5 Ventajas ........................................................................................................................................... 5 Desventajas ..................................................................................................................................... 5 ¿Cuándo usar algoritmos genéticos? .............................................................................................. 6 Antecedentes y desarrollo históricos. ................................................................................................. 6 Fundamentos biológicos. .................................................................................................................... 6 Estado del arte .................................................................................................................................... 7 Áreas de aplicación y clases ........................................................................................................... 7 Desarrollos actuales en el mundo y en México. .................................................................................. 8 Caso Práctico ...................................................................................................................................... 9 Bibliografía consultada ...................................................................................................................... 11 Cuestionario ...................................................................................................................................... 12 1 Objetivos Explicar el concepto de Algoritmo Genético, así como todos los aspectos que lo rodean. Mostrar un ejemplo práctico para mejor comprensión del tema. Definiciones y conceptos básicos del tema El Algoritmo Genético (AG) es un modelo de aprendizaje que debe su comportamiento a una metáfora de algunos de los mecanismos de la evolución que se observan en la naturaleza (como la reproducción sexual y el principio de la supervivencia del más apto), son métodos adaptativos, generalmente usados en problemas de búsqueda y optimización de parámetros. Siguiendo la definición dada por Goldberg en 1989: “Los Algoritmos Genéticos son algoritmos de búsqueda basados en la mecánica de la selección natural y de la genética natural. Combinan la supervivencia del más apto entre estructuras de secuencias con intercambio de información estructurado, aunque aleatorizado, para constituir así un algoritmo de búsqueda que tenga algo de las genialidades de las búsquedas humanas”. A grandes rasgos, un algoritmo genético consiste en una población de soluciones codificadas de forma similar a cromosomas. Cada uno de estos cromosomas tendrá asociado un ajuste o valor de bondad que cuantifica su validez como solución del problema. En función de este valor se le darán más o menos oportunidades de reproducción. Además, con cierta probabilidad se realizarán mutaciones de estos cromosomas. El poder de los AG proviene del hecho de que se trata de una técnica robusta, y pueden tratar con éxito una gran variedad de problemas provenientes de diferentes áreas, incluyendo aquellos en los que otros métodos encuentran dificultades. Si bien no se garantiza que el AG encuentre la solución óptima del problema, existe evidencia empírica de que se encuentran soluciones de un nivel aceptable, en un tiempo competitivo con el resto de algoritmos de optimización combinatoria. Los algoritmos de optimización combinatoria resuelven instancias de problemas que se creen ser difíciles en general, explorando el espacio de soluciones (usualmente grande) para estas instancias. Los algoritmos de optimización combinatoria logran esto reduciendo el tamaño efectivo del espacio, y explorando el espacio de búsqueda eficientemente. Estos algoritmos se relacionan frecuentemente con problemas NP. En el caso de que existan técnicas especializadas para resolver un determinado problema, lo más probable es que superen al AG, tanto en rapidez como en eficacia. El gran campo de aplicación de los AG se relaciona con aquellos problemas para los cuales no existen técnicas especializadas. Incluso en el caso en que dichas técnicas existan, y funcionen bien, pueden efectuarse mejoras de las mismas hibridándolas con los AG. Cuando el AG es implementado, se hace de forma que involucre el siguiente ciclo: 1. Generación de una población inicial de manera aleatoria. 2. Evaluar el desempeño de todos los individuos de la población, tomando en cuenta alguna función objetivo. 3. Crear una nueva población mediante la ejecución de operaciones como el crossover y mutación sobre individuos cuyo desempeño haya sido evaluado. 2 4. Descartar la población vieja e iterar usando la nueva, hasta que el número de generaciones alcanza al criterio de terminación. Generacion=0 Población Inicial Aleatoria SI Criterio de terminación? ? Resultado Propuesto NO Evaluación de cada individuo en la población Fin SI Generacion++ Individuos=M? NO Mutación Selección de la operación Genética Cruce 2 Individuos seleccionados Individuo seleccionado en en base a su desempeño base a su desempeño Ejecución Crossover Ejecución Mutación Inserción de 2 individuos en Inserción del mutante en la la nueva población nueva población Individuos=Individuos+2 Individuos=Individuos+1 Una iteración de este ciclo constituye una generación. Este comportamiento puntual no se observa como un todo dentro de las poblaciones en la naturaleza pero si representa un modelo de 3 implementación conveniente. La primera generación (generación 0) de este proceso opera sobre una población de individuos generados aleatoriamente. Desde entonces las operaciones genéticas en conjunto con la medida del desempeño trabajan para mejorar la población. Estructura Tipos de Representación Durante los primeros años el tipo de representación utilizado era siempre binario, debido a que se adapta perfectamente al tipo de operaciones y el tipo de operadores que se utilizan en un AG. Sin embargo, las representaciones binarias no son siempre efectivas por lo que se empezaron a utilizar otro tipo de representaciones. En general, una representación debe identificar las características constituyentes del conjunto a estudiar, de forma que distintas representaciones dan lugar a distintas perspectivas y por tanto distintas soluciones. Tipos básicos de representaciones: Representación binaria: Cada gen es un valor 1 ó 0. Representación entera: Cada gen es un valor entero. Representación real: Cada gen es un valor real. Tamaño de la población Una cuestión que se puede plantear es la relacionada con el tamaño idóneo de la población. Parece intuitivo que las poblaciones pequeñas corren el riesgo de no cubrir adecuadamente el espacio de búsqueda, mientras que el trabajar con poblaciones de gran tamaño puede acarrear problemas relacionados con el excesivo costo computacional. Población Inicial Habitualmente la población inicial se escoge al azar. Si los individuos de la población inicial se obtuviesen como resultado de alguna técnica heurística o de optimización local puede suceder que se acelere la convergencia del AG. Sin embargo en algunos casos la desventaja resulta ser la prematura convergencia del algoritmo, queriendo indicar con esto la convergencia hacia óptimos locales. Función Objetivo El resultado al cual se desea llegar. Operador de Selección El operador de Selección es el encargado de transmitir y conservar aquellas características de las soluciones que se consideran valiosas a lo largo de las generaciones. El principal medio para que la información útil se transmita es que aquellos individuos mejor adaptados tengan más probabilidades de reproducirse. Sin embargo, es necesario también incluir un factor aleatorio que permita reproducirse a individuos que aunque no estén muy bien adaptados, puedan contener alguna información útil para posteriores generaciones, con el objeto de mantener así también 4 cierta diversidad en cada población. Operador de Cruce El operador de Cruce permite realizar una exploración de toda la información almacenada hasta el momento en la población y combinarla para crear mejores individuos. Operador de Mutación La mutación se considera un operador básico, que proporciona un pequeño elemento de aleatoriedad en el entorno de los individuos de la población. Si bien el operador de cruce es el responsable de efectuar la búsqueda a lo largo del espacio de posibles soluciones, el operador de mutación va ganando en importancia a medida que la población de individuos va convergiendo. El objetivo del operador de mutación es producir nuevas soluciones a partir de la modificación de cierto número de genes de una solución existente, con la intención de fomentar la variabilidad dentro de la población. Existen muy diversas formas de realizar la mutación, desde la más sencilla (puntual), donde cada gen muta aleatoriamente con independencia del resto de genes, hasta configuraciones más complejas donde se tienen en cuanta la estructura del problema y la relación entre los distintos genes. Ventajas Los AG son intrínsecamente paralelos. Ya que los AG tienen descendencia múltiple, pueden explorar el espacio de soluciones en múltiples direcciones a la vez. Debido al paralelismo que les permite evaluar implícitamente muchos esquemas a la vez, los AG funcionan particularmente bien resolviendo problemas cuyo espacio de soluciones potenciales es realmente grande, demasiado vasto para hacer una búsqueda exhaustiva en un tiempo razonable. Poseen la habilidad para manipular muchos parámetros simultáneamente. Muchos problemas de la vida real no pueden definirse en términos de un único valor que hay que minimizar o maximizar, sino que deben expresarse en términos de múltiples objetivos. La virtud de esta técnica es que permite a los AG comenzar con una “mente abierta”, por así decirlo. Cualquier estrategia de resolución de problemas que dependa de un conocimiento previo, debe inevitablemente comenzar descartando muchos caminos a priori, perdiendo así cualquier solución novedosa que pueda existir. Desventajas La primera y más importante consideración al crear un AG es definir una representación del problema. El lenguaje utilizado para especificar soluciones candidatas debe ser robusto; es decir, debe ser capaz de tolerar cambios aleatorios que no produzcan constantemente errores fatales o resultados sin sentido. El problema de cómo escribir la función objetivo debe considerarse cuidadosamente para que se pueda alcanzar una mayor aptitud y verdaderamente se dé una solución mejor para el problema dado. Un problema muy conocido que puede surgir con un AG se conoce como convergencia prematura, esto a raíz de una incorrecta definición de la población inicial. No utilizar AG en problemas resolubles de manera analítica, pues estos métodos analíticos tradicionales consumen mucho menos tiempo y potencia computacional que los AG y, a 5 diferencia de los AG, a menudo está demostrado matemáticamente que ofrecen la única solución exacta. ¿Cuándo usar algoritmos genéticos? La aplicación más común de los AG ha sido la solución de problemas de optimización, en donde han mostrado ser muy eficientes y confiables. Sin embargo, no todos los problemas pudieran ser apropiados para la técnica, y se recomienda en general tomar en cuenta las siguientes características del mismo antes de intentar usarla: Su espacio de búsqueda (sus posibles soluciones) debe de estar delimitado dentro de un cierto rango. Debe permitir la definición de una función de aptitud que nos indique que tan buena o mala es cierta respuesta. Las soluciones deben programarse de una forma que resulte relativamente fácil de implementar en el computador. Antecedentes y desarrollo históricos. El desarrollo de los Algoritmos Genéticos se debe a gran medida a John Holland, investigador de la Universidad de Michigan. A finales de la década de los 60 desarrolló una técnica que imitaba en su funcionamiento a la selección natural. Aunque originalmente esta técnica que imitaba en su funcionamiento a la selección natural. Finales de los 59 y principios de los 60.- Algoritmos Genéticos programados en computadoras por biólogos evolutivos que buscaban explícitamente realizar modelos de aspectos de la evolución natural. En 1962, investigadores como G.E.P. Box, G.J. Friedman, W.W. Bledsoe y H.J. Bremermann habían desarrollado independientemente algoritmos inspirados en la evolución para optimización de funciones y aprendizaje automático, pero sus trabajos generaron poca reacción. En 1965 surgió un desarrollo más exitoso, cuando Ingo Rechenberg, entonces de la Universidad Técnica de Berlín, introdujo una técnica que llamó estrategia evolutiva. En 1975 apareció el trabajo fundamental en el campo de los algoritmos genéticos con la publicación del libro “Adaptación en Sistemas Naturales y Artificiales” de John Holland'. A finales de 1980s la General Electric comenzó a vender el primer producto de Algoritmo Genético para solucionar problemas de procesos industriales. En 1989 se creó el producto Evolver que fue el primer producto de Algoritmo Genético para Computadoras personales. Fundamentos biológicos. En la naturaleza, los individuos de una población compiten constantemente con otros por recursos tales como la comida, agua y refugio. Los individuos que tienen más éxito en la lucha por los recursos tienen mayores probabilidades de sobrevivir y generalmente una descendencia mayor. Al contrario, los individuos peor adaptados tienen un menor número de descendientes, o incluso ninguno. Esto implica que los genes de los individuos mejor adaptados se propagarán a un número cada vez mayor de individuos de las sucesivas generaciones. 6 La combinación de características buenas de diferentes ancestros puede originar en ocasiones que la descendencia esté incluso mejor adaptada al medio que los padres. De esta manera, las especies evolucionan adaptándose más y más al medio a medida que transcurren las generaciones [Beasley et al., 1993]. Pero la adaptación de un individuo no sólo está determinada por su composición genética. Influyen otros factores como el aprendizaje, en ocasiones adquirido por el método de prueba y error, en ocasiones adquirido por imitación del comportamiento de los padres. Para imitar esta adquisición de conocimiento se han desarrollado variantes como el Ajuste Fino, consistentes en pequeñas modificaciones de los genes de un cromosoma. Por ejemplo, estas modificaciones pueden realizarse tomando como resultado e mejor individuo tras la ejecución de varias generaciones de un Algoritmo Genético cuya población previamente ha sido creada a partir de ligeras variaciones del individuo al que se desea incorporar el conocimiento. Estado del arte En la actualidad los algoritmos genéticos se utilizan para infinidad de cosas, existen trabajos y proyectos tanto comerciales como no comerciales. Entre ellas tenemos empresas de aplicaciones como las siguientes: JGAP: Aplicación hecha en java para generar soluciones a problemas implementando algoritmos genéticos, tiene diversas funcionalidades como: educativas, de investigación o simple entretenimiento. Optimal Synthesis Inc.: Organización que ofrece herramientas para búsqueda genética a partir de los algoritmos genéticos, abalada por la marina de Estados Unidos, ofrece su producto para trabajar con MatLab. Anglo American Chaos: Modelado y análisis de datos no lineales en conjunto con los algoritmos genéticos y otras tecnologías de la IA como programación genética, predicción de patrones, estimación de ruidos, etc. Perfect tablePlan: Programa funcional que ayuda a planear la localización de las personas en una boda. RML Technologies Inc.: Programa Discipulus™ 5 que usa la programación genética basada en los algoritmos genéticos para predecir modelos. JAGA: Software para crear aplicaciones que funcionen con algoritmos genéticos y programación genética. En la actualidad los usos y tecnologías de los algoritmos genéticos van mejorando y creciendo cada día más. A continuación se mencionan algunas áreas y clases donde se aplican los algoritmos genéticos. Áreas de aplicación y clases Optimización: Se trata de un campo especialmente abonado para el uso de los AG, por las características intrínsecas de estos problemas. No en vano fueron la fuente de inspiración para los creadores de estos algoritmos. Los AG se han utilizado en numerosas tareas de optimización, incluyendo la optimización numérica, y los problemas de optimización combinatoria. Programación automática: Los AG se han empleado para desarrollar programas para tareas específicas, y para diseñar otras estructuras computacionales tales como el autómata celular, y las redes de clasificación. 7 Aprendizaje máquina: Los AG se han utilizado también en muchas de estas aplicaciones, tales como la predicción del tiempo o la estructura de una proteína. Han servido asimismo para desarrollar determinados aspectos de sistemas particulares de aprendizaje, como pueda ser el de los pesos en una red neuronal, las reglas para sistemas de clasificación de aprendizaje o sistemas de producción simbólica, y los sensores para robots. Economía: En este caso, se ha hecho uso de estos Algoritmos para modelar procesos de innovación, el desarrollo de estrategias de puja, y la aparición de mercados económicos. Sistemas inmunes: Al momento de modelar varios aspectos de los sistemas inmunes naturales, incluyendo la mutación somática durante la vida de un individuo y el descubrimiento de familias de genes múltiples en tiempo evolutivo, ha resultado útil el empleo de esta técnica. Ecología: En el modelado de fenómenos ecológicos tales como las carreras de armamento biológico, la coevolución de parásito-huesped, la simbiosis, y el flujo de recursos. Genética de poblaciones: En el estudio de preguntas del tipo "¿Bajo qué condiciones será viable evolutivamente un gen para la recombinación?". Evolución y aprendizaje: Los AG se han utilizado en el estudio de las relaciones entre el aprendizaje individual y la evolución de la especie. Sistemas sociales: En el estudio de aspectos evolutivos de los sistemas sociales, tales como la evolución del comportamiento social en colonias de insectos, y la evolución de la cooperación y la comunicación en sistemas multiagentes. Desarrollos actuales en el mundo y en México. 1. Aplicación de algoritmos genéticos a un despacho económico: Tesis de Maestria en Grado de ciencias de la ingeniería eléctrica con especialidad en potencia. UNAM. 2006 2. Una Aplicación de los Algoritmos Genéticos en la Discriminación: Aurora Montano Rivas Mario Cantú Sifuentes. Departamento de Estadística y Cálculo, Universidad Autónoma Agraria Antonio Narro. 2004. 3. Actas de los Talleres de las Jornadas de Ingeniería del Software y Bases de Datos, Vol. 2, No. 4, 2008 Generación de mutantes con algoritmos genéticos Domínguez Jiménez, J. J., Estero Botaro, A., Medina Bulo, I.Departamento de Lenguajes y Sistemas Informáticos. Cádiz, Chile 8 Caso Práctico Nuestro caso práctico se basa en el modelo cinemático denominado "Strandbeest" creado por el escultor cinemático Theo Jansen. Este modelo esta formado por múltiples eslabones unidos, a los cuales se les conecta algún mecanismo actuador, como un motor, y esto provoca que el modelo reaccione con un movimiento similar a una pierna humana. 20 29 cms. 10 17 cms 0 5 cm -10 -20 30 cms. -30 -40 -50 La figura anterior muestra al modelo con medidas de los eslabones. Con estas medidas se sigue un paso con la forma marcada con rojo. -60 -50 -40 -30 -20 -10 0 10 20 Estos parámetros de las longitudes de los eslabones, son introducidos al algoritmo genético desarrollado en Matlab. Los parámetros son codificados de forma especial para especificar la función objetivo, la cual en este caso es dar un paso con mayor longitud en X. Durante las simulaciones, se obtenían resultados muy variados dependiendo de los parámetros de entrada, por ejemplo: Parametros: u=10; m=.6*u; d=2*u; l1=2.9*u; l2=1.9*u; l3=3*u; 20 10 0 -10 -20 Resultados: dx = 25.0118 -30 dy = 4.8270 -40 -50 -60 -50 9 -40 -30 -20 -10 0 10 20 30 40 50 Trayectoria de la pata Desplazamiento en x 0 -38 -10 -40 -20 -42 -30 -44 -40 0 20 40 60 80 100 120 140 100 120 140 -46 Desplazamientos en y -48 -42 -50 -44 -46 -52 -48 -54 -50 -30 -25 -20 -15 -10 0 20 40 60 80 Pero también se dieron casos en donde no eran posibles físicamente los resultados obtenidos: Parametros: u=10; m=.6*u; d=2*u; l1=2.8*u; l2=2.0*u; l3=3*u; 20 10 0 -10 -20 -30 Resultados: dx = 25.4300 -40 dy = 0.8542 -50 -60 -50 -40 -30 -20 -10 0 10 20 30 40 Trayectoria de la pata -40 Desplazamiento en x 0 -42 -10 -44 -20 -46 -30 -48 -40 -50 0 20 40 60 80 100 120 140 100 120 140 Desplazamientos en y -52 -47.5 -54 -48 -56 -48.5 -58 -30 -25 -20 -15 -10 -49 10 0 20 40 60 80 50 En base a estos resultados se obtuvo que las mejores medidas son las siguientes: U=10 M D L1 L2 Dx Dy .6 2 2.9 1.9 25.0118 4.8270 6 cm 20 cm 29 cm 19 cm 20 29 cm 10 19 cm 0 6 cm -10 -20 30 cm -30 -40 -50 Bibliografía consultada -60 -50 -40 -30 -20 -10 0 10 20 E. Gómez-Ramírez & F. Mazzanti, Cellular Neural Networks Learning using Genetic Algorithm, 7mo. Congreso Iberoamericano de Reconocimiento de Patrones, CIARP 2002, Noviembre 19-22, CIC-IPN, Cd. de México, México. 2002. A.G. Sánchez de Tagle Horta. Introducción a los algoritmos genéticos. Tesis (ingeniero en cibernética y en sistemas computacionales)--Universidad La Salle. Escuela de Ingeniería. C.L., Karr et al. Industrial applications of genetic algorithms. Boca Ratón. 1999 http://www.sistedes.es/TJISBD/Vol-2/No-4/articles/pris-08-dominguez-mutantesGeneticos.pdf 11 Cuestionario 1. ¿Qué son los algoritmos genéticos? a) Son algoritmos de búsqueda que se basan en iteraciones y buscan resultados óptimos. b) Son algoritmos de búsqueda basados en la mecánica de la selección natural y de la genética natural que consisten en una población de soluciones codificadas de forma similar a cromosomas. c) Son algoritmos de búsqueda basados en la mecánica de la selección natural y de la genética natural que siempre brindan el resultado más óptimo. d) Son algoritmos basados en matemáticas avanzadas, los cuales son codificados de modo similar a una ecuación. 2. ¿Cuáles son los tipos que existen para representar las características constituyentes del conjunto a estudiar? a) Binario, real y entero b) Binario, cadenas c) Números y d) Entero y y caracteres. cadenas. fracciones. 3. ¿Qué ventajas ofrecen los algoritmos genéticos? a) Manipulan muchas variables al mismo tiempo y se trabaja con la “mente abierta”. b) Puede presentarse la convergencia prematura y trabajan de forma paralela. c) Definir la representación del problema y manipular muchas variables al mismo tiempo. d) Se trabaja con la “mente abierta” y dan siempre la mejor solución a un problema. 4. ¿Cuáles son los operadores utilizados en algoritmos genéticos? a) De selección, b) De selección, c) De mutación, mutación y relación. cruce y crecimiento. selección y cruce. 5. ¿Quién introdujo el término de Algoritmo Genético? a) John Holland b) Ingo Rechenberg c)Charles Darwin d)Ninguno de los anteriores. d) E. Gómez Ramírez 6. ¿Cuál es el nombre de la técnica que imita la adquisión de conocimiento? a)Ajuste Genético b)Ajuste Fino c)Ajuste Natural d)Ajuste Biológico 7. ¿En qué año se le dio el nombre de Algoritmo Genético? a)1972 b)1960 c)1975 d)1869 8. ¿Para qué sirve Perfect Table Plan? a) Organizar Cocteles b) Organizar Bodas d) Organizar clases c) Organizar cursos 9. Mencione una aplicación de los algoritmos genéticos a) Optimización b) Estudio c) Crear clones d)Programación automática 10. Software con el cual podemos hacer modelado de algoritmos genéticos a) Mat Lab b) Word c) Angry Birds d) Paint 12