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