III Congreso Internacional sobre Métodos Numéricos en Ingeniería y Ciencias Aplicadas S. Gallegos, I. Herrera, S. Botello, F. Zárate, y G. Ayala (Editores) © ITESM, Monterrey 2004 CIMNE, Barcelona 2004 ALGORITMOS EVOLUTIVOS EN LA SOLUCIÓN DE PROBLEMAS DE ESTIMACIÓN DE PARÁMETROS Janoi Villegas Placeres y Janos E. Acevedo Cárdenas Departamento de Informática, Facultad de Informática, Universidad de Matanzas, Carretera a Varadero Km 3, Matanzas, Cuba, e-mail: janoi.villegas@umcc.cu, janos_acevedo@yahoo.es, web page: http://www.umcc.cu Juan M. Otero Pereira Departamento de Matemática Aplicada, Facultad de Matemática y Computación, Universidad de La Habana, San Lázaro y L. Vedado, 10400 C. Habana, Cuba, e-mail: otero@matcom.uh.cu. web page: http://www.uh.cu Resumen. El problema de determinar numéricamente los parámetros (p) de un modelo matemático f(x,p) de modo que éste ajuste de manera óptima, un conjunto de datos experimentales oi i=1,...,k es conocido como problema de estimación de parámetros. Uno de los criterios utilizados más frecuentemente para realizar el ajuste es el de minimizar la suma del cuadrado de los errores (ei=f(xi,p)-oi). Diferentes métodos han sido propuestos para resolver problemas de este tipo. Al utilizar información de las derivadas de primer orden de la función a minimizar, la mayoría de dichos métodos corren el riesgo de quedar atrapados en mínimos locales. Además, éstos no pueden ser aplicados en problemas discretos o donde el modelo no sea diferenciable. El objetivo de este trabajo es evaluar el comportamiento de los algoritmos evolutivos como alternativa de solución cuando los métodos clásicos no sean aplicables. Se muestran los resultados experimentales obtenidos con el sistema computacional implementado. Palabras clave: algoritmos evolutivos, estimación de parámetros, mínimos cuadrados, sistema computacional. 1 INTRODUCCIÓN El problema de estimación de los parámetros óptimos en procesos de modelación matemática de un conjunto de datos experimentales, está presente en el desarrollo contemporáneo de ramas de la matemática, la física, la bioquímica y otras ciencias; así como en diversos campos de aplicación de las mismas11. El problema de estimación de parámetros es usualmente abordado como un problema de optimización mínimo cuadrado sin restricciones y para su solución existen diversas técnicas clásicas deterministas. Los métodos más conocidos de este tipo son los llamados Quasi – Newtons y en particular el método de Levenberg – Marquardt el cual explota la estructura particular del problema. Todos estos enfoques clásicos para la resolución del problema mínimo cuadrático mantienen el problema de la convergencia al óptimo global puesto que ellos garantizan solamente la convergencia a uno local. Esto se debe a que la información del gradiente y por consecuencia el valor óptimo depende fuertemente de una aproximación inicial. Además, los métodos deterministas no pueden ser aplicados a modelos no diferenciables o discontinuos, por ejemplo: módulos, tangentes o modelos del tipo min max. J. VILLEGAS et al. / AE para Estimación de parámetros En las siguientes secciones se describe de qué forma hemos utilizado algoritmos evolutivos para la resolución de problemas de estimación de parámetros. También discutimos el buen desempeño presentado por este método de búsqueda heurística en la solución de este tipo de problemas, ya que pueden usarse como solución alternativa en casos en que los algoritmos clásicos no son efectivos. Para llevar a cabo la experimentación se diseñó e implementó un sistema computacional que permite resolver problemas de estimación de parámetros utilizando técnicas evolutivas y métodos deterministas de optimización. Se instrumentó además un generador de problemas que produce datos experimentales exactos y perturbados, el cual constituye una herramienta útil para la experimentación en general. Para ello se siguió el Paradigma de Programación Orientada a Objetos. La organización de este artículo es como sigue. En la Sección 2 (Teoría Numérica) se formula el problema de estimación de parámetros de forma general y se mencionan ejemplos concretos que van a ser tratados en el artículo. La Sección 3 (Algoritmo Evolutivo. Aplicación) contiene una caracterización del algoritmo evolutivo utilizado. En la Sección 4 (Sistema de Optimización) se presenta el sistema computacional propuesto, módulos implementados, modo de uso. La Sección 5 (Resultados Numéricos) ofrece los resultados experimentales obtenidos de manera general y para los ejemplos concretos mostrados en la Sección 2. La Sección 6 contiene los comentarios finales de este artículo. Finalmente se muestra la bibliografía consultada. 2 TEORÍA NUMÉRICA El problema de estimación de parámetros consiste en determinar numéricamente los parámetros de un modelo matemático dado, con el que se pretende ajustar de manera óptima un conjunto de datos experimentales. Puede formularse de la siguiente manera: Se tiene un conjunto de datos que se quieren representar de forma compacta a través de algún modelo matemático. Se parte de un conjunto de observaciones: x11 x 21 L x n1 o1 x12 x 22 L x n 2 o 2 M M M M M x1m x 2 m L x nm o m f : Rn ® R , y se propone un modelo de ajuste: f ( x1 , x2 , ..., x n , p1 , p 2 , ..., pk ) donde p1 , p 2 , ... , p k representan los parámetros a estimar. La solución de este tipo de problemas puede ser formulada como minimizar la discrepancia entre los valores numéricos obtenidos en la experimentación y la evaluación del modelo de ajuste en el conjunto de observaciones dado. Nuestro problema de estimación se convierte entonces en el problema de mínimos cuadrados descrito a continuación: m 2 min g = å e i g : R k ® R (1) i =1 donde m es el número de observaciones, k la cantidad de parámetros a estimar y ei el error asociado a la observación i, en general no lineal. ei = f (x1i , x 2i , ... , x ni , p1 , p 2 , ... , p k ) - o i (2) Si el modelo está bien planteado, se puede esperar valores pequeños de los ei y por consiguiente un buen ajuste de los datos. A partir de este momento abordaremos la solución numérica del problema de estimación de parámetros como el problema de optimización sin restricciones descrito en (1). J. VILLEGAS et al. / AE para Estimación de parámetros 1 m å f i ( x) 2 puede ser minimizada por un método general de 2 i =1 minimización sin restricciones de tipo determinista, aunque en la mayoría de las ocasiones sus propiedades hacen que se usen, dentro de este grupo, los diseñados específicamente para el problema mínimo cuadrado. En particular, el gradiente y la matriz hessiana de la función F tienen una estructura peculiar: La función objetivo F = m ÑF ( x ) = å f i ( x ) Ñf i ( x ) = J T ( x ) f ( x ) i =1 Ñ 2 F ( x) = J T ( x) J ( x) + Q( x) (3) m Q ( x) = å f i ( x ) Ñ 2 f i ( x ) i =1 donde J (x) es la matriz jacobiana de F (x ) . Los métodos de minimización mínimo cuadrática están basados típicamente en la premisa de que, si el modelo está bien planteado, cerca del óptimo el término Q(x) se hace despreciable y J T ( x) J ( x) se considera una aproximación del hessiano. Los métodos clásicos para la resolución de este tipo de problema tienen mucho en común. La similitud se debe a que son algoritmos descendentes basados en el método de Newton. Estos comienzan a iterar por un punto inicial dado ( x0 ) , en cada iteración eligen una dirección de movimiento (d k ) , un tamaño de paso a dar en esta dirección (a k ) y “avanzan” hacia el punto correspondiente. Este proceso termina al encontrar un punto de mínimo local o cuando se cumpla algún otro criterio de parada especificado. Entre estas técnicas deterministas se encuentran el método Levenberg – Marquardt y los métodos conocidos como Quasi – Newtons8. Todos estos enfoques clásicos para la resolución del problema mínimo cuadrático mantienen el problema de la convergencia al óptimo global ya que garantizan solamente la convergencia al mínimo local por basarse en la información del gradiente. Además, no pueden ser usados en modelos discretos o no diferenciables y el valor óptimo depende fuertemente de una aproximación inicial. Cuando el modelo matemático contiene módulos, tangentes o son modelos del tipo min – max, por ejemplo, no pueden ser utilizadas las técnicas descritas anteriormente. En este artículo serán analizados los ejemplos: 1. n + p( x2 - x12 ) + ( q - x1 )2 2. p( x2 - x1 ) 2 + (1 - x1 ) 2 + q( x4 - x3 ) 2 + (1 - x3 ) 2 + r ( x2 + x4 - 2) 2 + r ( x2 - x4 ) 2 q 3. ( | px1 | ) 4. tan( px1 ) 2 2 5. | px1 + qx 2 - r | 3 ALGORITMO EVOLUTIVO. APLICACIÓN Los algoritmos evolutivos se encuentran entre los métodos más conocidos de búsqueda heurística. Este tipo de métodos tiene como característica más importante su robustez, es decir, el hecho de que un mismo método pueda ser empleado para resolver una gran variedad de problemas. Es por ello, que nos ofrecen una alternativa para la optimización. Los algoritmos evolutivos se desarrollaron a partir de los algoritmos genéticos que fueron propuestos inicialmente por Holland en 1975, su aplicación ha tenido buenos resultados en una gama amplia de aplicaciones. J. VILLEGAS et al. / AE para Estimación de parámetros Los algoritmos evolutivos están basados en la teoría de la evolución natural descrita por Darwin, identificando los conceptos de adaptación y optimización de donde se puede deducir un método de maximización de funciones. Estos algoritmos operan sobre una población de individuos, cada uno de los cuales es solución factible del problema y candidato a solución óptima. Los individuos “luchan” por sobrevivir, se cruzan entre sí y mutan al igual que en la teoría biológica, obteniendo en cada generación nuevos individuos supuestamente mejor adaptados que irán evolucionando hacia la solución óptima. El esquema general de un algoritmo evolutivo es como sigue: Algoritmo Llenar la población (P) Repetir Selección de población intermedia P1 Cruzamientos en P1 Mutaciones en P1 P = P1 Hasta cumplir algún criterio de parada Tabla 1 – Esquema general de un Algoritmo Evolutivo 3.1 Aplicación al problema de estimación de parámetros Los aspectos necesarios a tener en cuenta, para la aplicación de los algoritmos evolutivos a un problema particular son los siguientes: · Representación cromosómica. · Creación de una población inicial. · Función para el cálculo del grado de adaptación de cada individuo (fitness). · Criterio de selección · Tipo de cruzamiento y probabilidad · Tipo de mutación y probabilidad · Criterio(s) de parada La representación cromosómica de una solución factible estará dada por un arreglo unidimensional con k elementos, donde k es el número de parámetros a estimar. Sea el vector solución ( p1 , p2 , ... , p k ) , entonces el valor del gen que se encuentra en la posición i del cromosoma que representa a este vector, corresponderá al valor del parámetro Pi de dicha solución. La población inicial se construirá de forma uniformemente aleatoria y los valores de los genes podrán estar acotados por valores que elija el usuario. El tamaño de población también será especificado, llamémosle a éste n. Nuestra función objetivo (1), será la encargada del cálculo del fitness de cada cromosoma cuyo valor corresponderá a la evaluación del vector solución que éste representa. Es importante subrayar que se pretende minimizar g, por lo que el cromosoma estará mejor adaptado mientras menor valor de fitness posea. Al comienzo de cada iteración se procede a la selección de los cromosomas que formarán la población base de la nueva generación. Esta población intermedia tiene igual tamaño que la original, pero en ella existirán cromosomas repetidos a causa de haber sido seleccionados más de una vez. Es de suponer que un buen criterio de selección garantice un mayor número de copias de los mejores cromosomas y que los peores tengan poca probabilidad de ser escogidos. Los criterios de selección instrumentados en el sistema son: Ruleta y Torneo16. Después de conformarse la población intermedia, se procede a los cruces entre sus individuos. La cantidad de cruces está dada por la probabilidad de cruzamiento. Sean Pc la probabilidad de cruzamiento y n el tamaño poblacional, la cantidad de cromosomas que se cruzan es nP c . Las J. VILLEGAS et al. / AE para Estimación de parámetros parejas para el cruce se seleccionan de forma aleatoria. Los tipos de cruzamiento implementados son: Por un punto, Aritmético, Plano, Promedio y BLX- a . Al concluir el proceso de cruzamiento se aplica el operador de mutación. Sea Pm la probabilidad de mutación, se eligen aleatoriamente nPm individuos para mutar. Se utiliza mutación aleatoria. El algoritmo lleva a cabo una estrategia elitista y como condiciones de parada se utilizan la cantidad de generaciones a llevar a término y el valor de la función objetivo a alcanzar. Un problema que se puede presentar en la aplicación de los algoritmos evolutivos es el fenómeno de convergencia prematura. Este consiste en que los individuos tienden a parecerse mucho a una solución que es buena, pero aún está lejana del óptimo. Cuando ocurre, dependemos totalmente de la mutación para obtener nuevos valores y por consiguiente se retrasa en demasía la convergencia del algoritmo. Para atenuar este problema, en el sistema se instrumentó una variante de las variaciones propuestas por P. Nikitas y A. Papageorgiou13 al algoritmo genético clásico con el fin de aumentar su probabilidad de éxito. Consiste en, cada un cierto número elegible de generaciones, rellenar nuevamente la población de forma análoga a [13], pero en nuestro caso no se realiza desde cero, sino que se suma al valor de cada gen un número aleatorio b Î [-1,1] . La justificación para esto se desprende del hecho de que al prersentarse el fenómeno descrito anteriormente en un vector solución cercano al óptimo global, una intensificación de la búsqueda en una vecindad de dicho vector proporciona mayores posibilidades de encontrarlo rápidamente. 4 SISTEMA DE OPTIMIZACIÓN La plataforma utilizada para el desarrollo del sistema fue Windows XP y la instrumentación fue realizada en el entorno visual de Delphi 7.0 que posee como lenguaje el Object Pascal, descrito como de alto nivel, fuertemente tipificado que soporta el paradigma de programación orientada a objeto. En la etapa de instrumentación de las soluciones se implementó un buen número de clases con el objetivo de aprovechar los beneficios que ofrece el paradigma de programación orientada a objeto. Existen dos módulos fundamentales: un módulo general que incluye las clases para el manejo de los ficheros con las observaciones, un evaluador de funciones y un generador de observaciones exactas y perturbadas en un rango dado; y un módulo para el algoritmo evolutivo que incluye clases para cada una de las componentes de éste. Además, se instrumentó un tercer módulo que contiene las implementaciones de los métodos deterministas clásicos Levenberg – Marquardt y los conocidos como Quasi – Newton para establecer comparaciónes en cuanto a desempeño con los algoritmos evolutivos. La interfase de usuario, tanto del generador de observaciones como del sistema de optimización propiamente, se compone de un conjunto de ventanas y resulta de fácil uso para el investigador. Para resolver un problema determinado, además de especificar el fichero de observaciones y los parámetros del algoritmo evolutivo, sólo es necesario escribir el modelo que se desea ajustar; el sistema reconoce en el modelo los parámetros, los toma como las variables del problema de optimización y construye la función objetivo; todo esto de forma transparente al usuario. En las figuras 1 y 2 se muestra un esquema del funcionamiento del generador de observaciones y del sistema de optimización respectivamente. Figura 1 - Generador de observaciones. J. VILLEGAS et al. / AE para Estimación de parámetros Figura 2 - Sistema de optimización. 5 RESULTADOS NUMÉRICOS Los algoritmos evolutivos corridos presentaron, de forma general, un buen desempeño en la búsqueda de la solución óptima. Se alcanzó en todos los casos una mayor exactitud al utilizar la modificación propuesta en 3. Esta heurística se aplicó a problemas no diferenciables, los cuales no pueden ser resueltos por técnicas deterministas, y se lograron soluciones satisfactorias. A continuación mostramos los resultados obtenidos a partir de varios ejemplos. Para cada uno se especifica: mejor solución obtenida, iteración y tiempo en que se encontró ésta, y el valor de la función objetivo evaluada en dicho resultado. En todos los casos se creó un fichero con 50 elementos usando el generador de observaciones (exactas). En todos los ejemplos se realizan como máximo 1000 iteraciones. Para los algoritmos evolutivos se utilizaron los siguientes parámetros: § Tamaño poblacional 100. § Criterio de selección Torneo. Tamaño de equipo 4. § Tipo de cruzamiento Aritmético. Probabilidad 0.8. § Tipo de mutación Aleatoria. Probabilidad 0.1. § Elitismo. Ejemplo 1 Modelo: n + p( x 2 - x12 ) + (q - x1 ) 2 Solución real: (1,12,1) Algoritmos Lev.-Marquardt Mejor solución (1.000000, 12, 1.000000) Iteración 1000 Quasi-Newtons (0.999993, 11.999999, 1.0000001) 21 Tiempo (seg) F.objetivo -22 79:649 1.433 x 10 -7 2:453 5.148 x 10 Alg. Evolutivos (0.999996, 11.999999, 0.999999) 116 17:885 1.503 x 10 A.E. modificado (1.000000, 12, 1.000000) 960 89:7855 6.93 x 10 Tabla 2 – Resultados numéricos obtenidos. Ejemplo 1 Ejemplo 2 Modelo: p( x2 - x1 ) 2 + (1 - x1 ) 2 + q( x4 - x3 ) 2 + (1 - x3 ) 2 + r ( x2 + x4 - 2) 2 + r ( x2 - x4 ) 2 Solución real: (100, 90, 10) -10 -21 J. VILLEGAS et al. / AE para Estimación de parámetros Algoritmos Lev.-Marquardt Mejor solución (100, 90.000000, 10) Iteración 58 Quasi-Newtons (100.000000, 90.000000, 9.999999) 8 Tiempo (seg) F.objetivo -19 7:351 6.6886 x 10 -6 1:262 2.0133 x 10 Alg. Evolutivos A.E. modificado (9.999301, 90.000005, 10.000305) (100.000000, 89.000000, 10.00000) 112 840 37:34 91:338 1.665837 2.8973 x 10 -14 Tabla 3 - Resultados numéricos obtenidos. Ejemplo 2 Ejemplo 3 q Modelo: ( | px1 | ) Solución real: (3, 0.5) Algoritmos Alg. Evolutivos A.E. modificado Mejor solución (2.985710, 0.500645) (-3.000000, 0.499999) Iteración 59 823 Tiempo (seg) 5:799 45:472 F.objetivo 0.000195 2.7620 x 10 -19 Tabla 4 - Resultados numéricos obtenidos. Ejemplo 3 Ejemplo 4 Modelo: tan( px1 ) Solución real: (4) Algoritmos Alg. Evolutivos Mejor solución (4) Iteración 438 A.E. modificado (4) 116 Tiempo (seg) F.objetivo -25 33:869 1.8304 x 10 -25 9:43 1.8304 x 10 Tabla 5 - Resultados numéricos obtenidos. Ejemplo 4 Ejemplo 5 Modelo: | px 12 + qx 22 - r | Solución real: (3, 2, 5) Algoritmos Alg. Evolutivos Mejor solución (3.000001, 2.000000, 5.000321) Iteración 96 A.E. modificado (-2.999999, -1.999999, -4.999999) 990 Tiempo (seg) F.objetivo -6 13:539 2.413 x 10 -12 59:728 6.178 x 10 Tabla 6 - Resultados numéricos obtenidos. Ejemplo 5 Los resultados anteriores fueron obtenidos en una PC Pentium III 700 MHz con 128 Mb de memoria RAM. 6 CONCLUSIONES Hemos ilustrado en este artículo como los algoritmos evolutivos pueden ser aplicados de manera exitosa a problemas de estimación de parámetros que no pueden ser resueltos mediante un método clásico determinista de optimización. Para este propósito fue implementado un sistema computacional que utiliza el paradigma de programación orientada a objeto. Este posee una interfase que facilita el trabajo al investigador, sólo es necesario escribir el modelo que se desea ajustar. El sistema reconoce en el modelo los parámetros, los toma como las variables del problema de optimización y construye la función objetivo, todo esto de forma transparente al usuario. Se instrumentó además un generador que produce datos experimentales exactos y perturbados, el cual constituye una herramienta útil para la experimentación en general. J. VILLEGAS et al. / AE para Estimación de parámetros Una vez cerca del óptimo, el algoritmo evolutivo produce una convergencia muy lenta a la solución. Este comportamiento mejoró sensiblemente en la mayoría de los ejemplos resueltos, cuando se utilizó el algoritmo evolutivo modificado. La experimentación se realizó con valores de población 100 y probabilidades de cruzamiento y mutación 0.8 y 0.1 respectivamente. Los algoritmos evolutivos tuvieron un buen desempeño en los ejemplos mostrados. Nuestra aplicación está aun en fase de prueba y desarrollo. Serán dados los próximos pasos en el control de variaciones en los parámetros de los algoritmos evolutivos para lograr así resultados de mayor trascendencia. REFERENCIAS [1] Andre, J. Siarry P.: An improvement of the standard genetic algorithm fighting premature convergence in continuous optimization, Advances in Engineering Software, (2000). [2] Conte, S.: Elementary Numerical Analysis, Third Edition. [3] Fletcher, P.: Practical Methods of Optimization, Second Edition, John Wiley&Sons, (1989). [4] Garnir, H. G.: Teoría de Funciones, Ediciones Técnicas Marcombo, (1966). [5] Gill, P. Murray, W.: Practical Optimization, Academic Press, (1981). [6] Kalyanmoy, D.: Multi-Objective Optimization using Evolutionary Algorithms, (2001). [7] Lipschutz, S.: Teoría y Problemas de Álgebra Lineal, Pueblo y Educación, (1973). [8] Luenberger, D. G.: Introduction to Linear and Nonlinear Programing, Second Edition, AddisonWesley Publishing Co, Inc. Massachusetts, (1984). [9] Man, K.F.: Genetic Algorithms. Concepts and Designs, Springer-Verlag, (1999). [10] Michalewicz, Z.: Genetic Algorithms + Data Structures = Evolution Programs, Springer-Verlag, (1992). [11] Monett, D.: On studying a Non-Standard Genetic Algorithm solving Inverse Problems from Chemical Kinetics (1996). [12] Nakamura, S.: Applied Numerical Methods with Software, Prentice-Hall, (1991). [13] Nikitas, P., Papageorgiou, A.: Modifications of the classical genetic algorithm for non-linear fitting applied to response surface modeling in HPLC, Computer Physics Communications, (2001). [14] Samarsky, A.: Introducción a los Métodos Numéricos, Mir Moscú, (1986). [15] Scales, L. E.: Introduction to Non-Linear Optimization, Springer-Verlag, (1985). [16] Schmitt, L.: Theory of genetic algorithms, Theoretical Computer Science, (2001). [17] Suárez, M.: Matemática Numérica, Editorial de Libros para la Educación, (1980). [18] Whitley D.: An overview of evolutionary algorithms: practical issues and common pitfalls, Information and Software Technology, (2001). [19] Youssef, H.: Evolutionary algorithms,simulated annealing and tabu search: a comparative study, Engineering Applications of Artifcial Intelligence, (2001). [20] Yuen, Y. Guaranteeing: The probability of success using repeated runs of genetic algorithm, Image and Vision Computing, (2001).