Está en la página 1de 7

Algoritmos geneticos: aplicacion en MATLAB

Matas Ison, Jacobo Sitt, Marcos Trevisan


Gua de la materia Sistemas Complejos
disponible en www.df.uba.ar/users/mison/genetico.tar.gz
November 25, 2005

Abstract
Esta gua contiene una introducci
on a los elementos b
asicos de los algoritmos geneticos y su adaptaci
on
a un problema simple de minimizaci
on de funciones de dos variables usando c
odigo en matlab. Se
describe el c
odigo con un instructivo b
asico de su sintaxis y funcionamiento. Se propone una serie
de pr
acticas numericas ejecutando variaciones del algoritmo. En la u
ltima secci
on se describe una
aplicaci
on de los algoritmos geneticos al ajuste de par
ametros en el modelado de la voz humana, junto
con algunas nociones de paralelizaci
on.

Algoritmos gen
eticos

Los algoritmos geneticos corresponden a la clase de metodos estocasticos de b


usqueda. Mientras la
mayora de estos metodos operan sobre una u
nica 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 diseminada 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 seleccionados 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 mutaci
on introduce cierta aleatoriedad en
la b
usqueda 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
b
usqueda de soluciones a un problema matematico sencillo.

Adaptaci
on a un problema de optimizaci
on de funciones

En esta seccion ilustraremos la adaptacion de un algoritmo genetico a un problema sencillo de minimizacion 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
2

0
2
2

1
1

1
1

0
1

0
1

1
2

1
2

Figura 1: ejemplo de paisaje energetico complejo (izquierda) y simple (derecha).


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 problema 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 n
umero
del par (x, y). Este arreglo se construye normalizando cada coordenada seg
un 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 n
umeros 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 seg
un 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.

Instructivo

Se propone realizar un estudio numerico del codigo que implementa un algoritmo genetico en la minimizacion de un paisaje energetico complejo. Para ello se sugieren los siguientes pasos:

Baje el archivo desde su ubicacion en internet: http://www.df.uba.ar/users/mison/genetico.tar.gz


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 codigo y sus funciones (puede ayudarle ver la seccion siguiente)
Inicie el software matlab desde una terminal ($matlab )
Explore numericamente el codigo variando los parametros relevantes del mismo

3.1

Descripci
on del c
odigo en Matlab

3.1.1

Par
ametros
genes = 2 = posicion x, posicion y
largo = 4 = longitud del gen.
Ngen = cantidad de ciclos (generaciones) en el algoritmo.
Nind = cantidad de individuos en la poblacion.
cross = tasa de cruzamiento.
mut = tasa de mutacion.

rango := [xmin ymin], [xmax ymax] = Rango de distribucion de la poblacion inicial.


3.1.2

Organizaci
on:

El codigo a utilizar se encuentra dividido en un codigo principal (genetico.m) que hace uso de subrutinas
o funciones definidas en archivos externos.
codigo principal genetico.m
1. se introducen los parametros del algoritmo
2. llamado a fun.m (define el paisaje de energa a estudiar)
3. se elige la poblacion inicial de manera aleatoria en ran.m
4. comienza ciclo principal: Para iter desde 1 hasta Ngen hacer
se calcula la funcion de fitness
llamado a subrutina fentogen.m (toma fenotipo y devuelve genotipo)
llamado a subrutina pareja.m: elige los dos individuos, efectua la mutacion y el cruzamiento de manera estocastica
llamado a subrutina gentofen.m (toma genotipo y devuelve fenotipo)
se grafica la poblacion de la generacion iter
5. se reproduce la evolucion completa de la poblacion
6. se grafica la evolucion de la funcion de fitness

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:

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 teniendo en cuenta su adaptacion?
Considere disponible una funcion numerica rand(a,b) que le permite elegir n
umeros 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 comportamiento observa? Proponga otros criterios para mejorar la b
usqueda.
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 alg
un 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 interpretacion?

4
4.1

Adaptaci
on al problema de la producci
on de voz
Fsica de la voz - Teora de Fuente Filtro

El contenido espectral de los sonidos voceados es relativamente simple, mostrando una serie de picos
en ciertos armonicos de la frecuencia fundamental. La teora clasica que permite describir este comportamiento es conocida como fuente-filtro, y puede resumirse as: el flujo de aire desde los pulmones
a traves de la glotis genera oscilaciones de las cuerdas vocales. La perturbacion en la presion causada
por esta oscilacion viaja de ida y vuelta por el trato vocal y es filtrada, generando un sonido definido.
Aunque no exista un gran control sobre las oscilaciones de las cuerdas vocales, la geometra del tracto
puede ser modificada con los articuladores principales: la lengua y la mandbula.
En esencia, el filtrado representa el enfasis o la supresion de ciertos armonicos de la frecuencia fundamental de oscilacion de las cuerdas vocales. Las frecuencias enfatizadas son conocidas como las formantes,
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 informacion de la identidad del hablante.
El estudio de los sonidos voceados puede separarse en dos partes: la dinamica de las cuerdas vocales y
el filtrado de una seal sonora a traves de una compleja geometra. Mas aun, la dinamica puede resultar
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 mnimo

Existen escencialmente dos modelos [1] para estudiar la dinamica de las cuerdas vocales. Ambos estan
basados en el mismo principio: las oscilaciones del tejido se inducen por el flujo de aire que pasa a traves
de ellas.
El modelo mas simple que da cuenta de este mecanismo es conocido como el modelo de una masa [1].
Cada cuerda vocal se asume como una masa sujeta al tejido principal, caracterizada por un coeficiente
de elasticidad y de disipacion, y sometida a la presion intraglotal. Para generar el comportamiento
oscilatorio, es necesario que la presion durante la apertura de las cuerdas no se compense en el semiciclo
de cierre, para que en un ciclo completo pueda entregarse energa a las cuerdas oscilantes. Este modelo constituye una buena aproximacion mientras que el aire en el tracto tenga propiedades inerciales.

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
M x00 + Bx0 + Kx = Pg

(1)

donde M , B y K representan la masa, la constante de disipacion y la constante de restitucion, por


unidad de area, de las cuerdas vocales, y Pg la presion glotal.
Si las areas de entrada y salida al tracto vocal son iguales, como corresponde al modelo de una masa,
tenemos Pi = Pg , con Pi la presion a la entrada del tracto vocal.
Siempre que la frecuencia fundamental de oscilacion de las cuerdas vocales sea menor que la primera
resonancia del tracto (primera formante), su impedancia de entrada es inercial [6], de manera que
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)

donde kt es un factor de correccion fenomenologico a la ecuacion de Bernoulli. De la integracion de las


ecs. 1, 2 y 3 se obtiene la serie temporal del flujo de aire a traves de las cuerdas vocales.

4.3

Tracto Vocal

Seg
un la teora fuente-filtro, las cuerdas vocales estan desacopladas ac
usticamente del tracto vocal, de
manera que la se
nal de voz se genera a traves del filtrado de la serie temporal de la presion P i a la
entrada del tracto.
El modelo mas simple consiste en aproximar el tracto por una serie de n tubos de distinta seccion a i y
longitud li para simular las distintas geometras. En cada interfaz, la onda de presion es parcialmente
reflejada y transmitida, de manera que a la salida del u
ltimo tubo se tiene la se
nal de la voz.

4.4

Biometra

Una vez construido el modelo completo para generar series temporales sinteticas de voz, naturalmente surge ponerlo a prueba como un metodo biometrico para reconocer la identidad de las personas, 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 n
umeros 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 se
nal 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

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.

4.5

Paralelizaci
on del algoritmo gen
etico

Una posible implementacion en paralelo del algoritmo consiste en definir un nodo principal donde se
separa la poblacion inicial de cromosomas en sub-dominios a ser procesados en paralelo por el resto de
los nodos (esclavos). Cada uno de los nodos esclavos encuentra la adaptacion de cada subpoblacion,
y esta informacion es devuelta al nodo principal, que aplica los operadores geneticos a la poblacion
completa, generando una nueva poblacion que repetira el proceso.
El algoritmo en paralelo opera seg
un la siguiente secuencia:
Nodo principal
1. calcula espectro de la serie experimental
2. enva espectro a nodos esclavos
3. crea poblacion inicial de cromosomas
4. divide en dominios locales
Nodos esclavos
1. recibe espectro experimental del nodo principal
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.
2.
3.
4.
5.

recibe cromosomas locales del nodo principal


calcula espectros sinteticos desde cromosomas locales
compara espectros sinteticos y experimental
calcula diferencias cuadraticas
enva diferencias cuadraticas al nodo principal

fin loop generaciones

4.6

Performance del c
odigo 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

tiempo de ejecucion (s)

500

400

300

200

100

0
2

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 n
umero de nodos slaves.
A primer orden, se espera que el tiempo de procesamiento Tp en funcion del n
umero 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

(4)
T (n) = Tp (n) + Tc (n) = Tpmaster + Tpslaves (n) + Tc (n) = + + n
n
con n el n
umero 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 peque
na 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)
(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.
Tpsl (20) >

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, Edinburgh Parallel Computing Centre, University of Edinburgh.
[6] Rothemberg, Vocal Fold Physiology, University of Tokyo Press, Tokyo, 1981, pp. 304-323.

También podría gustarte