You are on page 1of 34

Angel Garca Baos

Escuela de Ingeniera de Sistemas y Computacin


Universidad del Valle
04 de febrero de 2008
COMPUTACIN EVOLUTIVA
(CE)
PROGRAMACIN GENTICA
EVOLUCIN GRAMATICAL
PROGRAMACIN POR EXPRESIN
GENTICA
OTROS ALGORITMOS
OTROS ALGORITMOS
EVOLUTIVOS
EVOLUTIVOS
PROGRAMACIN GENTICA
PROGRAMACIN GENTICA
4 AGB
GP
GP
I GP (Genetic Programing), ideada por Koza en
1990.
I Se trata de disear programas usando tcnicas
evolutivas (GAs). Aunque se puede hacer con
cualquier lenguaje, con LISP hay algunas ventajas:
Los programas y los datos tienen la misma forma
(Expresiones-Simblicas). Entonces, es fcil manipular
programas.
Las expresiones simblicas son equivalentes al rbol de
anlisis (parse-tree). Las operaciones del algoritmo
gentico deben hacerse sobre este rbol.
Es interpretado (no hace falta recompilar cada vez que
hay un cambio en el programa).
5 AGB
GP
GP
I Para resolver un problema con GP hay que definir:
Conjunto de funciones (que requieren argumentos).
Conjunto de terminales (variables, constantes o funciones
que no requieren argumentos).
I Ejemplo:
Conjunto de funciones = {AND, OR, NOT }
Conjunto de terminales = {D0, D1 }
Una posible expresin simblica:
(AND (OR D1 D0) (NOT (AND D0 D0)))
AND
NOT OR
D0 D1
AND
D0 D0 RBOL DE ANLISIS (PARSING)
6 AGB
GP
GP
I Deben cumplirse las condiciones de suficiencia y
cerradura (clausura).
I La propiedad de clausura requiere que cada una de
las funciones del conjunto de funciones sea capaz
de recibir como argumento cualquier dato (valor y
tipo) que pueda retornar cualquier funcin, y
cualquier dato (valor y tipo) del conjunto de
terminales.
I Por ejemplo, el lgebra de Boole es cerrada:
Conjunto de funciones = {AND, OR, NOT }
Conjunto de terminales = {nil, T }
I Pero no ocurre as con la aritmtica.
7 AGB
GP
GP
I Para cerrar la aritmtica hay que redefinir ciertos
operadores:
(defun % (numerador denominador)
La funcin de division protegida
(if (= 0 denominador) 1 (/ numerador denominador)))
(defun srt (argumento)
La funcion raiz cuadrada protegida
(sqrt(abs argumento)))
(defun gt (primer segundo)
La funcion mayor-que con resultado numerico
(if (> primero segundo) 1 -1)))
8 AGB
GP
GP
I En Common LISP hay un problema adicional: ciertas
operaciones (ejecucin condicional y ejecucin iterativa) no
se pueden implementar con facilidad.
I Ello es debido a que LISP evala todos los argumentos
antes de pasarlos a una funcin. Por ejemplo:
(IF-HAY-COMIDA (AVANZA) (GIRA-DERECHA))
Se realizarn las dos cosas, independientemente de la
condicin. Para evitarlo, el IF se implementa con una
MACRO:
(defmacro ifltz (condicion then else)
(if (< (eval ,condicion) 0)
(eval ,then)
(eval ,else)))
9 AGB
GP
GP
I La poblacin inicial de individuos (expresiones simblicas)
se puede generar as:
Cada funcin tiene tantas ramas como argumentos. Los
terminales no tienen ramas.
Se elige al azar una funcin, que servir como raz.
Se van aadiendo a sus ramas otras funciones o
terminales elegidos al azar, hasta que no queden ramas
libres.
(+ (* A B) C)
A B
+
*
C
+
+
*
10 AGB
GP
GP
I Hay varias formas de realizar la inicializacin:
Full: Crear los programas con todos los caminos de
longitud L. Para ello, en los nodos intermedios se
seleccionan aleatoriamente solo funciones, y cuando se
llega a la longitud L deseada, se seleccionan
aleatoriamente solo terminales.
Grow: Crear los programas con caminos de longitud
variable, menor que L. Para ello, en los nodos intermedios
se seleccionan aleatoriamente funciones y terminales, , y
cuando se llega a la longitud L deseada, se seleccionan
aleatoriamente solo terminales.
Ramped half-and-half: se crean un nmero igual de
programas con una profundidad especificada entre 2 y el
mximo L. Por ejemplo, si se desea L=6, el 20% de la
poblacin tendr profundidad 2, el 20% 3, el 20% 4, el 20%
5 y el 20% tendr profundidad 6.
11 AGB
GP
GP
I El mtodo Ramped half-and-half: crea la mayor diversidad
de formas.
I Es conveniente eliminar individuos que salgan repetidos en
la generacin 0 (en las dems no).
I La aptitud de un programa se calcula ejecutndolo y
midiendo lo mal o bien que cumple con sus objetivos. Ello
indica el punto dbil de GP: requiere mucho cmputo.
I Los operadores de reproduccin son:
Cruce (intercambiar dos sub-rboles al azar de dos individuos).
Mutacin (eliminar al azar un sub-rbol y generar all otro al azar).
Permutacin (similar al cruce, pero dentro del mismo individuo).

Edicin (eliminar bloques intiles) Ej: (+ 1 2) 3 y (AND X X) X

Encapsulacin (definir funciones). Ej: (+ A (* B C))


(defun E0 () (* B C)) y cambiar por (+ A (E0))
12 AGB
GP
GP
I RESUMEN CARACTERSTICAS:
Requiere mucha potencia de cmputo (computacin paralela
o distribuida).
El usuario debe de saber cuales funciones primitivas son
mas apropiadas para un determinado problema. Y lo mismo
con las variables. Si hay funciones y/o variables superfluas,
aumenta mucho el tiempo para encontrar la solucin. Y si
faltan funciones y/o variables, no encontrar la solucin.
Las constantes (PI, 1, 2, 3, etc.) se suelen generar al azar, e
incluso as el GP puede encontrar la solucin.
Si la funcin de aptitud cambia suavemente en el tiempo, el
GP puede encontrar la solucin ptima para cada momento.
El programa solucin suele tener muchos intrones (code
bloat).
13 AGB
GP
GP
Puede disear automticamente la estructura de un
programa:
I
ADF: funciones automticamente definidas. Por medio de
operadores de:
Encapsulacin (Creacin de una funcin).
Borrado de una funcin.
Adicin de un argumento.
Borrado de un argumento.
I
Generacin automtica de bucles (ADL) y recursiones (ADR).
I
Variables internas automticamente definidas (arrays, colas,
listas...).
I
Constantes automticamente generadas.
14 AGB
GP
GP
I APLICACIONES:
Integracin, derivacin e inversin simblicas.
Prediccin de secuencias.
Compresin de datos con prdidas (imgenes...).
Descubrimiento de leyes a partir de datos empricos
(leyes de Kepler...).
Demostracin de identidades matemticas.
Diseo en ingeniera (civil, etc...).
Estrategias en robots (hormigas artificiales).
Regresin simblica.
Diseo de circuitos digitales (multiplexor...).
15 AGB
GP
GP
Comportamiento emergente (hormigas artificiales,
agentes, robots...).
Diseo de controladores y automatismos (pndulo
invertido, parquear un trailer...).
Diseo de estrategias ptimas en juegos (Pac-Man).
Diseo de arquitecturas internas (para path planning
de robots...).
Generacin de secuencias seudoaleatorias.
Clasificacin de datos (Clustering, Data Mining...).
EVOLUCIN GRAMATICAL
EVOLUCIN GRAMATICAL
17 AGB
GE
GE
I GE (grammatical evolution): evolucin gramatical,
ideada por Michael ONeill y Conor Ryan en 1997.
I Gramticas BNF (Backus-Naur Form):
Contienen un conjunto de smbolos terminales (+, -,
1,2,3...) y un conjunto de smbolos no terminales. Y hay
reglas de produccin que permiten generar los smbolos
no terminales en funcin de ellos mismos y de los
terminales.
Una gramtica puede expresarse por medio de una tupla
{N,T,P,S} donde N es el conjunto de smbolos no
terminales, T el conjunto de smbolos terminales, P el
conjunto de reglas de produccin que mapean los
elementos de N en T, y S es el smbolo inicial, que debe
ser miembro de N.
18 AGB
GE
GE
I Ejemplo:
N = {expresion, op, pre_op, var}
T = {sin, cos, tan, log, +, -, /, *, X, () }
S = <expresion>
P =
(1) <expresion> ::= <expresion> <op> <expresion> [0]
| ( <expresion> <op> <expresion> ) [1]
| <pre_op> ( <expresion> ) [2]
| <var> [3]
(2) <op> ::= + [0]
| - [1]
| * [2]
| / [3]
(3) <pre_op> ::= sin [0]
| cos [1]
| tan [2]
| log [3]
(4) <var> ::= X [0]
19 AGB
GE
GE
I Es habitual no usar toda una especificacin BNF de un
lenguaje, sino solo un subconjunto de inters.
I En GE, el fenotipo es un programa de computador escrito
en cualquier lenguaje (especificado a su vez en BNF). El
genotipo es un conjunto de strings binarios de longitud
variable. Los codones son grupos de 8 bits (por ejemplo).
I La expresin se consigue tomando secuencialmente los
codones y usndolos para tomar decisiones sobre una
secuencia de reglas BNF.
I Ejemplo de regla BNF:
<sentencia> := if (<expresion>) {<sentencia>; }else {<sentencia>; } [0]
| <sentencia> ; <sentencia> [1]
| variable = <expresion>; [2]
20 AGB
GE
GE
I Si tomamos un codn (nmero entre 0 y 255) y sacamos su
mdulo 3 (porque hay 3 reglas de produccin), el resultado
puede salir 0, 1 o 2 y, segn salga, se elegir una de las tres
reglas de produccin.
I Y as sucesivamente hasta lograr un programa completo (con
todas las reglas resueltas en nodos terminales) o hasta que
se acaben los codones.
I Si se acaban los codones:
Se pueden volver a comenzar a extraer desde el principio,
reusndolos. Aunque algunos investigadores hacen esto, no
es una buena idea.
Se dice que el programa resultante no es ejecutable, y se le
asigna el menor valor de adaptacin posible.
21 AGB
GE
GE
I Degeneracin del cdigo gentico:
Como los codones software son de 8 bits, pero hay menos
reglas de produccin, se emplea el operador mdulo.
Entonces, diversos codones pueden dar lugar a la misma
regla de produccin (ej: 3, 6, 9, etc.. ya que 3 MOD 3 = 6
MOD 3 = 9 MOD 3 etc).
A esto se le llama degeneracin del cdigo gentico y es
un fenmeno que ocurre tambin en biologa, donde hay 4
3
= 64 posibles codones (61 que dan lugar a aminocidos y 3
de STOP). Pero solo se producen 20 aminocidos. O sea
que, en promedio, hay 3 codones que producen el mismo
aminocido.
La degeneracin no tiene ninguna importancia en GE.
22 AGB
GE
GE
Se ha descubierto que de los tres nucletidos, los dos
primeros codifican el aminocido, mientras que el tercero
no suele tener importancia.
Ello tiene sus consecuencias: si se produce una mutacin
sobre el tercer nucletido, no suele producir cambios en el
fenotipo del individuo.
La teora de la "evolucin neutral" de Kimura dice que son
esas mutaciones silenciosas las responsables de la gran
diversidad gentica que hay.
23 AGB
GE
GE
I En GE se han introducido nuevos operadores:
Duplicacin: seleccionar al azar unos cuantos genes
consecutivos y copiarlos al final del cromosoma. Ello sirve
para:
I
Permitir mutaciones mortales (el gen que muta puede ser
imprescindible, pero como existe una copia, no hay problema).
I
Evolucionar nuevas funciones.
I
Producir mas cantidad de lo mismo.
Poda: si un cromosoma no necesit usar todos sus genes
para generar un programa, se aplica este operador con una
cierta probabilidad. La poda consiste en quitar los genes no
usados. De esta manera se eliminan los intrones (genes
que no se expresan).
24 AGB
GE
GE
Los intrones sirven para dos cosas:
I
Permiten acumular mutaciones sin daar el organismo (lo cual es
bueno). Mas del 90% del ADN humano son intrones.
I
Vuelven mucho ms lento el proceso evolutivo (lo cual es malo).
Por ello, el operador de poda se aplica con baja
probabilidad (0.01%).
I En GE hay problemas de dependencias similares a
los de GP (programacin gentica): cuanto mas lejos
de la raz est un gen, mas probable es que su
expresin se vea alterada por los genes que estn
antes.
PROGRAMACIN POR
PROGRAMACIN POR
EXPRESIN GENTICA
EXPRESIN GENTICA
26 AGB
GEP
GEP
I GEP (gene expression programing): Programacin
por expresin gentica, ideado por Ferreira (Univ.
Azores) en 2000. Muy similar a GE, aunque con
mas detallitos.
I En biologa, un gen comienza con un codn de
comienzo, contina con la secuencia de codones
que codifican la funcionalidad del gen, y termina
con un codn de finalizacin.
27 AGB
GEP
GEP
I En GEP se separa el genotipo del fenotipo. En GAs y GPs
no se hace esa separacin (funcionan como los primitivos
ARN).
I En GEP se mantiene una poblacin de cromosomas,
compuestos por genes de tamao fijo codificados como
cadenas de smbolos. Los cromosomas se reproducen
como en GA (cruce, mutacin, etc.). Luego cada gen se
convierte a un ET (expression tree = rbol de expresin),
que consiste en un programa de computador.
I En GEP un gen no es un smbolo, sino una secuencia de
smbolos de longitud fija.
I Lo que usualmente ocurre es que quedan smbolos no
usados (no expresados) en el gen.
28 AGB
GEP
GEP
I De esta manera, cualquier secuencia de smbolos
en un gen da lugar a un ET sintcticamente
correcto. Por ejemplo, la expresin:
I Se representa en el siguiente ET:
(siendo Q la raz cuadrada).
I El gen que lo representa ser
(leyendo el ET de arriba abajo y de
izquierda a derecha):
I Esta representacin no es prefija ni postfija, sino
una expresin-K.
*
- +
Q
d c b a
( ) ( ) d c b a + *
Q * + - a b c d
29 AGB
GEP
GEP
I
Al revs, partiendo de un gen cualquiera:
I
Equivale al siguiente ET:
(obsrvese que no se usan
los 5 ltimos smbolos)
I
Cuyo fenotipo es la expresin:
( ) ( ) ( ) a a b a a * * * +
*
* +
Q
a Q * a
a b
a
Q * + * a * Q a a b a Q - + + a
30 AGB
GEP
GEP
I Cada gen est formado por una cabeza y una cola.
I La cabeza contiene smbolos que representan funciones y
terminales, mientras que la cola contiene solo terminales.
I La longitud de la cabeza (h) se elige dependiendo del
problema.
I La longitud de la cola (t) depende de h y del nmero de
argumentos (n) de la funcin que tenga mas argumentos: t
= h*(n-1)+1
I Con estas reglas se garantiza que no quede el gen corto
(es decir, que no queden funciones sin suficientes
argumentos) y que el programa tenga una longitud
acotada (que no pueda crecer indefinidamente, como
ocurre en GP).
31 AGB
GEP
GEP
I La ventaja de GEP es que los genes son de
longitud fija, mientras que los genotipos son de
longitud variable.
I Y que no hacen falta operadores especiales de
reproduccin, ya que los tpicos de GA valen. Y los
resultados de estos operadores son siempre genes
vlidos:
El cruce automticamente da lugar a un gen vlido.
La mutacin hay que hacerla con la restriccin de que en
la cola solo pueden aparecer smbolos terminales.
32 AGB
GEP
GEP
I Por ejemplo, si las funciones son {Q, +, -, *, /}y los
terminales son {a, b}, entonces n=2.
I Suponiendo que queramos h=7, sale t=8 y la longitud
total del gen ser h+t=15.
Q * + * a / Q a a b a a a b a
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Cabeza: funciones y
terminales
Cola: solo terminales
33 AGB
GEP
GEP
I Un cromosoma est compuesto por un nmero fijo de
genes. Cada gen codifica un ET. Los ETs se relacionan
a travs de una nica operacin codificada al final del
cromosoma.
I Cada gen puede evolucionar aisladamente de los
dems, dentro del mismo cromosoma. Ello facilita el
surgimiento de los bloques constructivos.
34 AGB
GEP
GEP
I Ejemplo (3 genes de h=4, n=2 => t=5 y longitud gen=9):
Q * + * a b a a a b a a b a a a a a + * a b b a a b a F
1er. gen
2o. gen 3er. gen
Operacin
final
*
* +
Q
a a b a
b
a *
+
b b
F
Nota: F = IF

You might also like