domingo, 20 de diciembre de 2009

Algorítmos Genéticos

Los Algorítmos Genéticos ( o GA, siglas en inglés ) son un tipo de programación para encontrar posibles soluciones en un tiempo reducido y aplicando la ley de la Evolución de Darwin.

Definamos *posibles soluciones*: Los GA no nos tienen por que devolver el resultado óptimo sobre el problema propuesto. O sea, cuando tenemos un resultado de un algoritmo genético no tenemos modo de saber si éste se trata de un resultado óptimo o tan solo un máximo relativo. Podríamos comprobarlo si el resultado es el óptimo utilizando un método de cálculo tradicional, pero en algunos problemas esto exigiría un nivel muy alto de matemáticas ( del que desgraciadamente no dispongo ).
Como funciona por dentro, un GA? Pues bien. Básicamente sigue este sencillo algorítmo ( que su implementación, me temo, que no es tan simple... ):

Generamos una población inicial
Evaluamos la población inicial recién generada
MIENTRAS que la población no haya convergido hacemos:
Seleccionamos a los mejores indivíduos ( función evaluación )
Cruzamos los indivíduos ( función reproducción )
Mutamos algunos indivíduos según una probabilidad dada ( función mutación )
Calculamos la función evaluación de los nuevos indivíduos
END MIENTRAS
Imprimimos el resultado, ya que la población ya ha convergido


Para qué sirven los algorítmos genéticos? Bueno, pues para sacar soluciones a determinados problemas muy complejos, con un tiempo reducido y que no estemos buscando LA Enlacesolución, sinó una posible solución lo suficientemente buena. Se utilizan mucho para programar Inteligéncia Artificial, para toma de decisiones, rutas óptimas entre dos puntos, etc... ( más aplicaciones en el link de su wiki ). Mas documentación aqui y aqui.

No hay comentarios:

Publicar un comentario