1 / 73

Introducción a los Algoritmos Genéticos en Biología

Introducción a los Algoritmos Genéticos en Biología. ALGORITMOS GENÉTICOS. Día 1. ¿Qué son?. Son algoritmos de búsqueda de soluciones basados en la mecánica de la selección natural y la genética de poblaciones. Idea base. Tenemos un problema a resolver. . Idea base.

hope
Download Presentation

Introducción a los Algoritmos Genéticos en Biología

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. Introducción a los Algoritmos Genéticos en Biología

  2. ALGORITMOS GENÉTICOS Día 1

  3. ¿Qué son? Son algoritmos de búsqueda de soluciones basados en la mecánica de la selección natural y la genética de poblaciones

  4. Idea base Tenemos un problema a resolver.

  5. Idea base Generamos una “población” de posibles soluciones a ese problema.

  6. Idea base Asignamos a cada solución un valor de eficacia (“fitness”).

  7. Idea base Las soluciones pueden recombinar y mutar (evolucionan).

  8. Idea base Dejamos actuar a la evolución via la selección natural para que encuentre la mejor solución (resuelva el problema).

  9. Idea base Valores iniciales Solución

  10. Resumiendo ¡En un algoritmo genético el entorno es el problema a resolver y los organismos las posibles soluciones del mismo!

  11. Resumiendo • Para poder aplicar un AG a un problema debemos determinar: • Una codificación genética para el problema. • Una función de ajuste (eficacia o fitness) que asigne un valor a cada individuo de acuerdo con su comportamiento en el medio.

  12. Resumiendo Los AG’s tradicionales manejan cadenas de símbolos de longitud fija llamadas cromosomas. Asociado a cada una de las posiciones de la cadena hay un gen. Los símbolos que constituyen un gen se llaman alelos (0/1 en el caso binario de 2 alelos).

  13. ¿Cómo se realizan? 1.- Trabajamos con poblaciones de posibles soluciones a nuestro problema. Para que haya “evolución” tiene que haber variación sobre la que pueda actuar la “selección natural”.

  14. 0 0 0 0 1 0 0 0 ¿Cómo se realizan? 2.- Cada posible solución depende de un conjunto de parámetros que tomarán unos valores u otros. parámetros = individuo (cromosoma) de una población

  15. 110100011 000100011 000101111 000111011 000100000 ¿Cómo se realizan? 3.- Habrá diferentes posibles soluciones (cadenas de bits que representan la información codificada de los parámetros).

  16. ¿Cómo se realizan? 4.- Debemos asociar una función de idoneidad o “fitness” a cada una de estas posibles soluciones. Solución x ¿sobrevive? “Fitness” =0.0

  17. ¿Cómo se realizan? 4.- Debemos asociar una función de idoneidad o “fitness” a cada una de estas posibles soluciones. No sobrevive “Fitness”=0.0

  18. Algoritmo Genético Simple (SGA) ESTRUCTURA DEL SGA 1.- Generar al azar N “individuos”. 2.- Calcular la eficacia de cada individuo de la población. 3.- Elegir 2 progenitores de modo que la probabilidad de ser elegido (dejar hijos) sea directamente proporcional a la eficacia (“fitness proportionate selection”). 4.- De cada par de padres obtener 2 hijos mediante recombinación. 5.-  Repetir el paso 3 hasta alcanzar el tamaño poblacional N. 6.- La nueva población sustituye a la antigua. 7.- Mutar e iterar desde el paso 2 usando esta nueva población.

  19. Características del SGA 1.- En cada generación los individuos dejan descendencia en función del valor medio de la población. 2.- El tamaño poblacional N permanece constante.

  20. Características del SGA Para usar algoritmos genéticos debemos codificar las distintas soluciones de modo que sea posible hacer que evolucionen (recombinen y muten).

  21. Ejercicio 1 Poner en pseudocódigo (independiente del lenguaje de programación) el SGA para un problema de 8 bits (longitud del cromosoma)

  22. Ejercicio 1 0.- Declarar e inicializar variables…

  23. Ejercicio 1 1.- Generar al azar N individuos (N << 28) Para i= 1 hasta N individuo[i]=parte entera de[uniform()× 28]

  24. Ejercicio 1 2.- Calcular la eficacia de cada individuo de la población y la media poblacional Para i= 1 hasta N eficacia[i] = ObtenEficacia(individuo[i]) sumEficacia += eficacia[i]

  25. Ejercicio 1 3, 4 y 5.- Elegir padres y obtener N hijos Repetir hasta obtener N hijos padre1 = ObtenPadre() padre2 = ObtenPadre() //obtener 2 hijos mediante recombinación: recombina(padre1,padre2,hijo1,hijo2)

  26. Ejercicio 1 6.- La nueva población sustituye a la vieja Para i= 1 hasta N individuo[i] = hijo[i]

  27. Ejercicio 1 7.- Mutar y volver al paso 2 hasta terminar las generaciones o alcanzar un valor especificado (p. ej. eficacia promedio = 1) muta(poblacion) // poblacion es un vector de N individuos

  28. Métodos de representación 1.-Binaria: Cada alelo de un cromosoma consta de 0/1. 2.- Real: Cada alelo es un nº real. 3.- Longitud fija: Cromosomas de n bits 4.- Longitud variable: Reales o binarios

  29. Métodos de selección 1.- Selección proporcional (a la eficacia): A mayor eficacia probabilidad de más hijos (no es determinista). 2.- Selección por torneo: Se seleccionan q soluciones y gana la mejor. Se repite el proceso hasta generar N nuevos hijos. 3.- Selección por rango: Se ordenan las soluciones según su valor de fitness. 4.- Estrategia evolutiva ( + )ES: Se seleccionan determinísticamente  soluciones de un total de  paternas +  hijos.

  30. Métodos de recombinación Existen distintos métodos para realizar la recombinación: 1.- Entrecruzamiento de 1 punto: Sólo un punto de cruce. 2.- Entrecruzamiento de n puntos: Se usa bastante con n = 2 3.- Entrecruzamiento uniforme: El nº de puntos no está fijado. La decisión de insertar un punto de ruptura es independiente para cada bit del cromosoma.

  31. Cálculo de la eficacia de un individuo • Para cada individuo i se calcula el valor de la función de idoneidad o función objetivo (la que queremos maximizar) f(i) • Sea fprom(t) la media de las funciones de idoneidad de la población en la generación t • La fitness del individuo i será w(i) = f(i) / fprom(t)

  32. ¿Por qué funcionan los AGs? • Esquema: Subconjunto de cadenas con similitudes en ciertas posiciones (1 # # 0). • Orden de un esquema: El nº de alelos definidos en él. • Longitud de un esquema: La distancia entre el primero y último de los alelos especificados.

  33. ¿Por qué funcionan los AGs? • Teorema Fundamental de los AGs (de los esquemas): Esquemas cortos, de orden bajo y con eficacia por encima de la media, incrementan el nº de representantes en las generaciones sucesivas de un AG.

  34. Problemas de los AGs • Decepción: Algunos esquemas cortos y de bajo orden pueden engañar al algoritmo y hacerle converger en soluciones subóptimas.

  35. Problemas de los AGs • Función decepcionante: Cuando existen esquemas cortos de bajo orden y alta eficacia que no proporcionan la solución óptima.

  36. Problemas de los AGs • Epistasis: No independencia en el efecto de los distintos genes (bits) sobre el valor de eficacia del individuo. Existen diferentes modos de medir la epistasis de una codificación (ej: varianza de la epistasis, Davidor 1991).

  37. Ejercicio 2 Escribir en C o en otro lenguaje de programación una función que cuente el nº de 1’s en una cadena de 8 bits

  38. Código: Valor del individuo double d_obtenUnos(int cromosoma, int nbits) {/* Devuelve un valor mayor cuantos más 1’s tenga el cromosoma */ /*variables*/ int pos, sumUnos=0,control=1; for(pos=0;pos< nbits;pos++){ // para todas las posiciones // identifica si hay un 1 en la posición pos y lo cuenta if(control&cromosoma) sumUnos++; control =control<< 1; // sucesivas potencias de 2 } return ((double)sumUnos); }

  39. ALGORITMOS GENÉTICOS Día 2

  40. Ejercicio 3 Escribir en C una subrutina que realice la recombinación uniforme y libre (misma probabilidad en todas las posiciones) entre 2 cadenas de n bits

  41. Código: Recombinación void v_Rec(int padre1,int padre2,int *hijo1, int *hijo2, int nbits) { /* Entrecruzmiento Uniforme: Recombinación libre (pr = 0.5) entre padre1 y 2 para producir hijos 1 y 2 */ long int EE, FF, maxval= (1<<nbits)-1; EE = i_getbin(nbits); // obtiene un nº al azar entre 0 y 2nbits FF = ~EE; // obtiene los bits complementarios de EE FF = FF&maxval; // pone a 0 todos los bits a la izq de maxval *hijo1 = (EE&padre1|FF&padre2); *hijo2 = (EE&padre2|FF&padre1); }

  42. Ejercicio 4 Escribir en C una rutina que, dada una tasa de mutación por individuo y locus, genere los mutantes de la población.

  43. Código: Mutación void muta(int *indiv,int N,int nbits, double mu) {/* Genera el nº de mutantes de la población para una tasa de mutación mu dada */ /*variables*/ int NumMut, mut, mutante, locus=1; double tasa; tasa=(double)N*(double)nbits*mu; NumMut =poison(tasa); // opcionalmente: NumMut = (int)tasa if(NumMut){ // si hay al menos un mutante… for(mut=0;mut<NumMut;mut++){ mutante=(int)(N*uniform());//elige 1 individuo posicion=(int)(nbits*uniform()); //elige 1 locus /* ponemos un 1 en la posición :*/ locus=1<<posicion /* con el OR exclusivo ^ mutamos */ indiv[mutante]=indiv[mutante]^locus; } } }

  44. SELECCIÓN La ruleta de la selección “roulette wheel selection”: Las ranuras de la ruleta tendrán un tamaño porporcional a la eficacia de cada individuo.

  45. SELECCIÓN 0 T w1 w8 w1 w7 T = wi w2 w6 w5 w4 w3

  46. SELECCIÓN • Elegir un nº j al azar entre 0 y T

  47. SELECCIÓN j w1 w2

  48. SELECCIÓN • Recorremos los valores de fitness wi de cada individuo desde 0 hasta N

  49. SELECCIÓN • Si la probabilidad acumulada de wi es mayor que j elegimos a i como padre sino pasamos a i+1

  50. SELECCIÓN j w1 w1 + w2 w2

More Related