Un algoritmo es una serie de pasos organizados que describe el proceso que se
debe seguir, para dar solucin a un problema especfico. En los aos 1970, de la mano de John Henry Holland, surgi una de las lneas ms prometedoras de la inteligencia artificial, la de los algoritmos genticos. Son llamados as porque se inspiran en la evolucin biolgica y su base gentico-molecular. Estos algoritmos hacen evolucionar una poblacin de individuos sometindola a acciones aleatorias semejantes a las que actan en la evolucin biolgica (mutaciones y recombinaciones genticas), as como tambin a una Seleccin de acuerdo con algn criterio, en funcin del cual se decide cules son los individuos ms adaptados, que sobreviven, y cules los menos aptos, que son descartados. Es incluido dentro de los algoritmos evolutivos, que incluyen tambin las estrategias evolutivas, la programacin evolutiva y la programacin gentica. Dentro de esta ltima se han logrado avances curiosos: Un algoritmo gentico es un mtodo de bsqueda dirigida basada en probabilidad. Bajo una condicin muy dbil (que el algoritmo mantenga elitismo, es decir, guarde siempre al mejor elemento de la poblacin sin hacerle ningn cambio) se puede demostrar que el algoritmo converge en probabilidad al ptimo. En otras palabras, al aumentar el nmero de iteraciones, la probabilidad de tener el ptimo en la poblacin tiende a 1 (uno). FUNCIONAMIENTO Los algoritmos genticos funcionan entre el conjunto de soluciones de un problema llamado fenotipo, y el conjunto de individuos de una poblacin natural, codificando la informacin de cada solucin en una cadena, generalmente binaria, llamada cromosoma. Los smbolos que forman la cadena son llamados los genes. Cuando la representacin de los cromosomas se hace con cadenas de dgitos binarios se le conoce como genotipo. Los cromosomas evolucionan a travs de iteraciones, llamadas generaciones. En cada generacin, los cromosomas son evaluados usando alguna medida de aptitud. Las siguientes generaciones (nuevos cromosomas), son generadas aplicando los operadores genticos repetidamente, siendo estos los operadores de seleccin, cruzamiento, mutacin y reemplazo. CUNDO USAR ESTOS ALGORITMOS Los algoritmos genticos son de probada eficacia en caso de querer calcular funciones no derivables (o de derivacin muy compleja) aunque su uso es posible con cualquier funcin. Deben tenerse en cuenta tambin las siguientes consideraciones: Si la funcin a optimizar tiene muchos mximos/mnimos locales se requerirn ms iteraciones del algoritmo para "asegurar" el mximo/mnimo global. Si la funcin a optimizar contiene varios puntos muy cercanos en valor al ptimo, solamente podemos "asegurar" que encontraremos uno de ellos (no necesariamente el ptimo). FUNCIONAMIENTO DE UN ALGORITMO GENTICO BSICO Un algoritmo gentico puede presentar diversas variaciones, dependiendo de cmo se aplican los operadores genticos (cruzamiento, mutacin), de cmo se realiza la seleccin y de cmo se decide el reemplazo de los individuos para formar la nueva poblacin. En general, el pseudocdigo consiste de los siguientes pasos:
Algoritmo gentico i: inicializacin, f(X): evaluacin, ?: condicin de trmino, Se: seleccin, Cr: cruzamiento, Mu: mutacin, Re: reemplazo, X*: mejor solucin. Inicializacin: Se genera aleatoriamente la poblacin inicial, que est constituida por un conjunto de cromosomas los cuales representan las posibles soluciones del problema. En caso de no hacerlo aleatoriamente, es importante garantizar que dentro de la poblacin inicial, se tenga la diversidad estructural de estas soluciones para tener una representacin de la mayor parte de la poblacin posible o al menos evitar la convergencia prematura. Evaluacin: A cada uno de los cromosomas de esta poblacin se aplicar la funcin de aptitud para saber cmo de "buena" es la solucin que se est codificando. Condicin de trmino El AG se deber detener cuando se alcance la solucin ptima, pero sta generalmente se desconoce, por lo que se deben utilizar otros criterios de detencin. Normalmente se usan dos criterios: correr el AG un nmero mximo de iteraciones (generaciones) o detenerlo cuando no haya cambios en la poblacin. Mientras no se cumpla la condicin de trmino se hace lo siguiente: Seleccin Despus de saber la aptitud de cada cromosoma se procede a elegir los cromosomas que sern cruzados en la siguiente generacin. Los cromosomas con mejor aptitud tienen mayor probabilidad de ser seleccionados. Recombinacin o Cruzamiento La recombinacin es el principal operador gentico, representa la reproduccin sexual, opera sobre dos cromosomas a la vez para generar dos descendientes donde se combinan las caractersticas de ambos cromosomas padres. Mutacin modifica al azar parte del cromosoma de los individuos, y permite alcanzar zonas del espacio de bsqueda que no estaban cubiertas por los individuos de la poblacin actual. Reemplazo una vez aplicados los operadores genticos, se seleccionan los mejores individuos para conformar la poblacin de la generacin siguiente APLICACIONES Diseo automatizado, incluyendo investigacin en diseo de materiales y diseo multiobjetivo de componentes automovilsticos: mejor comportamiento ante choques, ahorros de peso, mejora de aerodinmica, etc. Diseo automatizado de equipamiento industrial. Diseo automatizado de sistemas de comercio en el sector financiero. Construccin de rboles filogenticos. Optimizacin de carga de contenedores. Diseo de sistemas de distribucin de aguas. Diseo de topologas de circuitos impresos. Diseo de topologas de redes computacionales. En Teora de juegos, resolucin de equilibrios. Anlisis de expresin de genes. Aprendizaje de comportamiento de robots. Aprendizaje de reglas de Lgica difusa. Anlisis lingstico, incluyendo induccin gramtica, y otros aspectos de Procesamiento de lenguajes naturales, tales como eliminacin de ambigedad de sentido. Infraestructura de redes de comunicaciones mviles. Optimizacin de estructuras moleculares. Planificacin de produccin multicriteria. Prediccin. Aplicacin de Algoritmos Genticos al Dilema del prisionero Iterado Optimizacin de sistemas de compresin de datos, por ejemplo, usando wavelets. Prediccin de Plegamiento de protenas. Optimizacin de Layout. Prediccin de estructura de ARN. En bioinformtica, Alineamiento mltiple de secuencias. Aplicaciones en planificacin de procesos industriales, incluyendo planificacin job-shop. Seleccin ptima de modelos matemticos para la descripcin de sistemas biolgicos. Manejo de residuos slidos. Ingeniera de software. Construccin de horarios en grandes universidades, evitando conflictos de clases. Problema del viajante. Hallazgo de errores en programas. Optimizacin de produccin y distribucin de energa elctrica. Diseo de redes geodsicas (Problemas de diseo). Calibracin y deteccin de daos en estructuras civiles.