Está en la página 1de 6

Artculo

volver

Programacin de un algoritmo gentico


Edn Covarrubias Guel Facultad de Ingeniera Mecnica y Elctrica Scrates Torres Ovalle Centro de Investigacin en Matemtica Aplicada Universidad Autnoma de Coahuila Correspondencia: storres@cima.uadec.mx

CIENCIACIERTA No.25 enero - marzo 2011

AO 7 No.25

Resumen Un algoritmo gentico es un mtodo de bsqueda que imita los mecanismos de la evolucin biolgica para la solucin de problemas. Emplea tcnicas como la seleccin, el cruzamiento y la mutacin para crear posibles remedios que evolucionan a travs de las generaciones hacia una solucin ptima. En el presente trabajo se describen los pasos para el desarrollo de un algoritmo gentico, y se prueba el funcionamiento de una aplicacin basada en este mtodo y programada en Java para resolver un problema de bsqueda simple. Palabras clave: Algoritmo gentico, seleccin natural Introduccin Un algoritmo es una serie de pasos ordenados que se siguen para dar solucin a un problema especfico. En computacin, los algoritmos sirven como base en la elaboracin de programas, ya que son cdigos de instrucciones escritos con el objetivo de que la computadora realice una tarea determinada. Uno de los propsitos de los programas de computacin es aprovechar la enorme capacidad de procesamiento de los ordenadores para realizar tareas que manualmente requeriran invertir una gran cantidad de tiempo. Completar eficientemente estas tareas, es decir, en el menor tiempo posible y usando la mnima cantidad de recursos computacionales, mucho depende del tipo de algoritmos que se empleen. Por ejemplo, supongamos que deseamos descifrar una contrasea compuesta por cinco dgitos del cero al nueve. Tal vez lo primero que se nos ocurrira sera confiar en la capacidad de nuestra mquina y buscar entre cada una de las posibles combinaciones de nmeros, es decir, desde 00000 hasta 99999. Este procedimiento es conocido como algoritmo de fuerza bruta; es fcil de implementar, pero se vuelve poco funcional cuando el espacio de bsqueda es muy grande. Una interesante y eficaz respuesta a este tipo de problemas es el uso de algoritmos genticos, los cuales basan su funcionamiento en tcnicas propias de la seleccin natural (Darwin, 1859), como la eleccin de los individuos ms aptos, la reproduccin o cruce, y la mutacin para crear remedios capaces de evolucionar a travs de las generaciones hacia la solucin correcta. Descripcin

Artculos
La pulpa de caf, un residuo fuente de antioxidantes polifenlicos La nueva caja de Pandora, clonacin del mamut La Igualdad, verdadero alimento del alma Tuba: una bebida fermentada tradicional de Colima Programacin de un algoritmo gentico Rivalidad, regionalismo y aficin por el futbol en Mxico: el caso del equipo Santos Laguna Contaminacin atmosfrica en la frontera de Mxico-Estados Unidos y los organismos que la regulan Las alternativas antineoplsicas del futuro se encuentran en la qumica de los productos vegetales En busca de la identidad nacional la revolucin que no fue La granada: fuente de potentes agentes bioactivos Representaciones sociales de alumnos de licenciatura universitaria sobre tems ambientales Calentamiento hmico para la produccin de harina de maz

Un algoritmo gentico es un algoritmo de bsqueda basado en los mecanismos de seleccin y gentica natural (Goldberg, 1989). Su funcionamiento parte de generar aleatoriamente una serie de posibles soluciones, tambin llamadas poblacin inicial, codificadas comnmente en una representacin binaria que evoluciona a travs de las generaciones, siguiendo los principios de la seleccin natural hasta llegar a la respuesta requerida. El proceso de evolucin consiste en evaluar mediante una funcin de aptitud qu tan buenas son cada una de las posibles soluciones generadas en la poblacin inicial. Tomando en cuenta algn criterio de competencia basado en dicha evaluacin, se seleccionan las soluciones ms aptas para reproducirse, despus se cruzan o se combina el material gentico de las parejas seleccionadas, y por ltimo se mutan o sufren pequeas modificaciones. Todo este proceso se repite el nmero de veces que se considere conveniente o hasta que la solucin sea encontrada ( Figura 1).

Xantanos biopolimricos: propiedades reolgicas y aplicaciones Referencias bibliogrficas.

Figura 1. Diagrama de flujo de un algoritmo gentico.


Desarrollo Para entender mejor el funcionamiento de un algoritmo gentico, en esta seccin se presenta un ejemplo sencillo desarrollado en Java bajo la distribucin GNU/Linux Ubuntu 10.04 Lucyd Linx, usando Java Development Kit junto con el entorno de desarrollo integrado Geany. El ejemplo consiste bsicamente en descifrar una clave compuesta por una serie de 10 dgitos hexadecimales generados aleatoriamente (figura 2).

Figura 2. Clave generada aleatoriamente


Lo primero que debe hacerse es encontrar una manera de codificar las posibles soluciones. Se utilizar una codificacin binaria. Debido a que la clave est integrada por 10 dgitos hexadecimales y se requiere de cuatro dgitos binarios para representar un nmero hexadecimal, es necesario tener individuos de longitud igual a 40 bits, tal y como se muestra en la figura 3.

Figura 3. Codificacin de ejemplo para algoritmo gentico.


La poblacin de un algoritmo gentico est constituida por un conjunto de individuos, tambin llamados cromosomas. Para este ejemplo se tomar una poblacin de 10 cromosomas. El algoritmo gentico debe partir de una poblacin inicial. sta se forma generando cromosomas (cadenas de 40 bits) al azar. En este caso se partir de la poblacin inicial mostrada en la tabla 1.

Tabla 1. Poblacin inicial de ejemplo para algoritmo gentico.

Luego debe realizarse un proceso de seleccin para obtener a los mejores individuos de la poblacin. Para ello es necesario contar con una funcin de aptitud (fitness) que indique cules son los mejores cromosomas. Para el ejemplo, la funcin de aptitud esta dada por: f=(h+1)*b2, donde h y b son la cantidad de dgitos hexadecimales y binarios respectivamente que coinciden con la clave original. Para la poblacin inicial, el mejor individuo es el cromosoma 4 con h=3, b=21 y f=1764 (ver tabla1). Cabe mencionar que cuando un cromosoma de la poblacin sea idntico a la clave original, es decir cuando la clave sea encontrada, h valdr 10 y b ser igual a 40, entonces el valor de la funcin de aptitud ser de 17,600. Una manera de realizar el proceso de seleccin es mediante torneo entre dos individuos. Se seleccionan dos cromosomas aleatoriamente y entre ellos se establece un torneo: el que mejor funcin de aptitud tenga genera una copia y el peor se desecha. La tabla 2 muestra este proceso para la poblacin inicial del ejemplo.

Tabla 2. Proceso de seleccin de ejemplo.

Luego de realizar la seleccin, se aplican los operadores genticos. Para el ejemplo se aplicar un cruce de un punto. El proceso consiste en formar parejas aleatoriamente entre los individuos de la nueva poblacin. Dados dos cromosomas pareja (padre y madre), se establece un punto de cruce aleatorio, que no es ms que un nmero al azar entre 0 y 39 (considerando que se empieza a contar desde cero). La operacin de cruce consiste en generar dos nuevos individuos, intercambiando los bits de los padres a partir del punto de cruce, como se muestra en la tabla 3.

Tabla 3. Ejemplo de operacin de cruce.

Despus de la seleccin y el cruce se da lugar a la mutacin, la cual proporciona un pequeo elemento de aleatoriedad en el entorno de los individuos de la poblacin. La mutacin consiste en elegir individuos al azar de la poblacin, y alterar alguno de sus genes o bits. Para el ejemplo, esto se hara cambiando 4 bits al azar de 0 a 1 (o de 1 a 0) de uno o ms individuos de la poblacin. Ahora, en la nueva poblacin, el

mejor individuo es el cromosoma 3, con h=3, b=23 y f =2116. Esto indica que luego de la seleccin, el cruce y la mutacin, los individuos de la poblacin han mejorado (tabla 4). El siguiente paso consiste en realizar nuevamente la seleccin, el cruce y la mutacin, tomando como entrada la poblacin obtenida en la iteracin anterior. Este proceso se repite hasta obtener un cromosoma con una puntuacin de 17, 600, es decir, hasta que la solucin sea encontrada. En la figura 4 se muestra la ejecucin del programa, y cmo es que encuentra la solucin despus de 78 generaciones.

Tabla 4. Poblacin resultante despus de aplicar la seleccin, cruce y mutacin.

Figura 4. Pantalla de ejecucin del algoritmo gentico.


Conclusiones Queda demostrado que los algoritmos genticos proporcionan una bsqueda fiable de soluciones a problemas de bsqueda en espacios complejos. Aunque intervienen reglas probabilsticas, los algoritmos genticos no representan una bsqueda ciega por el espacio de soluciones de un problema.

La idea es que la informacin que se va acumulando en el espacio de bsqueda completamente desconocido al principio, pueda orientar la bsqueda posterior hacia espacios con esperanza de mejora. Es importante destacar que la utilizacin de algoritmos genticos muchas veces no asegura encontrar el ptimo global de un problema, pero pueden proporcionan soluciones bastante prximas al mismo. Referencias bibliogrficas 1. Darwin, C. R. (1859). On the origin of species by means of natural selection (1a. ed.). Gran Bretaa: John Murray. 2. Goldberg, D. E. (1989). Genetics algorithms in search, optimization and machine learning (26a. ed.). Boston: Addison Wesley.
arriba CIENCIACIERTA No. 25 Ao 7 enero - marzo 2011 2009 CIENCIACIERTA revista de divulgacin cientfica. Coordinacin General de Estudios de Posgrado e Investigacin