Optimizacion de las constantes en una´ estrategia...

80
M ´ ASTER EN M ODELIZACI ´ ON M ATEM ´ ATICA , E STAD ´ ISTICA Y C OMPUTACI ´ ON T RABAJO F IN DE MASTER Optimizaci´ on de las constantes en una estrategia evolutiva mediante el m´ etodo de Gauss-Newton Autor: Borja ARTAMENDI Director: esar ALONSO Colaborador: Enrique C RUZ 17 de agosto de 2010

Transcript of Optimizacion de las constantes en una´ estrategia...

Page 1: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

MASTER EN MODELIZACION MATEMATICA,ESTADISTICA Y COMPUTACION

TRABAJO FIN DE MASTER

Optimizacion de las constantes en unaestrategia evolutiva mediante el metodo de

Gauss-Newton

Autor:Borja ARTAMENDI

Director:Cesar ALONSO

Colaborador:Enrique CRUZ

17 de agosto de 2010

Page 2: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

2

Page 3: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Indice general

1. Introduccion 3

2. El Algoritmo Evolutivo 5

2.1. Descripcion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.2. Elementos de un algoritmo evolutivo . . . . . . . . . . . . . . . . . . . . . . . 6

2.3. Terminologıa SLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.4. Evolucion-Coevolucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.5. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3. Metodos para optimizacion de las constantes mudas 15

3.1. Metodo de descenso del gradiente . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2. Metodo de Gauss-Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.3. Metodo del gradiente conjugado . . . . . . . . . . . . . . . . . . . . . . . . . 21

4. Entorno de Pruebas y Herramientas 23

4.1. Estructura del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.2. Funciones del Algoritmo Evolutivo . . . . . . . . . . . . . . . . . . . . . . . . 24

4.3. Funciones auxiliares del Metodo de Gauss Newton . . . . . . . . . . . . . . . 32

4.4. Funcion de Gauss Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.5. Aprende . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.6. Diferenciacion Automatica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3

Page 4: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

4 INDICE GENERAL

5. Resultados 51

5.1. Protocolo de experimentacion . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.2. Interpretacion de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.3. Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

6. Conclusiones y trabajo futuro 69

6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

6.2. Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

A. UsoADOLC 71

Referencias 74

Page 5: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Indice de figuras

2.1. Representacion de la poblacion . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2. SLP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3. Diagrama de flujo de una prueba tıpica de un algoritmo evolutivo[1] . . . . . . 11

3.1. Metodo del descenso del gradiente [2] . . . . . . . . . . . . . . . . . . . . . . 17

3.2. Zig-Zagging del descenso del gradiente . . . . . . . . . . . . . . . . . . . . . 17

4.1. Diagrama de dependencias para la funcion proSLP . . . . . . . . . . . . . . . 24

4.2. Slp efectivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.3. vector Args . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.4. Ejemplo del metodo forward con un grafo [3] . . . . . . . . . . . . . . . . . . 41

4.5. Ejemplo del metodo reverse con un grafo [3] . . . . . . . . . . . . . . . . . . . 41

4.6. Grafo Dirigido ejemplo SLP . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.7. Grafo Dirigido ejemplo ADOLC . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.1. diagrama cajas prueba1 para la funcion slp . . . . . . . . . . . . . . . . . . . . 59

5.2. diagrama de cajas para funcion polinomios de la prueba1 . . . . . . . . . . . . 60

5.3. convergencia para el grupo de funciones RmPol1 de prueba1 . . . . . . . . . . 61

5.4. diagrama cajas para f2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5

Page 6: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

6 INDICE DE FIGURAS

5.5. diagrama cajas para f3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

5.6. convergencia para f3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.7. diagrama cajas para f2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

5.8. convergencia para f2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

5.9. diagrama cajas para f3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Page 7: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Resumen

Los individuos del proceso evolutivo estan representados mediante una estructura denomina-da Straight Line Program (SLP). Como se definira posteriormente en la memoria, un SLP esuna sucesion finita de asignaciones que tienen la propiedad de describir una funcion. Duranteel proceso, poblaciones de SLP’s evolucionaran durante generaciones. En un momento dadose extraera el mejor individuo de la poblacion (cuya calidad se mide mediante una funcion defitness) y se iniciara con dicho individuo un proceso de optimizacion de las constantes o coe-ficientes de la funcion representada. Para evaluar las derivadas de la funcion expresada comoun programa de computacion se empleara la diferenciacion automatica haciendo uso de la reglade la cadena con acumulacion hacia adelante (forward method). Todo ello haciendo uso de laherramienta ADOL-C, que utiliza la sobrecarga de operadores para llevar a cabo la derivada enla aritmetica aumentada con numeros duales.

Una vez optimizadas las constantes se introducira de nuevo el individuo en la poblacion yse continuara con el proceso evolutivo durante un nuevo numero de generaciones. Este procesode evolucion-optimizacion de constantes se seguira realizando hasta que se verifique un test deparada, que puede estar determinado por un numero maximo de generaciones o evaluacionesde la funcion fitness aplicada sobre los SLP’s. Uno de los objetivos de este trabajo consiste encomprobar la mejora que supone aplicar un metodo de este tipo para la optimizacion de lasconstantes, frente a la no optimizacion de las mismas.

Page 8: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

2 INDICE DE FIGURAS

Page 9: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Capıtulo 1

Introduccion

El presente trabajo fin de master, se apoya en una serie de trabajos de investigacion previos,realizados por Jose Luis Montana y Cruz Enrique Borges de la Universidad de Cantabria y porCesar L. Alonso y Jorge Puente de la Universidad de Oviedo

El objetivo principal del trabajo es la optimizacion de las constantes mudas de una funcionque aproxima unos puntos. Para ello se hace uso de un algoritmo evolutivo. El origen del pro-blema reside en que creemos necesaria la optimizacion de las constantes mudas en el algoritmoevolutivo para ası obtener unas mejores soluciones (funciones que aproximan unos puntos) queconverjan mas rapidamente hacia la solucion ideal. Creemos que optimizando las constantesmudas puede ser una buena solucion para hacer que el algoritmo evolutivo converga mas rapi-damente y consiga una aproximacion a los puntos de entrada.

Para ello se ha pensado en aplicar un metodo de busqueda directa y se han analizado di-ferentes metodos de busqueda, como los siguientes: descenso del gradiente, Gauss-Newton ygradiente conjugado.

Todos estos metodos necesitan el valor de la derivada para obtener la direccion de conver-gencia del metodo y en consecuencia se necesita el calculo de la derivada de una funcion, tareanada trivial. Existen diferentes metodos para calcular la derivada de una funcion, ya sean meto-dos clasicos como la derivacion simbolica o la derivacion numerica. Sin embargo, hoy en dıaexiste una tecnica que reduce mucho el tiempo de calculo de una derivada y el error de aproxi-macion: la diferenciacion automatica. Esta tecnica se basa en el uso de la regla de la cadena quese describe en la seccion 4.6.2.

La presente memoria esta organizada de la siguiente manera.

3

Page 10: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

4

En el capıtulo 2 se presentan las bases de los algoritmos evolutivos. En el se realiza unadescripcion de los elementos de un algoritmo evolutivo y se introduce la terminologıa SLP quenos servira de base para la correcta comprension de todo lo que se describira en las siguientessecciones. A continuacion, en el capıtulo 3 se analizaran los principales metodos de optimiza-cion para, conociendo las ventajas y desventajas de cada uno de ellos, decidir finalmente cualse utilizara para las pruebas.

Mas adelante, en el capıtulo 4 se exponen las herramientas en las que se apoya este trabajo.Por un lado, se describe la estructura del programa en C++ sobre el que se realizan las pruebasy por otro el uso de una herramienta de diferenciacion automatica que simplifica el trabajo delcalculo de las derivadas. Esta tecnica es necesaria para la obtencion de las derivadas de formacomputacionalmente eficiente. El capıtulo 5 muestra los resultados de las pruebas realizadas pa-ra dos conjuntos de puntos a aproximar por dos poblaciones diferentes. Finalmente, el capıtulo6 muestra las conclusiones del trabajo y las sugerencias para el trabajo futuro.

Page 11: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Capıtulo 2

El Algoritmo Evolutivo

2.1. Descripcion

Todo algoritmo evolutivo se basa en la evolucion biologica, en donde mantenemos un con-junto de individuos que representan posibles soluciones del problema, las cuales se mezclan ycompiten entre sı, de tal manera que las mas adaptadas son las que evolucionan hacia solucionescada vez mejores.

Los parametros del problema son varios, pero en este apartado nos centraremos en describirlas constantes mudas, constantes reales y variables del problema.

Si partimos de una funcion de la siguiente forma:

y = Ax3 +Bx2 + Cx+ 4

Destacamos los siguientes aspectos:

Variables del problema: en este caso tenemos las variables x e y, donde x es la variablede entrada e y es la variable de salida.

Las constantes reales: 4, una constante real pueden acompanar a una variable del proble-ma (x en este caso) o no.

5

Page 12: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO

Las constantes mudas: Al tratar de predecir una funcion, digamos un polinomio de gradon, se tienen n+1 parametros que constituyen los coeficientes de dicho polinomio. Unade las estrategias serıa dar valores a dichos coeficientes para encontrar el polinomio quemejor se aproxima. Para ello, en nuestra estrategia evolutiva se consideran dichos coefi-cientes como constantes mudas y se realiza una busqueda de los mejores valores para lasmismas. Esta optimizacion de las constantes es lo que se realiza mediante los distintosmetodos estudiados.

2.2. Elementos de un algoritmo evolutivo

Al conjunto de los individuos que evolucionan se le llama poblacion. Para representar cadauno de los individuos se necesita un modo de representacion para que el algoritmo geneticopueda ponerse a trabajare sobre el problema, es decir, se necesita definir un metodo para codifi-car las soluciones potenciales del problema de forma que una computadora pueda procesarlas.En nuestro algoritmo evolutivo cada uno de los individuos esta codificado mediante un slp quesera descrito en el siguiente apartado. Cada SLP esta representado mediante una codificacion ocromosoma, donde cada gen de dicho cromosoma no es otra cosa que cada una de la asignacio-nes del SLP.

Figura 2.1: Representacion de la poblacion

Figura 2.2: SLP

Un algoritmo genetico puede utilizar muchas tecnicas diferentes para seleccionar a los indi-viduos que deben copiarse hacia la siguiente generacion. Una vez que la seleccion ha elegido alos individuos aptos, estos deben ser alterados de cierta manera con la esperanza de mejorar suaptitud para la siguiente generacion. Los individuos son modificados por operadores geneticos

Page 13: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 2. EL ALGORITMO EVOLUTIVO 7

que pueden ser: cruce, que consiste en mezclar la informacion de varios individuos, o mutacion,que produce un cambio aleatorio en los individuos. Los individuos son evaluados mediante lafuncion fitness que valora la calidad de cada individuo.

En los siguientes subapartados se describen todos los tipos de operaciones geneticas (se-leccion, mutacion y cruce), asi como el tipo de poblacion, tipo de fitness, etc, que permite elalgoritmo genetico de este proyecto. Aparecen en negrita los tipos que se utilizaran en las prue-bas.

2.2.1. Poblacion

CTE: La poblacion de las constantes esta constituida por conjuntos de valores para loscoeficientes de la expresion cuyas constantes mudas se pretende optimizar.

SLP: La poblacion de SLP’s esta formada por las representaciones de los SLP’s queevolucionan durante el desarrollo del proceso evolutivo.

2.2.2. Tipo Seleccion

Ruleta: Este tipo de seleccion consiste en escoger un individuo de la poblacion, de ma-nera que la probabilidad de que un individuo sea finalmente seleccionado es proporcionala su fitness o valor de calidad. Es como si cada individuo tuviese una serie de numeros deuna ruleta, de manera que cuanto mejor sea el individuo mas numeros tiene. Finalmente laruleta se pone en marcha y se seleccionara aquel individuo que sea poseedor del numeroque salga.

Torneo: En este metodo de seleccion se toman al azar un numero de individuos, quedando-nos finalmente con el mejor de ellos. Generalmente, en el metodo de seleccion por torneo,el numero de individuos que se seleccionan aleatoriamente entre la poblacion esta com-prendido entre 2 y 5.

2.2.3. Tipo Cruce

1 Punto: Se elige un punto aleatorio de los padres y se dividen en dos partes. Se toma lacola (de izquierda a derecha, la parte de la derecha) y se crean nuevos hijos intercambian-do las colas.

Page 14: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

8 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO

2 Puntos: Elegimos 2 puntos aleatorios, se divide cada padre en tres partes y la parte quequeda entre los dos puntos de corte es la parte que se intercambian para crear los nuevoshijos.

Uniforme: opera recombinando el material genetico de una pareja de cromosomas gen agen. A priori se define una probabilidad Pu, con la cual para producir los dos descendien-tes, se procede ası:

Con Pu se sortea cada gen, si el sorteo ası lo indica se intercambian los genes homologosde ambos padres, en caso contrario dichos genes permanecen inalterados. Normalmentese crea una mascara (un vector con 0s y 1s, que definiran si se cruza o no, este vectortendra el tamano de los cromosomas padres que estamos tratando), una vez definida lamascara se mira uno a uno los genes y en funcion del valor de la mascara se cruzan o no.

Slp: Se selecciona al azar un gen de cada cromosoma y se intercambian los subgra-fos definidos por cada gen. Dicho de otra manera, tenemos un Γ = {u1, · · · , un} yun Γ′ = {u′1, · · · , u′n} que son dos slp. Tomamos una posicion de Γ aleatoriamente1 ≤ k ≤ n. Entonces, Suk

= {u′j1 , · · · , u′jm} es el codigo de Γ debido a la evalua-

cion de uk asumiendo que j1 . . . jm. Luego cogemos aleatoriamente otro punto t peroesta vez de Γ′ con m ≤ t ≤ n y modifico Γ′ substituyendo las instrucciones del sub-conjunto {u′t−m+1, · · · , u′t} en Γ′ por las instrucciones de Γ en Suk

renombrando ade-cuadamente. La funcion de renombramiento R (definida sobre Suk

), esta definida comoR(uji

) = u′t−m+1, para todo i ∈ {1 . . .m}. Con este proceso conseguimos el primer hijode Γ y Γ′. Para obtener el segundo hijo repetiremos simetricamente esta estrategia, peroahora empezamos elegiendo una posicion k′ en Γ′. Para una mejor comprension consultarel ejemplo de [4].

Slp-ext: Se selecciona al azar un gen de cada cromosoma y se inserta el subgrafo quedefine cada gen escogido en el otro cromosoma.

2.2.4. Tipo Mutacion

Simple: La mutacion se realiza en un unico gen del cromosoma del individuo elegidopara sufrir la mutacion.

Completa: Se recorren todos los genes del cromosoma y para cada uno de ellos se apli-ca una probabilidad de mutacion de dicho gen. Generalmente dicha probabilidad es elinverso del numero de genes del cromosoma.

Page 15: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 2. EL ALGORITMO EVOLUTIVO 9

2.2.5. Tipo Fitness

Fitness con una p norma para la clase SLP. Calcula el error absoluto medio mediante lafuncion:

error absoluto medio =

∑ni=0 |f(xi)− yi|

n

Donde n son los puntos de evaluacion que tenemos.

Error cuadratico medio con una p norma para la clase SLP. Parecido pero esta vez eloperador de fitness viene definido como:

error absoluto medio =

∑ni=0(f(xi)− yi)

2

n

Donde n son los puntos de evaluacion que tenemos

Error empırico cuadratico medio y teorico AIC (Akaike Information Criterion): operadorde fitness viene definido por :

AIC error = error ∗1 + h

m

1− hm

Donde error es el error cuadratico medio y h el ındice de no linealidad. Por ejemplo,en el caso de polinomios h puede ser el grado o bien el numero de coeficientes. Ası, unpolinomio en una variable de grado 2 posee 3 coeficientes: el de grado 2, el de grado 1 yel termino independiente.

Error empırico cuadratico medio y teorico BIC (Bayesian Information Criterion): opera-dor de fitness con error empirico cuadratico medio y teorico BIC para la clase SLP vienedefinido como:

BIC error = 1 +h ln(m)

m− hDonde error es el error cuadratico medio y h el ındice de no linealidad.

Error empırico cuadratico medio y teorico VC (Vapnik-Chernovsky): operador de fitnesscon error empirico cuadratico medio y teorico VC para la clase SLP viene definido como:

V C error = error ∗ (1−

√√h

m{1− ln(

√h

m)}+

lnm

2m)−1

Donde error es el error cuadratico medio y h el ındice de no linealidad (ver [4] seccion4.1).

Page 16: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

10 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO

2.2.6. Tipo Fitness de las Constantes

Normal: se clasifica cada uno de los individuos en base al fitness de cada uno, y se tomacomo fitness para esa poblacion el fitness del mejor de todos.

Elite: se clasifica los individuos en base al fitness de cada uno y luego se toma el mejorde todos como fitness.

EliteMax: lo mismo, se clasifica y el fitness se obtiene mediante el fitness del mejor de laelite y uno al azar.

EliteMed: el fitness sera la media de la elite y uno al azar.

2.2.7. Tipo Semilla

Describe si utilizamos todo el rato el mismo numero aleatorio o no:

Fija: utilizamos en todo momento el mismo numero aleatorio que es generado al principiodel algoritmo evolutivo.

Aleatorio: generamos un numero aleatorio cada vez que queramos utilizarlo.

En el siguiente diagrama 2.3 mostramos el flujo de una prueba tıpica en nuestro algoritmoevolutivo.

Primero cargamos los parametros del problema como pueden ser tipo fitness, tipo cruce, tipopoblacion, . . . y pasamos a crear los operadores y la poblacion de slp’s inicial. Una vez quetenemos la poblacion inicial, evaluamos sus individuos y vemos si el mejor individuo aproxi-ma los puntos con un valor menor al error permitido o si hemos llegado al numero maximode generaciones definidas en los parametros iniciales. Si es menor al error definido o si hemosconsumido el maximo de generaciones definidas en la carga de operadores pasamos a validar elresultado.

Page 17: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 2. EL ALGORITMO EVOLUTIVO 11

Figura 2.3: Diagrama de flujo de una prueba tıpica de un algoritmo evolutivo[1]

Page 18: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

12 2.3. TERMINOLOGIA SLP

Si el mejor individuo aun no aproxima los suficientemente bien, entonces tomamos la pobla-cion, le aplicamos las operaciones de cruce y mutacion a sus individuos y volvemos a calificarla nueva poblacion.

Una vez que hayamos evaluado el resultado mostramos el mejor SLP.

2.3. Terminologıa SLP

Un SLP (Straight Line Program) es un programa basado en una serie de funciones que seusan de forma recursiva. Es decir, un SLP consiste en un numero finito de asignaciones, cadauna de las cuales se obtiene aplicando unas determinadas operaciones y tomando una serie deargumentos que pueden ser variables, constantes o resultados anteriormente calculados (los ui

que se describen mas adelante)[5].

Una de las ventajas de utilizar este tipo de estructuras es que un slp reutiliza calculos he-chos con anterioridad durante el proceso de evaluacion. Por ello se van a utilizar este tipo deestructuras en el algoritmo genetico para resolver problemas de regresion simbolica.

Cada uno de los SLP esta constituido por:

F : conjunto de funciones, por ejemplo, F = {+,*,-}

aridad: no de argumentos de un slp, mas concretamente los argumentos de una fun-cion, por ejemplo: aridad(suma)=2.

T : conjunto de terminales T = V ∪ C, por ejemplo: T ={1,x,y} , donde

V: conjunto de variables {X1, . . . , Xn}, en este caso {x,y}

C: conjunto de constantes {C1, . . . , Cn}, en este caso {1}. Las constantes puede serreales o mudas.

Γ : Es el conjunto de instrucciones, Γ = {I1, . . . , In}, donde Ik ≡ Uk . Cada uno de losslp’s esta compuesto por varias instrucciones o asignaciones, por ejemplo:

Γ ≡

u1 := x1 + 1

u2 := u1 ∗ u1

u3 := x2 + x2

u4 := u2 ∗ u3

u5 := u4 + u5

(2.1)

Page 19: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 2. EL ALGORITMO EVOLUTIVO 13

O(Γ): conjunto de salida de un slp (Γ), por ejemplo O(Γ) = u3

φ(Γ): La funcion semantica, convierte el input en el output del programa. Para nuestroejemplo,

φ(Γ) = (x+ 1)2 + y

Por tanto, en nuestro algoritmo evolutivo cada uno de los individuos es un slp. A su vez cadaslp tendra un numero de genes. Finalmente, cada uno de los genes sera una instruccion formadapor un operacion (+,−, ∗) y unos operandos (variables, constantes reales, constantes mudas uotras instrucciones).

2.4. Evolucion-Coevolucion

La evolucion en respuesta a factores abioticos, tales como el clima, no son procesos coevolu-

tivos ya que no son factores vivientes sujetos a la evolucion biologica. En cambio la coevolucion

trata de procesos como las interacciones entre el predador y su presa, el parasito y su huesped,

la flor y el polinizador, el arbol y la micorriza . . . etc. En muchos casos la coevolucion tiene

lugar entre una compleja red de especies que influyen unas en otras. En ese caso se habla de

’coevolucion difusa’, posiblemente este es el tipo de coevolucion mas comun [6].

Para comprender el interes de este Proyecto Fin de Master, es importante resaltar la dife-rencia entre evolucion y coevolucion. La descripcion de evolucion y coevolucion siguienteesta centrada en un algoritmo evolutivo en donde utilizamos SLP para describir cada uno de losindividuos. Cada individuo representa una funcion que aproxima unos puntos de entrada.

La evolucion es el proceso de Programacion Genetica que trabaja con las propias estructurasque codifican los SLP’s y despues de una serie de generaciones nos proporciona el mejor SLPobtenido.

Sin embargo, nuestro metodo coevolutivo alterna un algoritmo de Programacion Geneticaque trabaja con los SLP y un Algoritmo Genetico que trabaja con las constantes. Mediante elalgoritmo de Programacion Genetica intentamos averiguar la forma que tiene la funcion quese pretende averiguar, por ejemplo, si la funcion es un polinomio de grado 3 o de grado n. Encambio con el algoritmo genetico, una vez que sabemos la ’forma’ de la funcion, se trabaja con

Page 20: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

14 2.5. OBJETIVO

las constantes del problema (constantes reales y mudas).

En concreto en nuestro problema, mediante el algoritmo evolutivo adivinamos el aspec-

to de la funcion, por ejemplo, el algoritmo evolutivo nos ha devuelto como mejor individuo:x3 +2x2 +3x+4 , de este individuo podemos imaginar que la funcion que aproxima los puntoses de grado=3 y tiene esa forma Ax3 +Bx2 +Cx+D, y luego mediante el algoritmo coevolu-tivo intentarıamos optimizar esas constantes mudas A, B, C y D. Por tanto este proyecto fin demaster se centra en la parte coevolutiva donde se tratara de optimizar las constantes mudas.

2.5. Objetivo

El objetivo de este trabajo es hacer que el algoritmo evolutivo aproxime mejor un determi-nado numero de puntos mediante la optimizacion de las constantes mudas del problema.

Para ello al algoritmo evolutivo se le debe de definir lo siguiente: una serie de funciones,constantes, variables, tipo de cruce, tipo de mutacion, etc, de tal manera que el algoritmo me-diante esos datos de entrada genere una funcion que mejor aproxime los puntos, tomando elerror cuadratico medio como medida de error (fitness).

Para encontrar las mejores constantes mudas una opcion es hacer una ’prueba-error’ queconsiste en ir dando valores a las mismas y ver cual es la combinacion que mejor aproxima a lospuntos de coordenadas (xi, yi). Pero en este proyecto, en vez de utilizar este metodo simple deprueba-error se intenta encontrar un metodo adecuado para la optimizacion de estas constantes.Se tratara de demostrar que optimizando las constantes mudas el algoritmo converge mas rapidohacia la solucion del problema.

Como podemos ver en el apartado anterior, concretamente en los tipos de poblacion (ver2.2.1), tenemos la poblacion de constantes y la poblacion SLP’s. Decimos que un algoritmo escoevolutivo cuando alterna la parte evolutiva que se encarga de ajustar la poblacion SLP con laparte coevolutiva que se encarga de ajustar las constantes. Nuestro trabajo se centrara en estesegunda parte (coevolucion).

Page 21: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Capıtulo 3

Metodos para optimizacion de lasconstantes mudas

Existen diferentes metodos de optimizacion que pueden servir para el desarrollo de la coevolu-cion del algoritmo, mediante la optimizacion de las constantes mudas, como se ha descrito enel capıtulo anterior. En las siguientes lıneas se presentan tres posibles metodos.

Metodo de descenso del gradiente

Metodo de Gauss Newton

Metodo del gradiente conjugado

3.1. Metodo de descenso del gradiente

Con el objeto de encontrar el mınimo local de la funcion, este metodo realiza en cada iteracionun paso igual al gradiente pero con signo contrario. El descenso del gradiente se basa en quesi una funcion f(x) esta definida y es diferenciable en un punto a, entonces la funcion f(x)

decrece mas rapido si partimos de a en la direccion contraria del gradiente de F en a, -5F (a).Es decir si tomamos un punto b tal que:

b = a− ε5 F (a), para un ε > 0

15

Page 22: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

16 3.1. METODO DE DESCENSO DEL GRADIENTE

Entonces F (a) ≥ F (b). Si partimos de x0 y consideramos la secuencia {x0, x1, · · · }, tal que

xn+1 = xn − εn5 F (xn), n ≥ 0

Tenemos que:F (x0) ≥ F (x1) ≥ · · · ≥ F (xn), entonces la secuencia {x0, x1, · · · , xn} converge hacia elmınimo local de F.

A continuacion se muestran los pasos del algoritmo.

Algoritmo [7]

1. Consideremos un punto inicial x = x0. Hacer k=0

2. Escoger una direccion de descenso dk = −5 f(xk)

3. Realizar una busqueda lineal que seleccione un paso αk tal que:

gk(αk) = f(xk + αkdk) < f(xk) = gk(0)

4. Hacer que xk+1 = xk + αkdk

5. Hacer un test de convergencia (por ejemplo ‖ 5f(xk) ‖< ε), si converge se detiene elmetodo, si no se hace k=k+1 y se vuelve al paso 2.

Desventajas

Es un metodo bastante lento cuando estamos proximos al mınimo de la funcion.

Zig-zagea en cuanto se encuentra un valle (ver 3.2)

Puede ser dıficil encontrar el valor de ε

La figura 3.1 muestra graficamente como funciona el metodo de descenso del gradiente.

Page 23: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 3. METODOS PARA OPTIMIZACION DE LAS CONSTANTES MUDAS 17

Figura 3.1: Metodo del descenso del gradiente [2]

Figura 3.2: Zig-Zagging del descenso del gradiente

Page 24: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

18 3.2. METODO DE GAUSS-NEWTON

3.2. Metodo de Gauss-Newton

Para el problema que nos concierne, el objetivo es encontrar las constantes mudas (~β), ennuestro ejemplo de la seccion 2.4, tal que la funcion del modelo yi = f(xi, ~β), aproxime mejorlos puntos (xi, yi). Las funciones ri son los residuales de la funcion f(xi, ~β):

ri(β) = yi − f(xi, ~β) (3.1)

Entonces dadas m funciones r1, · · · , rm de n variables ~β = (β1, · · · , βn) con m ≥ n elmetodo de Gauss-Newton encuentra el mınimo de la suma de los cuadrados de los residuales:

S(β) =m∑

i=1

r2i (~β)

El residual de la ecuacion 3.1, sera el residual del mejor SLP en esa generacion del algoritmoevolutivo.

Como se muestra a continuacion, el metodo de Gauss Newton se basa en operaciones conla matriz jacobiana de la funcion. La matriaz jacobiana del vector residual con respecto de ~β,donde tenemos r = r1, · · · , rm puntos y n constantes mudas ~β = (β1, · · · , βn), viene definidade la siguiente forma:

Jri= (

dr1dβ1

,dr2dβ1

, · · · , dr1dβ2

, · · · , drm

dβn

)

Para aplicar el algoritmo, se necesitan definir los siguientes parametros:

Unos valores iniciales para las constantes (betas) ~β0

Valor de convergencia, el error objetivo ε

ALGORITMO [8]

1. Evaluamos f(x)

Page 25: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 3. METODOS PARA OPTIMIZACION DE LAS CONSTANTES MUDAS 19

2. Calculamos el vector residual:

ri = yi − fi

3. Vemos el error que estamos cometiendo al amplicar cada constante en4, y comparamoscon el error objetivo propuesto:

∑n1 r

2i

n< errorObjetivo

4. Si esto se cumple entonces paramos el algoritmo de Gauss-Newton para la optimizacionde las constantes mudas, si no continuamos en el paso siguiente.

5. Calculamos la matriz jacobiana (Jf ) para el vector de funciones y su transpuesta (Jf )T ,con respecto de los betas (en la primera iteracion sera con respecto a β0).

Sabemos que la jacobiana sera la derivada de la funcion fi para cada una de las constantesmudas del slp. Las constantes mudas constituiran nuestro betas.

6. Resolver la siguiente ecuacion para obtener el4 en cada paso:

(JTf Jf )4 = JT

f r (3.2)

7. Hacer :

~β(i+1) = ~β(i) +4 (3.3)

~β es un vector con las constantes mudas, por tanto incrementamos cada constante mudaen4, si las constantes mudas son A y B:

A1, B1 = (A0 +41, B1 +42)

8. Volvemos al PASO 1.

La ecuacion 3.2, que viene descrita como:

(JTf Jf )4 = JT

f r

Page 26: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

20 3.2. METODO DE GAUSS-NEWTON

Es equivalente a:

(JTr Jr)4 = −JT

r r (3.4)

(Esta ultima es la que utilizaremos en nuestro algoritmo evolutivo ya que la funcion eval queexplicaremos mas adelante nos devuelve el valor de f(xi))

Por tanto podemos ver que el metodo de Gauss-Newton se obtiene ignorando la derivadasegunda del metodo newton y ello conlleva a que tengamos que calcular la derivada primera def (o r en nuestro caso).

Se resuelve dando los siguientes pasos:

Multiplicamos ambos lados de la ecuacion por la inversa de (JTf Jf ) y de esta manera

conseguimos la matriz identidad o lo que es lo mismo dejar nuestro vector 4 a un ladode la ecuacion. En la subseccion 4.3.2 tenemos el codigo para calcular la inversa de unamatriz.

(JTr Jr)

−1 ∗ (JTr Jr)4 = −(JT

r Jr)−1 ∗ JT

r r (3.5)

I ∗ 4 = −(JTr Jr)

−1 ∗ JTr r (3.6)

4 = −(JTr Jr)

−1 ∗ JTr r (3.7)

Una vez definido el metodo de Gauss-Newton es conveniente hacer una aclaracion sobre lossiguientes parametros: numero de iteraciones Gauss-Newton y eleccion valores iniciales.

Numero iteraciones metodo Gauss-Newton : Dentro del algoritmo evolutivo existe unnumero determinado de generaciones y sera necesario definir el numero de generacio-nes que se utilizaran en las pruebas de este proyecto. Como es un algoritmo de rondasseparadas, se aplica 75 % evolucion y 25 % coevolucion. A continuacion, dentro de lacoevolucion, en cada generacion, se intenta aproximar las constantes mudas mediante elmetodo de Gauss-Newton. Esta aproximacion de las constantes mudas se realizara comomaximo en siete iteraciones. Eso quiere decir que se podra parar el metodo de Gauss-Newton por varias razones: numero de iteraciones (5), converge antes de las 5 iteracioneso diverge.

Page 27: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 3. METODOS PARA OPTIMIZACION DE LAS CONSTANTES MUDAS 21

Valores iniciales: Como se ha descrito anteriormente, el metodo de Gauss-Newton partede unos valores para las constantes mudas. En este experimento se partira de los valores

que tengan las constantes mudas accediendo al vector CtesMudas. Existen metodos paraobtener el valor inicial optimo para que converja mas rapidamente pero esto se tratara co-mo trabajo futuro.

Desventajas

El metodo de Gauss-Newton no siempre converge. Sabemos que 5 es la direccion de des-censo, si el S(βn) no es un punto estacionario, entonces se cumple que S(βn + α5) < S(βn)

siempre y cuando el α > 0 y suficientemente pequeno.

3.2.1. Otras versiones del algoritmo

Si el metodo anterior diverge, lo que podemos hacer es coger la fraccion de α del vector deincremento 5, de la formula 3.3. El metodo diverge porque el vector de incremento es dema-siado largo, por tanto cogiendo la fraccion de α, intentamos ”acortar” el vector de tal maneraque no nos diverja la solucion. Para encontrar ese α optimo podrıamos utilizar un metodo debusqueda directo en el intervalo 0 < α < 1.

En los casos en los que α sea practicamente cero, podemos utilizar el algoritmo de Levenberg-Marquardt [9].

3.2.2. Otros metodos parecidos

A parte del metodo anteriormente mencionado de descenso del gradiente (ver 3.1), hay meto-dos que se parecen mucho al de Gauss-Newton, como pueden ser el metodo de Quasi-Newton,donde la matriz Hessiana es estimada partiendo de las derivadas primeras.

3.3. Metodo del gradiente conjugado

El metodo del gradiente conjugado es un algoritmo para resolver numericamente los sistemasde ecuaciones lineales cuyas matrices son simetricas y definidas positivas. Cuando se da este

Page 28: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

22 3.3. METODO DEL GRADIENTE CONJUGADO

caso el metodo del gradiente conjugado necesita muy poca memoria para ser realizado. Un malcondicionamiento de la matriz provoca que converja lentamente.

La idea basica del metodo del gradiente conjugado consiste en construir una base de vec-tores ortogonales y utilizarla para realizar la busqueda de la solucion de forma mas eficiente.Tal forma de proceder generalmente no serıa aconsejable porque la construccion de una baseortogonal utilizando el procedimiento de Gramm-Schmidt requiere, al seleccionar cada nuevoelemento de la base, asegurar su ortogonalidad con respecto a cada uno de los vectores cons-truıdos previamente. La gran ventaja del metodo de gradiente conjugado radica en que cuandode utiliza este procedimiento, basta con asegurar la ortogonalidad de un nuevo miembro conrespecto al ultimo que se ha construido, para que automaticamente esta condicion se cumplacon respecto a todos los anteriores [10].

Diferenciacion automatica para el calculo de derivadas

Todos estos metodos necesitan el valor de la derivada de una funcion. Existen diferentesmaneras de obtener la derivada. Podemos utilizar el metodo clasico de derivacion simbolica.El inconveniente de la derivacion simbolica es la lentitud y la dificultad de convertir programasenteros en una unica expresion para luego poder derivarla y evaluarla en un punto mientras quela derivacion numerica puede introducir errores de redondeo en el proceso de discretizaciony cancelacion. Sabemos que ambos metodos tienen problemas a la hora de calcular derivadasde mayor grado donde el error y la complejidad crece. Ambos metodos son lentos a la hora decalcular las derivadas parciales de una funcion con muchos inputs (variables).

Estos dos metodos se pueden aplicar sobre funciones bien definidas, por ejemplo funcionesformadas por combinaciones de otras funciones mas sencillas. Sin embargo, nosotros necesita-mos tener una herramienta que nos haga posible derivar todo tipo de funciones definidas por elprogramador. Mediante la diferenciacion automatica no tenemos que definir una clase diferenteque implemente la derivada. La diferenciacion automatica nos permite obtener la derivada y elvalor de una funcion definida en algun punto del programa, sin perdida de precision ni tiempode programacion.

Page 29: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Capıtulo 4

Entorno de Pruebas y Herramientas

El metodo de busqueda directa que vamos a utilizar en nuestro algoritmo evolutivo paraoptimizar las constantes mudas del problema es el metodo de Gauss-Newton, ya que no necesitael calculo de las derivadas segundas lo que hace que el algoritmo del calculo de la derivada sesimplifique mucho. Como bien sabemos, todos los metodos anteriormente mencionados partende la derivada de una funcion y hemos visto que la diferenciacion automatica se presenta comouna de las tecnicas mas interesantes para obtener la derivada (como veremos en la seccion 4.6.

4.1. Estructura del programa

En el grafo siguiente grafo 4.1 podemos ver el diagrama de dependencias para la la funcionproSLP. Los numeros del grafo definen el orden de las llamadas del programa. La funcionproSLP define un problema de tipo slp y llama a su vez a crSLP (paso 1). Como bien define sunombre, crSLP va a definir un cromosoma y todas las operaciones que un cromosoma necesite.A su vez esta funcion llamara a genSLP (paso 2) que definira cada gen del cromosoma.

En el siguiente apartado podemos ver que la funcion eval, que nos sirve para calcular el valorde un SLP, viene definida en crSLP. proSLP llama a crSLP y este a genSLP para obtener losvalores de las variables de cada gen del cromosoma e ir calculando el valor de cada gen. Paraello genSLP devuelve a crSLP el valor de las variables que componen el gen y el operando querepresenta (paso 3).Posteriormente crSLP le pasa el valor a proSLP (paso 4).

Por ultimo el proSLP a traves de funcion.h llamara a funtoresBase.h (pasos 5 y 6) y calcu-lara el valor de cada gen del cromosoma. Una vez calculado el valor del cromosoma y pasado

23

Page 30: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

24 4.2. FUNCIONES DEL ALGORITMO EVOLUTIVO

Figura 4.1: Diagrama de dependencias para la funcion proSLP

el valor a proSLP (pasos 6 y 7), se procedera a calcular el valor del slp que obtendremos en laultima posicion del vector Uvars que definiremos mas adelante.

4.2. Funciones del Algoritmo Evolutivo

En este apartado definiremos las funciones que se han modificado, con respecto a los trabajosanteriores, y las nuevas que se han creado para un correcto uso del metodo de Gauss-Newton.

4.2.1. Funcion Eval

Enmarcada dentro del archivo crSLP, la funcion eval calcula el valor del SLP que codificaun cromosoma, es decir el f(xi). En nuestro caso, cada individuo de la poblacion del algoritmoevolutivo es un SLP que esta representado mediante una codificacion o cromosoma, y dondecada gen del cromosoma no es otra cosa que cada una de la asignaciones del SLP (recordad laestructura de un slp descrita en 2.2). Por tanto es la funcion que debemos analizar para modifi-car el codigo y mediante la herramienta ADOL-C calcular las derivadas del SLP. Despues delcodigo de la funcion eval hacemos una pequena descripcion del metodo en funcion.

Page 31: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 25

Parametros de entrada: vars

Es un vector de tipo double que contiene los puntos (xi) en los que queremos evaluar elcromosoma. Por ejemplo, si tenemos cr1.eval(4), entonces estamos evaluando el slp enel punto (xi = 4).

Parametros de salida: El valor del slp en el punto definido por vars, f(xi).

El codigo de la funcion es el siguiente:1 double crSLP : : e v a l ( c o n s t v e c t o r <double> & v a r s )2 {3 proSLP & pr = s i n g l e P r o S L P : : r e f ( ) ;4 v e c t o r <double> UVars ( s l p E f e c t i v o . s i z e ( ) ) ; / / v a l o r e s de l o s nodos , cada a s i g n a c i o n e s un nodo56 pr . f i j a C u r r e n t V a r s ( v a r s ) ;78 f o r ( unsigned i n t i = 0 ; i < s l p E f e c t i v o . s i z e ( ) ; i ++) / / eva luamos e l s l p e f e c t i v o9 {

10 v e c t o r <double> r e a l A r g s ; / / v a l o r e s r e a l e s de l o s nodos11 f o r ( unsigned i n t j = 0 ; j < s l p E f e c t i v o [ i ] . a r g s . s i z e ( ) ; j ++)12 {13 c o n s t i n t & i n d i c e = s l p E f e c t i v o [ i ] . a r g s [ j ] ;14 i f ( i n d i c e >= 0) r e a l A r g s . p u s h b a c k ( p r [ i n d i c e ] ) ; / / e s un t e r m i n a l15 e l s e r e a l A r g s . p u s h b a c k ( UVars[− i n d i c e − 1 ] ) ; / / e s o t r o nodo16 }17 UVars [ i ] = p r . dameFuncion ( s l p E f e c t i v o [ i ] . f u n t o r )−>e v a l ( r e a l A r g s ) ; / / e v a l u o18 pr . addTo ta lGenEva l ( ) ; / / i n c r e m e n t a c o n t a d o r19 }2021 # i f d e f DEBUG / / Mues tro e l SLP22 f o r ( unsigned i n t i = 0 ; i < s l p E f e c t i v o . s i z e ( ) ; i ++)23 {24 c o u t << ” u ” << i << ”=” ;25 c o u t << UVars [ i ] << e n d l ;26 }27 # e n d i f2829 re turn UVars [ s l p E f e c t i v o . s i z e ( ) − 1 ] ;30 }

Llamamos nodo a cada una de las asignaciones ui del slp, ya que un slp se se puede repre-sentar mediante un grafo dirigido y cada asignacion serıa un nodo.

Las variables del problema son los parametros que definimos como ’variables’ en el ficherode entrada. En este fichero de entrada ademas de las variables describimos las constantes mudas,reales, y otros parametros para nuestro experimento con el algoritmo evolutivo. Las variablesdel problema pueden ser x, y, . . ..

En cambio, llamamos variables de una funcion a aquellas que definimos para una funcionen concreto. En la funcion eval las variables son las siguientes:

Page 32: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

26 4.2. FUNCIONES DEL ALGORITMO EVOLUTIVO

SlpEfectivo: vector compuesto solo por los genes que son necesarios para el calculo dela funcion de salida, donde cada gen es una asignacion del slp. El gen esta compuestopor dos campos: un vector de tipo double que guarda los argumentos que tiene ese gen oasignacion del slp (ui), y por otra parte la funcion que se aplica sobre esos argumentos,por ejemplo: a+b , funcion: ’+’, argumentos: ’a’ y ’b’.

Figura 4.2: Slp efectivo

Args: en este vector organizamos las variables del problema, de tal forma que segun laposicion en el vector, la variable sera una constante muda, constante real, una variable delproblema o una asignacion.

Las posiciones del vector args estan organizadas de la siguiente manera:

Figura 4.3: vector Args

• Otros nodos/asignaciones: Si el ındice toma un valor negativo, eso quiere decir quese trata de una asignacion ui y gracias a la estructura particular del slp, su valor ya hasido calculado con anterioridad. Esto conlleva una reduccion importante de tiempode ejecucion. Por ejemplo si el ındice toma el valor de -1, entonces eso quiere decirque estamos accediendo al valor guardado por la asignacion u1. Los valores de cadauna de estas asignaciones se guardan como bien hemos descrito anteriormente en elvector Uvars.

• Constantes mudas: Si el valor del ındice esta entre:[0 . . . ctesMudas.size()− 1], entonces es una constante muda.

• Constantes reales: Si el valor del ındice esta entre las posiciones[ctesMudas.size() . . . ctesMudas.size()+ctesReales.size()−1] entonces es unaconstante real.

Page 33: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 27

• Variables del problema: Las variables del problema se guardan a partir de la siguien-te posicion a la ultima constante real:[ctesReales.size() . . . ctesReales.size() + numV ars− 1]

realArgs: vector double con cada uno de los valores de los argumentos de la asignacionui. Por ejemplo, si tenemos u2 = x + u1, entonces en realArgs tendremos los valores dex y u1.

UVars: vector double del tamano del numero de asignaciones totales del slpEfectivo.Guarda en cada posicion el valor de cada uno de los nodos que componen el slpEfec-tivo (cada uno de los valores de las asignaciones ui).

Nuestro algoritmo evolutivo es elitista, con lo que se garantiza que el mejor individuo obte-nido hasta el momento esta siempre presente en la poblacion actual. Para la evaluacion de unslp, se accede al valor de las variables, constantes mudas y constantes reales para a continuacionproceder a la evaluacion propiamente dicha.

En la lınea 14 vemos que si el ındice de Agrs es negativo, senal de que es un nodo/asignaciony por tanto el valor ya esta calculado (por ejemplo, para el ejemplo del slp (ver 2.2), si x=2 en-tonces u2 guarda el valor ((2+1)*3=9), este valor lo guardamos en el vector Uvars en su posicioncorrespondiente, en cualquier otro caso accedemos posicion pr[indice], que no es mas que elvalor de la constante muda, real o variable del problema.

Podemos ver en la lınea 17 que:UV ars[i] = pr.dameFuncion(slpEfectivo[i].funtor)− > eval(realArgs); // evaluo

En Uvars[i] estamos calculando el valor de cada una de las asignaciones/nodos por los queesta compuesto un slp. Para ello obtenemos la funcion de ese gen en concreto, mediante lallamada dameFuncion(slpEfectivo[i].funtor) y una vez obtenida la funcion (+,-,*,. . . ), eva-luamos, pasandole los argumentos de ese slp mediante la llamada eval(realArgs).

Para calcular la funcion (suma, resta o cualquier otra expresion) debemos de acceder al fi-chero funtoresBase.h. Ahı vienen definidas todas las funciones y su modo de funcionamiento.Ya sea la funcion de suma, resta, multipliacion, etc.

Page 34: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

28 4.2. FUNCIONES DEL ALGORITMO EVOLUTIVO

4.2.2. Funtores Base

Las funciones base que estan implementadas para este algoritmo evolutivo vienen definidasen el fichero funtoresBase.h. Podemos ver un pequeno ejemplo para la suma:

1 /∗ ∗ Clase de l a f u n c i o n \ f $ x+y \ f $ .2 \ n o t e Ar idad = 2 . ∗ /3 c l a s s funADD : p u b l i c f u n c i o n<double>

4 {5 s t r i n g t o S t r i n g ( ) c o n s t6 { re turn ”+” ; }7 double e v a l ( c o n s t v e c t o r <double> & a r g s )8 {9 i f ( a r g s . s i z e ( ) != 2 ) throw r u n t i m e e r r o r ( ”funSUM : : e v a l ( ) : numero de a rgumen tos i n c o r r e c t o ” ) ;

10 double aux = a r g s [ 0 ] + a r g s [ 1 ] ;11 i f ( i s i n f ( aux ) | | i s n a n ( aux ) ) re turn DBL MAX;12 e l s e re turn aux ;13 }14 unsigned i n t a r i d a d ( )15 { re turn 2 ; }16 } ;

En la variable aux guardamos el valor de la suma de los argumentos (aux = args[0] +

args[1]). En el caso de que en el vector de args no haya dos elementos, la funcion devuelve unexcepcion, ya que para la suma necesitamos dos argumentos. Esto puede ser un problema a lahora de utilizar ADOL-C, que describiremos mas adelante.

Para el metodo de Gauss-Newton, debemos derivar el slpEfectivo en funcion de las cons-tantes (ver metodo de Gauss-Newton 3.2) y no con respecto de las variables del problema(x, y, . . .). Como bien hemos visto en el manual de ADOL-C:

Todas las variables que deben de ser consideradas como cantidades derivables en algunpunto de la ejecucion del programa deben de ser de tipo activas.

Para saber si una variable es independiente o dependiente, sabemos que: aquella variablesobre la cual queremos derivar va a ser nuestra variable independiente, mientras que todasaquellas variables que van a ser calculadas a traves del valor de las variables independien-tes son las denominadas variables dependientes.

4.2.3. Problema

Centrandonos en nuestro ejemplo, si queremos derivar la funcion eval, debemos de llamara la funcion eval desde una seccion activa. Y por tanto el tipo de la variable que devuelva eval

Page 35: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 29

debe de ser adouble. Pero como sabemos, la funcion eval devuelve un double, que no es otracosa que el valor de UVars[slpEfectivo.size() - 1]. Uvars es un vector que guarda los valores decada una de las asignaciones, y es de tipo double. Si cambiamos el tipo que devuelve la funcioneval de double a adouble, al hacer el return del valor de Uvars no funcionarıa ya que Uvars esde tipo double y hemos dicho que la funcion debe devolver un tipo adouble. Por tanto esto noslleva a pensar que Uvars deberıa estar compuesto por elementos de tipo adouble.

Por otra parte, como bien hemos visto anteriormente, Uvars se actualiza mediante la siguienteinstruccion:

UV ars[i] = pr.dameFuncion(slpEfectivo[i].funtor)− > eval(realArgs);

Entonces, la funcion eval del fichero ’funtoresBase.h’ (ver el ejemplo funADD de la pagi-na anterior), tambien debera devolver un adouble para que al cargar el valor en Uvars[i] notengamos otra vez un problema de inconsistencias entre los tipos (la funcion eval del ficherofuntoresBase devuelve un valor tipo double).

Y ası sucesivamente, deberıamos de cambiar el tipo de todos los vectores que ”dependie-ran”de la variable activa. Esto nos lleva a la creacion de dos funciones que nos transformen poruna parte un valor de double a adouble (para dejar preparado para la derivacion), y por otraparte, una vez hecha la derivacion, de adouble a double para seguir con el curso del algoritmoevolutivo.

Por tanto lo mejor es definir una nueva funcion evalGN() que se asemeje a eval().

Hacer que evalGN() no dependa del problema, pasandole por parametro el vector de cons-tantes reales, constantes mudas y variables del problema y meter dentro de esta funcionevalGN() el metodo operador[] que sirve para acceder a los elementos de args.

Parametros de entrada: (variables del problema, constantes mudas, constantes reales). Lavariable que queremos derivar, en nuestro caso las constantes mudas (vector ctesMudas),debe de ser de tipo adouble. Los otros dos vectores: vector variables y vector de lasconstantes reales no hay necesidad de transformarlos ya que no se van a derivar.

Page 36: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

30 4.2. FUNCIONES DEL ALGORITMO EVOLUTIVO

En las siguientes lıneas describimos todas las funciones que se han cambiado y las nuevasque han tenido que ser creadas para el calculo de las derivadas de una funcion con respecto deuna variable y la posterior evaluacion de la funcion.

4.2.3.1. Conversion de Datos (conversion de datos double a adouble)

Uno de los mayores problemas que nos hemos encontrado es que la herramienta ADOLCutiliza el tipo de dato adouble para el calculo de las derivadas, por tanto necesitamos funcionesque conviertan de tipo double a adouble para el uso de la herramienta y posteriormente, una vezque hemos obtenido la derivada, de adouble a double para continuar con el programa.

Estas son las dos funciones que se han implementado:1 / / metodo para hacer l e c a s t de un v e c t o r do ub l e a un v e c t o r adoub le2 v e c t o r <adouble> doub l e Adoub le ( v e c V a r i a b l e s )3 {4 v e c t o r <adouble> v a r i a b l e s A ;56 f o r ( unsigned i n t j = 0 ; j < v e c V a r i a b l e s . s i z e ( ) ; j ++)7 {8 v a r i a b l e s A [ i ] <<= v e c V a r i a b l e s [ i ] ;9 }

10 re turn v a r i a b l e s A ;11 }

1 / / metodo para hacer l e c a s t de un v a l o r adoub le a d oub l e2 double A d o u b l e d o u b l e v a l o r ( va lo rA )3 {4 double v a l o r ;5 va lo rA >>= v a l o r ;6 }

4.2.4. Funcion evalGN

Para que el resto de las generaciones del algoritmo evolutivo haga lo que hacıa hasta ahorahe decidido duplicar las funciones eval, de tal manera que ahora tendremos dos: la funcion evaloriginal que ya existıa y luego la funcion evalGN que sera parecida a eval pero con ligeroscambios.

Por un lado esta nueva funcion devolvera un valor adouble, y tomara como parametros aparte de los puntos xi, las ctes reales y las constantes mudas. Como podemos comprobar lellamara al metodo evalGN de funtoresBase para calcular las operaciones matematicas basicas.De esta manera funtoresBase ahora poseera la funcion eval y la funcion evalGN.

Page 37: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 31

1 a d o u b l e crSLP : : evalGN ( c o n s t v e c t o r <double> & vars ,2 c o n s t v e c t o r <double> & ctesR ,3 v e c t o r <adouble> ctesM )4 {5 proSLP & pr = s i n g l e P r o S L P : : r e f ( ) ;6 v e c t o r <adouble> UVarsA ( s l p E f e c t i v o . s i z e ( ) ) ; / / v a l o r e s de l o s nodos78 pr . f i j a C u r r e n t V a r s ( v a r s ) ;9

10 f o r ( unsigned i n t i = 0 ; i < s l p E f e c t i v o . s i z e ( ) ; i ++) / / eva luamos e l s l p e f e c t i v o11 {12 v e c t o r <adouble> r ea lArgsA ;13 f o r ( unsigned i n t j = 0 ; j < s l p E f e c t i v o [ i ] . a r g s . s i z e ( ) ; j ++)14 {15 c o n s t i n t & i n d i c e = s l p E f e c t i v o [ i ] . a r g s [ j ] ; / / v a l o r e s r e a l e s de l o s nodos16 i f ( i n d i c e >= 0) / / e s un t e r m i n a l17 {18 i f ( i n d i c e < ctesM . s i z e ( ) ) / / e s una c o n s t a n t e muda19 rea lArgsA . p u s h b a c k ( ctesM [ i n d i c e ] ) ;20 e l s e i f ( i n d i c e < ctesM . s i z e ( ) + c t e s R . s i z e ( ) ) / / e s una c o n s t a n t e r e a l21 rea lArgsA . p u s h b a c k ( c t e s R [ i n d i c e − ctesM . s i z e ( ) ] ) ;22 e l s e / / e s una v a r i a b l e23 rea lArgsA . p u s h b a c k ( v a r s [ i n d i c e − ctesM . s i z e ( ) − c t e s R . s i z e ( ) ] ) ;24 }25 e l s e r ea lArgsA . p u s h b a c k ( UVarsA[− i n d i c e − 1 ] ) ; / / e s o t r o nodo26 }2728 UVarsA [ i ] = p r . dameFuncion ( s l p E f e c t i v o [ i ] . f u n t o r )−>evalGN ( rea lArgsA ) ; / / e v a l u o29 pr . addTo ta lGenEva l ( ) ; / / c o n t a d o r de o p e r a c i o n e s30 }3132 re turn UVarsA [ s l p E f e c t i v o . s i z e ( ) − 1 ] ;33 }

Esta funcion a diferencia de eval tomara valores adouble (ctesMudas) y tratara con tiposadouble en el caso de que la variable sea las que queremos derivar (ctesMudas e indirectamenteUvarsA y realArgsA).

El mayor problema que nos hemos encontrado es que la funcion eval a la hora de accederal vector args (de tipo double) iba a producir errores (por incompatibilidad de tipos), entonceshemos tenido que meter dentro de la funcion evalGN() el acceso a los vectores ctesMudas,

ctesReales y realArgs. De esta manera y mediante los dos nuevos vectores UVarsA y realArgsA

podemos obtener sin ningun problema el valor del slp y el valor de su derivada (ver lıneas18-25).

La funcion evalGN() calcula el valor del slp y su derivada mediante la herramienta ADOLC.Para ello hemos tenido que definir variables tipo adouble como son UvarsA y realArgs (lıneas6 y 12 de evalGN).

Page 38: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

32 4.3. FUNCIONES AUXILIARES DEL METODO DE GAUSS NEWTON

4.3. Funciones auxiliares del Metodo de Gauss Newton

En esta seccion definiremos todas las funciones y metodos que necesitaremos para llevar acabo el metodo de Gauss-Newton descrito en la seccion 3.2.

4.3.1. Calculo de la Matriz Jacobiana

La matriz jacobiana se obtiene mediante la herramienta ADOLC con la llamada al metodo ja-cobian(tag,m,n,x,J). Este metodo se definira junto a otros metodos de la herramienta ADOLCen la siguiente seccion.

4.3.2. Calculo de la Inversa de una Matriz

Como hemos podido ver en el algoritmo de Gauss-Newton 3.2, en concreto cuando hemosdespejado δ (ecuacion 3.7), hemos visto necesario el calculo de la inversa de una matriz para laresolucion del sistema planteado.

El calculo de la inversa se ha obtenido mediante el algoritmo de eliminacion de Gauss-Jordan, que se basa en una triangularizacion superior y luego otra inferior de la matriz a la cualse le quiere calcular la inversa. Para aplicar el metodo se necesita una matriz cuadrada de rangomaximo. El algoritmo de eliminacion de Gauss-Jordan sigue los siguientes pasos [11]:

1. Ir a la columna no cero extrema izquierda

2. Si la primera fila tiene un cero en esta columna, intercambiarla con otra que no lo tenga

3. Luego, obtener ceros debajo de este elemento delantero, sumando multiplos adecuadosde la fila superior a las filas situadas debajo.

4. Cubrir la fila superior y repetir el proceso anterior con la submatriz restante. Repetir conel resto de las filas (en este punto la matriz se encuentra forma escalonada)

5. Comenzando con la ultima fila no cero, avanzar hacia arriba: para cada fila obtener un 1delantero e introducir ceros por encima de esta mediante las operaciones correspondien-tes.

Page 39: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 33

La funcion programada en C++ para simular el algoritmo de eliminacion de Gauss-Jordanes la siguiente:

1 bool m a t r i z : : i n v e r t i r ( i n t p i v o t e =0 , bool i d a = t rue ) {2 /∗3 I n v i e r t e l a m a t r i z en t a b l a 2 . Re torna t r u e s i e l p r o c e s o se r e a l i z o con e x i t o , o sea4 s i l a m a t r i z en t a b l a es i n v e r t i b l e o de l o c o n t r a r i o f a l s e .5 P i v o t e es e l e l e m e n t o de l a d i a g o n a l bajo , o sobre , e l c u a l se a n u l a ra n l o s c o e f i c i e n t e s .6 i d a i n d i c a que paso se e j e c u t a , l a f o r m a c i o n de :7 i ) t r i a n g u l a r s u p e r i o r8 i i ) t r i a n g u l a r i n f e r i o r y s i m p l i f i c a c i o n9 ∗ /

10 i n t i , j ;11 double k ;12 i f ( ! ∗ ( ∗ ( t a b l a 2 + p i v o t e )+ p i v o t e ) ) re turn f a l s e ; / / M a t r i z no i n v e r t i b l e13 e l s e i f ( i d a )14 {15 / / Formacion t r i a n g u l a r s u p e r i o r16 i f ( p i v o t e ==dim−1) re turn i n v e r t i r ( p i v o t e , f a l s e ) ; / / Se l l e g a a l e l e m e n t o a [ n , n ] y se l lama a s i misma pero con f a l s e , o sea pasa a l paso i i17 e l s e {18 f o r ( i = p i v o t e ; i<dim−1; i ++)19 {20 k =∗ (∗ ( t a b l a 2 + i +1)+ p i v o t e ) / ∗ (∗ ( t a b l a 2 + p i v o t e )+ p i v o t e ) ; / / C a l c u l o de k21 f o r ( j =0 ; j<dim ∗2 ; j ++)22 ∗ (∗ ( t a b l a 2 + i +1)+ j ) =∗ (∗ ( t a b l a 2 + i +1)+ j )−∗(∗( t a b l a 2 + p i v o t e )+ j )∗ k ; / / Operac ion f i l a23 }24 re turn i n v e r t i r (++ p i v o t e ) ;25 }26 }27 e l s e28 {29 / / Fomacion t r i n a g u l a r i n f e r i o r30 i f ( p i v o t e ==0)31 { / / Se l l e g a a l e l e m e n t o a [ 1 , 1 ]32 k =1/ ∗ (∗ ( t a b l a 2 + p i v o t e )+ p i v o t e ) ;33 f o r ( j =0 ; j<dim ∗2 ; j ++)34 ∗ (∗ ( t a b l a 2 + p i v o t e )+ j )∗= k ; / / Se s i m p l i f i c a e l e l e m e n t o l a f i l a por e l e l e m e n t o de l a d i a g o n a l ( paso i i i )35 re turn true ;36 }37 e l s e38 {39 f o r ( i = p i v o t e ; i >0; i−−)40 {41 k =∗ (∗ ( t a b l a 2 + i −1)+ p i v o t e ) / ∗ (∗ ( t a b l a 2 + p i v o t e )+ p i v o t e ) ; / / C a l c u l o de k42 f o r ( j =0 ; j<dim ∗2 ; j ++)43 ∗ (∗ ( t a b l a 2 + i −1)+ j ) =∗ (∗ ( t a b l a 2 + i −1)+ j )−∗(∗( t a b l a 2 + p i v o t e )+ j )∗ k ; / / Operac ion f i l a44 k =1/ ∗ (∗ ( t a b l a 2 + p i v o t e )+ p i v o t e ) ;45 f o r ( j =0 ; j<dim ∗2 ; j ++)46 ∗ (∗ ( t a b l a 2 + p i v o t e )+ j )∗= k ; / / Se s i m p l i f i c a e l e l e m e n t o l a f i l a por e l e l e m e n t o de l a d i a g o n a l ( paso i i i )4748 }49 re turn i n v e r t i r (−−p i v o t e , f a l s e ) ;50 }51 }52 }

Page 40: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

34 4.4. FUNCION DE GAUSS NEWTON

4.3.3. Calculo de la matriz traspuesta y multiplicacion de matrices

El calculo de la matriz traspuesta y la multiplicacion de matrices las describen las dos si-guientes lıneas:

matriztraspuesta[i][j] = matriz[j][i]; (4.1)

Es decir se cambian las filas y columnas para obtener la traspuesta de una matriz. Mientrasque la multiplicacion de las matrices se obtiene de la siguiente manera:

p[i][j] = p[i][j] + (a[i][l] ∗ b[l][j]); (4.2)

En la matriz p calculamos la multiplicacion de las matrices a y b. Todos sabemos que pa-ra poder multiplicar dos matrices es necesario que si tenemos las matrices a[i][j] y b[n][m],entonces j y n deben de ser iguales, si no no se puede realizar la multiplicacion de matrices.

4.4. Funcion de Gauss Newton

La funcion de Gauss Newton realiza un maximo de 5 iteraciones intentando optimizar lasconstantes mudas. La unica condicion de parada es el numero de iteraciones aunque serıa con-veniente considerar como condicion de parada si el error cometido por la funcion es menor queun error objetivo, entonces en este caso tambien saldrıa. Pero esta condicion la dejaremos paratrabajos futuros.

Desde la lınea 21 hasta la 55, definimos todas las matrices necesarias para llevar a cabo elmetodo de GaussNewton. El algoritmo comienza obtiendo los puntos (xi, yi) (ver lıneas 11 y12) para luego poder evaluar la funcion fitness que vendra definido como el error cuadraticomedio entre f(xi) e yi). Una vez obtenido los puntos extrae las ctesMudas y las ctesRealesen ese momento (ver lıneas 15-16), para pasar a calcular el errorResidual antes de empezar aoptimizar con el algoritmo (lıneas 64-67).

Para obtener la derivada mediante la herramienta ADOLC como veremos mas adelante, hayque definir la seccion activa. La seccion activa viene definida por los comandos trace on ytrace off . Para ello las variables que van a ser derivables (en nuestro caso las constantes mu-das) deben de ser de tipo adouble. Esto hace que antes de nada debemos obtener el valor de lasvariables del programa (constantes mudas, reales y variables).

Page 41: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 35

Una vez hemos entrado en el while cargamos las variables de tipo adouble con sus valorespara poder hacer el calculo de las derivadas y calculamos el residual de la funcion (ver lıneas77-91). El algoritmo procesa las matrices, en caso de que la multiplicacion:

J tr ∗ Jr

No tenga inversa, entonces no seguimos para adelante y la funcion devuelve las ctesMudascon las que partıa (ver lınea 163).

En caso contrario, se optimiza las ctesMudas y se compara el valor del fitness con el fitness deaquellas ctesMudas que han obtenido el mejor fitness (errorResidualMinimo), (ver lıneas 152-156), si el valor de esta ultima iteracion es peor entonces metemos una ligera modificacion en lasctesMudas (ver lınea 131 para la comparacion y 157-161, donde se modifican las ctesMudas).

1 v e c t o r <double> algGenGPGN : : GaussNewton ( crSLP & c r )2 {3 i n t i t e rac ionesMAX = 5 ; / / FIXME45 i n t dim ;6 m a t r i z ∗ t a b l a ;7 i n t n , i , j , z , kk ;8 proSLP & pr = s i n g l e P r o S L P : : r e f ( ) ;9 genRandom & r = singleGenRandom : : r e f ( ) ;

1011 c o n s t v e c t o r <v e c t o r <double> > & x i = pr . dameIndTes t ( ) ; / / o b t i e n e l o s x ( i ) de n u e s t r o problema ;12 c o n s t v e c t o r <double> & y i = pr . dameFIndTes t ( ) ; / / o b t i e n e l o s y ( i ) de n u e s t r o problema ;1314 i n t numTest = x i . s i z e ( ) ;15 v e c t o r <double> c t e s M u d a s I n i c i a l e s P r o b l e m a = pr . dameCtesMudas ( ) ; / / t a n t a s como c o n s t a n t e s mudas16 v e c t o r <double> c t e s R e a l e s I n i c i a l e s P r o b l e m a = pr . dameCtesRea les ( ) ; / / t a n t a s como c o n s t a n t e s mudas17 i n t numCtesMudas = c t e s M u d a s I n i c i a l e s P r o b l e m a . s i z e ( ) ;1819 . . . ( D e f i n i c i o n de l a s m a t r i c e s p a r a e l metodo ) . . .2021 double ∗∗ r v e c t o r C o l u m n a = new double ∗ [ 1 ] ; / / 1 x722 f o r ( i = 0 ; i < 1 ; ++ i )23 r v e c t o r C o l u m n a [ i ] = new double [ numTest ] ;2425 double ∗∗JA = new double ∗ [ numTest ] ;26 f o r ( i = 0 ; i < numTest ; ++ i )27 JA [ i ] = new double [ numCtesMudas ] ;2829 double ∗∗ t r a n s p u e s t a R e s i d u a l = new double ∗ [ numTest ] ; / / 7 x130 f o r ( i = 0 ; i < numTest ; ++ i )31 t r a n s p u e s t a R e s i d u a l [ i ] = new double [ 1 ] ;3233 double ∗∗ d e l t a = new double ∗ [ numCtesMudas ] ; / / 2 x134 f o r ( i = 0 ; i < numCtesMudas ; ++ i )35 d e l t a [ i ] = new double [ 1 ] ;36

Page 42: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

36 4.4. FUNCION DE GAUSS NEWTON

37 double ∗∗ i n v e r s a = new double ∗ [ numCtesMudas ] ; / / 2 x238 f o r ( i = 0 ; i < numCtesMudas ; ++ i )39 i n v e r s a [ i ] = new double [ numCtesMudas ] ;4041 double ∗∗ t e rm1 = new double ∗ [ numCtesMudas ] ; / / 2 x242 f o r ( i = 0 ; i < numCtesMudas ; ++ i )43 te rm1 [ i ] = new double [ numCtesMudas ] ;4445 double ∗∗ t e rm1aux = new double ∗ [ numCtesMudas ] ; / / 2 x246 f o r ( i = 0 ; i < numCtesMudas ; ++ i )47 te rm1aux [ i ] = new double [ numCtesMudas ] ;4849 double ∗∗ t e rm2 = new double ∗ [ numCtesMudas ] ; / / 2 x150 f o r ( i = 0 ; i < numCtesMudas ; ++ i )51 te rm2 [ i ] = new double [ 1 ] ;5253 double ∗∗ termAux = new double ∗ [ numCtesMudas ] ;54 f o r ( i = 0 ; i < 1 ; ++ i )55 termAux [ i ] = new double [ 1 ] ;5657 v e c t o r <adouble> rA ( y i . s i z e ( ) , 0 ) ;58 v e c t o r <double> r i ( y i . s i z e ( ) , 0 ) ; / / r i e s un v e c t o r de t a n t a s p o s i c i o n e s como p u n t o s ( x i , y i )5960 v e c t o r <double> c tesMudasProblema , c tesMudasOpt imas , c t e s M u d a s A n t e r i o r ;6162 / / do ub l e umbral = pr . dameUmbralCero ( ) / numTest ;6364 f o r ( i n t i = 0 ; i < numTest ; i ++)65 r i [ i ] = y i [ i ] − c r . e v a l ( x i [ i ] ) ;6667 double e r r o r R e s i d u a l = c a l c u l o e r r o r R e s i d u a l ( r i ) ;68 double e r r o r R e s i d u a l M i n i m o = e r r o r R e s i d u a l ;69 i n t i t e r a c i o n e s = 0 ;7071 c tesMudasOpt imas = c t e s M u d a s I n i c i a l e s P r o b l e m a ;72 c tesMudasProb lema = c t e s M u d a s I n i c i a l e s P r o b l e m a ;737475 whi le ( i t e r a c i o n e s < i t e rac ionesMAX )76 {77 v e c t o r <adouble> ctesMudasA ;78 c o u t << ” numero de i t e r a c i o n : ”<< i t e r a c i o n e s <<” ”<<”\n ” ;798081 t r a c e o n ( 0 ) ;82 c t e s M u d a s A n t e r i o r = c tesMudasProb lema ;83 ctesMudasA = doub le Adoub le ( c tesMudasProb lema ) ;8485 f o r ( i = 0 ; i < numTest ; i ++)86 {87 rA [ i ] = y i [ i ] − c r . evalGN ( x i [ i ] , c t e s R e a l e s I n i c i a l e s P r o b l e m a , ctesMudasA ) ;88 }8990 r i = Adoub le doub l e ( rA ) ; / / pasamos t o d o s l o s v a l o r e s de rA [ i ] >>= r i [ i ] ;91 t r a c e o f f ( ) ;92

Page 43: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 37

93 double ∗ j a c o c t e s M u d a s P r o b l e m a = new double [ numCtesMudas ] ;9495 f o r ( i = 0 ; i < numCtesMudas ; i ++)96 j a c o c t e s M u d a s P r o b l e m a [ i ] = c tesMudasProb lema [ i ] ;9798 j a c o b i a n ( 0 , numTest , numCtesMudas , j acoc t e sMudasProb lema , JA ) ; / / c tesMudasProblema guarda t o d a s l a s c o n s t a n t e s mudas d e l problema , que en n u e s t r o caso es l a v a r i a b l e i n d e p e n d i e n t e .99

100 f o r ( i = 0 ; i < numTest ; i ++)101 r v e c t o r C o l u m n a [ 0 ] [ i ] = r i [ i ] ;102103 t r a n s p u e s t a R e s i d u a l = t r a s p u e s t a ( rvec to rColumna , 1 , numTest ) ; / / r l o hemos d e f i n i d o como v e c t o r f i l a , por l o que para l a m u l t i p l i c a c i o n104 / / con l a j a c o b i a n a , n e c e s i t a m o s t r a n s p o n e r l a para que se c o n v i e r t a en columna y a s ı105 / / no de e r r o r a l m u l t i p l i c a r ( mxn )∗ ( nxp )106 / / o t r a manera es d e f i n i e n d o l o como v e c t o r columna pero e n t o n c e s h a b r ı a que cambiar x e y107108 term1 = p r o d u c t o M a t r i c e s ( t r a s p u e s t a ( JA , numTest , numCtesMudas ) ,109 JA , numCtesMudas , numTest , numCtesMudas ) ;110 termAux = p r o d u c t o M a t r i c e s ( t r a s p u e s t a ( JA , numTest , numCtesMudas ) ,111 t r a n s p u e s t a R e s i d u a l , numCtesMudas , numTest , 1 ) ;112 te rm2 = produc toNumeroMat r i z (−1 , termAux , numCtesMudas , 1 ) ;113114 i n t d imens ion = numCtesMudas ;115 dim = d imens ion ;116 t a b l a = new m a t r i z ( dim ) ;117 t a b l a−>l l e n a r ( te rm1 ) ;118119 double ∗∗m a t r i z O r i g i n a l = new double ∗ [ dim ] ;120 f o r ( i = 0 ; i < dim ; ++ i )121 m a t r i z O r i g i n a l [ i ] = new double [ dim ∗ 2 ] ;122123 te rm1aux = term1 ;124 m a t r i z O r i g i n a l = t a b l a−>d e v u e l v e I n v e r s a ( ) ;125126 f o r ( i = 0 ; i < dim ; i ++)127 f o r ( j = 0 ; j < dim ∗2 ; j ++)128 i f ( j >= dim ) i n v e r s a [ i ] [ j−dim ] = m a t r i z O r i g i n a l [ i ] [ j ] ;129130131 i f ( ! c o m p a r a c i o n M a t r i c e s ( term1aux , m a t r i z O r i g i n a l , numCtesMudas ) ) / / s i no tenemos i n v e r s a devo lvemos l a s c tesMudas de esa i t e r a c i o n132 {133 d e l t a = p r o d u c t o M a t r i c e s ( i n v e r s a , term2 , numCtesMudas , numCtesMudas , 1 ) ; / / d e l t a = ( J r t r a n s p u e s t a ∗ Jr ) i n v e r s a ∗ (− J r t r a n s p u e s t a ∗ r )134135 f o r ( i = 0 ; i < numCtesMudas ; i ++)136 c tesMudasProb lema [ i ] = c tesMudasProb lema [ i ] + d e l t a [ i ] [ 0 ] ; / / d e l t a [ numCtesMudas x 1 ]137138 / / A c t u a l i z o l a s c o n s t n a t e s mudas d e l problema , que han s i d o m o d i f i c a d a s139 / / por e l metodo de gaussnewton , en cada i t e r a c i o n m o d i f i c o l a s140 / / c o n s t a n t e s mudas .141 / / para poder c a l c u l a r e l e r r o r l l a m a n d o l e a e v a l n e c e s i t o a c t u a l i z a r l a s142 / / c t e smudas .143144 pr . f i j a C t e s M u d a s ( c tesMudasProb lema ) ;145146 / / c a l c u l a m o s e l e r r o r que es tamos c o m e t i e n d o :147 f o r ( i = 0 ; i < numTest ; i ++)148 r i [ i ] = y i [ i ] − c r . e v a l ( x i [ i ] ) ; / / d e n t r o de l a f u n c i o n de e v a l v i e n e d e f i n i d a s l a s c o n s t a n t e s mudas como de t i p o a d o l c

Page 44: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

38 4.5. APRENDE

149150 e r r o r R e s i d u a l = c a l c u l o e r r o r R e s i d u a l ( r i ) ;151152 i f ( e r r o r R e s i d u a l < e r r o r R e s i d u a l M i n i m o ) / / s e n a l de que hemos o p t i m i z a d o mal153 {154 c tesMudasOpt imas = c tesMudasProb lema ;155 e r r o r R e s i d u a l M i n i m o = e r r o r R e s i d u a l ;156 }157 e l s e158 {159 f o r ( i = 0 ; i < numCtesMudas ; i ++)160 c tesMudasProb lema [ i ] += (2∗ r . f random ( ) − 1 ) / 2 ;161 }162 }163 e l s e re turn c tesMudasOpt imas ;164165 pr . f i j a C t e s M u d a s ( c tesMudasProb lema ) ;166 i t e r a c i o n e s ++;167 }168 re turn c tesMudasOpt imas ;169 }

4.5. Aprende

Esta es la funcion que llama a GaussNewton, la funcion aprende. Nuestra modificacion hasido introducida en la parte de coevolucion (lıneas 12-26).

Primero se obtiene el mejor individuo en ese momento/generacion. Y se obtiene las ctes-Mudas que tenemos en ese momento. Una vez hecho esto pasamos a llamar a Gauss Newtony fijamos las ctesMudas optimizadas por el metodo de GaussNewton (lınea 17). Para terminaractualizamos el fitness, actualizamos mejor y peor SLP para las nuevas ctesMudas y aplicamosel elitismo para el SLP.

1 void algGenGPGN : : a p r e n d e ( unsigned i n t gen )2 {3 proSLP & pr = s i n g l e P r o S L P : : r e f ( ) ;45 i f ( ( p r . dameTota lGenEval ( ) − genEva l <= r a t ∗ c o t a O p e r a ) && ( gen <= r a t ∗ c o t a G e n e r a ) )6 {7 s a l t o = f a l s e ;8 e v o l u c i o n (∗ pobSLP , ∗ selSLP , ∗cruSLP , ∗mutSLP , ∗ f i t S L P ) ; / / e v o l u c i o n o9 pobSLP−>a c t u a l i z a M e j o r P e o r ( ) ; / / a c t u a l i z o mejor y peor SLP

10 el iSLP−>a p l i c a (∗ pobSLP ) ; / / a p l i c a m o s e l i t i s m o SLP11 }12 e l s e13 {14 double f i t A u x = (∗ pobSLP ) [ pobSLP−>m e j o r I n d i v i d u o ( ) ] . f i t n e s s ( ) ;15 v e c t o r <double> ctesMudasAux ( p r . dameCtesMudas ( ) ) ; / / guardoCtesMudas

Page 45: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 39

1617 pr . f i j a C t e s M u d a s ( GaussNewton ( (∗ pobSLP ) [ pobSLP−>m e j o r I n d i v i d u o ( ) ] ) ) ;1819 f i tSLP−>a p l i c a (∗ pobSLP ) ; / / a c t u a l i z o f i t n e s s20 pobSLP−>a c t u a l i z a M e j o r P e o r ( ) ; / / a c t u a l i z o mejor y peor SLP21 c o u t << ” f i t n e s s v i e j o ” << f i t A u x << ” f i t n e s s nuevo ” ;22 c o u t << (∗ pobSLP ) [ pobSLP−>m e j o r I n d i v i d u o ( ) ] . f i t n e s s ( ) << e n d l ; c o u t . f l u s h ( ) ;23 el iSLP−>a p l i c a (∗ pobSLP ) ; / / a p l i c a m o s e l i t i s m o SLP24 }25 t r z−>a c t u a l i z a P r u e b a ( gen , ∗pobSLP ) ; / / a c t u a l i z a m o s l a t r a z a26 }

4.6. Diferenciacion Automatica

4.6.1. Descripcion

Esta tecnica se basa en que todo programa que sea de la forma y = F (x) se puede descom-poner en una serie de asignaciones elementales, de tal manera que podamos derivar cada una delas asignaciones elementarles utilizando una simple tabla de busquedas que contiene las reglasde diferenciacion mas basicas. Estas derivadas parciales se combinan mediante la regla de lacadena para formar una derivada de F. La transformacion simbolica, o calculo ”directo”de lasderivadas se hacen a nivel mas basico con lo que evitamos problemas computacionales. No solopermite obtener la derivada de primer orden sino tambien derivadas de orden superior para elcalculo de Hessianas, etc.

4.6.2. Regla de la cadena

La diferenciacion automatica se basa en la regla de la cadena, que no es otra cosa que ladescomposicion de las derivadas. Si tomamos el siguiente ejemplo:

f(x) = g(h(x))

La regla de la cadena dice que:

df

dx=dg

dh

dh

dx

Page 46: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

40 4.6. DIFERENCIACION AUTOMATICA

Normalmente se suelen utilizar dos modos para aplicar la regla de la cadena: uno serıa elmetodo hacia adelante (forward method) y otro el hacia atras (reverse method). El primerocalcula en primer lugar la parte de la derecha (dh

dx) y luego la de la izquierda ( dg

dh), es decir

aplica la regla de la cadena de derecha a izquierda, mientras que el modo hacia atras lo hace deizquierda a derecha.

4.6.3. Modos: forward y reverse

A continuacion describiremos como funcionan estos dos modos.

ForwardVamos a explicar el modo forward mediante un ejemplo que se ha tomado de [3]. Lafuncion que queremos derivar es la siguiente:

f(x1, x2) = x1x2 + sin(x1)

Este modo parte del calculo de las variables independientes (en este caso x1 y x2) ycontinua propagando los calculos de la funcion junto con los de la derivada hasta que seobtienen las derivadas de las variables dependientes (en nuestro caso la ultima variabledependiente serıa f ). Para obtener las derivadas parciales de la funcion f con respectode x1 y x2 ( df

dx1y df

dx2), necesitamos primero poner como semilla a x1 (con la semilla

marcamos sobre que variable estamos haciendo la diferenciacion) y luego a x2.

En la siguiente tabla podemos ver el codigo original con sus asignaciones y el codigo queutiliza la diferenciacion automatica para poder calcular las derivadas.

Codigo original Calculo derivadasw1 = x1 w′1=1w2 = x2 w′2=0w3 = w1w2 w′3 = w′1w2 + w1w

′2 = 1x2 +

x10 = x2

w4 = sin(w1) w′4 = cos(w1)w′1 = cos(x1)

w5 = w3 + w4 w′5 = w′3 + w′4 = x2 + cos(x1)

Cuadro 4.1: Ejemplo modo forward

Podemos comprobar que en la tabla se ha tomado como semilla x1 ya que el w′1 = 1. Portanto la derivada con respecto de x1 de f es: x2 + cos(x1). Lo mismo que se ha hecho en

Page 47: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 41

la tabla para w′1 habrıa que hacerlo para w′2, dandole w′2 = 1 y w′1 = 0 y ası obteniendodf

dx2

Figura 4.4: Ejemplo del metodo forward con un grafo [3]

Reverse

Este modo aplica la regla de la cadena de la izquierda a la derecha. Se asocia a cadavariable intermedia e incluso a las variables independientes una derivada adjunta (adjointvariable), que representa las derivadas parciales de las variables dependientes respectoa esa variable intermedia o independiente. Con este modo solo necesitamos una semilapara el calculo de las derivadas por tanto la mitad de trabajo que con el modo forward,pero tambien requiere mas memoria para guardar las variables adjuntas. (Para una mejorcomprension ver [12])

Figura 4.5: Ejemplo del metodo reverse con un grafo [3]

Una vez que hemos elegido un modo para la ejecucion de la diferenciacion automatica te-nemos que decidir si la implementamos mediante una transformacion del codigo fuente outilizando la sobrecarga de operadores. En el primer caso se reemplaza todo el codigo in-tercalando funciones que calculan las derivadas, con las funciones originales. Tendrıamos unafuncion que calcula la suma, y por otra parte otra funcion para calcular la derivada de la funcion.

Page 48: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

42 4.6. DIFERENCIACION AUTOMATICA

De esta manera hemos duplicado las lıneas de codigo.

Mientras que la sobrecarga de operadores, los numeros reales son substituidos por numerosduales y las constantes se convierten en numeros duales.

Para ello utilizamos un fichero de cabecera (header, en nuestro caso adolc.h) donde definimoslos operadores que sobrecargamos (en el caso de la herramienta adolc sera el tipo adouble). Loque hace la herramienta adolc es definir un tipo adouble que tendra dos campos en su interior:el valor de la variable, y el valor de su derivada. De esta manera, conseguimos que las funcionesdel codigo que tenıamos definido sean capaces, utilizando el header, de calcular las derivadas.De esta manera no necesitamos retocar todo el codigo fuente. Simplemente con cambiar de tiponos vale.

En el siguiente parrafo presentamos las principales herramientas de diferenciacion automati-ca que existen en el mercado.

4.6.4. Herramientas

Como hemos descrito en la seccion anterior, las herramientas estaran clasificadas por unaparte aquellas que utilizan la sobrecarga de operadores (operator overloading OO ) o trans-formacion del codigo fuente (source code transformation SCT) y por otra parte el lenguaje deprogramacion en las que estan implementadas. Operator overloading o sobrecarga de operado-res se basa en hacer que funciones tan comunes como la suma, resta, multiplicacion, . . . tenganuna implementacion diferente dependiendo del tipo de los argumentos que le pasamos. En lasiguiente tabla solo hemos puesto aquellas herramientas que estan programadas en C o C++ yaque es el lenguaje de programacion utilizado en el algoritmo evolutivo. Todas las herramientasestan contempladas en la pagina del grupo Autodiff.org [13].

Para nuestro algoritmo evolutivo utilizaremos FADBAD++ o ADOL-C, ya que utilizan lasobrecarga de operadores y de la otra manera supondrıa cambiar todo el codigo y definir lasfunciones que calculan las derivadas. Ello supondrıa una gran perdida de tiempo de progra-macion. Otra razon por la cual hemos elegido estas dos herramientas es que son dos de losproyectos que cuentan con una mayor comunidad de investigadores.

Page 49: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 43

Herramienta Licencia OO/SCTADC Version 4.0 Non-free OOADOL-C CPL 1.0 o GPL 2.0 OOADIC Free for non comercial SCTAD Model Builder BSD OOFADBAD++ free for non comercial OOCppAD CPL 1.0 o GPL 2.0 OOOpenAD depends on components SCTSacado GPL OOTapenade free for no comercial SCT

Cuadro 4.2: Herramientas de Diferenciacion Automatica

4.6.4.1. ADOLC

El paquete ADOL-C (Automatic Differentiation by OverLoading in C++) utiliza la sobre-cargada de operadores en C++. Operator overloading o sobrecarga de operadores se basa enhacer que funciones tan comunes como la suma, resta, multiplicacion, etc, tengan una imple-mentacion diferente dependiendo del tipo de los argumentos que le pasamos. Mediante estatecnica no generamos codigo intermedio. ADOL-C facilita la evaluacion de derivadas de altogrado ası como los gradientes de estos coeficientes de Taylor con respecto a todas las variablesindependientes. En cuanto al coste de las funciones definidas por ADOL-C, el coste de cualquiervector escalar crece cuadraticamente con respecto al grado de la derivada, pero no depende delnumero de variables dependientes o independientes que pueda tener el problema.

En las siguientes lıneas expondremos los principales terminos que deben quedar claros paraun correcto uso y comprension de la herramienta ADOL-C (ver [14] para mas informacion).

Variable ACTIVA: Deben definirse como variables activas todas aquellas variables que sepuedan considerar como derivables (diferenciables). ADOL-C ha definido un tipo escalarllamado adouble, donde la parte real es del tipo estandar double y la otra parte guardara elvalor de la derivada. Son definidas como activas las variables independientes y todasaquellas que dependen directa o indirectamente de ellas. Las que no dependen de lasvariables independientes pero que se definen como parametros , son de tipo pasivas (float,double, int . . .).

Seccion ACTIVA: Se dice de la parte del codigo que va a hacer uso del tipo adoublepara el calculo de la derivada. Se define una seccion activa mediante los comandos tra-

ce on(tag,keep) y trace off(file). Todos los calculos y resultados sobre las variables activas

Page 50: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

44 4.6. DIFERENCIACION AUTOMATICA

que se dan entre estos dos comandos se guardan en el conjunto de dato llamado tape. Encada llamada a una seccion activa se guardara un tape, por tanto tendremos tantos tapescomo accesos a la seccion activa. El entero keep determina si los valores numericos delas variables activas se guardan en un archivo temporal antes de que sean sobreescritos.Si keep=0, entonces no se guardan los valores numericos temporales de las variables ac-tivas. El entero file define si guardamos los valores de la variable tape antes de que estavariable se llene del todo y provoque un desbordamiento (overflow). En el caso de quefile=1, forzamos a guardar el valor de tape en un fichero antes de que esto ocurra; si esigual a cero entonces no lo forzamos.

Variable INDEPENDIENTE: Las variables activas que se leen en el programa o son ini-cializadas con valores constantes o con variables pasivas, se les llama variables indepen-dientes. Para definir una variable x como independiente hay que hacer lo siguiente:

x <<= px, px de tipo numerico pasiva(float, int, double . . .)

Esta inicializacion debe preceder a cualquier otra asignacion sobre x. Si no x no tendra ningunvalor. Es esencial hacer esta inicializacion, ya que ası x.value() = px.

Variable DEPENDIENTE: Con la variable dependiente hemos cargado valores tipo numeri-co en la variable adouble. Ahora para las variables dependientes tenemos que hacer locontrario: cargar la parte real de la variable y de tipo adouble a una variable tipo numeri-ca (por ejemplo double) mediante la siguiente asignacion:

y >>= py, py de tipo numerico pasiva(float, int, double . . .)

De esta forma nos aseguramos de que py=y.value(), y no podemos hacer ninguna otraasignacion a la variable y despues de ejecutar esta lınea, ya que py no guardarıa el ultimovalor de y.value().

Despues de ejecutar una seccion activa, habremos obtenido las derivadas de los valores

finales de las variables dependientes calculadas mediante el valor inicial de las variables

independientes.

Subfuncion como seccion activa: Si una funcion tiene definida una seccion activa en don-de x e y son vectores de tipo adouble, con x como variable independiente, y llama a unasubfuncion (ver ejemplo siguiente pagina), entonces debemos de cambiar el tipo todas lasvariables de la subfuncion que dependen de x de (float, double,int,. . .) a adouble.

Page 51: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 45

1 i n t main ( )2 {3 a d o u b l e x ;4 a d o u b l e y ;5 double p ;6 . . .7 e v a l ( x , y , p ) ;8 . . .9 }

Si la subfuncion eval es llamada con argumentos de tipo integer o reales (no adouble),porque el lenguaje no permite el overloading (vease fortran), entonces en la subfuncioneval debemos definir todo lo necesario para utilizar la herramienta y calcular las derivadas(definicion variable adouble, asignaciones tipo x <<= px, etc).

En resumidas cuentas, los pasos a dar para la correcta utilizacion de la herramienta adol-cen el calculo de las derivadas son los siguientes:

1. Definir la seccion activa mediante los comandos trace on y trace off .

2. Seleccionar el conjunto de variables activas y cambiar su tipo de double o float aadouble.

3. Tomar las variables independientes e inicializarlas mediante <<= tomando los va-lores de variables o vectores pasivos. Es decir leer los datos de entrada y copiar enuna variable pasiva. Una vez hecho esto pasar los valores de la variable pasiva (px)a la variable activa (x) que es de tipo adouble (x[i] <<= xp[i], considerando queson vectores).

4. Calcular la variable dependiente activa y mediante (y∗ = x[i]). La variable y es detipo adouble.

5. Para finalizar debemos de seleccionar las variables dependientes activas y pasar susvalores finales a una variable pasiva mediante el uso de >>= (y >>= py). pysera de tipo (float,double,. . .).

Mediante el comando <<= , pasamos los valores de una variable pasiva (tipo float,double) a una activa (tipo adouble).

Page 52: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

46 4.6. DIFERENCIACION AUTOMATICA

Mediante el comando >>= , pasamos los valores de una variable activa (tipo adou-ble) a una variable pasiva (tipo float, double).

Drivers ADOL-C

ADOL-C posee unos drivers que nos evitan la conversion de variable tipo numerico aadouble y todos los pasos que hay que dar para la obtencion de las derivadas primeras,segundas, etc. Solo hay que llamar a la funcion correspondiente y la misma funcion nosdevolvera el gradiente, la matriz jacobiana, . . . . A continuacion describiremos los princi-pales metodos:

• int function(tag,m,n,x,y) : devuelve en y el valor de la funcion para el vector in-dependiente x. n es el numero de variables independientes y m las variables depen-dientes, tag es el la variable tape, que normalmente es 1.

y = F(x)

• int gradient(tag,n,x,g): devuelve en g el gradiente de la variable independiente x, elnumero de variables dependientes e independientes deben de ser 1.

g=5F(x)

• int jacobian(tag,m,n,x,J): devuelve en J la matriz jacobiana de las derivadas de lafuncion con respecto a todas las variables independientes.

J=F′(x)

• int hessian(tag,n,x,H): el numero de variables dependientes e independientes esuno. Devolvemos en H la hessiana para el vector independiente x.

H =52F(x)

4.6.4.2. Divide y venceras

Vamos a ver las semejanzas entre la estructura slp y la estructura que utiliza la herramientaadolc. Ambas explotan la tecnica de divide y venceras.

Page 53: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 47

ESTRUCTURA SLP

Nuestro algoritmo evolutivo organiza los datos mediante la estructura slp (straight lineprogram). Un slp es una nueva forma de representar programas y consiste en un numerodeterminado de asignaciones, cada una de las cuales se obtiene aplicando unas determi-nadas funciones y tomando una serie de argumentos que pueden ser variables, constanteso resultados anteriormente calculados (los ui que describimos mas adelante).

La gran ventaja de utilizar este tipo de estructuras es que un slp reutiliza calculos hechoscon anterioridad durante el proceso de evaluacion. Veamoslo con un ejemplo.

Tenemos una funcion 2x2(x1 + 1)2 − 2x2 que viene codificada en el gen u5 del siguienteejemplo de un slp.

Γ ≡

u1 := x1 + 1

u2 := u1 ∗ u1

u3 := x2 + x2

u4 := u2 ∗ u3

u5 := u4 + u3

(4.3)

Podemos ver que u2 utiliza el calculo hecho anterioremente en u1 y ası sucesivamen-te. De esta manera reducimos considerablemente el coste computacional del algoritmoevolutivo. Veamos el grafo dirigido del ejemplo anterior:

Figura 4.6: Grafo Dirigido ejemplo SLP

Page 54: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

48 4.6. DIFERENCIACION AUTOMATICA

τ1 = x τ9 = τ5 · τ8τ2 = y τ10 = τ1 · τ9τ3 = t τ11 = τ4 − τ1τ4 = A τ12 = τ11 · τ10

τ5 = B τ13 = τ7 · τ3τ6 = a τ14 = cos · τ13

τ7 = w τ15 = τ6 · τ14

τ8 = τ1 · τ2 τ16 = τ12 + τ15

Cuadro 4.3: EjemploADOLC

ESTRUCTURACION DE ADOLC

La herramienta de ADOLC, parte de una idea similar a la de un slp para el calculo de lasderivadas. Para el calculo de una derivada de una funcion lo que hacemos es dividir lafuncion principal en funciones mas pequenas donde cada una de ellas utiliza el operadormas basico como puede ser la suma, resta, asignacion simple, multiplicacion . . . y luegomediante la regla de la cadena y la composicion de funciones conseguimos calcular laderivada de la funcion principal. Los pasos serıa los siguientes:

1. Dividir la funcion en funciones mas pequenas (τi):

2. Calcular el valor de la funcion y de la derivada para cada una de ellas.

3. Aplicar la regla de la cadena y la propiedad de composicion de funciones y calcularla derivada de 4.4.

De esta manera la herramienta ADOLC consigue derivar funciones complejas en untiempo muy pequeno y con una exactitud muy grande. (ver seccion de descripcionherramienta ADOL-C).

Veamos un ejemplo para la herramienta de ADOLC:

f(x, y, t) =

(A+ x(xy −B − 1) + a ∗ cos(wt)

x(B − xy)

)(4.4)

A,B,a, w: constantes

τi = τi(x, y, t)

Convertimos la ecuacion siguiente en ecuaciones mas simples de la siguiente manera:

La funcion de salida es f = (τ16, τ10)

Page 55: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 4. ENTORNO DE PRUEBAS Y HERRAMIENTAS 49

El grafo para esta funcion serıa el siguiente:

Figura 4.7: Grafo Dirigido ejemplo ADOLC

Donde vemos en la parte de la izquierda las constantes y variables del problema y al finallas dos funciones de salida (f1, f2).

Page 56: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

50 4.6. DIFERENCIACION AUTOMATICA

Page 57: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Capıtulo 5

Resultados

5.1. Protocolo de experimentacion

A lo largo de las siguientes paginas detallaremos el protocolo que hemos seguido para larealizacion de las pruebas experimentales. Para la realizacion de dichas pruebas hemos usado unsoftware propio (ver [15]), escrito en C++, en el que se han implementado tanto las estructurasde datos Stright-Line Program (slp) y arbol como los operadores geneticos asociados a dichasestructuras ası como los algoritmos de programacion genetica y algoritmo evolutivo que sedesarrollan en esta memoria.

Este software se ha ejecutado en una estacion Asus M50V que cuenta con 4 GB de memoriaRAM y un procesador Intel Core2 Duo a 1,2Gh.

5.1.1. Seleccion del concepto a aprender

El primer paso del protocolo es la generacion de una muestra aleatoria simple de conceptos.Para ello es necesario fijar una distribucion de probabilidad en el espacio de conceptos que enuna primera aproximacion podrıamos tomar como el espacio de todas las funciones infinita-mente diferenciables. Ahora bien, dicho espacio de funciones tiene dimension infinita (ademasno numerable) y por lo tanto es extremadamente complejo tomar una distribucion de probabi-lidad en dicho espacio por lo que decidimos realizar dos aproximaciones distintas al problema.Tomaremos como espacio de conceptos:

El espacio PRn [X] de polinomios univariados de grado acotado por n.

51

Page 58: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

52 5.1. PROTOCOLO DE EXPERIMENTACION

El espacio SLPl(F , T ) de slps longitud acotada por l con conjunto de terminales Γ = x, c

F := {+,−, ∗,√ , sin, cos, ln, exp} y conjunto de terminales T := {x, c}.

Notese que en un sentido estricto las unicas funciones computables son precisamente las que sepueden expresar como un elemento en alguno de los espacios anteriormente citados.

Pasamos a detallar el proceso de generacion de las muestras en ambos casos.

5.1.2. Generacion de una muestra aleatoria simple

Una vez escogido el concepto f a aprender es necesario generar dos muestras:

Una muestra de aprendizaje de 30 elementos.

Una muestra de validacion de 200 elementos.

En ambos casos la muestra se generara generando puntos xi uniformemente distribuidos enun intervalo de longitud finita fijado de antemano. Una vez escogido dichos puntos almace-namos los valores (xi, yi = f(xi)). Salvo que se diga lo contrario, ninguna de las muestrascontendra ruido.

La muestra de aprendizaje sera usada para evolucionar nuestra poblacion de slpmientras quela muestra de validacion solo se usara para comprobar el desempeno de nuestro algoritmo.

5.1.3. Ejecucion de las pruebas

Una vez generadas las muestras ejecutamos el programa tantas veces como valores delparametro sujeto de estudio se tenga. A esto lo llamaremos una ronda de aprendizaje. Lasmuestras no se modifican entre las ejecuciones del programa dentro de una ronda aunque sique se modifica la semilla aleatoria.

Con el fin de obtener resultados estadısticamente validos realizaremos 300 rondas. Ahorabien, en cada ronda se generaran nuevas muestras. A este procedimiento lo llamaremos expe-

rimento. Ası un experimento esta compuesto de 300 rondas, todas ellas con muestras indepen-dientes.

Page 59: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 5. RESULTADOS 53

Una vez finalizada la ejecucion procederemos a la validacion. Para ello se extrae el mejorelemento, que denominaremos elite, de la ultima poblacion y se calcula su error cuadraticomedio (MSE) sobre la muestra de validacion que, recordemos, es una muestra de 200 puntosque no contiene errores y que no se ha usado en la fase de aprendizaje.

Detallamos ahora los parametros comunes a todos los experimentos que se han realizado:

Cuadro 5.1: Parametros comunes

Longitud de los slp: 16

Probabilidad de Cruce: 0,9

Probabilidad de Mutacion: 0,05

Tamanoo de la Poblacion: 200

Numero maximo de operaciones: 107

Operador de Seleccion en la programacion genetica: SimpleOperador de Seleccion en el algoritmo evolutivo: 2-Torneo

Tipo de mutacion: SimpleTipo de cruce: Slp

Generador de numeros aleatorios: Propio del Sistema Operativo

Notese que en este contexto el numero de operaciones es el numero de variables no termina-les que han sido evaluadas.

Ası mismo los parametros comunes en los experimentos usando las muestras polinomicasseran:

Cuadro 5.2: Parametros comunes muestras polinomicas

Conjunto de terminales: T := {x, c1, c2, 1} donde x, c1, c2 ∈ [−1, 1].Conjunto de funciones: F := {+,−, ∗, /,√}.

Grado maximo del polinomio generador: 5.

Donde x denota la variable y c1, c2 son dos parametros que se generan aleatoriamente algenerar la muestra.

Finalmente el resto de parametros comunes en los experimentos usando las muestras queproceden de los slp aleatorios seran:

Page 60: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

54 5.2. INTERPRETACION DE RESULTADOS

Cuadro 5.3: Parametros comunes muestras slp′s

Conjunto de terminales: T := {x, c} con x ∈ [−1, 1] y c ∈ [−1, 1].Conjunto de funciones: F := {+,−, ∗,√, sin, cos, ln, exp}.

Longitud maxima del slp generador: 16.Conjunto de terminales slp generador: T := {x, c} con x ∈ [−1, 1] y c ∈ [−1, 1].Conjunto de funciones slp generador: F := {+,−, ∗,√, sin, cos, ln, exp}.

Donde x denota la variable y c denota un parametro como comentamos en el parrafo anterior.

Hay que puntualizar que en todas las ejecuciones se ha activado el elitismo. Esto significaque al finalizar cada generacion se guarda el mejor elemento y este reemplaza al peor elementode la siguiente generacion, siempre y cuando el valor guardado sea mejor. De esta forma nosaseguramos que al finalizar cada generacion la calificacion del mejor elemento de la poblacionno empeora.

5.2. Interpretacion de resultados

Para cada experimento y tipo de prueba mostramos los siguientes resultados:

Tabla con la tasa de exito y la tasa de error: Diremos que una ejecucion ha sido erronea sila validacion del modelo es superior al 150 % del rango intercuartılico. Es decir, si lavalidacion cumple:

Val (Γ) ≥ 1,5|Q3 −Q1|

donde Q1, Q3 representa el valor del primer y tercer cuartil respectivamente de la prue-ba con dicho parametro. Extraeremos dichos elementos de la muestra pues distorsionanenormemente los resultados.

Diremos que una ejecucion ha sido exitosa si la validacion del modelo es inferior al 10 %

del rango de la muestra. Es decir si la validacion cumple:

Val (Γ) ≤ 0,1

∣∣∣∣ max1≤i≤30

yi − mın1≤i≤30

yi

∣∣∣∣donde Γ representa el modelo escogido por el algoritmo y yi es la muestra de aprendizaje.Notese que los calculos sobre la tasa de exito estan referidos a la muestra sin los resultadoserroneos.

Page 61: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 5. RESULTADOS 55

Tablas con un resumen estadıstico descriptivo: En la primera tabla se presentan la media yvarianza de los resultados de validacion. En la segunda, se muestran los valores maximoy mınimo, la mediana ası como los cuartiles primero y tercero de la validacion. En todoslos casos, estos estadısticos se refieren a la muestra en la que se han extraıdo previamentelas elementos considerados erroneos en la anterior tabla.

Diagrama de cajas y bigotes: Forma grafica en el que se representan los valores numericos dela anterior tabla.

En este diagrama se muestra una caja y dos asas (bigotes). El extremo inferior de lacaja representa el valor del primer cuartil (q1 en la tabla anterior) de las calificaciones devalidacion mientras que el extremo superior de la caja representa el tercer cuartil (q3). Laraya gruesa dentro de la caja representa la mediana (q2). Si las muescas que tiene unacaja no se solapan con las de otra indica que, con alta probabilidad, las medianas de lasdistribuciones de probabilidad son distintas.

Los dos bigotes representan los valores mınimos y maximos de la muestra a la que pre-viamente se le han extraıdo los errores.

Notese que un conjunto de parametros es mejor cuanto mas estrecha sea la caja (menosvarianza presenta) y mas abajo se encuentre (mejores individuos produce).

Tabla con los resultado de los contrastes de hipotesis cruzados: En la columna (i, j) se mues-tra el p-valor asociado a un contraste de hipotesis no parametrico mediante el test parados muestras de Kolmogorov-Smirnov. Nuestra hipotesis nula H0 sera que, la funcion dedistribucion empırica (ecdf ) de la validacion para el valor del parametro sujeto de estudioen la fila i no es mayor que la funcion de distribucion empırica (ecdf ) para el valor delparametro en la columna j.

De esta forma, si el valor de la casilla (i, j) es menor que el valor de la significancia α es-cogido, podemos rechazar la hipotesis nula. Es decir la ecdf es estrictamente mayor y porlo tanto dicho valor del parametro ofrece un mejor rendimiento sobre dicha muestra puesobtendra, con mayor probabilidad, modelos con una calificacion de validacion inferior.

Por norma general tomaremos como valor de la significancia α = 0,1. Notese que los va-lores superiores a 0,1 del p-valor deben tomarse como> 0,1, no como su valor numerico.

Dicho de otra manera, la hipotesis nula para el par (i,j) es que la estrategia i es peor que

la estrategia j. Es decir que el valor ai,j es menor que el α definido por nosotros, en este

caso podemos rechazar la hipotesis nula.

Notese que, como hemos hecho previamente, consideramos solo la muestra sin errores.

Page 62: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

56 5.2. INTERPRETACION DE RESULTADOS

Generalmente tenemos pocos puntos para entrenar, asi que un escenario realista es este con30 puntos de aprendizaje. Como generar puntos para nosotros es ”gratis”(en otros contextocada punto puede costar una cantidad de dinero considerable conseguirlos, como por ejemploen un experimento de laboratorio, propagacion de infecciones, etc), entonces validamos con unamuestra tan grande como sea posible para asegurarnos que se parece a la funcion que estamosbuscando.

Las estrategias de coevolucion realizadas son las siguientes:

Genetic Programming (GP) -O: Se utiliza la programacion genetica para un experimentode tipo evolutivo. No hay coevolucion. En ingles, por si sale en alguna grafica, las siglasson BGPEA.

Genetic Programming Genetic Algorithm (GPGA) rondas-1: Realiza un experimento detipo coevolutivo por rondas, donde se realiza n generaciones de evolucion y m generacio-nes de coevolucion alternando cada uno de los tipos cada vez. Identificado con las siglasSGPEA en la grafica 5.3.

Genetic Programming Genetic Algorithm (GPGA) rondas-25: Lo mismo que el anteriorpero esta vez se hace un turno de 25 generaciones de evolucion y un turno de 5 genera-ciones para la poblacion de constantes (coevolucion). Identificado con las siglas BGPEAen la grafica 5.3.

Genetic Programming Genetic Algorithm (GPGA) separadas-0.95: Realiza un experi-mento de tipo coevolutivo por rondas separadas, con un porcentaje de generaciones deevolucion primero y el resto de coevolucion despues. En este caso 95 % de evolucion y5 % de coevolucion. Identificado como BGPEA en la grafica 5.3.

Genetic Programming Gauss Newton (GPGN)-5: En este caso se hace un experimentode tipo coevolutivo por rondas separadas, en la coevolucion aplicaremos el algoritmo deGauss Newton durante 5 generaciones.

En todas las estrategias la evolucion termina despues de completar 107 operaciones. El fit-ness que utilizamos es el fitness de validacion al final del metodo como metrica para decidir sies mejor un metodo u otro. Si quisieramos ver que metodo converge mas rapidamente o quemetodo encuentra mas soluciones, entonces estarıamos hablando de criterios diferentes. En unade las pruebas (prueba3) hemos tomado la media de los mejores fitness en cada generacion seosbserva bien la denominada convergencia prematura.

Page 63: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 5. RESULTADOS 57

5.3. Pruebas

Hemos utilizado esos parametros por que son los parametros con mejores resultados empe-rimentales y aunque hayamos hecho alrededor de veinte experimentos, hemos puesto solo losinteresantes.

5.3.1. Prueba 1

5.3.1.1. Descripcion

Esta prueba consiste en, partiendo de los parametros comunes para todas las funciones, eje-cutar 150 generaciones, donde el 98 % se hara GP (experimento sin coevolucion) y el resto GN(coevolucion utilizando el metodo de Gauss Newton). Por cada generacion de GN hacemos 5iteraciones para optimizar las constantes mudas.

5.3.1.2. Funciones y parametros de entrada

Se utilizaran dos grupos de funciones: el primer grupo esta compuesto por 100 polino-mios univariados de grado 5 generados aleatoriamente y el segundo grupo estara representa-do por 100 funciones de slp tambien generadas aleatoriamente con un espacio de funcionesF = +,−, ∗, /, sqrt, sin, cos, ln, exp y unos terminales T = x, c, c ∈ [−1, 1] con una longitudpara cada slp de 16 (16 asignaciones por slp). Ya veremos mas adelante que las denominamosrmpol1 y rslp1, y son lo mas parecido a una muestra aleatoria simple que uno puede llegar atomar en el espacio de funciones. Mediante estas funciones estudiamos el comportamiento me-dio, ya que la conclusion que queremos sacar es que un metodo es estadısticamente superior aotro, para el problema de regresion simbolica en general.

Los individuos son slps generados sobre el espacio de funciones F = +,−, ∗, /, sqrt parael caso de las ejecuciones relacionadas con los polinomios mientras que para el problema aso-ciado a las funciones slp el grupo de funciones del individuo se incrementa con la funcionessin, cos, ln, exp.

Page 64: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

58 5.3. PRUEBAS

5.3.1.3. Tablas con los resultados

SLP:

Los slp objetivo sobre F y T se identifican como SLP (F, T ).

SLPl(F , T ) te ts

GP − 0 15 % 95 %GPGAR− 1 19 % 97 %GPGAR− 25 18 % 98 %GPGAS − 0,95 16 % 99 %GPGN − 5 13 % 98 %

SLPl(F , T ) µ σ

GP − 0 2,49 · 10−2 3,83 · 10−2

GPGAr − 1 1,95 · 10−2 3,3 · 10−2

GPGAr − 25 1,76 · 10−2 2,59 · 10−2

GPGAs− 0,95 1,38 · 10−2 2,18 · 10−2

GPGN − 5 2,46 · 10−2 3,91 · 10−2

Cuadro 5.4: tabla exito-error y tabla de media y varianza

En la tabla de la izquierda donde mostramos la tasa de error te y la tasa de exıto ts, podemosver que la ultima estrategia (GPGN) obtiene la tasa de error mas pequena y una de las tasas deexito mas altas.

SLPl(F , T ) mın q1 q2 q3 max

GP − 0 0 0 6,94 · 10−3 3,03 · 10−2 0,18GPGAr − 1 0 0 2,96 · 10−3 2,34 · 10−2 0,16GPGAr − 25 0 0 4,01 · 10−3 2,93 · 10−2 0,12GPGAs− 0,95 0 0 3,06 · 10−3 1,75 · 10−2 0,11GPGN − 5 0 0 5 · 10−3 2,98 · 10−2 0,15

Cuadro 5.5: mınimo, maximo, mediana y cuartiles

Los diagrama de cajas definen la mejor ejecucion, el 25 %, el 50 %, el 75 % y la peor eje-cucion considerando el fitness de validacion del modelo seleccionado (descrito en la seccionanterior Protocolos de ejecucion)

Para esta primera tabla y diagrama de cajas podrıamos decir que no hay diferencias significa-tivas entre las estrategias analizadas. Si habrıa que destacar alguna esa es la de GPGAseparadas-0.95 ya que como podeis ver en la grafica anterior 5.1, que este caso tiene la caja mas pequena,pero ya decimos que nada significativo.

En cuanto a la tabla de con los resultados de los contrastes de hipotesis cruzados 5.6 tampocopara un α = 0.1, podemos ver que ninguna de las estrategias es mejor que otra.

Page 65: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 5. RESULTADOS 59

GP−0 GPGArondas−1 GPGAseparadas−0.95

0.00

0.05

0.10

0.15

slp

Figura 5.1: diagrama cajas prueba1 para la funcion slp

SLPl(F , T ) GP-0 GPGAR-1 GPGAR-25 GPGAS-0.95 GPGN-5GP − 0 1 0,99 0,99 0,85 0,77

GPGAr − 1 0,29 1 0,59 0,62 0,53GPGAr − 25 0,4 0,72 1 0,67 0,35GPGAs− 0,95 0,14 0,41 0,26 1 0,26GPGN − 5 0,75 0,99 0,92 0,96 1

Cuadro 5.6: resultado contraste de hipotesis SLP

RMPOL1:

Para las siguientes tablas en las que se evaluan sobre los polinomios multivariados, las di-ferencias son mınimas por lo que no hay diferencias significativas. Lo unico que podrıamosresaltar es la bajısima tasa de error del 5 % cometida por la estrategia GPGN y la ultima graficadonde comparamos todas las estrategias.

Page 66: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

60 5.3. PRUEBAS

PRn [X] te ts

GP − 0 11 % 100 %GPGAr − 1 7 % 99 %GPGAr − 25 12 % 100 %GPGAs− 0,95 10 % 100 %GPGN − 5 5 % 100 %

PRn [X] µ σ

GP − 0 5,14 · 10−2 4,51 · 10−2

GPGAr − 1 6,08 · 10−2 5,59 · 10−2

GPGAr − 25 5,65 · 10−2 5,03 · 10−2

GPGAs− 0,95 6,15 · 10−2 6,17 · 10−2

GPGN − 5 5,25 · 10−2 4,82 · 10−2

Cuadro 5.7: tabla exito-error y tabla de media y varianza

PRn [X] mın q1 q2 q3 max

GP − 0 1,69 · 10−3 1,76 · 10−2 3,87 · 10−2 7,11 · 10−2 0,2GPGAr − 1 3,88 · 10−3 1,7 · 10−2 4,28 · 10−2 8,36 · 10−2 0,23GPGAr − 25 1,35 · 10−3 1,77 · 10−2 4,42 · 10−2 7,93 · 10−2 0,22GPGAs− 0,95 3,28 · 10−3 1,51 · 10−2 3,78 · 10−2 9,14 · 10−2 0,24GPGN − 5 1,81 · 10−3 1,45 · 10−2 3,29 · 10−2 8,53 · 10−2 0,2

Cuadro 5.8: mınimo, maximo, mediana y cuartiles

GP−0 GPGArondas−1 GPGAseparadas−0.95

0.00

0.05

0.10

0.15

0.20

slp

Figura 5.2: diagrama de cajas para funcion polinomios de la prueba1

En la figura 5.3), podemos ver que, aunque ligeramente, la estrategia de GPGN es la quemejor fitness logra despues de 150 generaciones. Las estrategias en el grafico tiene el nombreen ingles pero corresponden a las estrategias definidas en el protocolo de experimentacion.

Page 67: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 5. RESULTADOS 61

PRn [X] GP-0 GPGAr-1 GPGAr-25 GPGAs-0.95 GPGN-5

GP − 0 1 0,17 0,54 0,34 0,63GPGAr − 1 0,8 1 0,55 0,79 0,83GPGAr − 25 0,82 0,39 1 0,61 0,84GPGAs− 0,95 0,61 0,5 0,46 1 0,92GPGN − 5 0,45 0,35 0,16 0,47 1

Cuadro 5.9: resultado contraste de hipotesis RMPOL1

0

0.05

0.1

0.15

0.2

0.25

0.3

0 20 40 60 80 100 120 140 160

Polynomials

GPSGPEABGPEATGPEAGPGN

Figura 5.3: convergencia para el grupo de funciones RmPol1 de prueba1

Podemos comprobar que las dos estrategias obtiene resultados parecidos y eso es debido aque:

Los metodos evolutivos son iguales o mejores para este tipo de problemas.

La optimizacion clasica sufre de problemas de convergencia prematura. Si un algoritmose encajona es muy difıcil salir debido a que la poblacion no es muy diversa y encima lamutacion es muy lenta. Este caso lo veremos en las siguientes pruebas.

En las siguientes dos pruebas compararemos solo dos estrategias: GP y GPGN, y tomaremoslas funciones objetivo f2 y f3. Estas funciones, son funciones que se usan en la literatura comobase o estandar para evaluar los algoritmos.

Page 68: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

62 5.3. PRUEBAS

5.3.2. Prueba 2

5.3.2.1. Descripcion

Para la siguiente prueba ejecutamos una estrategia GP (experimento sin coevolucion) yotra GPGN (evolucion mediante programacion genetica y coevolucion utilizando el metodode Gauss Newton). El procedimiento es el siguiente: se realizan todas las generaciones de GPy al final se hace GN. Se utiliza la misma muestra de aprendizaje pero con distinta semillaaleatoria. En el caso de GPGN (se hace el metodo de Gauss Newton en la ultima generacion).

5.3.2.2. Funciones y parametros de entrada

Tenemos dos funciones multivariadas:

f2(x, y, z, w) = 12x+ 1

4y + 1

6z + 1

8w

f3(x, y) = xy + sin((x− 1)(y + 1))

Para cada ejecucion se utiliza un conjunto de entrada compuesto por 30 puntos. Para lafuncion f2 los puntos estan entre [-100,100] para todas las variables, mientras que paraf3 el rango es [-3,3]. Los individuos son slps generados sobre el espacio de funcionesF = +,−, ∗, /, sqrt. Mientras que para el problema asociado a f3 el grupo de funcionesdel individuo se incrementa con la funcion sin.

5.3.2.3. Tablas con los resultados

f2:

Para el caso de evaluacion sobre la funcion f2, los resultados son parejos entre las estrategiasGP y GPGN, tal vez GPGN tenga una media (µ = 11.32 frente a 12.11) y una varianza menor(σ = 25.62 frente a 26.97) como se puede observar en la tabla 5.10.

f2 te ts

GP − 0 21 % 12 %GPGN − 5 21 % 14 %

f2 µ σ

GP − 0 12,11 26,97GPGN − 5 11,32 25,62

Cuadro 5.10: tabla exito-error y tabla de media y varianza

Page 69: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 5. RESULTADOS 63

f2 mın q1 q2 q3 max

GP − 0 0,46 1,04 3,03 6,87 147,43GPGN − 5 0,27 1 2,08 4,62 134,88

Cuadro 5.11: mınimo, maximo, mediana y cuartiles

GP−0 GPGN−5

050

100

150

slp

Figura 5.4: diagrama cajas para f2

f2 GP-0 GPGN-5GP − 0 1 0,95

GPGN − 5 0,28 1

Cuadro 5.12: resultado contraste de hipotesis para f2

f3:

f3 te ts

GP − 0 15 % 38 %GPGN − 5 9 % 50 %

f3 µ σ

GP − 0 0,75 0,59GPGN − 5 0,81 0,85

Cuadro 5.13: tabla exito-error y tabla de media y varianza

Una vez mas la tasa de error de GPGN es muy baja (9 %) y mejora en 6 puntos a la de GP,pero en donde es mayor la diferencia es en la tasa de exito ya que GPGN posee un 50 % de tasade exito frente a solo el 38 % de GP.

Podemos comprobar que aunque la estrategia GPGN posee una media mas baja el maximo

Page 70: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

64 5.3. PRUEBAS

f3 mın q1 q2 q3 max

GP − 0 1,39 · 10−2 0,21 0,69 1,05 2,66GPGN − 5 5,09 · 10−4 0,19 0,46 1,24 3,78

Cuadro 5.14: mınimo, maximo, mediana y cuartiles

GP−0 GPGN−5

01

23

slp

Figura 5.5: diagrama cajas para f3

f3 GP-0 GPGN-5GP − 0 1 0,29

GPGN − 5 0,14 1

Cuadro 5.15: resultado contraste de hipotesis para F3

tambien tiene mucho mas alto por lo que son estrategias con resultados parecidos.

En esta tabla donde vemos el contraste de hipotesis para un valor α = 0.1 (ver cuadro 5.15),vemos que GPGN esta muy cerca de anular la hipotesis nula (0.14 frente a 0.1) por lo quepodrıamos decir que mediante algun pequeno cambio GPGN tendrıa mejores resultados queGP para la funcion f3.

En este grafico (ver 5.6) podemos ver la convergencia de la funcion f3 para la prueba2. Enel eje x tenemos el numero de generaciones mientras que el eje y representa el fitness o errorcometido (media todas las generaciones del mejor individuo por generacion). Podemos ver quela lınea verde, que representa la estrategia de GN, da un bajon considerable al final de lasiteraciones. Esto nos lleva a pensar que utilizar el metodo de Gauss Newton estarıa bien una vezque el algoritmo evolutivo esta camino de encontrar la mejor solucion, es decir, que no existala posibilidad de que el metodo de GN encajone la solucion y no seamos capaces de salir y

Page 71: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 5. RESULTADOS 65

Figura 5.6: convergencia para f3

provoque una convergencia prematura (como veremos en la siguiente prueba).

5.3.3. Prueba 3

5.3.3.1. Descripcion

Para la siguiente prueba ejecutamos una estrategia GP (experimento sin coevolucion) yotra GPGN (evolucion mediante programacion genetica y coevolucion utilizando el metodode Gauss Newton). Al final de cada generacion de GP se realiza la optimizacion de las cons-tantes mudas mediante el metodo de Gauss Newton. Por tanto, se utiliza el metodo de GaussNewton durante todas las generaciones.

5.3.3.2. Funciones y parametros de entrada

Tenemos dos funciones multivariadas:

f2(x, y, z, w) = 12x+ 1

4y + 1

6z + 1

8w

Page 72: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

66 5.3. PRUEBAS

f3(x, y) = xy + sin((x− 1)(y + 1))

Para cada ejecucion se utiliza un conjunto de entrada compuesto por 30 puntos. Para la fun-cion f2 los puntos estan entre [-100,100] para todas las variables, mientras que para f3 el rangoes [-3,3]. Los individuos son slps generados sobre el espacio de funciones F = +,−, ∗, /, sqrt.Mientras que para el problema asociado a f3 el grupo de funciones del individuo se incrementacon la funcione sin.

5.3.3.3. Tablas con los resultados

f2:

f2 te ts

GP − 0 20 % 13 %GPGN − 5 20 % 6 %

f2 µ σ

GP − 0 10,46 26,37GPGN − 5 18,14 25,23

Cuadro 5.16: tabla exito-error y tabla de media y varianza

f2 mın q1 q2 q3 max

GP − 0 0,26 1,02 1,47 3,88 122,41GPGN − 5 0,53 1,36 7,29 26,02 108,67

Cuadro 5.17: mınimo, maximo, mediana y cuartiles

GP−0 GPGN−5

020

4060

8010

012

0

slp

Figura 5.7: diagrama cajas para f2

Page 73: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

CAPITULO 5. RESULTADOS 67

f2 GP-0 GPGN-5GP − 0 1 1,3 · 10−5

GPGN − 5 0,89 1

Cuadro 5.18: resultado contraste de hipotesis para f2

En esta tabla 5.18, podemos ver claramente que para el caso en el que comparamos GP conGPGN, vemos que el p-valor es de 1,3 ∗ 10−5, y teniendo en cuenta que el valor alpha o riesgotomado es de 0.1, debemos decir que para la funcion F2 la estrategia GP es mejor que GPGN,la causa es la descrita en la grafica 5.8.

Figura 5.8: convergencia para f2

Podemos comprobar (ver 5.8) que para la funcion f2 esta estrategia converge rapidamente(baja muy rapido) pero se encajona, por lo que provoca una convergencia prematura y estoprovoca un peor fitness al final de las generaciones (ver raya verde y roja).

Page 74: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

68 5.3. PRUEBAS

f3:

Para el caso en que tomamos la funcion F3, las dos estrategias son muy parecidas ya queninguna de las tablas nos aporta nada significante.

f3 te ts

GP − 0 16 % 47 %GPGN − 5 17 % 42 %

f3 µ σ

GP − 0 0,75 0,81GPGN − 5 0,93 1,07

Cuadro 5.19: tabla exito-error y tabla de media y varianza

f3 mın q1 q2 q3 max

GP − 0 3,57 · 10−3 0,15 0,49 0,97 3,6GPGN − 5 5,09 · 10−4 0,12 0,57 1,29 5,22

Cuadro 5.20: mınimo, maximo, mediana y cuartiles

GP−0 GPGN−5

01

23

45

slp

Figura 5.9: diagrama cajas para f3

f3 GP-0 GPGN-5GP − 0 1 0,33

GPGN − 5 0,37 1

Cuadro 5.21: resultado contraste de hipotesis para f3

Page 75: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Capıtulo 6

Conclusiones y trabajo futuro

6.1. Conclusiones

Hemos definido un metodo de busqueda dentro de un algoritmo evolutivo para poder opti-mizar las constantes mudas. Los experimentos se han realizado en dos grupos de funciones: porun lado las funciones creadas por nosotros rslp1 y rmpol1, y por otra parte las funciones f2 yf3. En todos los casos el esfuerzo computacional esta fijado al maximo numero de operaciones.

La calidad de los experimentos despues de aplicar el metodo de Gauss Newton se ha medi-do mediante un conjunto de validacion compuesto por puntos no vistos hasta ese momento, adiferencia de los puntos que si los conocemos que hemos utilizado para entrenar el algoritmo.

Se ha hecho un amplio estudio estadıstico sobre los experimentos y hemos llegado a la con-clusion de que el metodo de busqueda directa Gauss Newton puede ser un buen metodo paraoptimizar las constantes mudas disminuyendo considerablemente el tiempo del algoritmo.

Los resultados nos muestran un riesgo que ya lo tenıamos contemplado antes de empezar aimplementar este algoritmo, y es que en algunos casos el algoritmo se encierra y provoca con-vergencia prematura. La solucion pasa por regenerar”la poblacion via mutacion y el operadorde supervivencia (eliminar elementos repetidos y malos y sustituirlos por otros nuevos).

Otro punto en contra de este algoritmo es que puede diverger, aunque en nuestros experi-mentos eso no ha ocurrido ya que dentro del algoritmo una de las condiciones era que el errorcometido en cada iteracion es menor al error cometido en la anterior si no, no se continua conesas constantes mudas y a las constantes que partıamos se les introduce una pequena modifica-cion. De esta manera evitamos que el algoritmo diverja.

69

Page 76: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

70 6.2. TRABAJO FUTURO

Pese a ello, los resultados nos muestran que preveniendo la convergencia prematura y con-trolando el uso del algoritmo de Gauss Newton el error cometido disminuye considerablementefrente a otras estrategias analizadas.

Una observacion particular que he hecho es que, lo mejor es aplicar el algoritmo de GaussNewton una vez que estemos en la direccion del optimo, de esta manera nos evitamos proble-mas, y si es difıcil de encontrarla, creo que serıa una buena idea aplicar este algoritmo durantepocas iteraciones para reducir el tiempo de ejecucion y obtener una rapida convergencia perosiempre durante un pequeno espacio de tiempo.

6.2. Trabajo Futuro

La primera lınea de continuacion de este trabajo de investigacion es el desarrollo de doscondiciones de parada mas para el algoritmo a parte del numero de iteraciones. Estas dos condi-ciones serıan: error objetivo mınimo y error objetivo maximo. De esta manera optimizarıamoscomo maximo hasta llegar a un error objetivo mınimo y no dejarıamos que el algoritmo conti-nuase si el error cometido es mayor a un error maximo.

La convergencia prematura queda ahora como una nueva lınea de continuacion de esta in-vestigacion mediante la regeneracion de la poblacion via mutacion, es decir un mayor controlde la poblacion.

Para obtener unos resultados optimos creemos que serıa necesario partir de unas constantesmudas iniciales optimas. La misma herramienta ADOL-C proporciona una opcion para calcularel valor inicial de las constantes.

Otra opcion interesante es anadir un metodo de busqueda lineal al metodo de Gauss Newton(una vez que obtienes la direccion en la que tiene que moverse, saber cuanto tienen que moverseen esa direccion).

Finalmente, se propone el desarrollo paralelo de otros metodos de busqueda directa, comopueden ser: newton, gradiente conjugado, o incluso metodos coevolutivos hıbrido, en dondehagamos la evolucion de constantes mediante un algoritmo evolutivo refinando al final con elmetodo de Gauss Newton u otras alternativas.

Page 77: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Apendice A

UsoADOLC

COMPILAR-LINKAR-EJECUTAR ADOL-C

En las siguientes lıneas se incluye un breve ’manual’ de como tenemos que compilar linkary ejecutar con la herramienta ADOLC. Partimos de un ejemplo que se llama powexam.cpp queva a ser nuestro programa.

Para hacer uso de las funciones que vienen definidas en adolc necesitamos hacer ”#include <

adolc.h > ”. De esta manera llamamos a adolc.h, que a su vez hace uso de otros muchos.h para el correcto funcionamiento de todas las funciones de la herramienta ADOLC.

Una vez que se ha incluido el adolc.h tenemos que compilar y linkar para generar unejecutable. Para ello seguimos los siguientes pasos:

Compilando: anadir ”−I$HOME/adolc base/include” a nuestra llamada de com-pilado.

Linkando: anadir ” − L$HOME/adolc base/lib − ladolc” a nuestra llamada delinkado. Si queremos ’escapar’ el punto ’ejecucion extendemos nuestra llamada de linka-do anadiendo:”−Wl,−− rpath−Wl, $HOME/adolc base/lib”

Ejecutando, hacer una de las siguientes cosas:

• Anadir $HOME/adolc base/lib a nuestra variable LD LIBRARY PATH

71

Page 78: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

72

• Preguntar a nuestro administrador de sistema para anadir $HOME/adolc base/lib

al fichero global que contiene el path donde buscar las librerıas: (/etc/ld.so.conf).O si no usar la librerıa estatica reemplazando lo siguiente:”−L$HOME/adolc base/lib−ladolc” con ”$HOME/adolc base/lib/libadolc.a”

(cuando linkamos)

Por tanto el comando a ejecutar en el terminal es:g + +− I ∼ /adolc base/include/adolc/powexam.cpp /adolcbase/lib/libadolc.a

EnHOME/adolc base/include : se encuentran todos los includes que usa la herramien-ta

En HOME/adolc base/lib/ : se encuentran todas las librerıas donde destacarıamos lade libadolc.a (archivo ya compilado) que es necesario para compilar.

EnHOME/Descargas/ADOL−C−2,1,5/ADOL−C/: tenemos toda la informacionde la herramienta: ejemplos , etc

Page 79: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

Bibliografıa

[1] C. E. B. Hernandez, J. P. Peinador, C. L. Alonso, J. L. Montana, M. D. L. Cruz, and A. Or-tega, “Coevolutionary architectures with straight line programs for solving the symbolicregression,” 2010.

[2] Wikipedia, “Descenso del gradiente.”. Available from: http://en.wikipedia.org/wiki/Gradientdescent.

[3] Wikipedia, “Ejemplo del metodo forward en la diferenciacion automatica.”. Availablefrom: http://en.wikipedia.org/wiki/Automaticdifferentiation.

[4] C. L. Alonso, J. L. Montana, C. E. B. Hernandez, and J. L. Crespo, “Adaption, performanceand vapnik-chervonenkis dimension of straight line programs,”.

[5] C. L. Alonso, J. Puente, and J. L. Montana, “Estrategias de la inteligencia artificial: losalgoritmo evolutivos,”.

[6] Wikipedia, “Coevolucion.”. Available from: http://es.wikipedia.org/wiki/Coevolucion.

[7] “Metodo del gradiente.”. Available from: http://www.

investigaciondeoperaciones.net/metododelgradiente.html.

[8] Wikipedia, “Gauss-newton algorithm.”. Available from: http://en.wikipedia.org/wiki/GaussNewtonalgorithm.

[9] Wikipedia, “Levenberg-marquardt algorithm.”. Available from: http://en.

wikipedia.org/wiki/Levenberg-Marquardt_algorithm.

[10] I. H. Revilla, “Un analisis del metodo de gradiente conjugado.”. Available from: http://mmc2.geofisica.unam.mx/cursos/tedcd/GradienteConjugado.

pdf.

73

Page 80: Optimizacion de las constantes en una´ estrategia ...paginaspersonales.deusto.es/cruz.borges/Docencia/10PFM-borja.pdf6 2.2. ELEMENTOS DE UN ALGORITMO EVOLUTIVO Las constantes mudas:

74 BIBLIOGRAFIA

[11] Wikipedia, “Algoritmo de eliminacion de gauss-jordan.”. Available from: http://es.wikipedia.org/wiki/EliminaciondeGaussJordan.

[12] O. Stauning, “Automatic differentiation in theory and practice,” 1996.

[13] Autodiff, “Automatic differentiation tools.”. Available from: http://www.

autodiff.org/?module=Tools.

[14] A. Walther and A. Griewank, ADOL-C: A package for the Automatic Differentiation of

Algorithms Written in C/C++. second ed., 2008.

[15] E. C. Borges, Resolucion de problemas de Satisfactibilidad y Aprendizaje Inductivo me-

diante tecnicas evolutivas: Hacia una solucion al problema XVII de Smale en el caso real.2010.