1 / 36

Actividad 3 Algoritmos Genéticos

Actividad 3 Algoritmos Genéticos. Inteligencia Artificial 1 Parte II. Diapositivas de María Luz Carballo y Rubén Lunda, parcialmente sobre ideas de John Holland y otros. Origen.

lacey
Download Presentation

Actividad 3 Algoritmos Genéticos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Actividad 3Algoritmos Genéticos Inteligencia Artificial 1 Parte II Diapositivas de María Luz Carballo y Rubén Lunda, parcialmente sobre ideas de John Holland y otros

  2. Origen • Los Algoritmos Genéticos, fueron desarrollados por John H. Holland en 1975 inspirándose en el proceso observado en la evolución natural de los seres vivos. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  3. Descripción • Los Algoritmos Genéticos son métodos estocásticos de búsqueda ciega. En estos, se mantiene a una población que representa a un conjunto de posibles soluciones, la cual es sometida a ciertas transformaciones y a un proceso de selección a favor de los mejores candidatos. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  4. Descripción • El objetivo principal de un AG, es evolucionar a partir de una población de soluciones para un determinado problema, intentando producir nuevas generaciones de soluciones que sean mejores que la anterior. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  5. Algoritmo 1. [Inicio] Generar una población aleatoria con n cromosomas (posible solución) 2. [Aptitud] Evalúa la aptitud f(x) de cada cromosoma x en la población 3. [Nueva generación] Crea una nueva generación repitiendo estos pasos hasta que la nueva generación este completa 1.[Selección] Selecciona 2 cromosomas padres de la población de acuerdo a su aptitud (cuanto mas apto es, posee mayor posibilidad de ser seleccionado) 2.[Cruzamiento] con una probabilidad de cruzamiento, cruzar los padres para obtener los hijos. Si no existiera el cruzamiento, los hijos serian una copia de los padres. 3.[Mutación] reemplazar con cierta probabilidad el valor de un bit. 4.[Aceptación] Ubica el nuevo descendiente en la nueva población 4. [Remplazar] Usar la nueva generación para correr el algoritmo 5. [Prueba] Si la condición final se satisface, se detiene, y devuelve la mejor solución de la población actual 6. [Loop] Ir a 2 Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  6. Generación • El primer paso en la implementación de un algoritmo genético es la generación de la población inicial. Generalmente se representan mediante cadenas binarias de longitud L que codifican el problema. • Cada cadena es llamada genotipo o cromosoma. • Generalmente la población inicial es creada de forma aleatoria. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  7. Evaluación • Cada cadena es evaluada y se le asigna un valor de aptitud (fitness). • La función de evaluación cuantifica la performace respecto a ciertos parámetros. • La función de aptitud transforma el resultado en la posibilidad de reproducción de esa cadena. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  8. Selección • Son muestreos estocásticos, en los cuales se asigna una probabilidad a cada individuo que se cruzará en la siguiente generación, basándose en el valor de aptitud (fitness). • Los criterios más usados en la práctica son: por ruleta, universal y por ranking. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  9. Selección por Ruleta • Cada cadena es representada por un espacio que se corresponde proporcionalmente a su valor de aptitud (fitness). Haciendo "girar la ruleta" repetidas veces las cadenas son seleccionadas utilizando "muestreo estocástico con repeticiones" para completar la población intermedia. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  10. Selección Universal • Muestreo estocástico universal: La población se ubica en un orden aleatorio, representado por un espacio proporcional a su valor de aptitud, luego se toma una "ruleta" con N cantidad de punteros separados por espacios iguales. Haciendo "girar la ruleta" una sola vez, se obtienen los N miembros de la población intermedia. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  11. Selección por ranking • Muchos tipos de selección pueden tener problemas cuando existen grandes diferencias entre los valores de aptitud (fitness). Por ejemplo, si el mejor cromosoma tiene un fitness igual al 90% de la suma de todos los fitness, los otros cromosomas tienen muy poca probabilidad de ser elegidos. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  12. Selección por ranking • Se realiza un ranking de la población y se le da al peor cromosoma el valor de fitness 1, al segundo 2, etc. • Ahora, todos los cromosomas tiene una oportunidad de ser seleccionados; sin embargo, este método produce una convergencia lenta, ya que los mejores cromosomas no se diferencian mucho del resto. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  13. Cruzamiento = #0#1 | # 0 1 1 1 1 # # 0 | 1 0 1 # # 0 1 1 1 | # 0 # 1 = 1 0 1 # | 1 # # 0 Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  14. Cruzamiento • Cruzamiento simple: un punto de cruce es seleccionado, desde el principio hasta el punto de cruce es copiado del primer padre, y el resto es copiado del otro padre. 11001011+11011111 = 11001111 Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  15. Cruzamiento • Dos puntos de cruzamiento: dos puntos son seleccionados, desde el principio del cromosoma hasta el primer punto de cruce es copiado del primer padre, de ahi hasta el segundo punto de cruce es copiado del segundo padre, y copia lo que le queda (desde el segundo punto de cruce hasta el final) de primer cromosoma 11001011+ 11011111 = 11011111 Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  16. Cruzamiento • Cruzamiento Uniforme: copia bits al azar del primer padre y del segundo 11001011 + 11011101 = 11011111 Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  17. Cruzamiento • Cruzamiento Aritmético: alguna operación aritmética es empleada para obtener al nuevo descendiente. 11001011 + 11011111 = 11001001 (AND) Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  18. Mutación • Inversión de bits: selecciona bits y estos son invertidos (si era un 0 se transforman en 1) 11001001 =>  10001001 Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  19. Elitismo • Hay otro operador propuesto originalmente en Alemania llamado elitismo, el cual consiste en mantener intacto a través de las generaciones al individuo más apto, por lo que no se cruza sino hasta que surge otro individuo mejor que él. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  20. Algoritmos genéticos paralelos • La función de evaluación debe ser relativamente rápida, pero en mucho casos, requiere un tiempo considerable. • Se debe evaluar cada cromosoma. • La evaluación se puede realizar de manera concurrente para varios cromosomas si se dispone de múltiples procesadores y un canal de comunicación. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  21. Maestro Esclavos … Algoritmos genéticos paralelosMaestro/esclavo • Los cromosomas a evaluar se reparten entre el número de procesadores disponibles. • Los resultados se reportan al procesador maestro que realiza todas las otras operaciones del algoritmo genético. • Sólo la evaluación se distribuye entre los diferentes procesadores, las operaciones restantes se efectúan de manera centralizada. • Esta implementación de algoritmos genéticos paralelos tiene la desventaja de hacer uso intensivo del canal de comunicación. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  22. Algoritmos genéticos paralelosde grano fino/grueso • En este tipo de algoritmos genéticos existen múltiples poblaciones, tantas como procesadores se emplean. • Cada procesador implementa el algoritmo completo sobre una población ubicada en su espacio de memoria. • Las poblaciones evolucionan de manera independiente, hasta que un evento preestablecido acontece, y los mejores cromosomas de cada población emigran hacia las poblaciones vecinas y substituyen algunos de sus cromosomas. Grano Grueso Grano Fino Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  23. Ventajas • No necesitan conocimientos específicos sobre el problema que intentan resolver. • Operan de forma simultánea con varias soluciones, en vez de trabajar de forma secuencial como las técnicas tradicionales. • Resulta fácil ejecutarlos en las modernas arquitecturas masivas en paralelo. • Usan operadores probabilísticos. • En problemas de optimización, se afectan menos por los máximos locales (falsas soluciones). Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  24. Desventajas • Pueden tardar mucho en converger, o no converger en absoluto, dependiendo en cierta medida de los parámetros que se utilicen (tamaño de la población, número de generaciones, etc.) • Pueden converger prematuramente debido a una serie de problemas de diversa índole. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  25. Usos • Parametrización de sistemas. • Búsqueda de reglas en juegos. • Enrutamientos. • Resolución de sistemas de ecuaciones no lineales. • Optimización (estructural, de topologías, numérica, combinatoria, etc.). • Aprendizaje de máquina. • Bases de datos (optimización de consultas). • Reconocimiento de patrones. • Planeación de movimientos de robots. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  26. Ejemplo simple • En este ejemplo vemos como utilizando algoritmos genéticos podemos obtener un circulo, partiendo de una serie de puntos al azar. • Luego de algunas generaciones, obtenemos: Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  27. Ejemplo simple Se crea una población inicial aleatoria de una selección de soluciones (cromosomas). Crear un estado inicial aleatorio. A cada solución se le asigna un valor de aptitud dependiendo de la cercanía a la respuesta del problema. Evaluar la aptitud ("Fitness") Los cromosomas con mayor valor de aptitud (fitness) son seleccionados para reproducirse (tambien pueden mutar luego de la reproducción). Esta composición consiste en una combinación de genes, este proceso se conoce como "crossing over". Reproducción (mutación de hijos) Si la nueva generación contiene una solución cercana a la respuesta del problema, se termina el proceso; en caso contrario el proceso vuelve a comenzar. Nueva Generación Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  28. Ejemplo simple • Este applet intenta desarrollar círculos. • Este applet intenta dibujar 10 generaciones en un segundo. El mejor individuo es dibujado en verde, el peor en rojo y el medio en amarrillo. • El Algoritmo Genético tiene una población de 50. Los 10 peores se substituyen cada generación. Cada cromosoma una mutación de 1 bit en cada generación. El cromosoma es una cadena de 256 bits. Cada byte en el cromosoma es un coordenada (16 pares de coordenadas). Los datos coordinados son cifrados en código de Gray para una evolución más fácil. Estos ajustes no son óptimos. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  29. Ejemplo simple Clase chromo Constructor aleatorio que completa los puntos del círculo con valores aleatorios. Arreglo de bytes. Instancia de la clase Random, que genera una secuancia de números pseudoaleatorios. Constructor para clonar un cromosoma. Crea un hijo utilizando un punto de crossover Valor de aptitud. El cromosoma es almacenado como código de Gray. Este número tiene la propiedad de incrementar o decrementarse cambiando un sólo bit. Esto facilita la mutación ya que sino, para incrementar el 63 -> 64 requeriría cambiar 6 bits. Tabla que convierte un byte codificado en Gray en un byte binario. Calcula la distancia ordinal. Para definir a circunsferencia:Busca los puntos que esten mas alejados uno de otros y que no superen cierto margen de error permitido Cambia el bit. Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  30. Ejemplo simple Crea una instacia de la Clase Thread. Inicializa el Thread Destruye el Thread Reinicia el Thread Inicia el Thread Detiene el Thread Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  31. Crear un estado inicial aleatorio. Evaluar la aptitud ("Fitness") Reproducción (mutación de hijos) Nueva Generación Ejemplo simple Extractos del código donde se implementan los pasos de todo algoritmo genético public chromo() { points = new byte[32]; r.nextBytes(points); calc_fitness(); } Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  32. Crear un estado inicial aleatorio. Evaluar la aptitud ("Fitness") Reproducción (mutación de hijos) Nueva Generación Ejemplo simple public void calc_fitness() { float fit = 0; int i; // distancia entre los puntos vecinos for (i=0; i < 30; i += 2) fit += distance(ungray(i),ungray(i+1), ungray(i+2), ungray(i+3)); fit += distance(ungray(30), ungray(31), ungray(0), ungray(1)); for (i=0; i < 16; i+=2) fit += distance2(ungray(i), ungray(i+1), ungray(i+16), ungray(i+17)); fitness = fit; } Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  33. Crear un estado inicial aleatorio. Evaluar la aptitud ("Fitness") Reproducción (mutación de hijos) Nueva Generación Ejemplo simple MUTACIÓN: public void mutate() { int bit = r.nextInt() & 255; int bite = bit >> 3; bit = bit & 7; byte mask = (byte)(0x1 << bit); points[bite] ^= mask; } Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  34. Crear un estado inicial aleatorio. Evaluar la aptitud ("Fitness") Reproducción (mutación de hijos) Nueva Generación Ejemplo simple CRUCE DE LOS CROMOSOMAS public chromo(chromo mum, chromo dad) { int bit = r.nextInt() & 255; int bite = bit >> 3; byte mask = (byte)(0xff >> (bit & 7)); int i; points = new byte[32]; for (i=0; i<bite; i++) points[i] = mum.points[i]; points[bite] = (byte)((dad.points[bite] & mask) | (mum.points[bite] & (~mask))); for (i=bite+1; i<32; i++) points[i] = dad.points[i]; calc_fitness(); } } Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  35. Ejemplo simple • Práctica: • Identificar cual es el applet. • Identificar cuantos cromosomas se están utilizando en este ejemplo. • Identificar la longitud de los cromosomas. • ¿Qué código extraño utiliza? ¿Por qué cree que se utilizo? • ¿Qué algoritmo de cruzamiento utiliza? ¿Cómo se dio cuenta? • Cambiar el algoritmo de cruce por el de dos puntos Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

  36. Bibliografía • Implementación de algoritmos genéticos paralelos de grano burdo en redes locales de computadoras. -Arturo Gómez Cortés y Raúl Leal Ascencio • A Genetic Algorithm Tutorial – Darrell Whiltley • Algoritmos Genéticos en Paralelo de Grano Fino - http://www.acm.org/crossroads/espanol/xrds8-3/fineGrained.html • Introduction to Genetic Algorithm - http://cs.felk.cvut.cz/~xobitko/ga/ • Practical Artificial Itelligence Progamming in Java – Marrck Watson • A Genetic Algorithm Demo - http://oldeee.see.ed.ac.uk/~rjt/ga.html Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

More Related