Beruflich Dokumente
Kultur Dokumente
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.
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
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.
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
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
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
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.
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].