You are on page 1of 3

Algoritmo genético

En la ciencia de la computación y la investigación de


operaciones, un algoritmo genético ( GA ) es una metaheurística
inspirada en el proceso de selección natural que pertenece a la
clase más grande de algoritmos evolutivos (EA). Los algoritmos
genéticos se utilizan comúnmente para generar soluciones de alta
calidad para la optimización y los problemas de búsqueda al
depender de operadores de inspiración biológica, como la
mutación, el cruce y la selección.

La evolución generalmente comienza en una población de


individuos generados al azar, y es un proceso iterativo, con la
población en cada iteración llamada generación. En cada
generación, se evalúa la aptitud de cada individuo en la
población; la aptitud suele ser el valor de la función objetivo
en el problema de optimización que se está resolviendo. Los
individuos más aptos son seleccionados estocásticamente de la
población actual, y el genoma de cada individuo se modifica
(recombinado y posiblemente mutado aleatoriamente) para formar
una nueva generación. La nueva generación de soluciones
candidatas se usa luego en la próxima iteración del algoritmo.
Comúnmente, el algoritmo finaliza cuando se ha producido un
número máximo de generaciones o se ha alcanzado un nivel de
aptitud física satisfactorio para la población.

Un algoritmo genético típico requiere:

 una representación genética del dominio de la solución,


 una función de aptitud para evaluar el dominio de la
solución.

Una representación estándar de cada solución candidata es como


una matriz de bits. Las matrices de otros tipos y estructuras se
pueden usar esencialmente de la misma manera. La propiedad
principal que hace que estas representaciones genéticas sean
convenientes es que sus piezas se alinean fácilmente debido a su
tamaño fijo, lo que facilita operaciones simples de cruce.
También se pueden usar representaciones de longitud variable,
pero la implementación cruzada es más compleja en este caso. Las
representaciones en forma de árbol se exploran en la
programación genética y las representaciones de forma gráfica se
exploran en la programación evolutiva; una mezcla de cromosomas
lineales y árboles se explora en la programación de expresión
génica.

Una vez que se definen la representación genética y la función


de aptitud, un GA procede a inicializar una población de
soluciones y luego a mejorarla mediante la aplicación repetitiva
de los operadores de mutación, cruce, inversión y selección.
Existen limitaciones del uso de un algoritmo genético en
comparación con algoritmos de optimización alternativos:

La evaluación repetida de la función de aptitud física para


problemas complejos a menudo es el segmento más prohibitivo y
limitante de los algoritmos evolutivos artificiales. Encontrar
la solución óptima para problemas multidimensionales y
multidimensionales complejos a menudo requiere evaluaciones de
funciones de aptitud física muy costosas . En problemas del
mundo real tales como problemas de optimización estructural, una
evaluación de una sola función puede requerir de varias horas a
varios días de simulación completa. Los métodos de optimización
típicos no pueden hacer frente a este tipo de problemas. En este
caso, puede ser necesario renunciar a una evaluación exacta y
utilizar una aptitud aproximada que sea computacionalmente
eficiente. Es evidente que la amalgama de modelos
aproximadospuede ser uno de los enfoques más prometedores para
usar GA de manera convincente para resolver problemas complejos
de la vida real.

Los algoritmos genéticos no se adaptan bien a la complejidad. Es


decir, cuando el número de elementos que están expuestos a la
mutación es grande, a menudo hay un aumento exponencial en el
tamaño del espacio de búsqueda. Esto hace que sea extremadamente
difícil utilizar la técnica en problemas como el diseño de un
motor, una casa o un avión. Para que estos problemas sean
manejables para la búsqueda evolutiva, deben dividirse en la
representación más simple posible. Por lo tanto, normalmente
vemos algoritmos evolutivos que codifican diseños para álabes de
ventiladores en lugar de motores, construyendo formas en lugar
de planos de construcción detallados, y superficies
aerodinámicas en lugar de diseños de aviones completos. El
segundo problema de la complejidad es la cuestión de cómo
proteger las piezas que han evolucionado para representar buenas
soluciones a partir de una mutación más destructiva,

La solución "mejor" es solo en comparación con otras soluciones.


Como resultado, el criterio de detención no está claro en todos
los problemas.
En muchos problemas, las AG tienen una tendencia a converger
hacia puntos óptimos locales o incluso puntos arbitrarios en
lugar del óptimo global del problema. Esto significa que no
"sabe cómo" sacrificar la aptitud física a corto plazo para
obtener una buena forma física a más largo plazo. La probabilidad
de que esto ocurra depende de la forma del paisaje de fitness:
ciertos problemas pueden proporcionar un fácil ascenso hacia un
óptimo global, otros pueden facilitar que la función encuentre
el óptimo local. Este problema puede ser aliviado mediante el
uso de una función de aptitud diferente, aumentando la tasa de
mutación, o mediante el uso de técnicas de selección que
mantienen una población diversa de soluciones, aunque el teorema
de No Free Lunch demuestra que no hay una solución general a
este problema. Una técnica común para mantener la diversidad es
imponer un "nicho de penalti", en la que, cualquier grupo de
individuos de similitud suficiente (nicho de radio) han añadido
un penalti, lo que reducirá la representación de ese grupo en
las generaciones posteriores, permitiendo otra (menos similar)
individuos a mantener en la población. Sin embargo, este truco
puede no ser efectivo, dependiendo del panorama del problema.
Otra técnica posible sería simplemente reemplazar parte de la
población con individuos generados al azar, cuando la mayoría de
la población es muy similar entre sí. La diversidad es importante
en los algoritmos genéticos (y la programación genética) porque
cruzar una población homogénea no produce nuevas soluciones. En
estrategias de evolución y programación evolutiva, la diversidad
no es esencial debido a una mayor dependencia de la mutación.

Operar en conjuntos de datos dinámicos es difícil, ya que los


genomas comienzan a converger desde el principio hacia
soluciones que pueden dejar de ser válidas para los datos
posteriores. Se han propuesto varios métodos para remediar esto
aumentando la diversidad genética de alguna manera y previniendo
la convergencia temprana, ya sea aumentando la probabilidad de
mutación cuando la calidad de la solución cae (llamada
hipermutación desencadenada) o introduciendo ocasionalmente
elementos completamente nuevos, generados aleatoriamente en el
conjunto de genes (llamado inmigrantes aleatorios). De nuevo,
estrategias de evolución y programación evolutiva se puede
implementar con la llamada "estrategia de coma" en la que los
padres no se mantienen y los nuevos padres se seleccionan solo
de la descendencia. Esto puede ser más efectivo en problemas
dinámicos.

You might also like