Professional Documents
Culture Documents
Abstract
Esta gua contiene una introduccion a los elementos basicos de los algoritmos geneticos y su adaptacion
a un problema simple de minimizacion de funciones de dos variables usando codigo en matlab. Se
describe el codigo con un instructivo basico de su sintaxis y funcionamiento. Se propone una serie
de practicas numericas ejecutando variaciones del algoritmo. En la ultima seccion se describe una
aplicacion de los algoritmos geneticos al ajuste de parametros en el modelado de la voz humana, junto
con algunas nociones de paralelizacion.
1 Algoritmos geneticos
Los algoritmos geneticos corresponden a la clase de metodos estocasticos de busqueda. Mientras la
mayora de estos metodos operan sobre una unica solucion, estos algoritmos operan en una poblacion de
soluciones. La idea basica, inspirada en los procesos evolutivos en biologa, es que el contenido genetico
de una poblacion contiene potencialmente la solucion, o una solucion mejor, a un dado problema de
adaptacion. Esta solucion puede estar inactiva porque la combinacion genetica adecuada esta disem-
inada entre varios sujetos. Solo la asociacion de genomas distintos puede llevar a la activacion de la
solucion.
Crudamente, el mecanismo evolutivo procede as: sobre una poblacion, algunos individuos son selec-
cionados para la reproduccion, con mas oportunidades para los mejor adaptados al ambiente. Durante
la reproduccion, los nuevos individuos de la poblacion resultan de modificaciones e intercambio genetico
de los padres. Una vez que se renueva la poblacion, el proceso recomienza. Es decir que hay dos espacios
donde opera la evolucion. Por una parte, a nivel de los individuos fsicos (fenotipo), que deben adaptarse
para ser seleccionados. Y luego, a nivel de la informacion genetica (genotipo), a traves de los operadores
que intercambian y varan la informacion genetica.
La informacion genetica esta codificada en los cromosomas, que son secuencias de genes, cada uno de los
cuales codifica una caracterstica particular del individuo. Estas secuencias estan escritas en terminos
de cuatro bases nitrogenadas: adenocina, timina, citocina y guanina. En este alfabeto de base cuatro,
[A, T, C, G], esta escrita toda la informacion genetica de un individuo.
Hay esencialmente dos operadores geneticos. El operador de mutacion introduce cierta aleatoriedad en
la busqueda simplemente cambiando unos genes por otros, contribuyendo a una exploracion azarosa
en el espacio genetico. El operador de crossover, en cambio, es una recombinacion de la informacion
durante la reproduccion de los individuos seleccionados.
El proceso de evolucion, puesto en estos terminos, es adaptable a una enorme familia de problemas,
incluso ajenos al ambito biologico. En la proxima seccion se describe la adaptacion de este esquema de
busqueda de soluciones a un problema matematico sencillo.
1
2 Adaptacion a un problema de optimizacion de funciones
En esta seccion ilustraremos la adaptacion de un algoritmo genetico a un problema sencillo de mini-
mizacion de funciones bidimensionales f (x, y). La interpretacion fsica del problema es, en este caso,
casi trivial: haciendo corresponder la funcion f a la energa E asociada al estado (x, y), la evolucion
del sistema tendera a minimizarla. A lo largo de esta gua nos referiremos mas o menos indistintamente,
a la funcion o al paisaje energetico.
12 9
8
10
7
8 6
5
6
4
4 3
2
2
1
0 0
2 2
1 2 1 2
1 1
0 0
0 0
1 1
1 1
2 2 2 2
En terminos crudos, la meta de la exploracion genetica es encontrar los individuos mejor adaptados a su
ambiente. Para eso, los individuos se reproducen buscando, con el intercambio de material genetico y las
mutaciones, que cada nueva generacion mejore la adaptacion. Para poder aplicar este esquema al prob-
lema de la minimizacion de funciones, debemos dar las definiciones de individuos, genes, cromosomas y
ambiente, y cuantificar la adaptacion.
Si pensamos a cada individuo de la poblacion como un par (x, y) [a, b] [c, d], se puede definir la
adaptacion como un escalar inversamente proporcional a la funcion f , de manera que la minimizacion
de f (x, y) correspondera a la mejor adaptacion al medio definido por la funcion f .
En este punto, solo queda definir la codificacion genetica del individuo (x, y) para aplicar los operadores
geneticos. Definimos un cromosoma como el arreglo consecutivo de dos genes, uno para cada numero
del par (x, y). Este arreglo se construye normalizando cada coordenada segun el rango donde puede
variar y guardando los primeros n decimales. Por ejemplo, para el par (0.5, 1.34) {[0, 1] [0, 2.35]},
la normalizacion arroja el par (0.5/1, 1.34/2.35) = (0.5, 0.57021276...). La identificacion del individuo
con su cromosoma resulta, usando cuatro cifras significativas (0.5, 1.34) [50005702].
En este espacio genetico se pueden aplicar los operadores de cruzamiento y mutacion, que en la
evolucion suceden en el espacio de las bases nitrogenadas y, aqu, en la base decimal. Una mutacion
sera el reemplazo de cualquiera de los 8 numeros del cromosoma por otro, por ejemplo, [23126675]
[23026675]. El cruzamiento consiste en el intercambio, a partir de cualquier posicion, de la informacion
de los cromosomas de los individuos seleccionados. Por ejemplo, [12345678]+[87654321] [12354321].
Con estas definiciones, el algoritmo genetico esta adaptado al problema y su ejecucion consiste en elegir
una poblacion inicial de N individuos (xi , yi ), seleccionarlos segun su adaptacion usando la funcion
f (xi , yi ) y aplicarles los operadores geneticos para generar la nueva poblacion. En las siguientes secciones
se describe el codigo implementado para resolver este problema en matlab.
3 Instructivo
Se propone realizar un estudio numerico del codigo que implementa un algoritmo genetico en la mini-
mizacion de un paisaje energetico complejo. Para ello se sugieren los siguientes pasos:
2
Baje el archivo desde su ubicacion en internet: http://www.df.uba.ar/users/mison/genetico.tar.gz
Identifique las distintas partes del codigo y sus funciones (puede ayudarle ver la seccion siguiente)
3.1.2 Organizacion:
El codigo a utilizar se encuentra dividido en un codigo principal (genetico.m) que hace uso de subrutinas
o funciones definidas en archivos externos.
3.2 Preguntas
Para tener en cuenta: Un estudio cuantitativo del problema numerico requiere el analisis de un conjunto
de evoluciones y no de un evento particular como el que se obtiene directamente del codigo. Sin
embargo creemos que de todas formas es posible realizar un analisis interesante. Por esto se proponen
las siguientes preguntas:
3
En el codigo, el criterio de seleccion de los cromosomas tiene una probabilidad p f (x, y) 1 .
Interprete en terminos del algoritmo genetico y del problema particular.
Que tiene que garantizarse para que, as definida, la probabilidad no genere errores numericos?
Proponga otras funciones de adaptacion.
Como construira un algoritmo para seleccionar uno (o mas) individuos con probabilidad p te-
niendo en cuenta su adaptacion?
Considere disponible una funcion numerica rand(a,b) que le permite elegir numeros al azar en
el intervalo (a, b). Verifique si su idea coincide con la seccion comentada como ruleta en el codigo.
Para una cantidad suficiente de generaciones Ngen Que operador genetico subsiste? Que com-
portamiento observa? Proponga otros criterios para mejorar la busqueda.
En este trabajo, el codigo se ejecuta una cantidad Ngen de veces prefijada por el usuario. Es
posible adaptar el codigo para que cumpla con algun criterio de convergencia antes de detenerse?
Proponga alguno e incorporelo al codigo.
Suponga que se seleccionan (xp , yp ) y (xm , ym ) como el padre y la madre de un nuevo individuo
(xh , yh ).
Se puede predecir, por argumentos geometricos, el subespacio de los posibles (x h , yh ) debidos
a la accion del operador genetico de cruzamiento? Podra simplificarse el codigo con esta inter-
pretacion?
4
Cuando las cuerdas se estan separando, el flujo aumenta y la columna de aire en el tracto se acelera, lo
cual tiende a abrir mas aun las cuerdas. En el semiciclo de cierre, por otra parte, la columna de aire en
movimiento tiende a cerrar las cuerdas, y en el ciclo completo se entrega energa al tejido.
Las ecuaciones de movimiento para este modelo de cuerdas vocales pueden ser escritas como
Pi = R2 U + I 2 U 0 (2)
con R2 e I2 la resistencia y la constante de inercia del aire en el tracto, y U el flujo. El sistema dinamico
queda cerrado, entonces, relacionando las ecuaciones 1 y 2 mediante
PL (R2 U + I2 U 0 ) = kt v 2 (3)
4.4 Biometra
Una vez construido el modelo completo para generar series temporales sinteticas de voz, natural-
mente surge ponerlo a prueba como un metodo biometrico para reconocer la identidad de las per-
sonas, aprovechando que sus parametros estan relacionados con magnitudes anatomicas y fisiologicas
del sistema de produccion de la voz.
Sin embargo, dado que el espacio de parametros es multidimensional, la eleccion del metodo de ajuste es
delicada. La preferencia por un algoritmo genetico se ve justificada por dos razones: es de programacion
simple y es facilmente adaptable a la paralelizacion.
El problema de la voz es facilmente adaptable para ser resuelto por un algoritmo genetico. En primer
lugar, definimos un individuo como la cadena de numeros que corresponde a los parametros del modelo.
As, la cadena {M, K, B, R2 , I2 , a1 , ..., an , l1 , ..., ln } es un individuo. M ,K B, R2 e I2 son los parametros
de las cuerdas vocales (ecuaciones 1 y 2); ai y li la seccion y longitud del i-esimo tubo que aproxima
al tracto vocal. La expresion de este cromosoma (su fenotipo) es el espectro de potencias que genera.
El criterio de seleccion elegido es trivial: la probabilidad de seleccionar un cromosoma es inversamente
proporcional a la diferencia cuadratica entre los espectros de la senal experimental y la sintetizada por
el modelo. En la figura 2 se ve un ejemplo de ambos espectros una vez que el algoritmo encontro la
mejor solucion.
Los resultados obtenidos con el modelo de una masa para las cuerdas vocales y la aproximacion por
tubos del tracto vocal no son concluyentes. Por una parte, las geometras a las que converge el tracto
vocal corresponden a las de las vocales utilizadas citadas por la bibliografa [3]. Sin embargo, el modelo
5
de una masa parece demasiado simple para dar cuenta de la dinamica de las cuerdas vocales, lo que
resulta en una dispersion en los parametros del modelo que no permiten una distincion unvoca de la
identidad.
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 10 20 30 40 50 60 70
Figura 2: Espectro experimental de una vocal [o] (barras verticales) y de las mejores series sinteticas (lneas)
generadas por el modelo usando un algoritmo genetico de 500 generaciones y 150 cromosomas, tasa de mutacion
de 8% y crossover de 40%. La frecuencia esta en unidades de 102 Hz y la potencia esta normalizada.
Nodo principal
Nodos esclavos
loop generaciones
Nodo principal
1. enva cromosomas locales a nodos esclavos
2. recibe diferencias cuadraticas de esclavos
3. operadores geneticos: seleccion, cross-over, mutacion
Nodos esclavos
1. recibe cromosomas locales del nodo principal
2. calcula espectros sinteticos desde cromosomas locales
3. compara espectros sinteticos y experimental
4. calcula diferencias cuadraticas
5. enva diferencias cuadraticas al nodo principal
6
4.6 Performance del codigo en paralelo
En la figura 3 se grafica el tiempo de procesamiento contra la cantidad de procesadores utilizados (las
simulaciones se ejecutaron usando hasta 30 procesadores en el cluster del CeSEN).
700
600
500
300
200
100
0
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32
numero de procesadores
Figura 3: Tiempo de ejecucion vs. cantidad de procesadores para el algoritmo genetico usando 500 generaciones,
150 cromosomas, tasa de crossing del 40% y tasa de mutaciones de 8%. Los valores usados resultan del promedio
de 2 o 3 corridas. A partir de n = 10 procesadores, la dispersion en los valores es despreciable. A la derecha,
detalle y ajuste con T (n) = 8.77 + 686.54/n + 0.05n, n es el numero de nodos slaves.
A primer orden, se espera que el tiempo de procesamiento Tp en funcion del numero de procesadores n
se comporte aproximadamente como Tp (n) 1/n, mientras que el tiempo de comunicacion Tc (n) n.
Ajustando los valores de la figura 3 para T (n) de la forma
T (n) = Tp (n) + Tc (n) = Tpmaster + Tpslaves (n) + Tc (n) = + + n (4)
n
con n el numero de nodos slaves y = Tpslaves (1) el tiempo de procesamiento de 1 nodo slave. Se asume
ademas que el tiempo de procesamiento del master no cambia con la cantidad de slaves. Los valores
obtenidos implican una correccion lineal muy pequena frente a .
Para estudiar el factor lineal se usaron logfiles (informacion de los tiempos de procesamiento de
cada procesador) generados para distinta cantidad procesadores. Lo que se observa, promediando la
dispersion de los tiempos de procesamiento Tpsl de los nodos slaves, es que
Tpsl (10)
Tpsl (20) > (5)
2
es decir que al usar mas procesadores la dispersion de los tiempos de procesamiento aumenta. La
diferencia, acumulada a lo largo de la ejecucion del codigo, es del orden de 10 , que es la correccion
prevista por la ecuacion 4. Esto sugiere que la mayor parte del tiempo de comunicacion es el tiempo de
espera que proviene de la dispersion en los tiempos de procesamiento de las distintas computadoras
del cluster.
Referencias
[1] I. R. Titze, Principles of Voice Production (Prentice-Hall, Englewood Cliffs, NJ, 1993).
[2] D. E. Goldberg, Genetic Algorithms in Search, Optimization, and Machine Learning, Addison
Wesley, 1989.
[3] Rabiner, L., Juang, B. (1993) in Fundamentals of speech recognition (Prentice Hall) pp. 24-256.
[4] Press, H. W. et al., Numerical Recipies in C: The art of scientific computing, Cambridge University,
1999.
[5] N. MacDonald et al., Writing Message-Passing Parallel Programs with MPI, Course Notes, Edin-
burgh Parallel Computing Centre, University of Edinburgh.
[6] Rothemberg, Vocal Fold Physiology, University of Tokyo Press, Tokyo, 1981, pp. 304-323.