You are on page 1of 9

Introduccin

Basndose en la evolucin biolgica, John Henry Holland desarrollo lo que hoy se


conoce como los algoritmos genticos. Un Algoritmo Gentico es una tcnica de resolucin
de problemas inspirada en la reproduccin de los seres vivos. Pero una tcnica muy
especial, en la que las soluciones del problema son capaces de reproducirse entre s,
combinando sus caractersticas y generando nuevas soluciones. El funcionamiento bsico
es muy sencillo.
Los algoritmos genticos hacen evolucionar a una poblacin de individuos,
mediante una serie de acciones aleatorias semejantes a la evolucin biolgica. Al mismo
tiempo se someten a un proceso de seleccin donde solo sobreviven los sujetos ms aptos, y
el resto son descartados.
En el presente trabajo se busca que el lector comprenda el funcionamiento de los
algoritmos genticos con una breve explicacin y un ejemplo detallado.

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:

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 qu tan 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:
o 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.
o Cruzamiento: El cruzamiento 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.
o 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.
o Reemplazo: una vez aplicados los operadores genticos, se seleccionan los
mejores individuos para conformar la poblacin de la generacin siguiente.

Ejemplo:
Vamos a partir de una funcin f(x) muy sencilla:

(Es decir, x al cuadrado).


Imagina que deseas encontrar el valor de x que hace que la funcin f(x) alcance su
valor mximo, pero restringiendo a la variable x a tomar valores comprendidos entre 0 y

31. An ms, a x slo le vamos a permitir tomar valores enteros, es decir: 0,1, 2, 3,..., 30,
31. Obviamente el mximo se tiene para x = 31, donde f vale 961. No necesitamos saber
algoritmos genticos para resolver este problema, pero su sencillez hace que el algoritmo
sea ms fcil de comprender.
Lo primero que debemos hacer es encontrar una manera de codificar las posibles
soluciones (posible valores de x). Una manera de hacerlo es con la codificacin binaria.
Con esta codificacin un posible valor de x es (0, 1, 0, 1, 1).
Cmo se interpreta esto? Muy sencillo: multiplica la ltima componente (un 1) por
1, la penltima (un 1) por 2, la anterior (un 0) por 4, la segunda (un 1) por 8 y la primera
(un 0) por 16 y a continuacin haz la suma: 11. Observa que (0, 0, 0, 0, 0) equivale a x = 0
y que (1, 1, 1, 1, 1) equivale a x = 31.
A cada posible valor de la variable x en representacin binaria le vamos a llamar
individuo. Una coleccin de individuos constituye lo que se denomina poblacin y el
nmero de individuos que la componen es el tamao de la poblacin.
Una vez que tenemos codificada la solucin, debemos escoger un tamao de
poblacin. Para este ejemplo ilustrativo vamos a escoger 6 individuos.
Debemos partir de una poblacin inicial. Una manera de generarla es
aleatoriamente: coge una moneda y lnzala al aire; si sale cara, la primera componente del
primer individuo es un 0 y en caso contrario un 1. Repite el lanzamiento de la moneda y
tendremos la segunda componente del primer individuo (un 0 si sale cara y un 1 si sale
cruz). As hasta 5 veces y obtendrs el primer individuo. Repite ahora la secuencia anterior
para generar los individuos de la poblacin restantes. En total tienes que lanzar 5 * 6 = 30
veces la moneda.
Nuestro siguiente paso es hacer competir a los individuos entre s. Este proceso se
conoce como seleccin. La tabla 1 resume el proceso.

Cada fila en la tabla 1 est asociada a un individuo de la poblacin inicial. El significado de


cada columna de la tabla es el siguiente:
(1) = Nmero que le asignamos al individuo.
(2) = Individuo en codificacin binaria.
(3) = Valor de x.
(4) = Valor de f(x).
Observa que el mejor individuo es el 5 con f=676. Calcula la media de f y obtendrs
fmed=324.3.
En cuanto a la columna (5) ahora te lo explico. Una manera de realizar el proceso de
seleccin es mediante un torneo entre dos. A cada individuo de la poblacin se le asigna
una pareja y entre ellos se establece un torneo: el mejor genera dos copias y el peor se
desecha. La columna (5) indica la pareja asignada a cada individuo, lo cual se ha realizado
aleatoriamente. Existen muchas variantes de este proceso de seleccin, aunque este mtodo
nos vale para ilustrar el ejemplo.
Despus de realizar el proceso de seleccin, la poblacin que tenemos es la
mostrada en la columna (2) de la tabla 2. Observa, por ejemplo, que en el torneo entre el
individuo 1 y el 6 de la poblacin inicial, el primero de ellos ha recibido dos copias,
mientras que el segundo cae en el olvido.

Tras realizar la seleccin, se realiza el cruce. Una manera de hacerlo es mediante el


cruce 1X: se forman parejas entre los individuos aleatoriamente de forma similar a la
seleccin. Dados dos individuos pareja se establece un punto de cruce aleatorio, que no es
ms que un nmero aleatorio entre 1 y 4 (la longitud del individuo menos 1). Por ejemplo,
en la pareja 2-3 el punto de cruce es 3, lo que significa que un hijo de la pareja conserva los
tres primeros bits del padre y hereda los dos ltimos de la madre, mientras que el otro hijo
de la pareja conserva los tres primeros bits de la madre y hereda los dos ltimos del padre.
La poblacin resultante se muestra en la columna (2) de la tabla 3.

En la columna (3) tienes el valor de x; en la siguiente tienes el valor de f


correspondiente.
Fjate en que ahora el valor mximo de f es 784 (para el individuo 2), mientras que
antes de la seleccin y el cruce era de 676. Adems fmed ha subido de 324.3 a 389.3. Qu
quiere decir esto? Simplemente que los individuos despus de la seleccin y el cruce son
mejores que antes de estas transformaciones.
El siguiente paso es volver a realizar la seleccin y el cruce tomando como
poblacin inicial la de la tabla 3. Esta manera de proceder se repite tantas veces como

nmero de iteraciones t fijes. Y cul es el ptimo? En realidad un algoritmo gentico no


te garantiza la obtencin del ptimo pero, si est bien construido, te proporcionar una
solucin razonablemente buena. Puede que obtengas el ptimo, pero el algoritmo no te
confirma que lo sea. As que qudate con la mejor solucin de la ltima iteracin. Tambin
es buena idea ir guardando la mejor solucin de todas las iteraciones anteriores y al final
quedarte con la mejor solucin de las exploradas.

Conclusin

Los algoritmos genticos tienen la ventaja de ofrecer un mecanismo adaptativo de


resolucin de problemas, de forma que aunque el problema cambie, ste se pueda seguir
resolviendo. "Resolver un problema cambiante", llevado al lmite, es igual a "Resolver
cualquier problema". Segn este planteamiento podramos pensar en disear un esquema
comn que facilite a los agentes aprender en cualquier entorno de problema.

Referencias Bibliogrficas

DAVIS, L. (1991): Handbook of Genetic Algorithms. Van Nostrand Reinhold.


DIAZ, A. y GLOVER, F. (1996): Optimizacin Heurstica y Redes Neuronales en
Direccin de Operaciones e Ingeniera.
GOLDBERG, D.E. (1989): Genetic Algorithms in Search, Optimization, and Machine
Learning. Addison-Wesley, Reading, MA.
HOLLAND, J. (1975): Adaptation in Natural and Artificial Systems. University of
Michigan Press, Ann Arbor.
MICHALEWICZ, Z. (1992): Genetic Algorithms + Data Structures = Evolution
Programs. Springer-Verlag.

You might also like