Algoritmos GenéTicos

6,467 views

Published on

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,467
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
235
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Algoritmos GenéTicos

  1. 1. Algoritmos Genéticos Rafael Martí Los Algoritmos Genéticos (GA) fueron introducidos por John Holland en 1970 inspirándose en el proceso observado en la evolución natural de los seres vivos. Los Biólogos han estudiado en profundidad los mecanismos de la evolución, y aunque quedan parcelas por entender, muchos aspectos están bastante explicados. De manera muy general podemos decir que en la evolución de los seres vivos el problema al que cada individuo se enfrenta cada día es la supervivencia. Para ello cuenta con las habilidades innatas provistas en su material genético. A nivel de los genes, el problema es el de buscar aquellas adaptaciones beneficiosas en un medio hostil y cambiante. Debido en parte a la selección natural, cada especie gana una cierta cantidad de "conocimiento", el cual es incorporado a la información de sus cromosomas. Así pues, la evolución tiene lugar en los cromosomas, en donde está codificada la información del ser vivo. La información almacenada en el cromosoma varía de unas generaciones a otras. En el proceso de formación de un nuevo individuo, se combina la información cromosómica de los progenitores aunque la forma exacta en que se realiza es aún desconocida. Aunque muchos aspectos están todavía por discernir, existen unos principios generales ampliamente aceptados por la comunidad científica. Algunos de estos son: 1. La evolución opera en los cromosomas en lugar de en los individuos a los que representan. 2. La selección natural es el proceso por el que los cromosomas con "buenas estructuras" se reproducen más a menudo que los demás. 3. En el proceso de reproducción tiene lugar la evolución mediante la combinación de los cromosomas de los progenitores. Llamamos Recombinación a este proceso en el que se forma el cromosoma del descendiente. También son de tener en cuenta las mutaciones que pueden alterar dichos códigos. 4. La evolución biológica no tiene memoria en el sentido de que en la formación de los cromosomas únicamente se considera la información del período anterior Los algoritmos genéticos establecen una analogía entre el conjunto de soluciones de un problema y el conjunto de individuos de una población natural, codificando la información de cada solución en un string (vector binario) a modo de cromosoma. En palabras del propio Holland: "Se pueden encontrar soluciones aproximadas a problemas de gran complejidad computacional mediante un proceso de "evolución simulada", A tal efecto se introduce una función de evaluación de los cromosomas, que llamaremos calidad ("fitness") y que está basada en la función objetivo del problema. Igualmente se introduce un mecanismo de selección de manera que los cromosomas con mejor evaluación sean escogidos para "reproducirse" mas a menudo que los que la tienen peor.
  2. 2. Los algoritmos desarrollados por Holland inicialmente eran sencillos pero dieron buenos resultados en problemas considerados difíciles. Los algoritmos Genéticos están basados en integrar e implementar eficientemente dos ideas fundamentales: Las representaciones simples como strings binarios de las soluciones del problema y la realización de transformaciones simples para modificar y mejorar estas representaciones. Para llevar a la práctica el esquema anterior y concretarlo en un algoritmo, hay que especificar los siguientes elementos: • · Una representación cromosómica • · Una población inicial • · Una medida de evaluación • · Un criterio de selección / eliminación de cromosomas • · Una o varias operaciones de recombinación • · Una o varias operaciones de mutación A continuación pasamos a comentar y detallar todos estos elementos. En los trabajos originales las soluciones se representaban por strings binarios, es decir, listas de 1s y 0s. Este tipo de representaciones ha sido ampliamente utilizada incluso en problemas en donde no es muy natural. En 1985, De Jong introduce la siguiente cuestión: ¿Qué se debe hacer cuando los elementos del espacio de búsqueda se representan de modo natural por estructuras complejas como vectores, árboles o grafos?, ¿Se debe intentar linealizar en un string o trabajar directamente con estas estructuras? En la actualidad podemos distinguir dos escuelas: • · Limitarse a strings binarios o • · Utilizar otro tipo de configuraciones Hemos de notar que las operaciones genéticas dependen del tipo de representación, por lo que la elección de una condiciona a la otra. La ventaja de las primeras es que permite definir fácilmente operaciones de recombinación, además los resultados sobre convergencia están probados para el caso de strings binarios. Sin embargo en algunos problemas puede ser poco natural y eficiente el utilizarlas. Por ejemplo en el problema del agente viajero sobre 5 ciudades y 20 aristas, el string 01000100001000100010 representa una solución sobre las aristas ordenadas. Sin embargo dicha representación no es muy natural y además, no todos los strings con cinco 1s representan soluciones lo cual complica substancialmente la definición de una operación de sobrecruzamiento. Es mas natural la ruta de ciudades: (2,3,1,5,4), lo cual permite definir naturalmente diferentes operaciones estables. La población inicial suele ser generada aleatoriamente. Sin embargo, últimamente se están utilizando métodos heurísticos para generar soluciones iniciales de buena calidad. En este caso, es importante garantizar la diversidad estructural de estas soluciones para
  3. 3. tener una "representación" de la mayor parte de población posible o al menos evitar la convergencia prematura. Respecto a la evaluación de los cromosomas, se suele utilizar la calidad como medida de la bondad según el valor de la función objetivo en el que se puede añadir un factor de penalización para controlar la infactibilidad. Este factor puede ser estático o ajustarse dinámicamente, lo cual produciría un efecto similar al de la Oscilación Estratégica en Tabu Search: calidad = ValorObjetivoNormalizado - Penalización * MedidaInfactibilidad La selección de los padres viene dada habitualmente mediante probabilidades según su fitness. Uno de los procedimientos más utilizado es el denominado de la ruleta en donde cada individuo tiene una sección circular de una ruleta que es directamente proporcional a su calidad. Para realizar una selección se realizaría un tirada de bola en la ruleta, tomando el individuo asociado a la casilla donde cayo la bola. Los Operadores de Cruzamiento mas utilizados son: • De un punto: Se elige aleatoriamente un punto de ruptura en los padres y se intercambian sus bits. • De dos puntos: Se eligen dos puntos de ruptura al azar para intercambiar. • Uniforme: En cada bit se elige al azar un padre para que contribuya con su bit al del hijo, mientras que el segundo hijo recibe el bit del otro padre. • PMX, SEX: Son operadores más sofisticados fruto de mezclar y aleatorizar los anteriores. La operación de Mutación más sencilla, y una de la más utilizadas consiste en reemplazar con cierta probabilidad el valor de un bit. Notar que el papel que juega la mutación es el de introducir un factor de diversificación ya que, en ocasiones, la convergencia del procedimiento a buenas soluciones puede ser prematura y quedarse atrapado en óptimos locales. Otra forma obvia de introducir nuevos elementos en una población es recombinar elementos tomados al azar sin considerar su fitness. Convergencia del Algoritmo Dado que el algoritmo genético opera con una población en cada iteración, se espera que el método converja de modo que al final del proceso la población sea muy similar, y en el infinito se reduzca a un sólo individuo. Se ha desarrollado toda una teoría para estudiar la convergencia de estos algoritmos en el caso de strings binarios. Esta teoría se basa principalmente en considerar que un string es un representante de una clase de equivalencia o esquema, reinterpretando la búsqueda en lugar de entre strings, entre esquemas. De este modo se concluye lo que se conoce como paralelismo intrínseco: "En una población de m strings se están procesando implícitamente O(m^3) esquemas" A partir de este resultado el teorema de esquemas prueba que la población converge a unos esquemas que cada vez son más parecidos, y en el límite a un único string.
  4. 4. En el caso de strings no binarios se introducen los conceptos de forma y conjunto de similitud que generalizan al de esquema. Se consideran una serie de condiciones sobre los operadores de manera que se garantice la convergencia. Básicamente se exige que al cruzar dos strings de la misma clase se obtenga otro dentro de ésta. Además hay que respetar ciertas condiciones sobre selección de los progenitores. Bajo toda esta serie de hipótesis se prueba la convergencia del algoritmo. En la práctica no se suelen respetar las condiciones vistas ya que son difíciles de seguir y probar, encontrándonos con que, en ocasiones los algoritmos genéticos resuelven satisfactoriamente un problema de optimización dado y otras se quedan muy alejados del óptimo. Los estudiosos del tema han tratado de caracterizar lo que han denominado problemas AG-fáciles (aquellos en los que los AG proporcionan buenos resultados) y AG-difíciles con el objetivo de saber de antemano, al estudiar un nuevo problema, si los AG son una buena elección para su resolución. Se han tratado de caracterizar estas clases mediante el concepto de engaño considerando que si el algoritmo converge al mejor esquema (aquel con mejor promedio del fitness de sus strings) y en éste se encuentra el óptimo, entonces es fácil que se resuelva satisfactoriamente. En caso de que el óptimo esté en un esquema con bajo promedio se denomina engaño y se pensaba que en estos casos es cuando el problema es AG-difícil. Sin embargo se ha visto que esta caracterización mediante el engaño no es siempre cierta y no constituye un criterio fiable. Es importante citar que, a diferencia de otros metaheurísticos, los Algoritmos Genéticos han crecido de forma espectacular, hasta el punto de poder encontrar referencias sobre ellos en revista de informática de carácter general. Además muchos de los investigadores de este campo están trabajando en desarrollar los aspectos teóricos de la materia incorporando algunas otras técnicas de búsqueda local en el esquema genético. Especial mención merecen los Algoritmos Meméticos ( Memetic Algorithms' Home Page by P. Moscato) en donde podemos encontrar una clase amplia de Metaheurísticos basados en poblaciones. Estos métodos incorporan técnicas variadas desde "búsqueda local" hasta operadores de "cruzamiento" con el fin de introducir información y conocimiento en la búsqueda. Uno de los métodos que podemos encontrar bajo esta denominación es "Scatter Search" que comparte también elementos de Tabu Search. BIBLIOGRAFÍA Entre la abundante bibliografía existente podemos considerar el trabajo de Holland (1992), el libro de Davis (1991) en donde se recogen muchos de los aspectos teóricos de la materia, así como el libro de Michalewizc (1992) más orientado a la programación y aspectos computacionales. Podemos conseguir abundante material en la red, por ejemplo el tutorial sobre genéticos de Whitley (1993). Podemos encontrar esquemas de procedimientos genéticos ya implementados en los que incorporar nuestras funciones de evaluación y con poco más, tener un algoritmos genético para nuestro problema. La siguiente lista recoge algunos de estos métodos generales:
  5. 5. • GAucsd - Schraudolph & Grefenstette (1992) / Dominio público / (132.239.51.3) pub/GAucsd • GENESIS - Grefenstette (1987) / Dominio público / gref@aic.nrl.navy.ilm • OOGA - Davis (1991) / Comercial / 70461.1552@compuserve.com • GENITOR - Whitley (1988) / Dominio público (whitley@cs.colostate.edu) 5.6 Algoritmos Genéticos Los Algoritmos Genéticos (GA) pueden verse como una familia de procedimientos de búsqueda adaptivos. Su nombre se deriva de que están basados en modelos de cambio genético en una población de individuos. Esto es: • noción Darwiniana de aptitud (fitness) que influye en generaciones futuras • apareamiento que produce descendientes en generaciones futuras • operadores genéticos que determinan la configuración genética de los descendientes (tomada de los padres) Un punto clave de estos modelos, es que el proceso de adaptación no se hace cambiando incrementalmente una sola estructura, sino manteniendo una población de estructuras a partir de las cuales se generan nuevas estructuras usando los operadores genéticos. Cada estructura en la población está asociada con una aptitud y los valores se usan en competencia para determinar qué esrtucturas serán usadas para formar nuevas estructuras. Una de sus características es su abilidad de explotar información acumulada acerca de un espacio de búsqueda inicialmente desconocido para guiar la búsqueda subsecuente a subespacios útiles. Su aplicación está enfocada sobretodo a espacios de búsqueda grandes, complejos y poco entendidos. El precio es que se puede necesitar un número grande de muestras para que se tenga suficiente información para guiar muestras subsecuentes a subespacios útiles. En su forma más simple, un GA está orientado a desempeño (i.e., hacer cambios estructurales para mejorar el desempeño). Una de las ideas más importantes es definir estructuras admisibles en el sentido que esten bien definidas y puedan ser evaluadas. Surgen a finales de los 50's, principios de los 60's. Se le reconoce a Holland como el fundador. Diferencias con métodos tradicionales de búsqueda y optimización:
  6. 6. • trabajan con un conjunto de parámetros codificados y no con los parámetros mismos • inician la búsqueda desde un conjunto de puntos, no de uno solo • usan una función a optimizar en lugar de la derivada u otro conocimiento adicional • usan reglas de transición probabilísticas no determinísticas 5.6.2 Puntos a considerar en GA • Codificación de los parámetros de un problema. Dentro de la codificación a veces se usan codificaciones que tengan la propiedad de que números consecutivos varíen a lo más en un bit (e.g., codificación de Gray). En la codificación se busca idealmente que todos los puntos estén dentro del espacio de solución (sean válidos). Se buscan representaciones que favorescan los esquemas cortos de bajo orden. Pueden existir problemas de interdependencia (problemas para los GA si existe mucha y es preferible usar otro método si es casi nula). • Función de aptitud. Es la base para determinar qué soluciones tienen mayor o menor probabilidad de sobrevivir. Se tiene que tener un balance entre una función que haga diferencias muy grandes (y por lo tanto una convergencia prematura) y diferencias muy pequeñas (y por lo tanto un estancamineto). • Criterios de tamaño de la población. Balance entre una población muy pequeña (y por lo tanto convergencia a máximo local) y una población muy grande (y por lo tanto muchos recursos computacionales). Aunque normalmente se elige una población de tamaño fijo, también existen esquemas de poblaciones de tamaño variable. • Criterio de selección. Individuos son copiadas de acuerdo a su evaluación en la función objetivo (aptitud). Los más aptos tienen mayor probabilidad a contribuir con una o más copias en la siguiente generación (se simula selección natural). Se puede implementar de varias formas, sin embargo, la más común es la de simular una ruleta, donde cada cadena tiene un espacio en ella proporcional a su valor de aptitud.
  7. 7. Se pueden seleccionar individuos de la población actual, generar una nueva población y reemplazar con ella completamente a la población que se tenia. También a veces se mantienen los Nmejores individuos de una población a la siguiente (esto parece ser la mejor opción). Otras opciones: (i) Torneo, donde se seleccionan 2 individuos aleatoriamente de la población y se opta por el más apto con una probabilidad predeterminada P (y por el menos apto con probabilidad (1 - P)). (ii) ``Ranqueo'': se ordena la población por aptitud y se asignan probabilidades de selección de acuerdo a su posición (en lugar de su aptitud). • Criterio de paro. Normalmente cuando un porcentaje alto de la población converge a un valor. Si con ese valor no se llega a la medida esperado, entonces se toma una pequeña proporción y se inyecta ``diversidad genética'' (se generan aleatoriamente nuevos individuos), o inclusive se reemplaza completamente la población. • Operadores genéticos o Cruce: tiene una alta probabilidad de ser utilizado y es considerado como el más importante dentro de los AG. Permite la generación de nuevos individuos tomando caracterísitcas de individuos padres. Consiste en seleccionar dos individuos después del proceso de selección, determinar una posición de cruce aleatoria e intercambiar las cadenas entre la posición inicial y el punto de cruce y el punto de cruce y la posición final. Existen diferentes tipos de cruza. (i) Cruza simple: un solo punto de cruza (una máscara de 1's seguida de 0's), (ii) cruza de dos puntos y (iii) cruza uniforme. o Mutación: tiene baja probabilidad de ser utilizado y permite introducir nueva información no presente en la población. Opera sobre un solo individuo, determina una posición y la invierte con cierta probabilidad. Permite salir de máximos locales. o Inversión: tiene baja probabilidad. Incrementa la capacidad de exploración. Permite generar cadenas que serían difíciles de obtener con los otros dos operadores. Opera en un individuo, determina dos posiciones dentro de la cadena e invierte la subcadena. o Existem más...
  8. 8. 5.6.4 Temas Recientes • Evolución Lamarckiana: Lamarck (científico del s. XIX) propuso que las expeciencias de un individuo durante su vida pueden afectar genéticamente a sus descendientes. Aunque científicamente esto ha sido rechazado, algunos autores han usado estas ideas dentro de sus algoritmos. • Efecto Baldwin: Baldwin (1896) propuso que si existen cambios en el ambiente, la evolución tiende a favorecer individuos con la capacidad de aprender a adaptarse al nuevo medio ambiente acelerando cambios genéticos entre individuos parecidos. • Crowding: es el fenómeno cuando algún individuo es mucho más apto que los demás y se reproduce rápidamente llenando la problación con sus copias. Esto reduce diversidad y desacelera rápidamente el proceso evolutivo. Se han propuesto varias posibles soluciones cambiando el criterio de selección: o selección por torneo o selección por ranqueo o ``fitness sharing'': reducir la aptitud de un individuo por la prescencia de otros individuos parecidos o sólo combinar individuos muy parecidos entre si, creado ``sub-especies'' • Paralelización: Se han propuesto (por razones naturales) varios esquemas de paralelización: (i) Grano grueso: varias poblaciones (demes) al mismo tiempo con migración entre ellas y (ii) Grano fino: individuo por procesador • Sistemas Autoadaptativos: En la mayoría de los casos, el desempeño de un algoritmo genético depende fuertemente de la representación utilizada y de la selección de la función de aptitud. Un tema de investigación actual es tratar de descubrir automáticamente las primitivas que mejoren el comportamiento de las primitivas originales. • Relación de aprendizaje por refuerzo con sistemas clasificadores • Incorporación de restricciones y optimización multiobjetivo • Análisis y evolución estadística de los cromosomas, por ejemplo, PBIL y BOA. Algoritmos Genéticos Los Algoritmos Genéticos (AG) son métodos adaptativos que pueden ser utilizados para implementar búsquedas y problemas de optimización. Ellos están basados en los procesos genéticos de organismos biológicos, codificando una posible solución a un problema en un "cromosoma" compuesto por una cadena de bits o caracteres. Estos cromosomas representan individuos que son llevados a lo largo de varias generaciones, en forma similar a las poblaciones naturales, evolucionando de acuerdo a los principios de selección natural y "supervivencia" del más apto, descritos por primera vez por Charles Darwin en su libro "Origen de las Especies". Emulando estos procesos,
  9. 9. los Algoritmos Genéticos son capaces de "evolucionar" soluciones a problemas del mundo real. En la naturaleza, los individuos compiten entre si por recursos tales como comida, agua y refugio. Adicionalmente, los animales de la misma especie normalmente antagonizan para obtener una pareja. Aquellos individuos que tengan más éxito tendrán probablemente un número mayor de descendientes, por lo tanto, mayores probabilidades de que sus genes sean propagados a lo largo de sucesivas generaciones. La combinación de características de los padres bien adaptados, en un descendiente, puede producir muchas veces un nuevo individuo mucho mejor adaptado que cualquiera de sus padres a las características de su medio ambiente. Los Algoritmos Genéticos utilizan una analogía directa del fenómeno de evolución en la naturaleza. Trabajan con una población de individuos, cada uno representando una posible solución a un problema dado. A cada individuo se le asigna una puntuación de adaptación, dependiendo de que tan buena fue la respuesta al problema. A los más adaptados se les da la oportunidad de reproducirse mediante cruzamientos con otros individuos de la población, produciendo descendientes con características de ambos padres. Los miembros menos adaptados poseen pocas probabilidades de que sean seleccionados para la reproducción, y desaparecen. Una nueva población de posibles soluciones es generada mediante la selección de los mejores individuos de la generación actual, emparejándolos entre ellos para producir un nuevo conjunto de individuos. Esta nueva generación contiene una proporción más alta de las características poseídas por los mejores miembros de la generación anterior. De esta forma, a lo largo de varias generaciones, las características buenas son difundidas a lo largo de la población mezclándose con otras. Favoreciendo el emparejamiento de los individuos mejor adaptados, es posible recorrer las áreas más prometedoras del espacio de búsqueda. Si el Algoritmo Genético ha sido diseñado correctamente, la población convergerá a una solución óptima o casi óptima al problema. Los dos procesos que más contribuyen a la evolución son el crossover y la adaptación basada en la selección / reproducción. La mutación también juega un papel significativo, pero determinar que tan importante sea su rol, continúa siendo una materia de debate (algunos se refieren a ella como un operador en background), ella no debe ser utilizada demasiado, ya que el Algoritmo Genético se puede convertir en una búsqueda al azar, pero su utilización asegura que ningún punto en el espacio de búsqueda tiene probabilidad 0 de ser examinado. En la practica, se puede implementar este modelo, utilizando matrices de bits o caracteres para representar los cromosomas. Operaciones sencillas de bits permiten efectuar el crossover, la mutación y otras operaciones. A pesar de que una gran cantidad de investigación ha sido realizada en cadenas de longitud variable y otras estructuras, la mayor parte del trabajo con AG ha sido enfocado en cadenas de caracteres de longitud fija. Se hace énfasis en este aspecto y en la necesidad de codificar la solución como una cadena de caracteres. Generalmente, los AG son implementados siguiendo el siguiente ciclo: • Generar aleatoriamente la población inicial • Evaluar la adaptación de todos los individuos en la población.
  10. 10. • Crear una nueva población efectuando operaciones como crossover, reproducción proporcional a la adaptación y mutaciones en los individuos cuya adaptación acaba de ser medida. • Eliminar la antigua población • Iterar utilizando la nueva población, hasta que la población converja. Cada iteración de este bucle es conocida como generación. La primera generación de este proceso es una población de individuos generados al azar. Desde ese punto, los operadores genéticos, en unión con la medida de adaptación, actúan para mejorar la población. Los Algoritmos Genéticos no son la única técnica basada en una analogía de la naturaleza. Por ejemplo, las Redes Neurales están basadas en el comportamiento de las neuronas en el cerebro. Pueden ser utilizadas en una gran variedad de tareas de clasificación, como reconocimiento de patrones o proceso de imágenes. Actualmente está en investigación la utilización de Algoritmos Genéticos para el diseño de Redes Neurales. El poder de los Algoritmos Genéticos proviene del hecho de que la técnica es robusta, y puede manejar exitosamente un amplio rango de problemas, incluso algunos que son difíciles de resolver por otros métodos. Los Algoritmos Genéticos no garantizan que encontrarán la solución óptima al problema, pero son generalmente buenos encontrando soluciones aceptables a problemas en corto tiempo. Donde existan técnicas especializadas para la resolución de problemas, estas superarán fácilmente a los Algoritmos Genéticos tanto en velocidad como en precisión. El campo principal de aplicación es donde no existan este tipo de técnicas. Diferencias entre los Algoritmos Genéticos y los métodos tradicionales. Los Algoritmos Genéticos tienen cuatro diferencias principales con los métodos más utilizados o conocidos de optimización y búsqueda: • Trabajan con una codificación de el conjunto de parámetros, no con estos directamente. • Buscan simultáneamente la solución en una población de puntos, no en uno sólo. • Utilizan la función objetivo (rendimiento), no derivadas u otro conocimiento auxiliar • Utilizan reglas de transición probabilísticas, y no determinísticas. Definiciones básicas Contenido • Codificación • Función de Evaluación • Reproducción
  11. 11. • Convergencia Codificación Las partes que relacionan un Algoritmo Genético con un problema dado son la codificación y la función de evaluación. Si un problema puede ser representado por un conjunto de parámetros (conocidos como genes), estos pueden ser unidos para formar una cadena de valores (cromosoma), a este proceso se le llama codificación. En genética este conjunto representado por un cromosoma en particular es referido como genotipo, este contiene la información necesaria para construir un organismo, conocido como fenotipo. Estos mismos términos se aplican en Algoritmos Genéticos, por ejemplo, si se desea diseñar un puente, el conjunto de parámetros especificando el diseño es el genotipo, y la construcción final es el fenotipo. La adaptación de cada individuo depende de su fenotipo, el cual se puede inferir de su genotipo, es decir, puede calcularse desde el cromosoma utilizando la función de evaluación. Por ejemplo, si se tiene un problema de maximizar una función de tres variables, F(X,Y,Z), se podría representar cada variable por un número binario de 10 bits, obteniéndose un cromosoma de 30 bits de longitud y 3 genes. Existen varios aspectos relacionados con la codificación de un problema a ser tomados en cuenta en el momento de su realización: • Se debe utilizar el alfabeto más pequeño posible para representar los parámetros, normalmente se utilizan dígitos binarios • Las variables que representan los parámetros del problema deben ser discretizadas para poder representarse con cadenas de bits, hay que utilizar suficiente resolución para asegurar que la salida tiene un nivel de precisión adecuado, se asume que la discretización es representativa de la función objetivo. • La mayor parte de los problemas tratados con Algoritmos Genéticos son no lineales y muchas veces existen relaciones "ocultas" entre las variables que conforman la solución. Esta interacción es referida como epístasis, y es necesario tomar la en cuenta para una representación adecuada del problema. • El tratamiento de los genotipos inválidos debe ser tomado en cuenta para el diseño de la codificación. Supóngase que se necesitan 1200 valores para representar una variable, esto requiere al menos 11 bits, pero estos codifican un total de 2048 posibilidades, "sobrando" 848 patrones de bits no necesarios. A estos patrones se les puede dar un valor cero de adaptación, ser substituidos por un valor real, o eliminar el cromosoma. Función de evaluación Dado un cromosoma, la función de evaluación consiste en asignarle un valor numérico de "adaptación", el cual se supone que es proporcional a la "utilidad" o "habilidad" del individuo representado. En muchas casos, el desarrollo de una función de evaluación involucra hacer una simulación, en otros, la función puede estar basada en el
  12. 12. rendimiento y representar sólo una evaluación parcial del problema. Adicionalmente debe ser rápida, ya que hay que aplicarla para cada individuo de cada población en las sucesivas generaciones, por lo cual, gran parte del tiempo de corrida de un algoritmo genético se emplea en la función de evaluación. Convergencia prematura Un problema de los Algoritmos Genéticos dado por una mala formulación del modelo es aquel en el cual los genes de una pocos individuos relativamente bien adaptados, pero no óptimos, pueden rápidamente dominar la población, causando que converja a un máximo local. Una vez que esto ocurre, la habilidad del modelo para buscar mejores soluciones es eliminada completamente, quedando sólo la mutación como vía de buscar nuevas alternativas, y el algoritmo se convierte en una búsqueda lenta al azar. Para evitar este problema, es necesario controlar el número de oportunidades reproductivas de cada individuo, tal que, no obtenga ni muy alta o muy baja probabilidad. El efecto es comprimir el rango de adaptación y prevenir que un individuo "super-adaptado" tome control rápidamente Finalización lenta. Este es un problema contrario al anterior, luego de muchas generaciones, la población habrá convergido, pero no habrá localizado el máximo global. La adaptación promedio será alta y habrá poca diferencia entre el mejor y el individuo promedio, por consiguiente será muy baja la tendencia de la función de adaptación a llevar el algoritmo hacia el máximo. Las mismas técnicas aplicadas en la convergencia prematura son utilizadas en este caso. Reproducción Durante la fase reproductiva de un Algoritmo Genético, se seleccionan individuos de la población siendo recombinados para formar descendientes que formarán la siguiente generación. Los padres son seleccionados al azar, usando un método que favorece a los individuos mejor adaptados y le asigna una probabilidad baja de ser seleccionados a los menos adaptados. Luego de ser escogidos los padres, sus cromosomas se mezclan y cambian, usando crossover y mutación. Las formas básicas de estos operadores son: Crossover: toma dos individuos y corta sus cromosomas en una posición seleccionada al azar, para producir dos segmentos anteriores y dos posteriores, los posteriores se intercambian para obtener dos cromosomas nuevos. (Ver figura 1). Esto es conocido como crossover de un punto.
  13. 13. Mutación: es aplicada a cada descendiente individualmente luego de cada crossover. Altera un gen al azar, con una probabilidad muy pequeña (típicamente 0.001). La figura 2. muestra el 5to gen siendo mutado: Convergencia Si el Algoritmo Genético ha sido correctamente implementado, la población evolucionará a lo largo de sucesivas generaciones de forma que la adaptación del mejor y el promedio general se incrementarán hacia el óptimo global. La convergencia es la progresión hacia la uniformidad. Un gen ha convergido cuando el 95% de la población tienen el mismo valor. La población converge cuando todos los genes de cada individuo lo hacen. Por ejemplo la figura 2.3 muestra la convergencia representada por la varianza de una población a lo largo de sucesivas generaciones. Figura 3. Ejemplo de convergencia. Contactarme en:jcontre@iamnet.com Maracaibo 18/11/96 Tipos de Algoritmos Genéticos Contenido • Algoritmos Genéticos Generacionales • Algoritmos Genéticos de Estado Fijo
  14. 14. • Algoritmos Genéticos Paralelos Existen varios tipos de Algoritmos Genéticos, cada uno basado en una metáfora distinta de la naturaleza. Algoritmos Genéticos Generacionales Se asemeja a la forma de reproducción de los insectos, donde una generación pone huevos, se aleja geográficamente o muere y es substituida por una nueva. En este modelo se realizan cruces en una piscina de individuos, los descendientes son puestos en otra, al final de la fase reproductiva se elimina la generación anterior y se pasa a utilizar la nueva. Este modelo también es conocido como Algoritmo Genético Canónico. Algoritmos Genéticos de Estado Fijo Utilizan el esquema generacional de los mamíferos y otros animales de vida larga, donde coexisten padres y sus descendientes, permitiendo que los hijos sean educados por sus progenitores, pero también que a la larga se genere competencia entre ellos. En este modelo, no sólo se debe seleccionar los dos individuos a ser padres, si no también cuales de la población anterior serán eliminados , para hacer espacio a los descendientes. La diferencia esencial entre el reemplazo generacional y el modelo de estado fijo, es que las estadísticas de la población son recalculadas luego de cada cruce y los nuevos descendientes están disponibles inmediatamente para la reproducción. Esto permite al modelo utilizar las características de un individuo prometedor tan pronto como es creado. Algunos autores dicen que este modelo tiende a evolucionar mucho más rápido que el modelo generacional [BD93], sin embargo investigaciones de Goldberg y Deb (1993) encontraron que las ventajas parecen estar relacionadas con la alta tasa de crecimiento inicial, ellos dicen que los mismos efectos pueden ser obtenidos en rangos de adaptación exponencial o selección por competencia. No encontraron evidencia que este modelo sea mejor que el generacional. Algoritmos Genéticos Paralelos Parte de la metáfora biológica que motivó a utilizar la búsqueda genética consiste en que es inherentemente paralela, donde al evolucionar se recorren simultáneamente muchas soluciones, cada una representada por un individuo de la población. Sin embargo, es muy común en la naturaleza que no sólo sea una población evolucionando, si no varias poblaciones, normalmente aisladas geográficamente, que originan respuestas diferentes a la presión evolutiva. Esto origina dos modelos que toman en cuenta esta variación, y utilizan no una población como los anteriores si no múltiples concurrentemente. Modelos de Islas: Si se tiene una población de individuos, esta se divide en subpoblaciones que evolucionan independientemente como un algoritmo genético normal. Ocasionalmente, se producen migraciones entre ellas, permitiendoles intercambiar material genético.
  15. 15. Con la utilización de la migración, este modelo puede explotar las diferencias en las subpoblaciones; esta variación representa una fuente de diversidad genética. Sin embargo, si un gran número de individuos emigran en cada generación, ocurre una mezcla global y se eliminan las diferencias locales, y si la migración es infrecuente, es probable que se produzca convergencia prematura en las subpoblaciones. Modelo Celular: Coloca cada individuo en una matriz, donde cada uno sólo podrá buscar reproducirse con los individuos que tenga a su alrededor (más cerca de casa) escogiendo al azar o al mejor adaptado. El descendiente pasará a ocupar una posición cercana. No hay islas en este modelo, pero hay efectos potenciales similares. Asumiendo que el cruce esta restringido a individuos adyacentes, dos individuos separados por 20 espacios están tan aislados como si estuvieran en dos islas, este tipo de separación es conocido como aislamiento por distancia. Luego de la primera evaluación, los individuos están todavía distribuidos al azar sobre la matriz. Posteriormente, empiezan a emerger zonas con cromosomas y adaptaciones semejantes. La reproducción y selección local crea tendencias evolutivas aisladas, luego de varias generaciones, la competencia local resultará en grupos más grandes de individuos semejantes. Operadores Genéticos Son los diferentes métodos u operaciones que se pueden ejercer sobre una población en los Algoritmos Genéticos. Se dividen en 4 categorías: Crossover, Mutación, Selección y Reemplazo. • Crossover: Consiste en unir en alguna forma los cromosomas de dos padres para formar dos descendientes. Existen diversas variaciones, dependiendo del número de puntos de división a emplear, la forma de ver el cromosoma, etc. • Mutación: Se encarga de modificar en forma aleatoria uno o más genes del cromosoma de un descendiente. • Selección: Proceso que escoge los miembros de la población que serán utilizados para la reproducción. Su meta es dar más oportunidades de selección a los miembros más aptos de la población • Reemplazo: Es el método por el cual se insertan los hijos en la población, por ejemplo mediante la eliminación del individuo más débil o al azar INTRODUCCIÓN. John Holland, desde pequeño, se preguntaba cómo logra la naturaleza, crear seres cada vez más perfectos (aunque, esto no es totalmente cierto, o en todo caso depende de qué entienda uno por perfecto). Lo curioso era que todo se lleva a cabo a base de interacciones locales entre individuos, y entre éstos y lo que les rodea. Fue leyendo un libro escrito por un biólogo evolucionista, R. A. Fisher, titulado "La teoría genética de la selección natural", como comenzó a descubrir los medios de llevar a cabo sus propósitos de comprensión de la naturaleza. De
  16. 16. ese libro aprendió que la evolución era una forma de adaptación más potente que el simple aprendizaje. ANATOMÍA DE UN ALGORITMO GENÉTICO SIMPLE. Los algoritmos genéticos son métodos sistemáticos para la resolución de problemas de búsqueda y optimización que aplican a éstos los mismos métodos de la evolución biológica: selección basada en la población, reproducción sexual y mutación. Los algoritmos genéticos son métodos de optimización. En un algoritmo genético, tras parametrizar el problema en una serie de variables (xi,...,xn), se codifican en un cromosoma. Todos los operadores utilizados por un algoritmo genético se aplicarán sobre estos cromosomas, o sobre poblaciones de ellos. Las soluciones codificadas en un cromosoma compiten para ver cuál constituye la mejor solución (aunque no necesariamente la mejor de todas las soluciones posibles). El ambiente, constituido por las otras camaradas de soluciones, ejercerá una presión selectiva sobre la población, de forma que sólo los mejor adaptados (aquellos que resuelvan mejor el problema) sobrevivan o leguen su material genético a las siguientes generaciones, igual que en la evolución de las especies. La diversidad genética se introduce mediante mutaciones y reproducción sexual. Un algoritmo genético se usará para optimizar habitualmente sólo una función, no diversas funciones relacionadas entre sí simultáneamente. Este tipo de optimización se denomina optimización multimodal. Por lo tanto, un algoritmo genético consiste en lo siguiente: hallar de qué parámetros depende el problema, codificarlos en un cromosoma, y aplicar los métodos de la evolución: selección y reproducción sexual con intercambio de información y alteraciones que generan diversidad. Para Jorge Granados, los algoritmos genéticos son programas computacionales cuyo fin es imitar el proceso de "selección natural" que, según la teoría de Darwin, rige el curso de la evolución. El proceso de selección natural descrito de una manera sencilla es: tienes una población, esa población se multiplica por medio del intercambio de genes, de la nueva generación sólo sobreviven los más capaces de adaptarse a su medio ambiente para así formar una nueva población "mejor" que la anterior. Este ciclo se repite a través del tiempo. Sin embargo, hay ocasiones en que se producen mutaciones en los individuos, lo que origina cambios drásticos en las características del individuo, y con esto se evita que se llegue a un "estancamiento", en la evolución. Se dice que el proceso evolutivo es aleatorio en el sentido de que se generan poblaciones cuyas características se parecen a las de sus padres, pero varían aleatoriamente. Luego, estas poblaciones son "probadas" en el ambiente para ver cuál se "adapta" mejor. Sobreviven los que se adapten mejor al medio ambiente, pero no se sabe para qué se quiere adaptar al medio ambiente, es decir, con qué fin. Cuando la gente se enfrentó con problemas que no podían ser solucionados por métodos matemáticos o analíticos, y que la única forma de resolverlos era a través de prueba y error dirigido, es decir, probar dónde se crea que va a mejorar el resultado, se dio cuenta de que este proceso era similar al proceso
  17. 17. que seguía la naturaleza, así que se intentó copiar su manera de operar y se crearon los algoritmos genéticos, que en la actualidad sólo son una rama de una extensa materia conocida como computación evolutiva que, en resumen, es la ciencia computacional cuyos algoritmos imitan el proceso evolutivo de la naturaleza. Hace unos meses (25/2/99), el peródico Cyberp@ís publicaba un artículo sobre algoritmos genéticos y su aplicación en la resolución de problemas complejos de logística. El funcionamiento de los algorítmos genéticos seguiría el siguiente proceso: • Primera generación: el sistema genera varios centenares de soluciones posibles. • Evaluación: las que mejor se ajustan a los requerimientos, obtienen más posibilidades de reproducirse. • Segunda generación: los individuos-soluciones de la primera generación se emparejan al azar y producen nuevas soluciones. • Evaluación: los que mejor se ajustan a los requerimientos obtienen más posibilidades de reproducirse. Las peores son descartadas. • Continuación: los pasos 3 y 4 se reiteran docenas de miles de veces. Tras miles de generaciones, el mejor individuo-solución resuelve el problema de manera satisfactoria. No se puede aspirar al óptimo absoluto. Todo este proceso se basa en el tipo de reproducción en el que la dotación genética del nuevo ser tiene dos o más orígenes. La gran ventaja del ordenador es que puede simular decenas de miles de generaciones en minutos. MASSACHUSSETTS INSTITUTE OF TECHNOLOGY Implementación de una red neuronal simple y de los algoritmos genéticos http://lancet.mit.edu/ga/

×