Actividad 3 Algoritmos Genéticos

Slides:



Advertisements
Presentaciones similares
Santiago D. Costarelli – Darío G. Uberti Manassero
Advertisements

Curso de java básico (scjp)
ALGORITMOS GENETICOS EVOLUCIÓN DE UNA POBLACIÓN DE
Diseño y análisis de algoritmos
SIMULACIÓN DE MONTECARLO
Algoritmo GENETICO.
Organización de Computadoras UNLA
MÉTODOS Y ELEMENTOS DE PROGRAMACIÓN
Algoritmos Genéticos Algunos lo llaman evolución y otro lo llaman Dios
Inteligencia artificial
“Impulsando la Sociedad
Expositores: María Gracia León Nelson Arol Ruiz
COMPONENTIZACIÓN DE ALGORITMOS GENETICOS Y SU IMPLEMENTACIÓN EN UNA PLATAFORMA ABIERTA PARA APRENDIZAJE COMPUTACIONAL.
KRIGING.
Generación de Números y Variable aleatorias
Clase # 8: Análisis Conformacional (II)
Ramón Garduño Juárez Diseño de Fármacos
PROGRAMACION DE ESTRUCTURAS DE DATOS
Ajustando el Algoritmo al problema Universidad Nacional Oscar Lozano.
Definición Los Algoritmos Genéticos son métodos adaptativos que pueden usarse para resolver problemas de búsqueda y optimización. los Algoritmos Genéticos.
“En lugar de envidiar la naturaleza debemos emularla” Holland
Métodos de muestreo.
Sistemas Inteligentes Algoritmos Geneticos
Grupo 6 Sharón Benasús Michell Vanrell
Clase 7: Componentes Básicos del Algoritmo Genético (Continuación)
Optimización matemática Algoritmos Genéticos – Parte 2 Por: Antonio H
Algoritmos Genéticos.
Aplicaciones de Algoritmos Genéticos
Algoritmos Genéticos (AG) Integrantes: Rubén Levineri Miguel Rozas Juan Yañez Faltan autores y bibliografía.
ALGORITMO GENÉTICO John Henry Holland (n. 02 de febrero 1929, Fort Wayne, Indiana, EE.UU.) ostenta los títulos de Profesor de Psicología y Profesor de.
Modelos de Programación Entera - Heurísticas
ARQUITECTURAS SIMD TIPOS
Universidad Michoacana de San Nicolás de Hidalgo Facultad de Ingeniería Eléctrica División de Estudios de Posgrado Algoritmos Genéticos.
Optimización, Búsqueda Heurística
Diseño y análisis de algoritmos
Tablas de Hash.
Sesión 6: Campos de Markov
Las personas se enfrentaron por primera vez con programas que eran demasiados grandes para caber en la memoria disponible. La solucion fue dividir el programa.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
(Organización y Manejo de Archivos)
Asignación de Espacio No Contiguo
COMPUTACION EVOLUTIVA Introducción. Computación Evolutiva: Computación Evolutiva: Enfoque alternativo para abordar problemas complejos de: Enfoque alternativo.
BIOINFORMÁTICA TEMA 1 INTRODUCCIÓN
Estructura de Control Repeticiones(Loops) Ejercicios
Algoritmos genéticos paralelos
Análisis Cuantitativo de Datos (Básico)
Algoritmos genéticos Introducción Esquema básico Codificación
Análisis y Diseño de Algoritmos
Clase 12 Computación Evolutiva
Una introducción a la computación evolutiva
Aplicación educativa sobre Algoritmos Evolutivos en imágenes digitales
Trabajo de Graduación “SISTEMA DE PLANEACIÓN AVANZADO (APS) PARA DETERMINAR LA UBICACIÓN ÓPTIMA DE CAPACITORES EN UNA RED DE DISTRIBUCIÓN DE ENERGÍA ELÉCTRICA.
Propuesta del algoritmo
Sabemos reconocerlas, y calcularlas como soluciones de sistemas de ecuaciones, o de desigualdades Buscamos métodos de cálculo generales y eficientes Problemas.
Mary C. Jarur M. ww.udec.cl/~mjarur
1 Condiciones de extremo Proceso para derivar las condiciones De problema más simple a más complejo Progresión de problemas: Problema sin restricciones.
LA UNIDAD ARITMÉTICA Y LÓGICA
Investigación Algorítmica ChasquiSoft. Integrantes Contreras Ames, Roy Carlos Gaspar Calle, Ronald Urlich Ames, Rafael Paredes.
EVOLUCIÓN DE UNA POBLACIÓN DE CURVAS EN EL TIEMPO Y EN EL ESPACIO Francisco Antonio González Salas Luis Valencia Cabrera.
INSTITUTO TECNOLÓGICO DE TIJUANA Maestría en Ciencias en Ciencias De La Computación Tema: Operadores genéticos Alumnas: Leticia Mendoza Reyes. Rosalinda.
Investigación Algorítmica ChasquiSoft. Integrantes Contreras Ames, Roy Carlos Gaspar Calle, Ronald Urlich Ames, Rafael Paredes.
ALGORITMOS GENETICOS.
Taller: Inteligencia Computacional
Introducción a los TADs
Ing. Uziel Quiroz Castañeda Blanca Esthela Carranza Ortega 8º Semestre Junio/2013.

Muestreo Probabilístico
MEMORIA DINÁMICA.
Algoritmo Genético para la solución del problema SAT René Clemente Juárez Angel Felipe Lara Valladares Junio 2012.
MUESTREO: DISEÑO Y PROCEDIMIENTOS
Transcripción de la presentación:

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Algoritmos genéticos paralelos Maestro/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. Maestro Esclavos … Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

Algoritmos genéticos paralelos de 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

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

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

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

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

Ejemplo simple Se crea una población inicial aleatoria de una selección de soluciones (cromosomas). Crear un estado inicial aleatorio. Evaluar la aptitud ("Fitness") A cada solución se le asigna un valor de aptitud dependiendo de la cercanía a la respuesta del problema. 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

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

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

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

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

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; } Crear un estado inicial aleatorio. Evaluar la aptitud ("Fitness") Reproducción (mutación de hijos) Nueva Generación Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

Ejemplo simple MUTACIÓN: public void mutate() { Crear un estado inicial aleatorio. Evaluar la aptitud ("Fitness") Reproducción (mutación de hijos) Nueva Generación 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

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(); } } Crear un estado inicial aleatorio. Evaluar la aptitud ("Fitness") Reproducción (mutación de hijos) Nueva Generación Inteligencia Artificial I – FASTA - AI Carballo M. Luz – AI Lunda Ruben

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

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