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. 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. 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. 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. • 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. • 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. 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. 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. 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. • 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. • 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. 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. 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. • 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. 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. 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. 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/