Sie sind auf Seite 1von 17

Introduccin

John Holland desde pequeo, se preguntaba cmo logra la naturaleza, crear


seres cada vez ms perfectos (aunque, como se ha visto, esto no es totalmente
cierto, o en todo caso depende de qu entienda uno porperfecto). Lo curioso era que
todo se lleva a cabo a base de interacciones locales entre individuos, y entre estos y
lo que les rodea. No saba la respuesta, pero tena una cierta idea de como hallarla:
tratando de hacer pequeos modelos de la naturaleza, que tuvieran alguna de sus
caractersticas, y ver cmo funcionaban, para luego extrapolar sus conclusiones a la
totalidad. De hecho, ya de pequeo haca simulaciones de batallas clebres con
todos sus elementos: copiaba mapas y los cubra luego de pequeos ejrcitos que se
enfrentaban entre s.
En los aos 50 entr en contacto con los primeros ordenadores, donde pudo
llevar a cabo algunas de sus ideas, aunque no se encontr con un ambiente
intelectual frtil para propagarlas. Fue a principios de los 60, en la Universidad de
Michigan en Ann Arbor, donde, dentro del grupo Logic of Computers, sus ideas
comenzaron a desarrollarse y a dar frutos. Y fue, adems, leyendo un libro escrito por
un bilogo evolucionista, R. A. Fisher, titulado La teora gentica de la seleccin
natural, como comenz a descubrir los medios de llevar a cabo sus propsitos de
comprensin de la naturaleza. De ese libro aprendi que la evolucin era una forma
de adaptacin ms potente que el simple aprendizaje, y tom la decisin de aplicar
estas ideas para desarrollar programas bien adaptados para un fin determinado.
En esa universidad, Holland imparta un curso titulado Teora de sistemas
adaptativos. Dentro de este curso, y con una participacin activa por parte de sus
estudiantes, fue donde se crearon las ideas que ms tarde se convertiran en los
algoritmos genticos.
Por tanto, cuando Holland se enfrent a los algoritmos genticos, los objetivos
de su investigacin fueron dos:

Imitar los procesos adaptativos de los sistemas naturales, y

Disear sistemas artificiales (normalmente programas) que retengan los


mecanismos importantes de los sistemas naturales.

Unos 15 aos ms adelante, David Goldberg, actual delfn de los algoritmos


genticos, conoci a Holland, y se convirti en su estudiante. Golberg era un
ingeniero industrial trabajando en diseo de pipelines, y fue uno de los primeros que
trat de aplicar los algoritmos genticos a problemas industriales. Aunque Holland
trat de disuadirle, porque pensaba que el problema era excesivamente complicado
como para aplicarle algoritmos genticos, Goldberg consigui lo que quera,
escribiendo un algoritmo gentico en un ordenador personal Apple II. Estas y otras
aplicaciones creadas por estudiantes de Holland convirtieron a los algoritmos
genticos en un campo con base suficiente aceptado para celebrar la primera
conferencia en 1985, ICGA85. Tal conferencia se sigue celebrando bianualmente.

Anatoma de un algoritmo gentico simple


Los algoritmos genticos son mtodos sistemticos para la resolucin de
problemas de bsqueda y optimizacin que aplican a estos los mismos mtodos de la
evolucin biolgica: seleccin basada en la poblacin, reproduccin sexual y
mutacin.
Los algoritmos genticos son mtodos de optimizacin, que tratan de resolver
el mismo conjunto de problemas que se ha contemplado anteriormente, es decir,
hallar (xi,...,xn) tales que F(xi,...,xn) sea mximo. En un algoritmo gentico, tras
parametrizar el problema en una serie de variables, (xi,...,xn) se codifican en un
cromosoma. Todas los operadores utilizados por un algoritmo gentico se aplicarn
sobre estos cromosomas, o sobre poblaciones de ellos. En el algoritmo gentico va
implcito el mtodo para resolver el problema; son solo parmetros de tal mtodo los
que estn codificados, a diferencia de otros algoritmos evolutivos como la
programacin gentica. Hay que tener en cuenta que un algoritmo gentico es
independiente del problema, lo cual lo hace un algoritmo robusto, por ser til para
cualquier problema, pero a la vez dbil, pues no est especializado en ninguno.
Las soluciones codificadas en un cromosoma compiten para ver cul constituye
la mejor solucin (aunque no necesariamente la mejor de todas las soluciones
posibles). El ambiente, constituido por las otras camaradas soluciones, ejercer una
presin selectiva sobre la poblacin, de forma que slo los mejor adaptados (aquellos
que resuelvan mejor el problema) sobrevivan o leguen su material gentico a las
siguientes generaciones, igual que en la evolucin de las especies. La diversidad
gentica se introduce mediante mutaciones y reproduccin sexual.
En la Naturaleza lo nico que hay que optimizar es la supervivencia, y eso
significa a su vez maximizar diversos factores y minimizar otros. Un algoritmo
gentico, sin embargo, se usar habitualmente para optimizar slo una funcin, no
diversas funciones relacionadas entre s simultneamente. La optimizacin que busca
diferentes objetivos simultneamente, denominada multimodal o multiobjetivo,
tambin se suele abordar con un algoritmo gentico especializado.
Por lo tanto, un algoritmo gentico consiste en lo siguiente: hallar de qu
parmetros depende el problema, codificarlos en un cromosoma, y se aplican los
mtodos de la evolucin: seleccin y reproduccin sexual con intercambio de
informacin y alteraciones que generan diversidad. En las siguientes secciones se
vern cada uno de los aspectos de un algoritmo gentico.
Codificacin de las variables
Los algoritmos genticos requieren que el conjunto se codifique en un
cromosoma. Cada cromosoma tiene varios genes, que corresponden a sendos
parmetros del problema. Para poder trabajar con estos genes en el ordenador, es
necesario codificarlos en una cadena, es decir, una ristra de smbolos (nmeros o
letras) que generalmente va a estar compuesta de 0s y 1s.

Por ejemplo, en esta cadena de bits, el valor del parmetro p1 ocupar las posiciones
0 a 2, el p2 las 3 a 5, etctera, como aparece en la tabla 2. El nmero de bits usado
para cada parmetro depender de la precisin que se quiera en el mismo o del
nmero de opciones posibles (alelos) que tenga ese parmetro. Por ejemplo, si se
codifica una combinacin del Mastermind, cada gen tendr tantas opciones como
colores halla, el nmero de bits elegido ser el log2(nmero de colores).
Hay otras codificaciones posibles, usando alfabetos de diferente cardinalidad; sin
embargo, uno de los resultados fundamentales en la teora de algoritmos genticos,
el teorema de los esquemas, afirma que la codificacin ptima, es decir, aquella sobre
la que los algoritmos genticos funcionan mejor, es aquella que tiene un alfabeto de
cardinalidad 2.
Aqu se est codificando cada parmetro como un nmero entero de n bits. En
realidad, se puede utilizar cualquier otra representacin interna: bcd, cdigo Gray y
codificacin en forma de nmeros reales, por ejemplo.
La mayora de las veces, una codificacin correcta es la clave de una buena
resolucin del problema. Generalmente, la regla heurstica que se utiliza es la
llamada regla de los bloques de construccin, es decir, parmetros relacionados entre
s deben de estar cercanos en el cromosoma. Por ejemplo, si queremos codificar los
pesos de una red neuronal, una buena eleccin ser poner juntos todos los pesos que
salgan de la misma neurona de la capa oculta (tambin llamada codificacin fregona),
como se indica en la figura. En esta, todos los pesos sealados con trazo doble se
codifican mediante grupos de bits o bytes sucesivos en el cromosoma.
En todo caso, se puede ser bastante creativo con la codificacin del problema,
teniendo siempre en cuenta la regla anterior. Esto puede llevar a usar cromosomas
bidimensionales, o tridimensionales, o con relaciones entre genes que no sean
puramente lineales de vecindad. En algunos casos, cuando no se conoce de
antemano el nmero de variables del problema, caben dos opciones: codificar
tambin el nmero de variables, fijando un nmero mximo, o bien, lo cual es mucho
ms natural, crear un cromosoma que pueda variar de longitud. Para ello, claro est,
se necesitan operadores genticos que alteren la longitud.
Normalmente, la codificacin es esttica, pero en casos de optimizacin numrica, el
nmero de bits dedicados a codificar un parmetro puede variar, o incluso lo que
representen los bits dedicados a codificar cada parmetro. Algunos paquetes de
algoritmos genticos adaptan automticamente la codificacin segn van
convergiendo los bits menos significativos de una solucin.
4.4 Algoritmo gentico propiamente dicho
Para comenzar la competicin, se generan aleatoriamente una serie de cromosomas.
El algoritmo gentico procede de la forma siguiente:
Algoritmo gentico
1.Evaluar la puntuacin (fitness) de cada uno de los genes.

2.Permitir a cada uno de los individuos reproducirse, de acuerdo con su


puntuacin.
3.Emparejar los individuos de la nueva poblacin, haciendo que intercambien
material gentico, y que alguno de los bits de un gen se vea alterado debido a
una mutacin espontnea.
Cada uno de los pasos consiste en una actuacin sobre las cadenas de bits, es decir,
la aplicacin de un operador a una cadena binaria. Se les denominan, por razones
obvias, operadores genticos, y hay tres principales:seleccin, crossover o
recombinacin y mutacin; aparte de otros operadores genticos no tan comunes,
todos ellos se vern a continuacin.
Un algoritmo gentico tiene tambin una serie de parmetros que se tienen que fijar
para cada ejecucin, como los siguientes:
Tamao de la poblacin: debe de ser suficiente para garantizar la diversidad de

las soluciones, y, adems, tiene que crecer ms o menos con el nmero de bits
del cromosoma, aunque nadie ha aclarado cmo tiene que hacerlo. Por
supuesto, depende tambin del ordenador en el que se est ejecutando.
Condicin de terminacin: lo ms habitual es que la condicin de terminacin
sea la convergencia del algoritmo gentico o un nmero prefijado de
generaciones.
4.5 Evaluacin y seleccin
Durante la evaluacin, se decodifica el gen, convirtindose en una serie de
parmetros de un problema, se halla la solucin del problema a partir de esos
parmetros, y se le da una puntuacin a esa solucin en funcin de lo cerca que est
de la mejor solucin. A esta puntuacin se le llama fitness.
Por ejemplo, supongamos que queremos hallar el mximo de la funcin
,
una parbola invertida con el mximo en x=1. En este caso, el nico parmetro del
problema es la variable x. La optimizacin consiste en hallar un x tal que F(x) sea
mximo. Crearemos, pues, una poblacin de cromosomas, cada uno de los cuales
contiene una codificacin binaria del parmetro x. Lo haremos de la forma siguiente:
cada byte, cuyo valor est comprendido entre 0 y 255, se transformar para ajustarse
al intervalo [-1,1], donde queremos hallar el mximo de la funcin.
Valor binario

Decodificacin

10010100
21
10010001
19
101001
-86
1000101
-58
El fitness determina siempre los cromosomas que se
van a reproducir, y aquellos que se van a eliminar,

Evaluacin f(x)
0,9559
0,9639
0,2604
0,6636

pero hay varias formas de considerarlo para seleccionar la poblacin de la siguiente


generacin:
Usar el orden, o rango, y hacer depender la probabilidad de permanencia o
evaluacin de la posicin en el orden.
Aplicar una operacin al fitness para escalarlo; como por ejemplo el escalado
sigma. En este esquema el fitness se escala
En algunos casos, el fitness no es una sola cantidad, sino diversos nmeros,
que tienen diferente consideracin. Basta con que tal fitness forme un orden
parcial, es decir, que se puedan comparar dos individuos y decir cul de ellos
es mejor. Esto suele suceder cuando se necesitan optimizar varios objetivos.
Una vez evaluado el fitness, se tiene que crear la nueva poblacin teniendo en cuenta
que los buenos rasgos de los mejores se transmitan a esta. Para ello, hay que
seleccionar a una serie de individuos encargados de tan ardua tarea. Y esta
seleccin, y la consiguiente reproduccin, se puede hacer de dos formas principales:
Basado en el rango: en este esquema se mantiene un porcentaje de la

poblacin, generalmente la mayora, para la siguiente generacin. Se coloca


toda la poblacin por orden de fitness, y los M menos dignos son eliminados y
sustituidos por la descendencia de alguno de los M mejores con algn otro
individuo de la poblacin. A este esquema se le pueden aplicar otros criterios;
por ejemplo, se crea la descendencia de uno de los paladines/amazonas, y esta
sustituye al ms parecido entre los perdedores. Esto se denomina crowding, y
fue introducido por DeJong. En nuestro caso, se eliminara el cromosoma
nmero 3, y se sustituira por un descendiente del cromosoma nmero 2 y otro
aleatorio, escogido entre el 1 y el 4. En realidad, para este esquema se escoge
un crowding factor, CF. Cuando nace una nueva criatura, se seleccionan CF
individuos de la poblacin, y se elimina al ms parecido a la nueva criatura. Una
variante de este es el muestreado estocstico universal, que trata de evitar que
los individuos con ms fitness copen la poblacin; en vez de dar la vuelta a una
ruleta con una ranura, da la vuelta a la ruleta con N ranuras, tantas como la
poblacin; de esta forma, la distribucin estadstica de descendientes en la
nueva poblacin es ms parecida a la real.
Rueda de ruleta: se crea un pool gentico formado por cromosomas de la
generacin actual, en una cantidad proporcional a su fitness. Si la proporcin
hace que un individuo domine la poblacin, se le aplica alguna operacin de
escalado. Dentro de este pool, se cogen parejas aleatorias de cromosomas y se
emparejan, sin importar incluso que sean del mismo progenitor (para eso estn
otros operadores, como la mutacin). Hay otras variantes: por ejemplo, en la
nueva generacin se puede incluir el mejor representante de la generacin
actual. En este caso, se denomina mtodo elitista.

Seleccin de torneo: se escogen aleatoriamente un nmero T de individuos de

la poblacin, y el que tiene puntuacin mayor se reproduce, sustituyendo su


descendencia al que tiene menor puntuacin.
4.6 Crossover
Consiste en el intercambio de material gentico entre dos cromosomas (a veces ms,
como el operador orga propuesto por Eiben et al.). El crossover es el principal
operador gentico, hasta el punto que se puede decir que no es un algoritmo gentico
si no tiene crossover, y, sin embargo, puede serlo perfectamente sin mutacin, segn
descubri Holland. El teorema de los esquemas confa en l para hallar la mejor
solucin a un problema, combinando soluciones parciales.
Para aplicar el crossover, entrecruzamiento o recombinacin, se escogen
aleatoriamente dos miembros de la poblacin. No pasa nada si se emparejan dos
descendiente de los mismos padres; ello garantiza la perpetuacin de un individuo
con buena puntuacin (y, adems, algo parecido ocurre en la realidad; es una prctica
utilizada, por ejemplo, en la cra de ganado, llamada inbreeding, y destinada a
potenciar ciertas caractersticas frente a otras). Sin embargo, si esto sucede
demasiado a menudo, puede crear problemas: toda la poblacin puede aparecer
dominada por los descendientes de algn gen, que, adems, puede tener caracteres
no deseados. Esto se suele denominar en otros mtodos de optimizacin atranque en
un mnimo local, y es uno de los principales problemas con los que se enfrentan los
que aplican algoritmos genticos.
En cuanto al teorema de los esquemas, se basa en la nocin de bloques de
construccin. Una buena solucin a un problema est constituida por unos buenos
bloques, igual que una buena mquina est hecha por buenas piezas. El crossover es
el encargado de mezclar bloques buenos que se encuentren en los diversos
progenitores, y que sern los que den a los mismos una buena puntuacin. La presin
selectiva se encarga de que slo los buenos bloques se perpeten, y poco a poco
vayan formando una buena solucin. El teorema de los esquemas viene a decir que la
cantidad de buenos bloques se va incrementando con el tiempo de ejecucin de un
algoritmo gentico, y es el resultado terico ms importante en algoritmos genticos.
El intercambio gentico se puede llevar a cabo de muchas formas, pero hay dos
grupos principales
Crossover n-puntos: los dos cromosomas se cortan por n puntos, y el material

gentico situado entre ellos se intercambia. Lo ms habitual es un crossover de


un punto o de dos puntos.

Crossover uniforme: se genera un patrn aleatorio de 1s y 0s, y se

intercambian los bits de los dos cromosomas que coincidan donde hay un 1 en
el patrn. O bien se genera un nmero aleatorio para cada bit, y si supera una
determinada probabilidad se intercambia ese bit entre los dos cromosomas.

Crossover especializados: en algunos problemas, aplicar aleatoriamente el

crossover da lugar a cromosomas que codifican soluciones invlidas; en este


caso hay que aplicar el crossover de forma que genere siempre soluciones
vlidas. Un ejemplo de estos son los operadores de crossover usados en el
problema del viajante.
4.7 Mutacin
En la Evolucin, una mutacin es un suceso bastante poco comn (sucede
aproximadamente una de cada mil replicaciones), como ya se ha visto anteriormente.
En la mayora de los casos las mutaciones son letales, pero en promedio, contribuyen
a la diversidad gentica de la especie. En un algoritmo gentico tendrn el mismo
papel, y la misma frecuencia (es decir, muy baja).
Una vez establecida la frecuencia de mutacin, por ejemplo, uno por mil, se examina
cada bit de cada cadena cuando se vaya a crear la nueva criatura a partir de sus
padres (normalmente se hace de forma simultnea al crossover). Si un nmero
generado aleatoriamente est por debajo de esa probabilidad, se cambiar el bit (es
decir, de 0 a 1 o de 1 a 0). Si no, se dejar como est. Dependiendo del nmero de

individuos que haya y del nmero de bits por individuo, puede resultar que las
mutaciones sean extremadamente raras en una sola generacin.
No hace falta decir que no conviene abusar de la mutacin. Es cierto que es un
mecanismo generador de diversidad, y, por tanto, la solucin cuando un algoritmo
gentico est estancado, pero tambin es cierto que reduce el algoritmo gentico a
una bsqueda aleatoria. Siempre es ms conveniente usar otros mecanismos de
generacin de diversidad, como aumentar el tamao de la poblacin, o garantizar la
aleatoriedad de la poblacin inicial.
Este operador, junto con la anterior y el mtodo de seleccin de ruleta, constituyen
un algoritmo gentico simple, sga, introducido por Goldberg en su libro.
4.8 Otros operadores
No se usan en todos los problemas, sino slo en algunos, y en principio su variedad
es infinita. Generalmente son operadores que exploran el espacio de soluciones de
una forma ms ordenada, y que actan ms en las ltimas fases de la bsqueda, en
la cual se pasa de soluciones "casi buenas" a "buenas" soluciones.
4.8.1 Cromosomas de longitud variable
Hasta ahora se han descrito cromosomas de longitud fija, donde se conoce de
antemano el nmero de parmetros de un problema. Pero hay problemas en los que
esto no sucede. Por ejemplo, en un problema de clasificacin, donde dado un vector
de entrada, queremos agruparlo en una serie de clases, podemos no saber siguiera
cuantas clases hay. O en diseo de redes neuronales, puede que no se sepa (de
hecho, nunca se sabe) cuntas neuronas se van a necesitar. Por ejemplo, en un
perceptrn hay reglas que dicen cuantas neuronas se deben de utilizar en la capa
oculta; pero en un problema determinado puede que no haya ninguna regla heurstica
aplicable; tendremos que utilizar los algoritmos genticos para hallar el nmero
ptimo de neuronas. En este caso, si utilizamos una codificacin fregona,
necesitaremos un locus para cada neurona de la capa oculta, y el nmero de locus
variar dependiendo del nmero de neuronas de la capa oculta.
En estos casos, necesitamos dos operadores ms: aadir y eliminar. Estos
operadores se utilizan para aadir un gen, o eliminar un gen del cromosoma. La forma
ms habitual de aadir un locus es duplicar uno ya existente, el cual sufre mutacin y
se aade al lado del anterior. En este caso, los operadores del algoritmo gentico
simple (seleccin, mutacin, crossover) funcionarn de la forma habitual, salvo, claro
est, que slo se har crossover en la zona del cromosoma de menor longitud.
Estos operadores permiten, adems, crear un algoritmo gentico de dos niveles: a
nivel de cromosoma y a nivel de gen. Supongamos que, en un problema de
clasificacin, hay un gen por clase. Se puede asignar una puntuacin a cada gen en
funcin del nmero de muestras que haya clasificado correctamente. Al aplicar estos
operadores, se duplicarn los alelos con mayor puntuacin, y se eliminarn aquellos
que hayan obtenido menor puntuacin, o cuya puntuacin sea nula.

Por ejemplo, en un problema de clasificacin en el que hay que clasificar los puntos
del cuadrado [0,10]x[0,10] en dos clases, 1 y 2, que no son linealmente separables.
Inicialmente se desconoce cuantos vectores son necesarios para clasificar estas
clases. El algoritmo gentico es capaz de hallar un nmero ptimo de vectores, a
cada uno de los cuales se asigna una etiqueta de clase, tales que el error se hace
mnimo, en este caso 4 vectores para la primera clase y 5 para la 2. Cada
cromosoma estar compuesto por un diccionario o conjunto de vectores, cada uno de
los cuales tiene asignada una etiqueta de clase.
4.8.2 Operadores de nicho (ecolgico)
Otros operadores importantes son los operadores de nicho. Estos operadores estn
encaminados a mantener la diversidad gentica de la poblacin, de forma que
cromosomas similares sustituyan slo a cromosomas similares, y son especialmente
tiles en problemas con muchas soluciones; un algoritmo gentico con estos
operadores es capaz de hallar todos los mximos, dedicndose cada especie a un
mximo. Ms que operadores genticos, son formas de enfocar la seleccin y la
evaluacin de la poblacin.
Uno de las formas de llevar esto a cabo ya ha sido nombrada, la introduccin
del crowding (apiamiento). Otra forma es introducir una funcin de comparticin
o sharing, que indica cun similar es un cromosoma al resto de la poblacin. La
puntuacin de cada individuo se dividir por esta funcin de comparticin, de forma
que se facilita la diversidad gentica y la aparicin de individuos diferentes.
Tambin se pueden restringir los emparejamientos, por ejemplo, a aquellos
cromosomas que sean similares. Para evitar las malas consecuencias del inbreeding
que suele aparecer en poblaciones pequeas, estos periodos se intercalan con otros
periodos en los cuales el emparejamiento es libre.
4.8.3 Operadores especializados
En una serie de problemas hay que restringir las nuevas soluciones generadas por los
operadores genticos, pues no todas las soluciones generadas van a ser vlidas,
sobre todo en los problemas con restricciones. Por ello, se aplican operadores que
mantengan la estructura del problema. Otros operadores son simplemente
generadores de diversidad, pero la generan de una forma determinada:
Zap: en vez de cambiar un solo bit de un cromosoma, cambia un gen completo

de un cromosoma.
Creep: este operador aumenta o disminuye en 1 el valor de un gen; sirve para
cambiar suavemente y de forma controlada los valores de los genes.
Transposicin: similar al crossover y a la recombinacin gentica, pero dentro
de un solo cromosoma; dos genes intercambian sus valores, sin afectar al resto
del cromosoma. Similar a este es el operador deeliminacin-reinsercin, en el
que un gen cambia de posicin con respecto a los dems.
4.8.4 Aplicando operadores genticos

En toda ejecucin de un algoritmo gentico hay que decidir con qu frecuencia se va


a aplicar cada uno de los algoritmos genticos; en algunos casos, como en la
mutacin o el crossover uniforme, se debe de aadir algn parmetro adicional, que
indique con qu frecuencia se va a aplicar dentro de cada gen del cromosoma. La
frecuencia de aplicacin de cada operador estar en funcin del problema; teniendo
en cuenta los efectos de cada operador, tendr que aplicarse con cierta frecuencia o
no. Generalmente, la mutacin y otros operadores que generen diversidad se suele
aplicar con poca frecuencia; la recombinacin se suele aplicar con frecuencia alta.
En general, la frecuencia de los operadores no vara durante la ejecucin del
algoritmo, pero hay que tener en cuenta que cada operador es ms efectivo en un
momento de la ejecucin. Por ejemplo, al principio, en la fase denominada
de exploracin, los ms eficaces son la mutacin y la recombinacin; posteriormente,
cuando la poblacin ha convergido en parte, la recombinacin no es til, pues se est
trabajando con individuos bastante similares, y es poca la informacin que se
intercambia. Sin embargo, si se produce un estancamiento, la mutacin tampoco es
til, pues est reduciendo el algoritmo gentico a una bsqueda aleatoria; y hay que
aplicar otros operadores. En todo caso, se pueden usar operadores especializados.
Por ejemplo, en el algoritmo gentico para jugar al MasterMind (http://kalel.ugr.es/mastermind), se usan varios operadores genticos: transposicin, mutacin
y entrecruzamiento. Sin embargo, la mutacin y el crossover dejan de ser efectivos en
el momento que la combinacin que se ha jugado tiene los colores correctos, y en
cualquier caso la tasa de mutacin tendr que ser mayor cuantos menos colores haya
averiguados; por eso las tasas varan durante la ejecucin, convirtindose
eventualmente en 0.
4.9 El zen y los algoritmos genticos
Este es el ttulo de un artculo que public Goldberg en la conferencia sobre
algoritmos genticos celebrada en el ao 89 (icga 89), en donde da una serie de
consejos para que se apliquen los algoritmos genticos debidamente, y avisa a
aquellos que se quieren apartar de la ortodoxia. Estos consejos son los siguientes
Deja que la Naturaleza sea tu gua: dado que la mayora de los problemas a los que
se van a aplicar los algoritmos genticos son de naturaleza no lineal, es mejor actuar
como lo hace la naturaleza, aunque intuitivamente pueda parecer la forma menos
acertada. Si queremos desarrollar sistemas no lineales que busquen y aprendan,
mejor que comencemos (como mnimo) imitando a sistemas que funcionan
(Goldberg). Y estos sistemas se hallan en la naturaleza.
Cuidado con el asalto frontal: a veces se plantea el problema de prdida de diversidad
gentica en una poblacin de cromosomas. Hay dos formas de resolver este
problema: aumentar el ritmo de mutacin, lo cual equivale a convertir un algoritmo
gentico en un algoritmo de bsqueda aleatoria, o bien introducir mecanismos como
el sharing, por el cual el fitness de un individuo se divide por el nmero de individuos
similares a l. Este segundo mtodo, ms parecido al funcionamiento de la
naturaleza, en la cual cada individuo, por bueno que sea, tiene que compartir recursos

con aquellos que hayan resuelto el problema de la misma forma, funciona mucho
mejor. Otro caso que surge a menudo en los grupos de discusin de Usenet es el
tratar de optimizar AGs mediante AGs; es mucho mejor tratar de entender el problema
que acercarse a l de esta manera.
Respeta la criba de esquemas: para ello, lo ideal es utilizar alfabetos con baja
cardinalidad (es decir, con pocas letras) como el binario.
No te fes de la autoridad central: la Naturaleza acta de forma distribuida, por tanto,
se debe de minimizar la necesidad de operadores que "vean" a da la poblacin. Ello
permite, adems, una fcil paralelizacin del algoritmo gentico. Por ejemplo, en vez
de comparar el fitness de un individuo con todos los dems, se puede comparar slo
con los vecinos, es decir, aquellos que estn, de alguna forma, situados cerca de l.
5 Prctica 1: Algoritmos genticos con el programa gwin2
Gwin2, que aparece en casi todos sitios como WinGA, es un programa que permite
ejecutar algoritmos genticos simples, cambiar sus parmetros, y que incluso admite
ampliaciones mediante la programacin de nuevas funciones en Pascal. Fue
realizado por I.R. Munro, de la Universidad de Hertfordshire. Est disponible en la
pgina web Zooland, y en el sitio de ftp del autor.
WinGA es un programa que funciona en Windows 3.1 y Windows 95; segn el autor
necesita como mnimo 4 megas para funcionar. La prctica consistir en ver los
efectos de los diferentes parmetros en la ejecucin de un algoritmo gentico simple;
en este caso, los nicos operadores admitidos son mutacin y crossover, y dos tipos
de seleccin diferentes. Existen unas 10 funciones ya programadas, pero, en el
manual indica como se pueden programar ms.
1.En el primer paso, se carga un

fichero .dll usando


la
opcin FunctionsLoad
DLL. Cada .dll que
contiene
el
cdigo que evala las funciones;
hay
dos: example1.dll,
y master1.dll, se puee escoger el
segundo, que contiene ms
funciones. De ellas, se puede
escoger Sphere
Model,
por
ejemplo, que maximiza el cuadrado
de una suma de parmetros; el
nmero de parmetros es el que pide en el cuadro de dilogo.
2.Aadir views, diferentes ventanas que contienen informacin sobre el
algoritmo gentico que se est ejecutando. Para ello, se elige la
opcin Views del men y sucesivamente se van abriendo las cuatro ventanas.
3.Seleccionar los parmetros genticos, y comprobar posteriormente el estado
de lo seleccionado. Esto se hace desde el men Setup. Se puede elegir, por
ejemplo, SelectionRemainder
Stochastic,
CombinationsOne
point

crossover, con la misma tasa, que indica la cantidad de la poblacin a la que


afecta esa operacin, y Normal Mutation con la misma tasa.
Eligiendo SetupStatus aparec
e un cuadro que indica los
parmetros elegidos.
1.Establecer el fichero

de registro, en el cual
se guardarn los datos
de la ejecucin actual,
usando
la
opcin ReportsLog
file. En este fichero se
puede guardar, por
ejemplo,
el
mejor
cromosoma, en formato
binario, y darle un
nombre
cualquiera,
como primero.log.
2.En este momento ya
se puede ejecutar el
algoritmo
gentico,
eligiendo la opcinRun,
y se pueden ver el
efecto de los diferentes parmetros sobre la ejecucin del algoritmo. Probar, por
ejemplo, lo siguiente:
3.Cambiar la mutacin, y ver el efecto sobre la diversidad, es decir, el nmero
de cromosomas diferentes que aparece en el grfico de Current Distribution.
4.Reducir el crossover, y comprobar su efecto sobre la velocidad de
convergencia. Probar tambin a cambiar el tipo de crossover, que en este tipo
de problema no tendr mucho efecto sobre el resultado.
5.Cambiar el tamao de la poblacin, hasta encontrar el mnimo necesario para
que el algoritmo converja en un nmero de generaciones razonable; cambiar
tambin el nmero de generaciones.
6.Cambiar el tipo de seleccin; en la seleccin de Tournament o torneo siempre
se seleccionan los mejores, sin embargo, en la estocstica pueden desaparecer
de la poblacin.
Ejercicio: Encontrar la combinacin de parmetros que halla el mnimo de la funcin
anterior, y de alguna otra funcin del ejemplo, en un mnimo de tiempo. Tener en
cuenta que, hasta cierto punto, se pueden intercambiar nmero de generaciones por
el tamao de la poblacin.
6 Prctica 2: Algoritmo gentico interactivo en Java
En esta pgina Web, situada en el sitio denominado Evolvica (universidad de
Erlangen), al cual se puede acceder desde la pgina de aplicaciones evolutivas en

Java, http://www.systemtechnik.tu-ilmenau.de/~pohlheim/EA_Java/ea_java.html,
se
ejecuta un algoritmo gentico interactivo. Para ello, es necesario acceder a la
direccin Web -- mediante un browser que admita Java, como el Netscape Navigator
2 o el Internet Explorer 3.
En esta pgina, se hacen evolucionar formas bajo control del usuario; el usuario elige
primero una forma hacia la cual tiende la evolucin, y luego, en cada generacin elige
las formas que mutarn para dar finalmente, con un poco de suerte, la que se ha
elegido inicialmente.
Se pueden modificar los parmetros, como por ejemplo, la tasa de mutacin y el radio
de mutacin, y ver como varan las formas generadas.
Ejercicio: Por supuesto, conseguir generar la forma inicial en un mnimo de
generaciones.
7 Prctica 3: Algoritmos genticos simples en Java

En este applet, programado por Ramsey et al. de la Universidad de Arizona, que se


halla en la direccin Web http://ai.bpa.arizona.edu/~mramsey/ga.html, se muestra un
algoritmo gentico simple que trata de hallar el mximo global de una funcin con
muchos mximos y una sola variable. El valor de esa variable para los diferentes
elementos de la poblacin aparece como lneas verticales de color. Se puede variar,
por ejemplo, la tasa de mutacin; en problemas tan pequeos el crossover no tiene
tanta importancia.
8 Prctica 4: Programacin de un algoritmo gentico simple
En esta prctica, se trata de programar un algoritmo gentico simple, que incluya
seleccin de tipo rueda de ruleta, mutacin y entrecruzamiento de dos puntos. Utilizar
cualquier lenguaje de programacin (PERL, Java, Pascal, C, C++, Tcl/Tk), y usar

como funcin de evaluacin alguna funcin simple, como la suma total de los
componentes del cromosoma. Comparar la representacin binaria con la
representacin de nmeros reales, y comprobar la eficiencia de cada uno de ellos.

Existen varios paquetes y bibliotecas de algoritmos genticos en el mercado, a


continuacin se presentan algunos:
GAGS
Generador de aplicaciones basadas en algoritmos genticos, escrito en C++.
Desarrollado por el grupo de J.J. Melero.
Direccin primaria:kal-el.ugr.es/gags.html
Direccin para descargar va FTP:kal-el.ugr.es/GAGS/.
GALIB
Biblioteca de algoritmos genticos de Matthew. Conjunto de clases en C++ de
algoritmos genticos.
Direccin primaria: lancet.mit.edu/ga/
Direccin para descargar va FTP:lancet.mit.edu/pub/ga/
GPDATA
Para desarrollar algoritmos genticos en C++.
Direccin primaria:cs.ucl.ac.uk/genetic/papers/
Direccin para descargar va FTP: ftp.cs.bham.ac.uk/pub/authors/W.B.Langdon/gpcode/
GPJPP
Bibliotecas de clases para desarrollar algoritmos genticos en Java
Direccin primaria: www.turbopower.com/~ kimk/gpjpp.asp.
LIL-GP
Herramientas para programacin gentica en C.
Direccin primaria:isl.msu.edu/GA/software/lil-gp/index.html
Direccin para descargar va FTP:isl.cps.msu.edu/pub/GA/lilgp/
GPsys
Sistema de programacin gentica en Java.
Direccin primaria:www.cs.ucl.ac.uk/staff/A.Qureshi/gpsys.html.

CONCLUSIONES
Como hemos podido ver a lo largo del documento los algoritmos genticos son
actualmente una fuerte fuente de resolucin de problemas complejos al realizar su
ejecucin en paralelo pudiendo as obtener diferentes soluciones al problema.
Sin embargo, como se ha podido observar, no hay ninguna estrategia que sea
siempre invencible, sino que hay un conjunto de estrategias que suelen dar buenos
resultados. As pues, habr que ajustar los parmetros de accin en funcin de cada
problema a modelar para obtener una solucin que se adapte mejor a unas
determinadas condiciones. Sin embargo, en una situacin real puede suceder que no
se conozcan los parmetros iniciales o que no se sepa la duracin del algoritmo.
Por lo tanto habr que elegir con sumo cuidado los parmetros iniciales. Un
crossover elevado es recomendable para la mayora de los problemas aunque hay
situaciones en las que un crossover menor dar mejores resultados. La mutacin
deber ser baja, entorno al 1%. Para una ptima resolucin, el resto de parmetros
habr que determinarlos en funcin del problema. La poblacin a elegir debe atender
a un valor ptimo (no por tener una poblacin mayor, se va a tener una solucin
mejor), la codificacin depender del problema a resolver como se ha visto con
anterioridad y por ltimo el mtodo de seleccin ms utilizado es el de seleccin por
rueda de ruleta, aunque como se ha comentado, depender de la cuestin que nos
trate.
Por ltimo, se pretende que estos algoritmos se parezcan lo ms posible a lo
que en realidad sucede en la naturaleza. Por ejemplo, cuando una poblacin queda
aislada en la naturaleza, como sucede, por ejemplo, con los linces de Doana, se
pierde diversidad al haber un grupo reducido que se reproduce entre si
constantemente perdindose esa tan necesaria diversidad para sobrevivir. De hecho
se ha comprobado que no evolucionan y que su adaptacin a las condiciones no
mejora en funcin del cambio de stas.
Por lo tanto hay que tener cuidado con la perdida de diversidad en nuestra
poblacin, que se puede conseguir entre otras formas mediante la mutacin.

BIBLIOGRAFA
Nota. No se trata de una relacin exhaustiva y completa de toda la bibliografa
existente
sobre algoritmos genticos. El lector puede consultar en la bibliografa aqu citada,
referencias adicionales sobre esta tcnica.
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. Paraninfo.
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.
HIPERENLACES
GRUPO DE INGENIERA DE ORGANIZACIN. UNIVERSIDAD DE SEVILLA.
http://io.us.es/enlaces.htm [ltima consulta: Abril de 2005].
GALIB: MATTHEW'S GENETIC ALGORITHMS LIBRARY.
http://lancet.mit.edu/ga/ [ltima consulta: Abril de 2005].
GENEWOOD.
http://www.genewood.host.sk [ltima consulta: Abril de 2005].
INFORMTICA EVOLUTIVA: ALGORITMOS GENTICOS.
http://geneura.ugr.es/~jmerelo/ie/ags.htm [ltima consulta: Abril de 2005].
REDCIENTFICA - INTRODUCCIN A LOS ALGORITMOS GENTICOS.
http://www.redcientifica.com/imprimir/doc199904260011.html [ltima consulta:
Abril de 2005].

Das könnte Ihnen auch gefallen