Este documento introduce los algoritmos genéticos y su aplicación para minimizar funciones de dos variables usando código en MATLAB. Explica cómo se adaptan los algoritmos genéticos al problema mediante la codificación de soluciones individuales como cromosomas sobre los que actúan los operadores genéticos de cruzamiento y mutación. Finalmente, propone ejercicios numéricos variando los parámetros del algoritmo implementado.
1. Algoritmos gen´ticos: aplicaci´n en MATLAB
e o
Mat´ Ison, Jacobo Sitt, Marcos Trevisan
ıas
Gu´ de la materia Sistemas Complejos
ıa
disponible en www.df.uba.ar/users/mison/genetico.tar.gz
November 25, 2005
Abstract
Esta gu´ contiene una introducci´n a los elementos b´sicos de los algoritmos gen´ticos y su adaptaci´n
ıa o a e o
a un problema simple de minimizaci´n de funciones de dos variables usando c´digo en matlab. Se
o o
describe el c´digo con un instructivo b´sico de su sintaxis y funcionamiento. Se propone una serie
o a
de pr´cticas num´ricas ejecutando variaciones del algoritmo. En la ultima secci´n se describe una
a e ´ o
aplicaci´n de los algoritmos gen´ticos al ajuste de par´metros en el modelado de la voz humana, junto
o e a
con algunas nociones de paralelizaci´n.
o
1 Algoritmos gen´ticos
e
Los algoritmos gen´ticos corresponden a la clase de m´todos estoc´sticos de b´squeda. Mientras la
e e a u
mayor´ de estos m´todos operan sobre una unica soluci´n, estos algoritmos operan en una poblaci´n de
ıa e ´ o o
soluciones. La idea b´sica, inspirada en los procesos evolutivos en biolog´ es que el contenido gen´tico
a ıa, e
de una poblaci´n contiene potencialmente la soluci´n, o una soluci´n mejor, a un dado problema de
o o o
adaptaci´n. Esta soluci´n puede estar inactiva porque la combinaci´n gen´tica adecuada est´ disem-
o o o e a
inada entre varios sujetos. S´lo la asociaci´n de genomas distintos puede llevar a la activaci´n de la
o o o
soluci´n.
o
Crudamente, el mecanismo evolutivo procede as´ sobre una poblaci´n, algunos individuos son selec-
ı: o
cionados para la reproducci´n, con m´s oportunidades para los mejor adaptados al ambiente. Durante
o a
la reproducci´n, los nuevos individuos de la poblaci´n resultan de modificaciones e intercambio gen´tico
o o e
de los padres. Una vez que se renueva la poblaci´n, el proceso recomienza. Es decir que hay dos espacios
o
donde opera la evoluci´n. Por una parte, a nivel de los individuos f´
o ısicos (fenotipo), que deben adaptarse
para ser seleccionados. Y luego, a nivel de la informaci´n gen´tica (genotipo), a trav´s de los operadores
o e e
que intercambian y var´ la informaci´n gen´tica.
ıan o e
La informaci´n gen´tica est´ codificada en los cromosomas, que son secuencias de genes, cada uno de los
o e a
cuales codifica una caracter´ ıstica particular del individuo. Estas secuencias est´n escritas en t´rminos
a e
de cuatro bases nitrogenadas: adenocina, timina, citocina y guanina. En este alfabeto de base cuatro,
[A, T, C, G], est´ escrita toda la informaci´n gen´tica de un individuo.
a o e
Hay esencialmente dos operadores gen´ticos. El operador de mutaci´n introduce cierta aleatoriedad en
e o
la b´squeda simplemente cambiando unos genes por otros, contribuyendo a una exploraci´n ‘azarosa’
u o
en el espacio gen´tico. El operador de crossover, en cambio, es una recombinaci´n de la informaci´n
e o o
durante la reproducci´n de los individuos seleccionados.
o
El proceso de evoluci´n, puesto en estos t´rminos, es adaptable a una enorme familia de problemas,
o e
incluso ajenos al ´mbito biol´gico. En la pr´xima secci´n se describe la adaptaci´n de este esquema de
a o o o o
b´squeda de soluciones a un problema matem´tico sencillo.
u a
1
2. 2 Adaptaci´n a un problema de optimizaci´n de funciones
o o
En esta secci´n ilustraremos la adaptaci´n de un algoritmo gen´tico a un problema sencillo de mini-
o o e
mizaci´n de funciones bidimensionales f (x, y). La interpretaci´n f´
o o ısica del problema es, en este caso,
casi trivial: haciendo corresponder la funci´n f a la ‘energ´ E asociada al estado (x, y), la evoluci´n
o ıa’ o
del sistema tender´ a minimizarla. A lo largo de esta gu´ nos referiremos m´s o menos indistintamente,
a ıa a
a la funci´n o al ‘paisaje energ´tico’.
o e
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
Figura 1: ejemplo de paisaje energ´tico complejo (izquierda) y simple (derecha).
e
En t´rminos crudos, la meta de la exploraci´n gen´tica es encontrar los individuos mejor adaptados a su
e o e
ambiente. Para eso, los individuos se reproducen buscando, con el intercambio de material gen´tico y las
e
mutaciones, que cada nueva generaci´n mejore la adaptaci´n. Para poder aplicar este esquema al prob-
o o
lema de la minimizaci´n de funciones, debemos dar las definiciones de individuos, genes, cromosomas y
o
ambiente, y cuantificar la adaptaci´n.
o
Si pensamos a cada individuo de la poblaci´n como un par (x, y) ∈ [a, b] × [c, d], se puede definir la
o
adaptaci´n como un escalar inversamente proporcional a la funci´n f , de manera que la minimizaci´n
o o o
de f (x, y) corresponder´ a la mejor adaptaci´n al medio definido por la funci´n f .
a o o
En este punto, s´lo queda definir la ‘codificaci´n gen´tica’ del individuo (x, y) para aplicar los operadores
o o e
gen´ticos. Definimos un cromosoma como el arreglo consecutivo de dos genes, uno para cada n´mero
e u
del par (x, y). Este arreglo se construye normalizando cada coordenada seg´n el rango donde puede
u
variar y guardando los primeros n decimales. Por ejemplo, para el par (0.5, 1.34) ∈ {[0, 1] × [0, 2.35]},
la normalizaci´n arroja el par (0.5/1, 1.34/2.35) = (0.5, 0.57021276...). La identificaci´n del individuo
o o
con su cromosoma resulta, usando cuatro cifras significativas (0.5, 1.34) → [50005702].
En este ‘espacio gen´tico’ se pueden aplicar los operadores de cruzamiento y mutaci´n, que en la
e o
evoluci´n suceden en el espacio de las bases nitrogenadas y, aqu´ en la base decimal. Una mutaci´n
o ı, o
ser´ el reemplazo de cualquiera de los 8 n´meros del cromosoma por otro, por ejemplo, [23126675] →
a u
[23026675]. El cruzamiento consiste en el intercambio, a partir de cualquier posici´n, de la informaci´n
o o
de los cromosomas de los individuos seleccionados. Por ejemplo, [12345678]+[87654321] → [12354321].
Con estas definiciones, el algoritmo gen´tico est´ adaptado al problema y su ejecuci´n consiste en elegir
e a o
una poblaci´n inicial de N individuos (xi , yi ), seleccionarlos seg´n su adaptaci´n usando la funci´n
o u o o
f (xi , yi ) y aplicarles los operadores gen´ticos para generar la nueva poblaci´n. En las siguientes secciones
e o
se describe el c´digo implementado para resolver este problema en matlab.
o
3 Instructivo
Se propone realizar un estudio num´rico del c´digo que implementa un algoritmo gen´tico en la mini-
e o e
mizaci´n de un paisaje energ´tico complejo. Para ello se sugieren los siguientes pasos:
o e
2
3. • Baje el archivo desde su ubicaci´n en internet: http://www.df.uba.ar/users/mison/genetico.tar.gz
o
• Descomprima el archivo genetico.tar.gz ($tar xvzf genetico.tar.gz)
• Edite el programa principal genetico.m (por ejemplo escriba: $xemacs &)
• Identifique las distintas partes del c´digo y sus funciones (puede ayudarle ver la secci´n siguiente)
o o
• Inicie el software matlab desde una terminal ($matlab )
• Explore num´ricamente el c´digo variando los par´metros relevantes del mismo
e o a
3.1 Descripci´n del c´digo en Matlab
o o
3.1.1 Par´metros
a
genes = 2 = posici´n x, posici´n y
o o
largo = 4 = longitud del gen.
Ngen = cantidad de ciclos (generaciones) en el algoritmo.
Nind = cantidad de individuos en la poblaci´n.
o
cross = tasa de cruzamiento.
mut = tasa de mutaci´n.
o
rango := [xmin ymin], [xmax ymax] = Rango de distribuci´n de la poblaci´n inicial.
o o
3.1.2 Organizaci´n:
o
El c´digo a utilizar se encuentra dividido en un c´digo principal (genetico.m) que hace uso de subrutinas
o o
o funciones definidas en archivos externos.
• c´digo principal genetico.m
o
1. se introducen los par´metros del algoritmo
a
2. llamado a fun.m (define el paisaje de energ´ a estudiar)
ıa
3. se elige la poblaci´n inicial de manera aleatoria en ran.m
o
4. comienza ciclo principal: Para iter desde 1 hasta Ngen hacer
– se calcula la funci´n de fitness
o
– llamado a subrutina fentogen.m (toma fenotipo y devuelve genotipo)
– llamado a subrutina pareja.m: elige los dos individuos, efectua la mutaci´n y el cruza-
o
miento de manera estoc´stica
a
– llamado a subrutina gentofen.m (toma genotipo y devuelve fenotipo)
– se grafica la poblaci´n de la generaci´n iter
o o
5. se reproduce la evoluci´n completa de la poblaci´n
o o
6. se grafica la evoluci´n de la funci´n de fitness
o o
3.2 Preguntas
Para tener en cuenta: Un estudio cuantitativo del problema num´rico requiere el an´lisis de un conjunto
e a
de evoluciones y no de un evento particular como el que se obtiene directamente del c´digo. Sin
o
embargo creemos que de todas formas es posible realizar un an´lisis interesante. Por esto se proponen
a
las siguientes preguntas:
3
4. • En el c´digo, el criterio de selecci´n de los cromosomas tiene una probabilidad p ∝ f (x, y) −1 .
o o
Interprete en t´rminos del algoritmo gen´tico y del problema particular.
e e
¿Qu´ tiene que garantizarse para que, as´ definida, la probabilidad no genere errores num´ricos?
e ı e
Proponga otras funciones de adaptaci´n.
o
• ¿C´mo construir´ un algoritmo para seleccionar uno (o m´s) individuos con probabilidad p te-
o ıa a
niendo en cuenta su adaptaci´n? o
Considere disponible una funci´n num´rica rand(a,b) que le permite elegir n´meros ‘al azar’ en
o e u
el intervalo (a, b). Verifique si su idea coincide con la secci´n comentada como ruleta en el c´digo.
o o
• Para una cantidad suficiente de generaciones Ngen ¿Qu´ operador gen´tico subsiste? ¿Qu´ com-
e e e
portamiento observa? Proponga otros criterios para mejorar la b´squeda.
u
• En este trabajo, el c´digo se ejecuta una cantidad Ngen de veces prefijada por el usuario. ¿Es
o
posible adaptar el c´digo para que cumpla con alg´n criterio de convergencia antes de detenerse?
o u
Proponga alguno e incorp´relo al c´digo.
o o
• 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 geom´tricos, el subespacio de los posibles (x h , yh ) debidos
e
a la acci´n del operador gen´tico de cruzamiento? ¿Podr´ simplificarse el c´digo con esta inter-
o e a o
pretaci´n?
o
4 Adaptaci´n al problema de la producci´n de voz
o o
4.1 F´
ısica de la voz - Teor´ de Fuente Filtro
ıa
El contenido espectral de los sonidos voceados es relativamente simple, mostrando una serie de picos
en ciertos arm´nicos de la frecuencia fundamental. La teor´ cl´sica que permite describir este com-
o ıa a
portamiento es conocida como fuente-filtro, y puede resumirse as´ el flujo de aire desde los pulmones
ı:
a trav´s de la glotis genera oscilaciones de las cuerdas vocales. La perturbaci´n en la presi´n causada
e o o
por esta oscilaci´n viaja de ida y vuelta por el trato vocal y es filtrada, generando un sonido definido.
o
Aunque no exista un gran control sobre las oscilaciones de las cuerdas vocales, la geometr´ del tracto
ıa
puede ser modificada con los articuladores principales: la lengua y la mand´ ıbula.
En esencia, el filtrado representa el ´nfasis o la supresi´n de ciertos arm´nicos de la frecuencia fundamen-
e o o
tal de oscilaci´n de las cuerdas vocales. Las frecuencias enfatizadas son conocidas como las formantes,
o
y en el caso de las vocales, es el cociente entre las dos primeras lo que determina la identidad de cada
vocal. En el resto del espectro se codifica la informaci´n de la identidad del hablante.
o
El estudio de los sonidos voceados puede separarse en dos partes: la din´mica de las cuerdas vocales y
a
el filtrado de una se˜l sonora a trav´s de una compleja geometr´ M´s aun, la din´mica puede resultar
a e ıa. a a
extremadamente rica si se agregan los efectos de acople entre la fuente de sonido (las cuerdas vocales)
y el filtro.
4.2 Cuerdas vocales: Modelo m´
ınimo
Existen escencialmente dos modelos [1] para estudiar la din´mica de las cuerdas vocales. Ambos est´n
a a
basados en el mismo principio: las oscilaciones del tejido se inducen por el flujo de aire que pasa a trav´s
e
de ellas.
El modelo m´s simple que da cuenta de este mecanismo es conocido como el modelo de una masa [1].
a
Cada cuerda vocal se asume como una masa sujeta al tejido principal, caracterizada por un coeficiente
de elasticidad y de disipaci´n, y sometida a la presi´n intraglotal. Para generar el comportamiento
o o
oscilatorio, es necesario que la presi´n durante la apertura de las cuerdas no se compense en el semiciclo
o
de cierre, para que en un ciclo completo pueda entregarse energ´ a las cuerdas oscilantes. Este mod-
ıa
elo constituye una buena aproximaci´n mientras que el aire en el tracto tenga propiedades inerciales.
o
4
5. Cuando las cuerdas se est´n separando, el flujo aumenta y la columna de aire en el tracto se acelera, lo
a
cual tiende a abrir m´s aun las cuerdas. En el semiciclo de cierre, por otra parte, la columna de aire en
a
movimiento tiende a cerrar las cuerdas, y en el ciclo completo se entrega energ´ al tejido.
ıa
Las ecuaciones de movimiento para este modelo de cuerdas vocales pueden ser escritas como
M x + Bx + Kx = Pg (1)
donde M , B y K representan la masa, la constante de disipaci´n y la constante de restituci´n, por
o o
unidad de area, de las cuerdas vocales, y Pg la presi´n glotal.
o
Si las ´reas de entrada y salida al tracto vocal son iguales, como corresponde al modelo de una masa,
a
tenemos Pi = Pg , con Pi la presi´n a la entrada del tracto vocal.
o
Siempre que la frecuencia fundamental de oscilaci´n de las cuerdas vocales sea menor que la primera
o
resonancia del tracto (primera formante), su impedancia de entrada es inercial [6], de manera que
Pi = R2 U + I 2 U (2)
con R2 e I2 la resistencia y la constante de inercia del aire en el tracto, y U el flujo. El sistema din´mico
a
queda cerrado, entonces, relacionando las ecuaciones 1 y 2 mediante
PL − (R2 U + I2 U ) = kt ρv 2 (3)
donde kt es un factor de correcci´n fenomenol´gico a la ecuaci´n de Bernoulli. De la integraci´n de las
o o o o
ecs. 1, 2 y 3 se obtiene la serie temporal del flujo de aire a trav´s de las cuerdas vocales.
e
4.3 Tracto Vocal
Seg´n la teor´ fuente-filtro, las cuerdas vocales est´n desacopladas ac´sticamente del tracto vocal, de
u ıa a u
manera que la se˜al de voz se genera a trav´s del filtrado de la serie temporal de la presi´n P i a la
n e o
entrada del tracto.
El modelo m´s simple consiste en aproximar el tracto por una serie de n tubos de distinta secci´n a i y
a o
longitud li para simular las distintas geometr´
ıas. En cada interfaz, la onda de presi´n es parcialmente
o
reflejada y transmitida, de manera que a la salida del ultimo tubo se tiene la se˜al de la voz.
´ n
4.4 Biometr´
ıa
Una vez construido el modelo completo para generar series temporales sint´ticas de voz, natural-
e
mente surge ponerlo a prueba como un m´todo biom´trico para reconocer la identidad de las per-
e e
sonas, aprovechando que sus par´metros est´n relacionados con magnitudes anat´micas y fisiol´gicas
a a o o
del sistema de producci´n de la voz.
o
Sin embargo, dado que el espacio de par´metros es multidimensional, la elecci´n del m´todo de ajuste es
a o e
delicada. La preferencia por un algoritmo gen´tico se ve justificada por dos razones: es de programaci´n
e o
simple y es f´cilmente adaptable a la paralelizaci´n.
a o
El problema de la voz es f´cilmente adaptable para ser resuelto por un algoritmo gen´tico. En primer
a e
lugar, definimos un individuo como la cadena de n´meros que corresponde a los par´metros del modelo.
u a
As´ la cadena {M, K, B, R2 , I2 , a1 , ..., an , l1 , ..., ln } es un individuo. M ,K B, R2 e I2 son los par´metros
ı, a
de las cuerdas vocales (ecuaciones 1 y 2); ai y li la secci´n y longitud del i-´simo tubo que aproxima
o e
al tracto vocal. La expresi´n de este cromosoma (su fenotipo) es el espectro de potencias que genera.
o
El criterio de selecci´n elegido es trivial: la probabilidad de seleccionar un cromosoma es inversamente
o
proporcional a la diferencia cuadr´tica entre los espectros de la se˜al experimental y la sintetizada por
a n
el modelo. En la figura 2 se ve un ejemplo de ambos espectros una vez que el algoritmo encontr´ la o
mejor soluci´n.
o
Los resultados obtenidos con el modelo de una masa para las cuerdas vocales y la aproximaci´n por o
tubos del tracto vocal no son concluyentes. Por una parte, las geometr´ a las que converge el tracto
ıas
vocal corresponden a las de las vocales utilizadas citadas por la bibliograf´ [3]. Sin embargo, el modelo
ıa
5
6. de una masa parece demasiado simple para dar cuenta de la din´mica de las cuerdas vocales, lo que
a
resulta en una dispersi´n en los par´metros del modelo que no permiten una distinci´n un´
o a o ıvoca 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 sint´ticas (l´
e ıneas)
generadas por el modelo usando un algoritmo gen´tico de 500 generaciones y 150 cromosomas, tasa de mutaci´n
e o
de 8% y crossover de 40%. La frecuencia est´ en unidades de 102 Hz y la potencia est´ normalizada.
a a
4.5 Paralelizaci´n del algoritmo gen´tico
o e
Una posible implementaci´n en paralelo del algoritmo consiste en definir un nodo principal donde se
o
separa la poblaci´n inicial de cromosomas en sub-dominios a ser procesados en paralelo por el resto de
o
los nodos (esclavos). Cada uno de los nodos esclavos encuentra la adaptaci´n de cada subpoblaci´n,
o o
y esta informaci´n es devuelta al nodo principal, que aplica los operadores gen´ticos a la poblaci´n
o e o
completa, generando una nueva poblaci´n que repetir´ el proceso.
o a
El algoritmo en paralelo opera seg´n la siguiente secuencia:
u
• Nodo principal
1. calcula espectro de la serie experimental
2. env´ espectro a nodos esclavos
ıa
3. crea poblaci´n inicial de cromosomas
o
4. divide en dominios locales
• Nodos esclavos
1. recibe espectro experimental del nodo principal
• loop generaciones
– Nodo principal
1. env´ cromosomas locales a nodos esclavos
ıa
2. recibe diferencias cuadr´ticas de esclavos
a
3. operadores gen´ticos: selecci´n, cross-over, mutaci´n
e o o
– Nodos esclavos
1. recibe cromosomas locales del nodo principal
2. calcula espectros sint´ticos desde cromosomas locales
e
3. compara espectros sint´ticos y experimental
e
4. calcula diferencias cuadr´ticas
a
5. env´ diferencias cuadr´ticas al nodo principal
ıa a
• fin loop generaciones
6
7. 4.6 Performance del c´digo en paralelo
o
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
tiempo de ejecucion (s)
400
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 ejecuci´n vs. cantidad de procesadores para el algoritmo gen´tico usando 500 generaciones,
o e
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 dispersi´n en los valores es despreciable. A la derecha,
o
detalle y ajuste con T (n) = 8.77 + 686.54/n + 0.05n, n es el n´mero de nodos slaves.
u
A primer orden, se espera que el tiempo de procesamiento Tp en funci´n del n´mero de procesadores n
o u
se comporte aproximadamente como Tp (n) ∝ 1/n, mientras que el tiempo de comunicaci´n Tc (n) ∝ n.
o
Ajustando los valores de la figura 3 para T (n) de la forma
master slaves α
T (n) = Tp (n) + Tc (n) = Tp + Tp (n) + Tc (n) = γ + + βn (4)
n
con n el n´mero de nodos slaves y α = Tp
u slaves (1) el tiempo de procesamiento de 1 nodo slave. Se asume
adem´s que el tiempo de procesamiento del master no cambia con la cantidad de slaves. Los valores
a
obtenidos implican una correcci´n lineal β muy peque˜a frente a α.
o n
Para estudiar el factor lineal β se usaron logfiles (informaci´n de los tiempos de procesamiento de
o
cada procesador) generados para distinta cantidad procesadores. Lo que se observa, promediando la
sl
dispersi´n de los tiempos de procesamiento ∆Tp de los nodos slaves, es que
o
sl
∆Tp (10) sl
∆Tp (20) > (5)
2
es decir que al usar m´s procesadores la dispersi´n de los tiempos de procesamiento aumenta. La
a o
diferencia, acumulada a lo largo de la ejecuci´n del c´digo, es del orden de 10 β, que es la correcci´n
o o o
prevista por la ecuaci´n 4. Esto sugiere que la mayor parte del tiempo de comunicaci´n es el tiempo de
o o
‘espera’ que proviene de la dispersi´n en los tiempos de procesamiento de las distintas computadoras
o
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.
7