1.3. Introducción a los Algoritmos Genéticos
1.3.1. Algoritmos Evolutivos
Durante las décadas de 1950 y 1960, diversos científicos estudiaron de forma independiente distintos sistemas evolutivos, aplicando la idea de que la evolución podía ser usada como una herramienta de optimización con aplicaciones en la ingeniería [Mitchell, 1999]. Esta teoría fue propuesta por primera vez Charles Robert Darwin en su célebre obraEl origen de las especies, publicada en 1859. En ella, se defiende que la biodiversidad existente en la actualidad es resultado de la evolución durante millones de años de las distintas formas de vida, que han ido avanzando con el fin de adaptarse a su hábitat de la mejor forma posible. En la obra se exponen dos fenómenos de acuerdo a los cuales habría discurrido esta evolución:
Introducción a los Algoritmos Genéticos
• Selección natural:Dentro de cada especie, serán los individuos que mejor se adapten a su entorno
los que tengan más probabilidades de tener más descendencia y transmitir sus genes a las siguientes generaciones. Debido a esto, a lo largo de un espacio lo bastante extenso de tiempo en el cual los individuos que no se adaptan suficientemente bien tienen menos descendencia que los mejor adaptados, la especie mejora sus características dado que provienen de la descendencia de losmejores
individuos.
• Mutación: Tiene lugar de forma aleatoria y en una pequeña proporción de la población de una
especie, y propician diferencias en los individuos que de otra forma no se habrían dado. Estas muta- ciones pueden ser beneficiosas para el individuo, en cuyo caso mejorará su capacidad de adaptación y pasará la característica a más población, o será perniciosa para el individuo, provocando que tenga menos descendencia, de acorde con laSelección Natural.
Aplicando estos principios se desarrollaron una serie de técnicas de optimización caracterizados por:
• El trabajo con una gran cantidad de posibles soluciones, llamadasgeneración, en cada iteración.
• Las soluciones existentes se combinan entre sí con el fin de encontrar la combinación de genes
(variables) que propician un mejor resultado.
• Para los procesos de selección se aplica la idea de la selección natural, utilizando operadores que escogen una cantidad determinada de individuos, elegidos en función de la bondad de la solución o
fitness que proponen.
Estas caracteríticas convierten a los Algoritmos Genéticos en una herramienta ideal para encontrar máximos absulotes de funciones en las que por la cantidad de variables existe un gran número de máximos locales. Siguiendo las ideas mencionadas se desarrollaron un conjunto de algoritmos de optimización conocidos comoAlgoritmos Evolutivos, dentro de los cuales podemos diferenciar cuatro tipos de algoritmos principales, cuyo uso se extendió y generalizó en mayor medida que el resto:
i) Algoritmos Genéticos:Es la técnica de optimización evolutiva más extendida, gracias a sus bue-
nos resultados y sencillez conceptual. Tradicionalmente se representan los individuos mediante una cadena de bits con una longitud definida (aunque también pueden usarse números reales), en los que cada posición representa una caracerística del individuo (una variable), y su valor el cómo esa variable se expresa en la solución. Este tipo de representación es una clara analogía de los genes de los organismos biológicos, siendo estos los equivalentes de las variables de una solución. Gene- ralmente estosgenes se evalúan de forma independiente del resto. La forma de operar más común consiste en crear una población inicial a partir de la cual se seleccionan N individuos de manera probabilística que ejercerán de progenitores, dando lugar a una descendencia conN soluciones que reemplazarán a los padres, habiendo también procesos de mutación por los que algunas variables se alteran aleatoriamente. Estos y otros principios básicos de los Algoritmos Genéticos (AGs) fueron propuestos por John Henry Holland en [Holland, 1992]. Para llevar a cabo los procesos antes descri- tos, utilizan operadores de selección, recombinación, mutación y reemplazamiento, que explicaremos más adelante.
ii) Programación Genética: Esta técnica está ganando popularidad gracias a que es capaz de re-
solver problemas reales con más exactitud incluso que los métodos analíticos. Se basan en una representación de árboles genealógicos, siendo el árbol una única función que debe ser evaluada y las hojas distintas soluciones, que en vez de ser cadenas de bits o de números reales con una longitud fija, son programas o autómatas de tamaño variable. John R. Koza fue el creador de esta técnica en 1992 con su obra [Koza, 1992], tras estudiar los AGs en busca de una forma de mejorarlos.
iii) Estrategias Evolutivas:su objetivo es resolver problemas experimentales complicados trabajando
con cadenas de números reales y desviaciones estándar para codificar las posibles soluciones. Esta técnica fue desarrollada en la década de 1970 y se basaba principalmente en dos normas [Beyer and Schwefel, 2002]:
·Cambiar todas las variables a la vez, preferentemente de forma aleatoria.
INTRODUCCIÓN
·Si las nuevas variables no disminuyen la bondad de la solución, almacenarlos, y si no, volver a la solución anterior. Utilizan operadores de recombinación, de mutación gaussiana, y de selección. Estos últimos pueden ser determinísticos o probabilísticos, pero en ambos casos elimina soluciones que queden por debajo de un valor umbral.
iv) Programación Evolutiva: La representación más utilizada en ésta técnica es la de una cadena
de valores reales de longitud definida, y la principal diferencia con la Estrategia Evolutiva es que no se intercambia información entre la población; no existe la recombinación de valores o reproduc- ción, dando todo el protagonismo de la evolución a la mutación. Esta técnica fue desarrollada por Lawrence J. Fogel en la década de 1960.