Optimización Continua Basada en Algoritmos de Estimación de Regresión. Miguel Ratón Almansa

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Optimización Continua Basada en Algoritmos de Estimación de Regresión. Miguel Ratón Almansa"

Transcripción

1 Optimización Continua Basada en Algoritmos de Estimación de Regresión Miguel Ratón Almansa

2 A mis padres y mi hermana

3 Índice general 1. Introducción Motivación Objetivos Estado del Arte Algoritmos Evolutivos Programación evolutiva Estrategias evolutivas Algoritmos genéticos Introducción Terminología Esquema general del algoritmo Ventajas e inconvenientes Algoritmos EDA Introducción Esquema general del algoritmo Modelo gráfico probabilístico Tipos de modelos probabilísticos UMDA c MIMIC c Regresión Regresión lineal Regresión lineal simple Regresión lineal múltiple Regresión penalizada L1 y L Desarrollo Diseño del algoritmo Descripción general Simulación de nuevas poblaciones Método del desplazamiento Gaussiano Implementación del algoritmo R Introducción R como entorno iii

4 Índice general Índice general Paquete penalized Introducción Elección de λ Estandarización Genes sin penalizar Detalles de implementación cera.r gaussian_offset.r Funcionamiento práctico Requisitos previos Cómo ejecutar el algoritmo en R Ejemplos de funcionamiento Resultados Batería de funciones Problema de Ackley Problema de Branin Problema de Griewank Problema Quartic con ruido Problema de Schwefel Problema de Schwefel Problema de Schwefel Problema de Six-Hump Camel-Back Problema de Rastrigin Problema de Rosenbrock Problema Generalizado de Schwefel Problema de la Esfera Problema del Escalón Resultados experimentales Datos de entrada Resultados Tamaño población 300, selección 50 individuos Tamaño población 400, selección 200 individuos Tamaño población 1200, selección 300 individuos Tests estadísticos para comparar algoritmos Test de Mann-Whitney Resultado del test de Mann-Whitney Conclusiones 94 A. Cómo crear CERAS en R 96 A.1. Herramientas A.2. Creación iv

5 Índice general Índice general Bibliografía 102 Índice alfabético 105 v

6 Índice de figuras 2.1. Ejemplo de un modelo gráfico para X = (A, B, C, D) Diagrama de dispersión generado con R Recta de regresión generada con R Interpretación geométrica de la regresión lineal múltiple Interpretación geométrica de lasso Diagrama de flujo del algoritmo Visión esquemática del funcionamiento de R Visión esquemática de una función en R Población de 9 individuos con sus respectivos genomas Diagrama flujo alto nivel del núcleo del algoritmo Diagrama de flujo detallado de cera.r Diagrama de flujo de alto nivel del método de simulación Diagrama de flujo detallado de gaussian_offset.r Consultar variable entorno R_HOME Comando source Instalación de paquetes a partir de archivos locales (versión Windows) Carga del paquete ceras Ejecución de Branin sin interacciones Población obtenida en la generación Ejecución de grado 2 no convergente Ejecución de grado 2 convergente Argumento TRACE: Individuos seleccionados para penalized Argumento TRACE: Modelo de regresión devuelto por penalized Argumento TRACE: Población evolucionada Coeficientes β con interacciones grado Ejemplo de función trampa Representación gráfica del problema de Ackley Representación gráfica del problema de Branin Representación gráfica del problema de Griewank (con d = 4000) Representación gráfica del problema de Six-Hump Representación gráfica del problema de Rastrigin Representación gráfica del problema de Rosenbrock Representación gráfica del problema generalizado de Schwefel Representación gráfica del problema de la Esfera

7 Índice de figuras Índice de figuras A.1. Variables de entorno A.2. Estructura de directorios tras aplicar package.skeleton A.3. Generación del paquete binario A.4. Estructura de directorios del paquete binario A.5. Estructura de directorios completa del paquete binario

8 Índice de cuadros 2.2. Datos mensuales de producción y costos de operación Incremento para un problema de maximización Incremento para un problema de minimización Interfaz de la función cera Interfaz de la función powerset Interfaz de la función extendgenome Interfaz de la función hasconstantcolumn Interfaz de la función isconstantmatrix Interfaz de la función loadproblem Interfaz de la función getgenomerange Interfaz de la función makeinitialindividual Interfaz de la función createinitialpopulation Interfaz de la función selectindividuals Interfaz de la función improvepopulation Interfaz de la función gaussian_offset Interfaz de la función global_sign Interfaz de la función getmeansofcolumns Interfaz de la función calculatedeltas Interfaz de la función improvegen Interfaz de la función improvemultiplegenes Interfaz de la función improveindividual Interfaz de la función improveusinginteractions Problema de Ackley Problema de Branin Problema de Griewank Problema Quartic con ruido Problema de Schwefel Problema de Schwefel Problema de Schwefel Problema de Six-Hump Camel-Back Problema de Rastrigin Problema de Rosenbrock Problema Generalizado de Schwefel Problema de la Esfera

9 Índice de cuadros Índice de cuadros Problema del Escalón Resultados para Pob=300, Sel=50, Elitismo=Sí Error con respecto a f(x ) (Pop=300,Sel=50,Elitismo=Sí) Resultados para Pob=300, Sel=50, Elitismo=No Error con respecto a f(x ) (Pop=300,Sel=50,Elitismo=No) Comparación entre algoritmos (Pop=300,Sel=50) Problemas optimizados por debajo del error especificado (Pop=300, Sel=50) Resultados para Pob=400, Sel=200, Elitismo=Sí Error con respecto a f(x ) (Pop=400,Sel=200,Elitismo=Sí) Resultados para Pob=400, Sel=200, Elitismo=No Error con respecto a f(x ) (Pop=400,Sel=200,Elitismo=No) Comparación entre algoritmos (Pop=400,Sel=200) Problemas optimizados por debajo del error especificado (Pop=400, Sel=200) Resultados para Pob=1200, Sel=300, Elitismo=Sí Error con respecto a f(x ) (Pop=1200,Sel=300,Elitismo=Sí) Resultados para Pob=1200, Sel=300, Elitismo=No Error con respecto a f(x ) (Pop=1200,Sel=300,Elitismo=No) Comparación entre algoritmos (Pop=1200,Sel=300) Problemas optimizados por debajo del error especificado (Pop=1200, Sel=300) Combinación de algoritmos posibles Puntuación de algoritmos Ranking de algoritmos

10 1. Introducción 1.1. Motivación La computación evolutiva [4] es, como disciplina reconocida, relativamente reciente. Se adoptó el término en el año 1.991, y representa un esfuerzo por aunar las diferentes técnicas desarrolladas por los investigadores para simular ciertos aspectos de la evolución. Así pues, estas técnicas entre las que se hallan las basadas en programación evolutiva, estrategias evolutivas y algoritmos genéticos poseen una característica metafórica común sacada de la propia naturaleza: los individuos que forman una determinada población varían aleatoriamente, compiten entre sí, se seleccionan y se reproducen para dar lugar a nuevas poblaciones. Esto es, en esencia, en lo que consiste la evolución. Y cada uno de los 4 procesos mencionados anteriormente, tienen lugar como resultado inevitable de la evolución, sea ésta natural o no. La evolución es un proceso de optimización, no teniendo ésta por qué ser perfecta, pero sí lo suficientemente precisa como para dar respuesta a los problemas particulares que se le pueden presentar a un individuo en un determinado entorno. De aquí que sea natural describir la evolución, dentro de la computación evolutiva, en términos de un algoritmo que sea capaz de resolver problemas complejos de optimización. Las técnicas clásicas basadas en descenso por el gradiente, proceso de escalada determinista y búsqueda aleatoria (sin herencia) han proporcionado resultados poco satisfactorios en su aplicación sobre problemas de optimización no lineales. En cambio, estos problemas son los que aparentemente son capaces de ser resueltos satisfactoriamente mediante técnicas basadas en algoritmos evolutivos, siendo éste el motivo por el que la computación evolutiva ha suscitado un gran interés durante los últimos años. El motivo de este trabajo de fin de carrera es el de desarrollar una librería que permita la resolución de problemas de optimización no lineales mediante un enfoque basado en algoritmos evolutivos, empleando para ello un método de resolución basado en regresión regularizada. La librería se ha implementado en R, que es un lenguaje y entorno para computación estadística. Asimismo se ha diseñado la librería de tal forma que ésta sea independiente del problema que se desea optimizar, permitiendo añadir nuevos métodos de simulación 5

11 1.2. OBJETIVOS CAPÍTULO 1. INTRODUCCIÓN a los ya implementados y creando una interfaz fácilmente ampliable para permitir la implementación de nuevas funcionalidades de cara a futuras líneas de investigación Objetivos Los objetivos del presente proyecto de fin de carrera son los siguientes: Desarrollar un algoritmo que permita: Resolver problemas de optimización no lineales en dominios continuos empleando un método de resolución basado en algoritmos de estimación de distribuciones fundamentadas en regresión regularizada con penalización L1 (con interacción entre variables). Resolver problemas de optimización no lineales en dominios continuos empleando un método de resolución basado en algoritmos de estimación de distribuciones fundamentadas en regresión regularizada con penalización L2 (sin interacción entre variables). Evaluar el rendimiento del algoritmo implementado sobre una batería de problemas de optimización de funciones no lineales en dominios continuos. Comparar los resultados alcanzados con los obtenidos por los algoritmos EDAs (estimation of distribution algorithms) [19] para la misma batería de problemas y bajo las mismas configuraciones de prueba. 6

12 2. Estado del Arte 2.1. Algoritmos Evolutivos Los trabajos en computación evolutiva [4] dieron comienzo a finales de los años 50 y fueron llevados a cabo por investigadores como Friedberg [12, 13], Box [5] y Bremermann [7] entre otros. El campo permaneció prácticamente en desconocimiento durante tres décadas debido en parte a la ausencia de una plataforma computacional poderosa y defectos metodológicos de los primeros métodos (Fogel). Los trabajos de Fogel [10], Schwefel [27] y Holland [15] serían los encargados de cambiar lentamente esta situación. El término algoritmos evolutivos es empleado para describir sistemas de resolución de problemas de optimización o búsqueda mediante computador que emplean modelos computacionales de algún conocido mecanismo de evolución como elemento clave en su diseño e implementación. Dentro de los algoritmos evolutivos existen tres grandes ramas: la programación evolutiva, las estrategias evolutivas y los algoritmos genéticos; destacando dentro de esta última la programación genética propuesta por Koza [18] en Programación evolutiva La programación evolutiva fue ideada por Lawrence J. Fogel en 1960 durante su estancia en la Fundación Nacional de la Ciencia (NSF). En aquel entonces la inteligencia artificial se centraba en heurísticas y simulación de redes neuronales primitivas. Fogel tenía claro que esas aproximaciones tenían limitaciones dado que intentaban simular el comportamiento del ser humano en lugar del proceso esencial que produce mejoras en el intelecto de un individuo: la evolución. Fogel consideró la inteligencia como algo basado en comportamientos adaptables en la búsqueda de objetivos dentro de un rango de situaciones. Posteriormente, la predicción fue tomada como el ingrediente clave del comportamiento inteligente, dando lugar a una serie de experimentos mediante máquinas de estados finitos para predecir series temporales no estacionarias con respecto a criterios arbitrarios. El procedi- 7

13 2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE miento fue aplicado con éxito en problemas de predicción, identificación y control automático. A mediados de los 80 se extendió el procedimiento para manejar representaciones alternativas, incluyendo listas ordenadas para el problema del viajante, y vectores de números reales para optimización de funciones continuas. Esto sirvió para otras aplicaciones tales como planificación, selección de conjuntos optimales, y entrenamiento de redes neuronales así como para realizar comparaciones con otros métodos de evolución simulada. El esquema genérico se asimila a una estrategia evolutiva (µ + µ) (ver sección 2.1.2) donde se aplica una mutación de tipo estadístico ( gaussiana ) sobre µ individuos y la selección se realiza mediante torneo. A principios de los 90 se realizaron una serie de esfuerzos para organizar conferencias anuales sobre programación evolutiva, teniendo lugar la primera en el año Esta conferencia mostró una gran variedad de aplicaciones en campos como la robótica, planificación de rutas, entrenamiento y diseño de redes neuronales y control automático entre otros. Se produjeron una serie de contactos entre las comunidades propulsoras de la programación evolutiva y las de las estrategias evolutivas justo antes de esta primera conferencia, poniendo de relieve las semejanzas entre ambos enfoques Estrategias evolutivas En 1964, tres estudiantes de la Universidad Técnica de Berlín (Bienert, Rechenberg y Schwefel) se propusieron construir un robot de investigación que pudiera realizar una serie de experimentos manipulando, iterativamente, un cuerpo flexible colocado a la salida de un túnel de viento a fin de minimizar su arrastre. Se llevó a cabo un primer experimento empleando una especie de plato bidimensional. De la estrategia de búsqueda iterativa ideada - aplicada manualmente en primer lugar y posteriormente llevada a cabo mediante un robot construido por Peter Bienert - se esperaba que terminase colocando el plato de forma que sobre éste actuase el mínimo arrastre posible. Pero no llegó a funcionar, puesto que tanto empleando una estrategia basada en una única variable en el tiempo así como por gradiente discreto siempre se quedaba atascado en un mínimo local: un pliego en forma de S del plato. Fue entonces cuando a Rechenberg [24] se le ocurrió la idea de utilizar unos dados para tomar decisiones aleatorias. La interpretación de cambios distribuidos binomialmente como mutaciones así como de la decisión de volver sobre un paso anterior o no como selección, supuso la base de posteriores desarrollos basados en estrategias evolutivas, tal y como las conocemos hoy en día. A la primera versión de estrategia evolutiva (EE), se la denominó (1 + 1)EE (conocida también como estrategia evolutiva con dos individuos, donde uno es progenitor y otro es el descendiente) y consistía básicamente en lo siguiente: 8

14 2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE 1. En el momento t=0 se genera una población con un único individuo. 2. Se genera una población con un único descendiente mediante un operador de mutación. 3. De los dos individuos de la población, el descendiente reemplaza a su progenitor si y sólo si es más apto que éste; en caso contrario, el descendiente es eliminado y la población permanece sin cambios. Si se satisface la condición de parada se termina. En caso contrario se vuelve al paso 2. Posteriormente, en torno a 1975, Schwefel [28] formula una estrategia evolutiva mejorada, denominada (µ + λ)ee, donde λ representa la descendencia generada a partir de µ progenitores. Su funcionamiento es el siguiente: 1. Se parte de una población inicial de µ individuos. 2. Se generan λ individuos a partir de los µ progenitores (generalmente a partir de la recombinación). 3. Se juntan los λ descendientes con los µ progenitores en una única población y de ella se muestrean los µ mejores individuos (reemplazo por inclusión). 4. Si se satisface la condición de parada se termina. En caso contrario se vuelve al punto 2. En la actualidad se están explorando nuevas estrategias evolutivas que combinan las estrategias anteriores. Algunas técnicas bajo estudio son las siguientes: Combinar las sustituciones de las poblaciones µ y λ. Introducir parámetros de caducidad: Cada individuo tiene una cuota de vida (i.e., dos o tres generaciones). Cada individuo tiene una cuota de fertilidad. Cada individuo tiene un número máximo de antecesores Algoritmos genéticos Introducción Los algoritmos genéticos [4, 26] son una clase de algoritmos evolutivos desarrollados por John Holland en El algoritmo genético canónico posee tres características 9

15 2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE fundamentales que son las que les diferencia con respecto a otro tipo de algoritmos evolutivos: 1. Se utiliza una representación basada en cadenas de bits. 2. El método de selección de individuos, basado en selección proporcional. 3. El método mediante el que se introducen variaciones en los individuos, denominado operador de cruce. Los algoritmos genéticos, al igual que el resto de algoritmos evolutivos, basan su funcionamiento en una metáfora biológica. Una serie de individuos que forman una determinada población, compiten entre sí, para transmitir su código genético a la siguiente población; siendo, por lo general, los más aptos los seleccionados para cruzarse con otros individuos Terminología Cada uno de los individuos representa una solución a un determinado problema de optimización, estableciéndose la siguiente terminología: Población: cada población se compone de cierto número de individuos. Individuo: cada individuo forma parte de una determinada población. Cada individuo posee su propio genoma. Genoma: un genoma se compone de una serie de genes siendo, en conjunto, el que determina la solución a un determinado problema. Representa un punto del espacio de búsqueda. Gen: unidad mínima de información que compone un genoma. Fitness: métrica que nos indica cómo de ajustado a la solución óptima está un individuo de la población. Método de selección: establece, en función del fitness de un individuo y de una distribución de probabilidad, el conjunto de individuos seleccionados para generar los individuos de la siguiente población. Operador de cruce: establece cómo se combinan los genomas de dos individuos para dar lugar a nuevos individuos. Operador de mutación: establece con qué probabilidad va a ser modificado aleatoriamente el genoma de un determinado individuo. 10

16 2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE Esquema general del algoritmo El esquema general [4, 8] del algoritmo sería el siguiente: 1. [Inicio]: Generar una población inicial P 0 aleatoria de n individuos. 2. [Evaluar]: Evaluar el fitness para cada uno de los inviduos de la población actual P i. 3. [Condición de parada]: Verificar si se cumplen las condiciones para detener la ejecución del algoritmo. En caso de cumplirse, parar la ejecución y devolver la mejor solución encontrada. En caso contrario, ir al punto [Generar siguiente población]: Generar una nueva población P i+1, de la siguiente manera: a) [Selección]: Seleccionar dos individuos, x e y, de la población actual P i en función del valor del fitness y de una función de probabilidad. b) [Cruce]: Aplicar el operador de cruce a x e y, con probabilidad preestablecida, para generar los nuevos individuos x e y. c) [Mutación]: Aplicar el operador de mutación a x e y con probabilidad preestablecida. d) [Añadir]: Añadir los nuevos individuos x e y (representando las mutaciones x e y respectivamente) a la población P i+1. e) [Iterar]: Volver al paso (a) hasta completar la población P i+1 con n individuos. 5. [Reemplazar]: Reemplazar la población P i por P i+1 y volver al paso Ventajas e inconvenientes Ventajas de los algoritmos genéticos: No se requieren conocimientos específicos sobre el problema que se desea resolver. Cuando se utilizan para resolver problemas de optimización, resultan menos afectados por los máximos/mínimos locales (falsas soluciones) que los algoritmos basados en técnicas tradicionales. 11

17 2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE Facilidad para paralelizar la ejecución, permitiendo la ejecución de código en arquitecturas de procesamiento paralelo. Desventajas de los algoritmos genéticos: Pueden tardar mucho en converger hacia una solución e incluso no hacerlo. Pueden converger prematuramente y, por tanto, no obtener la solución óptima Algoritmos EDA Introducción Los algoritmos EDA (Estimation of Distribution Algorithms) [19] constituyen una variante de los algoritmos genéticos, dentro del grupo de algoritmos evolutivos a los que ambos pertenecen. En lo que respecta a los algoritmos genéticos, algunos de los parámetros a determinar son: el operador de cruce y mutación así como sus probabilidades, tamaño de la población, número de generaciones,... La determinación de los valores óptimos de los parámetros anteriores puede verse como un problema de optimización. Una mala elección de los valores de estos parámetros puede llevar a que el algoritmo obtenga soluciones alejadas del óptimo. Otro motivo por el que se han desarrollado variantes a los algoritmos genéticos es por la necesidad de identificar las interrelaciones entre las variables utilizadas para representar a los individuos con la codificación utilizada. Todo ello ha motivado el desarrollo de nuevos métodos de búsqueda conocidos como algoritmos de estimación de distribuciones, denotados como EDAs. La principal diferencia de los EDAs con respecto a los algoritmos genéticos es que la evolución de poblaciones no se lleva a cabo por medio de operadores de cruce y mutación. En lugar de ello, se utiliza un modelo probabilístico que aprende las características de los individuos seleccionados en la generación anterior. Mientras que en los algoritmos genéticos las interrelaciones entre las variables representando a los individuos se tienen en cuenta de manera implícita, en los EDAs dichas interrelaciones se expresan de manera explícita a través de la distribución de probabilidad asociada con los individuos seleccionados en cada generación. De hecho, la estimación de dicha distribución de probabilidad conjunta asociada a los individuos seleccionados en cada generación es la principal dificultad de esta aproximación. 12

18 2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE Esquema general del algoritmo El esquema general del algoritmo sería el siguiente: 1. [Inicio]: Generar una población inicial P 0 aleatoria de M individuos. 2. [Iterar]: Iterar desde i = 0, 1, 2,..., hasta que se cumpla la condición de parada. a) [Selección]: Seleccionar N M individuos de la población actual P i según el método de selección. b) [Estimar]: p i+λ (x) = p ( ) x Pi Se Estimar la distribución de probabilidad de entre los N individuos seleccionados. c) [Muestreo]: Muestrear M individuos de p i (x) obteniendo la nueva población P i+1. Marcar P i+1 como la nueva población actual. En el paso 2.b es necesario estimar la distribución de probabilidad p i+1 (x), siendo x un individuo de la población. En general, el genoma de un individuo contendrá los valores de un conjunto de variables. Por tanto x = (x 1, x 2, x 3,..., x n ) y p i+1 (x) = p i+1 (x 1, x 2, x 3,..., x n ). Calcular la distribución de probabilidad conjunta de (x 1, x 2, x 3,..., x n ) tiene una complejidad, en el peor de los casos (dependencia entre todas las variables), exponencial respecto al número de variables que forman el genoma de un individuo. Para evitar un paso tan costoso, los algoritmos EDA recurren a un modelo gráfico probabilístico (MGP) Modelo gráfico probabilístico Los MGPs reducen el tiempo de cálculo de la distribución conjunta a cambio de estimar dicha distribución utilizando un modelo de dependencia condicional entre variables basado en un grafo de dependencias/causalidad. Es decir, simplificando las dependencias entre variables, de forma que el cálculo de la distribución conjunta sea más sencillo. Gráficamente un MGP es un grafo acíclico dirigido. Cada nodo del grafo representa una variable y cada arista una dependencia condicional entre variables. La siguiente figura muestra un ejemplo de MGP: 13

19 2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE Figura 2.1.: Ejemplo de un modelo gráfico para X = (A, B, C, D) Teóricamente para calcular la probabilidad conjunta habría que calcular: p(a, B, C, D) = p(a B, C, D) p(b C, D) P (C D) p(d) Esto implicaría llevar a cabo un cálculo con 15 parámetros. Sin embargo el MGP de la figura indica que podemos considerar independencia condicional entre ciertas variables. De aquí que el cálculo de la probabilidad conjunta se reduzca a: p(a, B, C, D) = p(a) p(b) p(c A) p(d A, B) Debiéndose calcular en este caso únicamente 8 parámetros. Los MGPs empleados por los algoritmos EDAs varían en función del dominio de las variables del genoma de los individuos. Si estas variables son discretas se utilizan redes Bayesianas. Si por el contrario se trata de variables continuas se utilizan redes Gaussianas. Existe la posibilidad de generar modelos probabilísticas híbridos, adaptados para genomas con variables discretas y continuas Tipos de modelos probabilísticos Un aspecto importante de los algoritmos EDA es cómo generar la estructura del MGP, es decir, su grafo de dependencias entre variables. Dado que no se tiene conocimiento específico del problema, es necesario aplicar un método que analice y detecte mediante análisis estadístico estas dependencias. A este proceso se le denomina aprendizaje de la estructura del modelo. A continuación se enumeran algunas heurísticas comúnmente 14

20 2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE utilizadas para el aprendizaje de la estructura del MGP. Se ha realizado la clasificación en función del análisis de dependencias: Análisis univariado: es el modelo más sencillo ya que no considera relaciones entre variables. Las probabilidades conjuntas se factorizan como producto de distribuciones (marginales) univariadas e independientes. p(x 1, x 2,..., x n ) = i=n i=1 p(x i ) Desde el punto de vista gráfico esto significa que el grafo asociado al MGP no contendrá ninguna arista. La principal ventaja de este modelo es su sencillez y bajo coste computacional. Sin embargo, puede no resultar suficiente para resolver algunos problemas. Análisis bivariado: este modelo permite dependencia entre variables, restringiéndose ésta a dos variables. Esto permite alcanzar un buen equilibrio entre complejidad y eficiencia. En este caso es necesario realizar dos tareas: 1. Hallar el grafo de dependencia. 2. Calcular las probabilidades condicionales p(x j x i ). Análisis multivariado: es el enfoque más completo, pero también el más complejo de implementar. Proporciona mayor flexibilidad a la hora de establecer dependencias entre variables a costa de un mayor coste computacional durante el aprendizaje y simulación del modelo. A continuación se explican dos de los métodos que utilizan los EDAs sobre dominios continuos para construir el modelo: UMDA c y MIMIC c. El primero de ellos pertenece al grupo de análisis univariado y el segundo al grupo de análisis bivariado. El interés de explicar el funcionamiento de ambos se debe a que los métodos desarrollados como trabajo final de carrera serán comparados con los resultados proporcionados tanto por UMDA c como por MIMIC c UMDA c El algoritmo UMDA c (Univariate Marginal Distribution Algorithm) para dominios continuos fue presentado por Larrañaga y Lozano [19]. Pertenece al conjunto de algoritmos de análisis univariado dado que no considera dependencias entre las variables. En cada generación y para toda variable UMDA c realiza una serie de cálculos de tests estadísticos con el fin de encontrar la función de densidad que mejor ajusta a la 15

21 2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE variable. En este caso, aunque la función de densidad conjunta es n f l (x; θ l ) = f l (x i, θ) i=1 el UMDA c es en realidad un algoritmo de identificación de estructura (algo que no ocurre para la versión discreta de UMDA) en el sentido de que la densidad de los componentes del modelo son identificados mediante tests de hipótesis. La estimación de los parámetros se lleva a cabo, una vez que se han obtenido las densidades, por medio de sus estimadores de máxima verosimilitud. Si todas las distribuciones univariadas son normales, los 2 parámetros a ser estimados en cada generación y cada variable son la media, µ l i, y la desviación típica, σ l i. Sus respectivos estimadores de máxima verosimilitud tienen las siguientes expresiones: ˆµ l i = X i l = 1 N x l i,r N r=1 ˆσ i l = 1 N N (x l i,r X i) l 2 r= MIMIC c El algoritmo MIMIC c (Mutual Information Maximization for Input Clustering) fue presentado por Larrañaga y Lozano [19] y constituye una adaptación del método MIMIC desarrollado por De Bonet [9] a dominios continuos donde el modelo de probabilidad subyacente para cada par de variables se asume que es una Gaussiana bivariada. La idea, al igual que en MIMIC para optimización combinatoria, consiste en describir la función de densidad conjunta mediante un ajuste del modelo tan próximo como sea posible a los datos empíricos empleando una función de densidad marginal univariada y n 1 pares de funciones de densidad condicionales. Para conseguir esto y, dado el siguiente teorema: Teorema 1 (Whittaker, 1990): Dada X como una función de densidad normal n-dimensional, X N(x;µ, ), la entropía de X es: h(x) = 1 2 n(1 + log2π) log 16

22 2.1. ALGORITMOS EVOLUTIVOS CAPÍTULO 2. ESTADO DEL ARTE Aplicando este resultado a funciones de densidad normales univariadas y bivariadas a fin de definir MIMIC c se obtiene: h(x) = 1 2 (1 + log2π) + logσ X h(x Y ) = 1 [ ( σ 2 (1 + log2π) + log X σy 2 σ 2 )] XY 2 σy 2 donde σx(σ 2 Y 2 ) es la varianza de la variable univariada X(Y ) y σ XY entre las variables X e Y. es la covarianza El aprendizaje de la estructura en MIMIC c funciona como un algoritmo voraz en 2 fases. En la primera fase, se elige la variable con la menor varianza de la muestra. En la segunda fase, se elige la variable X cuya estimación con respecto a la anterior variable elegida, Y, de: σ 2 Xσ 2 Y σ 2 XY σ 2 Y es la menor de todas y se vincula con Y. 17

23 2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE 2.2. Regresión En la práctica son frecuentes aquellas situaciones en las que se cuenta con observaciones sobre diversas variables, siendo razonable pensar que pueda existir una relación entre ellas. El poder determinar si existe esta relación es de sumo interés ya que, por una parte, se permitiría, conocidos los valores de algunas variables, efectuar predicciones sobre los valores previsibles de otra. Del mismo modo, podríamos también responder con criterio estadístico a cuestiones acerca de la relación de una variable sobre otra. El término regresión fue introducido por Francis Galton en su libro Natural inheritance (1889), partiendo de los análisis estadísticos de Karl Pearson. Su trabajo se centró en la descripción de los rasgos físicos de los descendientes (variable Y ) a partir de los de sus padres (variables x 1 y x 2 ). Estudiando la altura de padres e hijos a partir de más de mil registros de grupos familiares, se llegó a la conclusión de que los padres muy altos tenían una tendencia a tener hijos que heredaban parte de esta altura, pero que revelaban también una tendencia a regresar a la media. Galton generalizó esta tendencia bajo la "ley de la regresión universal": «Cada peculiaridad en un hombre es compartida por sus descendientes, pero en media, en un grado menor.» Se pretende desarrollar un método basado en estimación de modelos de regresión que tenga en cuenta el valor de la función objetivo (fitness del problema) para un número elevado de variables. La idea consiste en aplicar una función de regresión sobre los genes (variables x 1,..., x n ) que componen el genoma de cada uno de los individuos de la población así como sobre el valor de fitness (función objetivo Y ) asociado a cada genoma, obteniendo un modelo de regresión que nos permita determinar qué genes tienen mayor influencia sobre el valor que toma la función objetivo y de este modo tratar de evolucionar dichos genes hacia el fitness óptimo global. A continuación se van a explicar algunos modelos de regresión lineal Regresión lineal La regresión lineal [32] es un modelo matemático mediante el cual es posible inferir datos a partir de una población. Es de interés señalar que el ajuste de un modelo de regresión no se limita a analizar la relación entre dos variables; en general, buscaremos relaciones del tipo: n Y = β 0 + β i x i + ɛ i=1 relacionando de manera aproximada los valores de Y con los que toman otras variables x 1,..., x n. 18

24 2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE Se le denomina lineal debido a que sus variables son lineales (grado 1). Para aplicar un modelo de regresión lineal se deben dar los siguientes requisitos: 1. La relación entre las variables es lineal. 2. Los errores son independientes. 3. Los errores tienen varianza constante. 4. Los errores tienen una esperanza matemática igual a cero. 5. El error total es la suma de todos los errores. Dependiendo de los parámetros hablaremos de regresión lineal simple o de regresión lineal múltiple Regresión lineal simple El objeto de un análisis de regresión es investigar la relación estadística que existe entre una variable dependiente Y con una o más variables independientes (x 1, x 2,..., x n ). Cuando existe una única variable independiente y el tipo de dependencia es lineal, hablamos de regresión lineal simple, lo cual se reduce a una línea recta: Y = β 0 + β 1 x 1 + ɛ Donde los coeficientes β 0 y β 1 son parámetros que definen la posición e inclinación de la recta, siendo ɛ el error asociado a la predicción. El cuadro 2.2 recoge datos mensuales de producción y costos de operación para una empresa británica de transporte de pasajeros por carretera durante los años [17]. La producción se mide en términos de miles de millas-vehículo recorridas por mes, y los costos se miden en términos de miles de libras por mes. 19

25 2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE Mes Nº Costos Totales (miles) Y Millas Vehículos (miles) x Cuadro 2.2.: Datos mensuales de producción y costos de operación Para visualizar el grado de relación existente entre las variables, conviene elaborar un diagrama de dispersión, que es una representación en un sistema de coordenadas cartesianas de los datos numéricos observados, tal y como se muestra en la figura

26 2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE Figura 2.2.: Diagrama de dispersión generado con R Por otro lado, también se aprecia por qué este gráfico se denomina diagrama de dispersión: no existe una relación matemática exacta entre las variables, ya que no toda la variación en el costo de operación puede ser explicada por la variación en las millas-vehículo. En la figura 2.3, se muestra la recta de regresión generada a partir del conjunto de datos anterior. Figura 2.3.: Recta de regresión generada con R 21

27 2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE Si entre estas variables existiera una relación lineal perfecta, entonces todos los puntos caerían a lo largo de la recta de regresión, que además muestra la relación promedio que existe entre las dos variables. En la práctica, se observa que la mayoría de los puntos no caen directamente sobre la recta, sino que están dispersos en torno a ella. Esta dispersión representa la variación en Y que no puede atribuirse a la variación en x 1. Una pregunta que cabe hacerse es la de cómo de buena es la explicación que se da de Y en función de la variación de x 1. El estadístico que mide esta proporción se denomina coeficiente de determinación y tiene la siguiente expresión: e R 2 2 = 1 (Y ȳ) Regresión lineal múltiple En los modelos de regresión lineal múltiple, a diferencia de los modelos de regresión lineal simple, existen dos o más variables independientes. Sea Y la variable de interés, variable respuesta o dependiente y sean x 1,..., x n las variables explicativas o regresoras. La formulación matemática de estos modelos es la siguiente: Y = β 0 + β 1 x 1 + β 2 x β n x n + ɛ La interpretación de los coeficientes es similar al caso de la regresión simple: el coeficiente de cada variable independiente mide el efecto separado que esta variable tiene sobre la variable dependiente. El coeficiente de determinación, por otro lado, mide el porcentaje de la variación total en Y que es explicado por la variación conjunta de las variables independientes. El problema de ajustar un modelo de regresión lineal múltiple se puede interpretar geométricamente como el problema de encontrar en este subespacio vectorial π el vector ŷ (vector de predicciones) lo más próximo al vector de la variable respuesta y. Esto es encontrar el vector ŷ que minimice el módulo del vector de residuos, e = y ŷ (la suma de los residuos al cuadrado). La resolución de este problema viene dada por el vector proyección ortogonal del vector ŷ en el subespacio π considerado. 22

28 2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE Figura 2.4.: Interpretación geométrica de la regresión lineal múltiple Regresión penalizada L1 y L2 En los métodos de regresión lineal, tanto simple como múltiple, se suele emplear el método de los mínimos cuadrados para determinar los valores de los coeficientes del modelo de regresión correspondiente. Este método consiste en seleccionar como estimadores los valores de los parámetros que minimizan la suma de los cuadrados de los errores. Es decir, se trata de seleccionar valores ˆµ 1,..., ˆµ k que minimicen la siguiente función de k variables: k n i k ψ(µ 1,..., µ k ) = (y it µ i ) 2 n i = i=i t=1 e 2 it i=i t=1 Existen 2 motivos por los que algunos analistas no se muestran a menudo satisfechos con los resultados obtenidos mediante el método de mínimos cuadrados: 1. La precisión en la predicción: los estimadores de mínimos cuadrados con frecuencia reflejan bajas tendencias pero varianzas grandes; la precisión en la predicción puede, a veces, ser mejorada reduciendo o fijando a 0 algunos coeficientes. Haciendo esto se sacrifica un poco la tendencia para reducir la varianza de los valores predichos y de aquí que se pueda mejorar la precisión global de la predicción. 2. La interpretación del modelo: con un gran número de predictores, sería deseable determinar un subconjunto más pequeño de aquellos que tienen mayor peso en el modelo. 23

29 2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE Las 2 técnicas estándares, selección de subconjunto y regresión ridge [30], empleadas para mejorar los estimadores de mínimos cuadrados, presentan algunos inconvenientes: La selección de subconjunto proporciona modelos interpretables pero pueden ser extremadamente variables debido a su naturaleza discreta los regresores o bien son retenidos o bien son sacados fuera del modelo. Cambios ligeros en los datos pueden dar lugar a modelos muy diferentes y esto puede reducir su precisión en la predicción. La regresión ridge es un proceso continuo que reduce los coeficientes y de aquí que sea más estable. No obstante, no fija ningún coeficiente a 0 y por tanto no proporciona un modelo fácilmente interpretable. Para superar estas limitaciones, Tibshirani propuso un nuevo método al que denominó lasso [30] (least absolute shrinkage and selection operator). Este método reduce el valor de algunos coeficientes y fija otros a 0. Supongamos que tenemos los datos (x i, y i ), i = 1, 2,..., N donde x i = (x i1,..., x ip ) T son los predictores e y i las variables respuesta. Como en la configuración de regresión usual, se realiza la suposición de que o bien las observaciones son independientes o bien las y i s son condicionalmente independientes dados los x ij s. Asumiendo que los x ij s están estandarizados de modo que: x ij /n = 0, x 2 ij = 1 i i Tomando ˆβ = ( ˆβ 1,..., ˆβ p ) T, el estimador lasso (ˆα, ˆβ) se define como: (ˆα, ˆβ) n = arg min y i α i=1 2 p β j x ij j=1, sujeto a p β j t j=1 El parámetro t 0 establece la contracción que se aplica sobre los estimadores. Frank y Friedman [11] propusieron una generalización de la regresión ridge y de la selección de subconjunto, añadiendo una penalización de la forma λ j β j q, a la suma residual de los cuadrados. Lo cual es equivalente a una restricción de la forma: p j=1 β j q t De tal modo, los métodos de selección de subconjunto, regresión ridge y mediante lasso pueden ser definidos de la forma generalizada: 2 (ˆα, ˆβ) n p = arg min y i α β j x ij, sujeto a ˆα, ˆβ i=1 j=1 p β j q t j=1 24

30 2.2. REGRESIÓN CAPÍTULO 2. ESTADO DEL ARTE Así pues, si la restricción que impone sobre la expresión anterior toma q = 2 se trata de una regresión ridge, con q = 1 de una regresión lasso, y para q = 0 de una regresión por mínimos cuadrados ordinaria. De ahí que se denomine regresión penalizada L1 a aquella que emplea el método lasso para determinar los coeficientes de regresión y regresión penalizada L2 a aquella que emplea el método ridge. La siguiente figura muestra la interpretación geométrica [22] de la regresión en 2 dimensiones: Figura 2.5.: Interpretación geométrica de lasso El contorno con forma de diamante representa la restricción impuesta por lasso. La solución encontrada por lasso no puede salirse fuera del contorno del diamante. Los contornos elípticos se encuentran centrados sobre los coeficientes obtenidos por el método de los mínimos cuadrados. Tal y como se muestra en la figura anterior, lasso obtendría solución en el punto de corte del contorno en forma de diamante con el contorno elíptico (en el vértice del diamante). 25

31 3. Desarrollo Como parte de los objetivos marcados para este trabajo final de carrera se ha diseñado e implementado un algoritmo capaz de resolver problemas de optimización (funciones no lineales) sobre dominios continuos mediante la interpretación de modelos de regresión lineal. El algoritmo propuesto implementa un método no aplicado hasta el momento dentro del campo de la computación evolutiva para resolver problemas de optimización, basado en regresión regularizada (regresión penalizada indistintamente) y al que se le ha denominado CERA (Continuous Estimation of Regression Algorithm). La gran diferencia de CERA con respecto a los EDAs o los propios algoritmos genéticos, se encuentra en el hecho de que CERA utiliza el valor de la función objetivo, regresionando sobre ella por medio de la regresión regularizada Diseño del algoritmo Se ha optado por diseñar un algoritmo que posea un alto grado de flexibilidad, de modo que se puedan añadir nuevos métodos de simulación fácilmente. A tal efecto, se ha desacoplado de la estructura del algoritmo principal la parte de simulación de nuevos individuos. Además, se ha diseñado de forma que sea cómodo y sencillo de usar, de modo que cada vez que se desea resolver un determinado problema de optimización (sea de maximización o minimización), éste se puede introducir como parámetro de entrada, especificando únicamente el nombre del problema que se desea optimizar Descripción general El esquema general del algoritmo es semejante al de un algoritmo genético o al de un EDA salvo que en vez de utilizar operadores de cruce/mutación o modelos gráficos probabilísticos respectivamente para simular nuevos individuos, se apoya sobre el modelo de regresión lineal que le proporciona la aplicación de regresión regularizada sobre un subconjunto de la población que se desea hacer evolucionar. Los pasos del algoritmo son los siguientes: 26

32 3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO 1. [Inicio]: Generar una población inicial P 0 aleatoria de M individuos. 2. [Evaluar]: Evaluar el fitness para cada uno de los inviduos de la población actual P i. 3. [Condición de parada]: Verificar si se cumplen las condiciones para detener la ejecución del algoritmo. En caso de cumplirse, parar la ejecución y devolver la mejor solución encontrada. En caso contrario, ir al paso [Generar siguiente población]: Generar una nueva población P i+1, de la siguiente manera: a) [Selección]: Seleccionar los N mejores individuos de los M individuos de la población en función de su fitness. b) [Modelo de regresión]: Aplicar regresión regularizada sobre el fitness con penalización L2 en caso de que no se asuma dependencia entre genes o con penalización L1 en caso de que se asuma dependencia entre genes sobre los N individuos seleccionados previamente. c) [Simular]: Simular los individuos de la población a partir del modelo de regresión lineal obtenido en el paso 4.b hasta completar la nueva población con M individuos. 5. [Reemplazar]: Reemplazar la población P i por P i+1 y volver al paso 2. La idea de utilizar el modelo de regresión proporcionado por la aplicación de la regresión regularizada sobre los individuos seleccionados para simular nuevos individuos consiste en utilizar los coeficientes asociados a los genes (variables de la función de fitness asociada a un problema) de un determinado individuo para de éste modo determinar en qué grado están influyendo en el valor de fitness del individuo. Dependiendo de si se desea resolver un determinado problema de optimización asumiendo que existan o no dependencias entre variables hay que distinguir entre 2 modos de funcionamiento: Sin dependencia entre variables: se asume que no existen relaciones entre las variables o genes de un determinado individuo. Dado que el número de variables será la propia longitud del genoma del individuo, se va a aplicar para este caso una regresión regularizada de penalización L2 (ridge) para obtener los coeficientes del modelo de regresión. Con dependencia entre variables: se asume que existen relaciones entre las variables o genes de un determinado individuo. Para este caso y, a diferencia del caso sin dependencia entre variables, el número de variables dependerá del grado de interacción que se quiera establecer entre éstas. Independientemente 27

33 3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO del número de variables, para este caso se aplica una regresión regularizada de penalización L1 (lasso) para obtener los coeficientes del modelo de regresión. Lo que se pretende con esto, tal como se comentó en la sección , es obtener un modelo que lleve a 0 a través de los coeficientes del modelo, aquellas relaciones entre variables que no influyan en el valor de fitness de un individuo. La diferencia entre la aplicación de regresión regularizada con penalización L2 y L1 se encuentra en que éste último, proporciona un modelo interpretable con mayor facilidad dada su tendencia a llevar a 0 los coeficientes de aquellas variables que influyen significativamente sobre el valor de fitness que toma un determinado individuo. Dado que en el caso de que se asuma interacción entre variables y sabiendo que dependiendo del tamaño del genoma de un individuo (número de variables) así como del grado de interacción entre variables, el número de interacciones puede ser muy elevado de modo que una regresión de tipo L1 permitirá descartar un gran número de éstas. La figura 3.1 muestra el diagrama de flujo del funcionamiento del algoritmo. La parte que engloba el rectángulo superior (en línea discontinua) sería la parte principal del algoritmo, es decir, la encargada de todo lo correspondiente a la entrada de parámetros, condición de parada, selección de individuos, obtención de modelo de regresión lineal así como terminación. La parte que engloba el rectángulo inferior (en línea discontinua), tal y como se ha comentado con anterioridad, ha sido desacoplada del algoritmo principal y se encarga de la parte de simulación de nuevos individuos para generar nuevas poblaciones. De este modo resulta sencillo añadir nuevos métodos de simulación, sin necesidad de modificar la parte correspondiente al algoritmo principal Simulación de nuevas poblaciones Como ya se ha comentado, la simulación de nuevas poblaciones se ha separado del algoritmo principal para de este modo facilitar el desarrollo de futuros métodos de simulación de poblaciones. De tal modo, cada vez que se quisiese añadir un nuevo método bastaría con que éste le devolviese al algoritmo principal la nueva población evolucionada. A continuación se explica el método de simulación que se ha diseñado e implementado para este trabajo final de carrera y al que se le ha denominado Método del Desplazamiento Gaussiano Método del desplazamiento Gaussiano Este método recibe dicho nombre dado que para calcular los valores que toman los genes de los nuevos individuos que van a formar parte de la nueva población, se 28

34 3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO Figura 3.1.: Diagrama de flujo del algoritmo aplica un desplazamiento sobre la media µ de una distribución normal (también denominada distribución Gaussiana). Para determinar si el desplazamiento ha de ser positivo o negativo y, de este modo, saber si hay que desplazar la media hacia uno u otro lado, se emplea el modelo de regresión calculado previamente sobre la población que se desea hacer evolucionar. Un poco más adelante se van a mostrar una serie de cuadros, tanto para maximización como minimización, indicando cómo determinar el desplazamiento pero previamente se van a explicar aquellos factores que son tenidos en cuenta de un modelo de regresión. Si se trata de un caso donde no se dan interacciones entre variables, la expresión del modelo de regresión sería análogo al de una regresión lineal múltiple: Y = β 0 + β 1 x 1 + β 2 x β n x n + ɛ En el caso de que existan interacciones entre variables (genes de los individuos) la 29

35 3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO expresión del modelo de regresión sería de la forma: Y = β 0 + β i x i + β ij x i x j β i... z x i... x z + ɛ El grado de interacción entre variables determinará el número de coeficientes que deberán ser calculados mediante la regresión regularizada con penalización L1, la cual se aplica únicamente sobre las interacciones del grado que se haya seleccionado. El algoritmo ha sido diseñado e implementado de modo que sea capaz de procesar interacciones hasta de grado k. Dicho lo cual, para determinar el desplazamiento al que se deberá someter la media µ de la distribución gaussiana se deben tener en cuenta los siguientes factores: Tipo de optimización: si se trata de un problema de maximización o minimización. Signo del coeficiente β: los coeficientes los proporciona el modelo de regresión, pudiendo determinar el signo de éstos. Signo global de la interacción: dado que las interacciones pueden ser del tipo x i x j... x z y cada una de las variables puede tener signo diferente es necesario determinar el signo global de la interacción entre éstas. Signo de la variable seleccionada para evolucionar: dado el tipo de optimización, el signo del coeficiente, el signo global de la interacción entre variables y el propio signo de la variable seleccionada para ser evolucionada es posible determinar si sobre la media µ se debe aplicar un desplazamiento positivo o negativo. El nuevo valor que tomará el gen seleccionado de un determinado individuo se obtendrá de aplicar N(µ +,σ), donde µ se obtiene haciendo la media de los mejores N individuos seleccionados de la población, siendo σ la desviación típica asociada. Así pues, el incremento al que se somete µ en un problema de maximización se muestra en la siguiente tabla: 30

36 3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO Maximización Signo β Signo Global Requiere Desplazamiento { + xc x ci... x cz lo mayor posible = x c < 0 { + xc x ci... x cz lo menor posible = x c > 0 { + xc x ci... x cz lo menor posible = x c > 0 { + xc x ci... x cz lo mayor posible = x c < 0 Cuadro 3.1.: Incremento para un problema de maximización Y en el caso de que el problema sea de minimización: Minimización Signo β Signo Global Requiere Desplazamiento { + xc x ci... x cz lo menor posible = x c > 0 { + xc x ci... x cz lo mayor posible = x c < 0 { + xc x ci... x cz lo mayor posible = x c < 0 { + xc x ci... x cz lo menor posible = x c > 0 Cuadro 3.2.: Incremento para un problema de minimización Donde x ci es la media de los genes i-ésimo de los N mejores individuos seleccionados. Si se trata de un problema de maximización se debe conseguir que el valor de Y sea lo mayor posible. Por el contrario, si se trata de un problema de minimización lo que interesa es que el valor de Y sea lo menor posible. A modo de ejemplo, supongamos individuos cuyos genomas tienen una longitud de 2 genes (2 variables x 1, x 2 ) y que las relaciones que pueden darse entre los genes son de grado 2. De tal modo, las interacciones posibles 2 a 2 entre variables serían: x 1 x 1, x 1 x 2, x 2 x 2. El modelo de regresión obtenido para este caso tendría la siguiente expresión: Y = β 0 + β 1 x 1 + β 2 x 2 + β 11 x 1 x 1 + β 12 x 1 x 2 + β 22 x 2 x 2 31

37 3.1. DISEÑO DEL ALGORITMO CAPÍTULO 3. DESARROLLO Supongamos que tras aplicar la regresión regularizada con penalización L1 sobre el conjunto de los N mejores individuos seleccionados los coeficientes y, por tanto el modelo de regresión resultante, toman los siguientes valores: Y = 2 x x x 1 x 2 Se han eliminado términos de la expresión dado que tras aplicar la L1, ésta ha llevado a 0 los coeficientes β 0, β 11 y β 22, lo cual nos está indicando que dichas relaciones no influyen sobre el valor de fitness que toma la función. Por ello una vez descartados dichos coeficientes nos quedarían aquellos coeficientes de las variables o relaciones entre variables que sí están influyendo en el valor de fitness de la función que se desea optimizar. El siguiente paso sería, a partir del modelo de regresión, determinar el incremento que se debe aplicar sobre la media µ de la distribución normal con la que simular los nuevos valores que van a tomar las variables de cada individuo. Partiendo del modelo de regresión del ejemplo y, suponiendo que vamos a evolucionar los genes de la relación x 1 x 2, que las medias de las variables x 1 y x 2 de los N mejores individuos seleccionados toman respectivamente los valores X 1 = 5 y x 2 = 2 y que el problema que queremos resolver es un problema de minimización habría de aplicarse la siguiente regla extraída de la tabla de minimización para encontrar un con el que evolucionar los genes x 1 : Signo β 12 Signo Global β 12 x 1 x 2 (+,+,-) Requiere + - x 1 x 2 lo mayor posible + ( x 1 0) Por lo tanto, habría que aplicar un desplazamiento positivo. El valor de se obtiene ponderando el valor β del término actual con la suma de todos los β i, esto es: = β ni=1 β i tomaría para los genes x 1 el valor: = 2 7 = 0,285 De modo que los genes x 1 tomarán valores según N(5 + 0,285,σ). De la misma manera, para obtener el desplazamiento para los genes x 2 se aplicaría la regla: Signo β 12 Signo Global β 12 x 1 x 2 (+,+,-) Requiere + - x 1 x 2 lo mayor posible - ( x 2 < 0) 32

38 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Por lo tanto, habría que aplicar un desplazamiento negativo cuyo valor sería: = 2 7 = 0,285 De modo que los genes x 2 tomarán valores según N(5 0,285, σ) Implementación del algoritmo El algoritmo desarrollado se ha escrito en R, que es un lenguaje y entorno para realizar cálculos y gráficos estadísticos R Introducción R es un lenguaje y entorno para llevar a cabo análisis estadístico. Es un proyecto GNU (de libre distribución), similar al lenguaje y entorno S, que fue desarrollado en los laboratorios Bell. R puede considerarse como una implementación alternativa de S. Hay algunas diferencias importantes entre ambos, pero mucho del código escrito para S permanece inalterado en R. R proporciona una amplia variedad de funcionalidades estadísticas: modelos lineales y no lineales, tests estadísticos clásicos, análisis de series temporales, clasificación, clustering,... con una alta capacidad de ampliación. Uno de los puntos fuertes de R es la facilidad para generar gráficas, incluyendo símbolos matemáticos y fórmulas. Además, es al usuario al que se le otorga un gran nivel de flexibilidad a la hora de construir las gráficas que desee, proporcionando un gran número de opciones personalizables para tal fin. R está escrito principalmente en C (con algunas rutinas en Fortran), pudiendo ser descargado tanto los ficheros fuentes como los binarios para una amplia variedad de sistemas basados en Unix, Windows, y Macintosh. Los archivos necesarios para instalar R, ya sea a partir de los fuentes o binarios pre-compilados, se distribuyen desde el sitio de internet Comprehensive R Archive Network [23]. 33

39 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO R como entorno R se compone de un conjunto de funcionalidades software integradas para la manipulación, cálculo y visualización gráfica de datos. Incluye: Estructuras de datos para el manejo, almacenamiento y procesamiento de éstos. Un conjunto de operadores para cálculos de arrays y matrices. Una colección amplia e integrada de herramientas para el análisis de datos. Componentes gráficos para el análisis y visualización de datos en pantalla. Un lenguaje de programación sencillo y eficaz que incluye expresiones de evaluación condicional, bucles, recursividad de funciones y operaciones de entrada/salida. R ha sido diseñado como un lenguaje de programación, permitiendo además a los usuarios añadir nuevas funcionalidades mediante la definición de nuevas funciones. A diferencia de otros lenguajes de programación clásicos como C, C++, Pascal, Fortran,... R es un lenguaje interpretado de modo que los comandos o fragmentos de código son ejecutados sin necesidad de que haya que compilar el código. R proporciona además un lenguaje Orientado a Objetos : bajo este término se esconde la simplicidad y flexibilidad de R. Al ser orientado a objetos, las variables, datos, funciones, resultados, etc., se guardan en la memoria principal del computador en forma de objetos con un nombre específico. El usuario puede modificar o manipular estos objetos con operadores (aritméticos, lógicos, y comparativos) y funciones (que a su vez son objetos). Figura 3.2.: Visión esquemática del funcionamiento de R 34

40 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Una función en R se puede ver (figura 3.3) de la siguiente manera: Figura 3.3.: Visión esquemática de una función en R Los valores de los argumentos de las funciones pueden haber sido preestablecidos previamente, lo que se conoce como argumentos por defecto de la función. El usuario también tiene la opción de especificar los valores de los argumentos de la función Paquete penalized R proporciona una serie de funcionalidades básicas dentro del paquete base, pudiéndose añadir nuevas funcionalidades específicas mediante la instalación de otros paquetes complementarios. Para llevar a cabo regresiones penalizadas se ha empleado el paquete penalized [14] Introducción El paquete penalized ha sido diseñado e implementado para obtener modelos de regresión lineal mediante estimación penalizada. Actualmente los modelos a los que da soporte son aquellos basados en regresión lineal, regresión logística y modelos de Cox. En cuanto a penalizaciones, el paquete permite aplicar penalizaciones de tipo L1 (lasso), L2 (ridge) y la combinación entre ambas, conocido también como naive elastic net. El paquete incluye además funciones para llevar a cabo cross-validation y para optimizar el ajuste del parámetro λ de penalización. Los métodos de penalización L1 y L2, pese a tratarse ambos de métodos de reducción de coeficientes, tienen efectos diferentes en la práctica como se explicó en la sección Al aplicar una penalización L2, ésta tiende a llevar los coeficientes de regresión a valores próximos a cero, mientras que la penalización L1 tiende a llevar algunos de ellos exactamente a cero. El nivel de reducción de los coeficientes vendrá determinado por los parámetros λ 1, para el caso de penalización L1 y λ 2, para L2. Si estos parámetros toman valor 0, significa que no hay reducción (estimación de máxima verosimilitud) mientras que si toman valor, significa reducción infinita (llevando todos los coeficientes de regresión a 0). 35

41 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO La función principal recibe el mismo nombre que el paquete: penalized, que calcula la estimación penalizada para los parámetros λ 1 y λ Elección de λ En principio, elegir qué valor usar para λ 1 y λ 2 es difícil. El paquete penalized proporciona funciones para determinar cuál es el valor óptimo mediante operaciones de cross-validation. La elección de λ es bastante importante dado que si se utiliza un valor muy pequeño el algoritmo puede ser muy lento, e incluso, puede no converger, especialmente en problemas de alta dimensionalidad. En lo que respecta a la implementación de CERA, la función principal que contiene el núcleo del algoritmo de optimización se ha denominado cera. Los valores iniciales de los parámetros son λ 1 = y λ 2 = 1, pero pueden ser modificados en la entrada de parámetros de la función. Para el caso de regresión penalizada L1, se ha decidido tomar ese valor λ 1 dado que a medida que se van generando nuevas poblaciones y los individuos que forman éstas van tomando configuraciones cada vez más homogéneas, los coeficientes de regresión que devuelve la función penalized son llevados a cero. A medida que esto ocurre, el algoritmo hace decrecer el valor λ 1 obteniendo nuevamente coeficientes adecuados para el análisis de optimización. Como se ha comentado con anterioridad, si los parámetros λ toman valores próximos a cero, se corre el riesgo de que la función penalized nunca devuelva los coeficientes del modelo de regresión debido a que el algoritmo no converja. Para evitar esto, la función cera tiene un parámetro minl1 que fija cuál es el mínimo valor que puede tomar λ Estandarización Si las variables de los individuos toman valores en dominios de búsqueda diferentes, es necesario que antes de aplicar la regresión éstas hayan sido estandarizadas. La función penalized permite aplicar estandarización sobre el conjunto de datos sobre el que extraer los coeficientes de regresión. El argumento de la función standardize (por defecto con valor FALSE) aplica estandarización sobre las variables que forman el genoma de los individuos de la población justo un paso antes de aplicar la penalización. Aplicando estandarización se consigue que la penalización afecte prácticamente por igual a cada una de las variables de los individuos. Cabe destacar que los coeficientes de la regresión que devuelve la función una vez aplicada la penalización son reescalados y se corresponden con los de las variables en su escala original. 36

42 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Genes sin penalizar En algunas ocasiones, es deseable que no todos los genes o variables que forman parte de los individuos de la población sean penalizados. Para el caso en el que se considera que no existen interacciones entre variables, que se corresponde con una regresión penalizada de tipo L2, ésta se aplica sobre los n genes o variables originales que configuran el genoma de un individuo. En cambio, si se trata de un problema para el que se está considerando que existe dependencia entre variables, se aplicará una penalización L1 sobre aquellos genes que hayan sido extendidos a partir de los genes originales. De tal modo, sobre los n genes originales no aplicará penalización L1 mientras que para los genes formados a partir de las combinaciones de los genes originales y con los que se ha extendido la configuración del genoma del individuo sí. El motivo de hacer esto de esta forma viene determinado por la propia naturaleza de la penalización L1. Dado que sabemos que todos y cada uno de los genes originales tienen mayor o menor influencia en la obtención del valor de fitness de un individuo, si aplicamos penalización L1, dada la naturaleza de ésta, puede llevar los coeficientes correspondientes a los genes originales a 0, lo cual no es deseable por la razón expuesta. Únicamente nos interesa que lleve a 0 los coeficientes de aquellos genes extendidos como combinación de los genes originales ya que un gran número de éstos apenas tendrán influencia sobre el valor de fitness que toma el individuo. Si consideramos el caso de genomas cuyo tamaño es n = 3 y donde se dan interacciones entre variables de grado k = 2 la matriz resultante puede verse en la figura 3.4. Figura 3.4.: Población de 9 individuos con sus respectivos genomas Como en el caso de aplicar penalización L2, no se extiende el genoma del individuo y dada la naturaleza de la propia penalización L2 de no llevar coeficientes a 0, ésta se aplicará sobre el conjunto de los n genes originales. 37

43 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Detalles de implementación A continuación se van a explicar las interfaces de las funciones que se han implementado para resolver los problemas de optimización mediante modelos de regresión penalizados cera.r En la figura 3.5 se muestra un diagrama de flujo de alto nivel que se corresponde con la implementación del algoritmo principal. Figura 3.5.: Diagrama flujo alto nivel del núcleo del algoritmo En este diagrama, los rectángulos superior e inferior forman parte de lo que se considera el cuerpo principal del algoritmo. El rectángulo superior recoge los parámetros 38

44 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO de entrada necesarios para la ejecución del algoritmo CERA, donde el rectángulo que engloba Problema - Componentes se correspondería con el argumento de entrada problem_name, que se explica a continuación. Al especificar problem_name, se le está indicando al algoritmo cuál es el problema que se desea optmizar. Cada problema conlleva 2 clases de información asociadas: la configuración del problema (tamaño del genoma y rangos, archivo de configuración) y la función de fitness (archivo.r). Por su parte, el rectángulo superior engloba el método de simulación, el cual se especifica mediante el argumento de entrada improving_mth. Este especifica el nombre del archivo.r que contiene el código fuente de la función empleada para simular nuevas poblaciones. A continuación se describe en detalle la interfaz de la función principal del algoritmo así como las de las funciones de mayor relevancia para el correcto funcionamiento de éste. 39

45 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: cera Argumentos de entrada: 1. pop_size: Tamaño de la población. 2. selpop_size: Número de individuos que serán seleccionados. 3. tournament: Número de candidatos que tomarán parte en el torneo. 4. degree: Indica el grado de interacción entre los genes (variables) de los individuos de la población. 5. elitism: Si toma el valor TRUE, los mejores n individuos serán introducidos en la siguiente población directamente. 6. lambdal1: Penalización L1 a aplicar sobre los individuos seleccionados de la población. 7. lambdal2: Penalización L2 a aplicar sobre los individuos seleccionados de la población. 8. minl1: Mínimo valor que puede tomar una penalización L1. 9. problem_name: Nombre del problema que se desea optimizar. 10. maximize: Indica el tipo de optimización que se desea realizar. Si toma el valor TRUE, se tratará de un problema de maximización. En caso contrario de minimización. 11. improving_mth: Especifica el método de simulación que se desea utilizar para generar una nueva población. 12. iterations: Máximo número de iteraciones que pueda dar el algoritmo. 13. trace: Si está activado (valor TRUE) muestra la evolución de la población. Descripción: Esta función es el núcleo del algoritmo. Dados una serie de argumentos de entrada, crea una población inicial a partir de la cual genera nuevas poblaciones a fin de optimizar el problema deseado, para lo cual calcula modelos de regresión con penalización tipo L1 ó L2. Resultado: Devuelve la lista de poblaciones que se han generado, desde la población inicial P 0 hasta la última población calculada. Además muestra por pantalla el genoma del mejor individuo encontrado así como su valor de fitness, junto a la iteración en la que se ha alcanzado. Cuadro 3.3.: Interfaz de la función cera La función principal cera se apoya sobre las siguientes funciones: 40

46 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: powerset Argumentos de entrada: 1. nvar: Longitud del genoma. 2. degree: Especifica el grado de interacción que se establece entre los genes (variables) de los individuos. Descripción: Esta función construye todas las posibles combinaciones que pueden darse para las nvar variables que forman un genoma hasta el grado de interacción especificado por degree. Resultado: Devuelve una lista donde cada elemento indica cómo se combinan los genes. Ejemplo: nvar = 3, degree = 2 resultado = [[1], [2], [3], [1, 1], [1, 2], [1, 3], [2, 2], [2, 3], [3, 3]] Cuadro 3.4.: Interfaz de la función powerset Función: extendgenome Argumentos de entrada: 1. dr: Conjunto de n individuos seleccionados con el mejor fitness de toda la población. 2. lc: Lista donde cada elemento indica cómo deben combinarse los genes (obtenida mediante la función powerset). Descripción: Extiende el genoma de los individuos seleccionados con el resultado de las interacciones entre genes, calculando los valores asociados a éstos según el modo en el que se deben combinar. Resultado: Devuelve un conjunto de individuos con sus respectivos genomas ampliados. Cuadro 3.5.: Interfaz de la función extendgenome 41

47 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: hasconstantcolumn Argumentos de entrada: 1. m: Matriz de individuos. Cada fila se corresponde con un individuo. Cada columna se corresponde con cada uno de los genes x i de cada uno de los individuos de la población. Descripción: Busca columnas constantes dentro de la matriz, es decir, columnas cuyos elementos poseen el mismo valor. Resultado: Si encuentra una columna constante devuelve TRUE. En caso contrario FALSE. Cuadro 3.6.: Interfaz de la función hasconstantcolumn Función: isconstantmatrix Argumentos de entrada: 1. m: Matriz de individuos. Cada fila se corresponde con un individuo. Cada columna se corresponde con cada uno de los genes x i de cada uno de los individuos de la población. Descripción: Esta función comprueba si una matriz es constante, es decir, si todos los elementos de la matriz tienen el mismo valor. Es importante comprobar si se da tal situación ya que hay problemas de optimización en los que a medida que los individuos tienden a acercarse a la solución, los valores de los genomas de éstos tienden a homogeneizarse. Como consecuencia de esto, un conjunto de individuos con los mismos valores provocaría un error al ser introducidos en la función penalized debido a la forma de operar de ésta internamente. Resultado: Si la matriz es constante devuelve TRUE. En otro caso devuelve FALSE. Cuadro 3.7.: Interfaz de la función isconstantmatrix 42

48 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: loadproblem Argumentos de entrada: 1. problem_name: Nombre del problema que se desea resolver. Descripción: Cada problema tiene su propia definición de la función de fitness así como un fichero de configuración en el que se encuentra información tal como el número de variables que forman el genoma de los individuos de una población y los rangos sobre los que las variables pueden tomar valores. Esta función se encarga de obtener dicha información. Resultado: Devuelve una lista de 2 elementos donde el primero contiene la configuración del problema y el segundo la función para calcular el fitness asociada al problema que se desea resolver. Cuadro 3.8.: Interfaz de la función loadproblem Función: getgenomerange Argumentos de entrada: 1. config: Datos de configuración de un determinado problema. Descripción: Esta función construye una lista de longitud igual al número de genes que componen un genoma y donde el valor de cada uno de los elementos es el rango sobre el que cada gen puede tomar valores. Resultado: Devuelve una lista de rangos. Cuadro 3.9.: Interfaz de la función getgenomerange 43

49 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: makeinitialindividual Argumentos de entrada: 1. config: Datos de configuración de un determinado problema. 2. fitness.f : Función que, dado un genoma, calcula el valor de fitness. Descripción: Esta función genera los individuos iniciales que formarán parte de la población inicial P 0. El modo de generación es el siguiente: dados los rangos donde cada uno de los genes puede tomar un valor, se asigna a cada uno de los genes x i un valor que se obtiene como resultado de aplicar una distribución uniforme sobre el rango en el que el gen x i dado puede tomar valor. Una vez que se ha completado el proceso de creación del genoma del individuo, se calcula el valor de fitness asociado a éste mediante la función fitness.f. Resultado: Devuelve el individuo creado como un vector de tamaño n + 1, donde n es el tamaño del genoma y cuya última posición del vector se corresponde con el valor del fitness obtenido para ese genoma. Cuadro 3.10.: Interfaz de la función makeinitialindividual Función: createinitialpopulation Argumentos de entrada: 1. config: Datos de configuración de un determinado problema. 2. pop_size: Tamaño de la población. 3. fitness.f : Función que, dado un genoma, calcula el valor de fitness. Descripción: Esta función se encarga de crear, a partir de los parámetros de configuración, una población de invididuos P 0. Realiza tantas llamadas a la función makeinitialindividual como indica el parámetro pop_size. Resultado: Devuelve la población como una matriz, donde cada fila representa cada uno de los individuos y cada una de las columnas representa cada uno de los genes que forman el genoma de los individuos, a excepción de la última columna que es la que almacena el valor del fitness asociado al genoma de cada uno de los individuos. Cuadro 3.11.: Interfaz de la función createinitialpopulation 44

50 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: selectindividuals Argumentos de entrada: 1. pop: Población actual. 2. (Global) sel_pop: Número de individuos que deben ser seleccionados de la población. 3. (Global) tournament: Número de candidatos en caso de competición mediante torneo. Descripción: Esta función realiza una selección de un subconjunto de los individuos de tamaño sel_pop de la población pop actual. Existen 2 métodos de selección actualmente implementados. Si el valor de la variable tournament es superior a 0 se aplica el método de selección mediante torneo. En caso contrario, se utiliza el método normal. Selección mediante torneo: Se genera una población alternativa a la que se le va añadiendo el mejor candidato en cada iteración. El número n de candidatos viene determinado por el valor que toma parámetro tournament (mayor que 0) y éstos se eligen aleatoriamente, escogiendo n índices aleatoriamente de la población original actual y tomando como candidatos los individuos de la población original que se corresponden con los índices seleccionados dentro de la población. Aquel de los candidatos que posea mejor fitness será el que sea añadido a la población alternativa. Finalmente, de la población alternativa que se ha construido, se toman tantos individuos como indica sel_pop. Selección normal: Se toman los n primeros individuos de la población actual coincidiendo con el número de individuos a seleccionar indicado por el parámetro sel_pop. La población habrá de estar previamente ordenada por los valores de fitness. Resultado: Devuelve un subconjunto de individuos de la población como matriz. Cuadro 3.12.: Interfaz de la función selectindividuals 45

51 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: improvepopulation Argumentos de entrada: 1. method: Nombre del método que se va a emplear para generar nuevas poblaciones. 2. popt: Es una lista donde los elementos son: a) popt [[1]] la población actual. b) popt [[2]] los rangos donde los genes pueden tomar valores. c) popt [[3]] la función de fitness. d) popt [[4]] el modelo de regresión tras aplicar la función penalized sobre los individuos seleccionados. e) popt [[5]] indica si se debe resolver aplicando elitismo. f ) popt [[6]] grado de las interacciones entre los genes de los individuos. g) popt [[7]] cómo combinar los genes de los individuos. 3. pop_evolution: Lista que va almacenando todas y cada una de las poblaciones generadas hasta el momento. Descripción: Lee la función improve.f correspondiente al método de simulación indicado por el parámetro method y, mediante una llamada a la función improve.f, que contiene el código del algoritmo para evolucionar la población actual, obtiene la nueva población. Resultado: Devuelve la nueva población de individuos evolucionados. Cuadro 3.13.: Interfaz de la función improvepopulation 46

52 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO En la figura 3.6 se muestra el diagrama de flujo de bajo nivel para explicar cómo se interrelacionan las llamadas entre las funciones más importantes junto con sus respectivos parámetros de entrada y salida. Figura 3.6.: Diagrama de flujo detallado de cera.r 47

53 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO gaussian_offset.r En la figura 3.7 se muestra el diagrama de flujo de alto nivel para la parte correspondiente a la implementación del método de simulación basado en desplazamiento en la media de una normal. Figura 3.7.: Diagrama de flujo de alto nivel del método de simulación A continuación se explica en detalle la función principal del método de simulación. 48

54 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: gaussian_offset Argumentos de entrada: 1. selpop_size: Número de individuos seleccionados de la población. 2. popt: Es una lista donde los elementos son: a) popt [[1]] la población actual. b) popt [[2]] los rangos donde los genes pueden tomar valores. c) popt [[3]] la función de fitness. d) popt [[4]] el modelo de regresión tras aplicar la función penalized sobre los individuos seleccionados. e) popt [[5]] indica si se debe resolver aplicando elitismo. f ) popt [[6]] grado de las interacciones entre los genes de los individuos. g) popt [[7]] cómo combinar los genes de los individuos. 3. maximize: Indica el tipo de optimización que se desea realizar. Si toma el valor TRUE, se tratará de un problema de maximización. En caso contrario de minimización. 4. trace: Si está activado (valor TRUE) muestra la evolución de la población. 5. pop_evolution: Lista que va almacenando todas y cada una de las poblaciones generadas hasta el momento. Descripción: Esta función es el cuerpo principal del método de simulación basado en desplazamiento en la media de una normal. Simula los genes de los individuos calculando previamente el valor que se aplicará sobre la media µ de una distribución normal. Si existe interacción entre variables (modelo de penalización L1), la evolución de la población será llevada a cabo en dos etapas en vez de una única: 1. Evolucionar los genes originales del genoma de cada uno de los inviduos de la población (mediante improveindividual). 2. Evolucionar los genes extendidos del genoma de cada uno de los individuos de la población (mediante improveusinginteractions). Resultado: Devuelve la nueva población de individuos evolucionados. Cuadro 3.14.: Interfaz de la función gaussian_offset 49

55 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO La función gaussian_offset se apoya sobre las siguientes funciones: Función: global_sign Argumentos de entrada: 1. terms: Vector parcial de genoma. Descripción: Esta función comprueba el signo de cada uno de los términos del vector y mediante el cálculo del producto entre todos calcula el signo global. Resultado: Devuelve 1 si el signo global es positivo. En caso contrario, devuelve -1. Cuadro 3.15.: Interfaz de la función global_sign Función: getmeansofcolumns Argumentos de entrada: 1. m: Matriz donde cada columna representa un vector de genes x i. Descripción: Esta función calcula la media para cada una de las columnas de la matriz m. Resultado: Devuelve un vector de medias, donde cada elemento es la media de los elementos de cada una de las columnas de la matriz. Cuadro 3.16.: Interfaz de la función getmeansofcolumns 50

56 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: calculatedeltas Argumentos de entrada: 1. coeff : Coeficiente β asociado al gen x i. 2. lcoeffs: Vector de coeficientes del modelo de regresión hallado. 3. mcolumns: Vector de medias de los gen/es asociados al coeficiente β coeff. Descripción: Esta función calcula el desplazamiento que se aplicará sobre la media µ de una distribución normal y de este modo simular la evolución de los nuevos genes de cada uno de los individuos. Esta función implementa tanto el cuadro de minimización como de maximización (sección ) para el cálculo de. Resultado: Devuelve un vector donde cada elemento es el desplazamiento que se debe aplicar sobre la media µ en la distribución normal para obtener el valor de los nuevos genes. Cuadro 3.17.: Interfaz de la función calculatedeltas Función: improvegen Argumentos de entrada: 1. rg: Rango sobre el que un gen puede tomar valores. 2. m: Media del gen x i de los individuos seleccionados. 3. delta: Desplazamiento a ser aplicado sobre la media µ en la distribución normal. 4. dtp: Desviación típica resultante del gen x i de los individuos seleccionados. Descripción: Esta función asigna el nuevo valor del gen mediante la asignación del valor devuelto por una distribución normal de la forma N(µ +, σ), donde µ es la media m, viene determinado por el argumento delta y σ por dtp. En caso de que el valor calculado se exceda del rango permitido donde el gen x i puede tomar valores se asignará el límite inferior o el superior, según corresponda. Resultado: Devuelve el nuevo valor del gen tras ser simulado. Cuadro 3.18.: Interfaz de la función improvegen 51

57 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: improvemultiplegenes Argumentos de entrada: 1. X: Individuo que se desea evolucionar. 2. deltas: Vector de desplazamientos. 3. m: Matriz de los mejores individuos seleccionados tras la primera etapa de evolución. 4. ranges: Lista de rangos en los que un gen puede tomar valores. 5. lp: Vector que indica los genes deben ser evolucionados en la segunda etapa. Descripción: Esta función evoluciona los genes indicados por lp para un individuo X. Esta función es invocada únicamente en el caso de que el modelo de regresión tenga penalización L1 (segunda etapa de la evolución). Resultado: Devuelve el individuo tras evolucionar los genes requeridos. Cuadro 3.19.: Interfaz de la función improvemultiplegenes Función: improveindividual Argumentos de entrada: 1. genome: Vector que contiene los genes del individuo que se desea mejorar. 2. lcoeffs: Vector de coeficientes del modelo de regresión hallado. 3. selpop: Número de individuos seleccionados de la población. 4. ranges: Lista de rangos en los que un gen puede tomar valores. Descripción: Esta función realiza una mejora sobre el genoma de un determinado individuo. Para ello calcula los necesarios llamando a la función calculatedeltas y después obtiene el valor de cada uno de los nuevos genes llamando a improvegen. Esta función se invoca tanto para modelos de regresión con penalización L1 (primera etapa de la evolución) como L2. Resultado: Devuelve el individuo tras evolucionar su genoma. Cuadro 3.20.: Interfaz de la función improveindividual 52

58 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Función: improveusinginteractions Argumentos de entrada: 1. bestind: Los n mejores individuos seleccionados tras la evolución obtenida durante la primera etapa de la evolución. 2. lcoeffs: Vector de coeficientes que se han extraído del modelo de regresión hallado. 3. combi: Lista donde cada elemento indica cómo se combinan los genes y por tanto qué interacciones entre genes evolucionar (en caso de que el coeficiente asociado sea distinto de 0). 4. ranges: Lista donde cada elemento es el rango donde un gen determinado puede tomar valores. Descripción: Esta función sólo se llama en el caso de que el modelo de regresión tenga penalización L1 (tras la primera etapa de la evolución), iniciando la segunda etapa de la evolución, la que corresponde con la mejora de los genes que se corresponden al genoma extendido mediante la interacción entre genes. Esta función invoca a la función improvemultiplegenes para cada coeficiente β del modelo de regresión obtenido distinto de 0. Resultado: Devuelve la población evolucionada. Cuadro 3.21.: Interfaz de la función improveusinginteractions 53

59 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO En la figura 3.8 se muestra el diagrama de flujo de bajo nivel para explicar cómo se interrelacionan las llamadas entre las funciones más importantes junto con sus respectivos parámetros de entrada y salida. Figura 3.8.: Diagrama de flujo detallado de gaussian_offset.r 54

60 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Funcionamiento práctico A continuación se va a explicar en detalle cuáles son los requisitos previos así como los métodos de carga sobre R de la función de optimización cera. Por último, se mostrarán una serie de ejemplos de ejecución del algoritmo Requisitos previos En primer lugar es necesario instalar la librería penalized, ya que el algoritmo realiza llamadas a funciones de esta librería para obtener el modelo de regresión penalizada L1 y L2. Para instalar esta librería, bastaría con abrir el gestor de paquetes de R y seleccionar dicha librería, la cual se encuentra en el repositorio oficial de paquetes para R Cómo ejecutar el algoritmo en R En esta sección se describe cómo se debe cargar el código correspondiente al algoritmo para poder ejecutar la función de optimización. El código del algoritmo se compone de 3 partes: 1. Código del cuerpo principal del algoritmo en el archivo cera.r 2. Carpeta improving_methods, donde se almacenan los métodos de simulación de nuevas poblaciones y que serán llamadas desde cera.r. En dicha carpeta se encuentra el método de simulación presentado en este trabajo y cuyo código fuente se encuentra en el archivo gaussian_offset.r 3. Carpeta problems, donde se almacenan tanto los ficheros de configuración como los ficheros con el código fuente del problema que se desea resolver. Así pues, cada problema ha de tener asociado obligatoriamente un fichero de configuración y otro con el código fuente de la métrica que devuelve el fitness para un genoma. Para ejecutar la función cera se pueden seguir 2 procedimientos: El primero de ellos consiste en emplear el comando source desde la sesión de R. Este comando carga el código escrito en R que se encuentra almacenado en el fichero de texto. Previamente se deberán haber copiado las carpetas improving_methods y problems dentro de la carpeta indicada por la variable de entorno R_HOME. Para consultar dicho valor desde la sesión de R basta con escribir el siguiente comando: 55

61 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Figura 3.9.: Consultar variable entorno R_HOME En el caso anterior, deberían copiarse las carpetas anteriores dentro de la carpeta C:\R\R Una vez hecho esto, se ejecutaría el comando source. Así pues, si el archivo cera.r se encuentra en la carpeta C:\0.3\cera bastaría con ejecutar el comando source de la forma: Figura 3.10.: Comando source El segundo método consiste en instalar el paquete binario que se proporciona (versión incluida para Windows). Este método resulta más sencillo que el anterior ya que se reduce el número de pasos que se deben dar y, una vez instalado el paquete, cada vez que se quiera usar bastará con cargar la librería que contiene el código. El paquete incluye tanto el código de la función principal como las carpetas improving_methods y problems. Para instalar el paquete desde la sesión de R, seleccionar la opción de instalar paquetes a partir de archivos locales: 56

62 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Figura 3.11.: Instalación de paquetes a partir de archivos locales (versión Windows) Y seleccionar el archivo ceras_0.3.zip. Una vez el paquete haya sido instalado, cada vez que se quiera utilizar será necesario emplear el comando library: Figura 3.12.: Carga del paquete ceras Ejemplos de funcionamiento La interfaz de la función cera es la siguiente: Todos los argumentos tienen un valor por defecto, a excepción del argumento pro- 57

63 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO blem_name. Así pues si quisiéramos ejecutar la función para resolver el problema de optimización de Branin con las siguientes opciones: Tamaño de la población de 400 individuos. Se seleccionan los 200 mejores individuos. Sin interacciones. Problema de minimización. Para 30 generaciones como máximo. En la consola de R se escribiría el siguiente comando: r <- cera (pop_size = 400, selpop_size = 200, problem_name = Branin, maximize = F, iterations = 20) Generándose la siguiente salida: Figura 3.13.: Ejecución de Branin sin interacciones El resultado que devuelve la función cera se almacena en el objeto r porque de lo 58

64 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO contrario mostraría cada una de las 20 poblaciones generadas durante la ejecución del algoritmo. Los números consecutivos que se observan en la imagen anterior indican el número de población que se está generando. Una vez alcanzada la condición de parada se muestra la siguiente información: Iteración (población) en la que se ha encontrado la mejor solución. Valores de los genes del mejor individuo encontrado. Valor de fitness que toma la función para el genoma del mejor individuo encontrado. Como ya se ha comentado, en r tenemos todas y cada una de las poblaciones que se han generado durante la ejecución del algoritmo. Así pues, si quisiéramos consultar el contenido de la población correspondiente a la generación 17 bastaría con ejecutar el siguiente comando: r[17] Figura 3.14.: Población obtenida en la generación 17 Visualizándose de este modo todos y cada uno de los individuos de la población, tanto con sus respectivos genomas como con los valores de fitness asociados a éstos. Del mismo modo, si se quisiera resolver el problema de Branin con los mismos pará- 59

65 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO metros pero esta vez indicando que existen dependencias entre variables de grado 2, el comando que habría que introducir sería: r <- cera (400, 200, degree = 2, problem_name = Branin, maximize = F, iterations = 20) Figura 3.15.: Ejecución de grado 2 no convergente Cuando se ejecuta la función cera con el argumento degree y éste toma un valor superior a 1 (interacciones entre variables de grado n), se realizan llamadas a la función que calcula el modelo de regresión penalizada L1. En la figura anterior, además de indicarse la generación actual se indica cuál es el valor que va tomando el argumento lambdal1. A medida que se van generando nuevas poblaciones y los genomas de los individuos tienden a uniformizarse, los coeficientes del modelo de regresión que devuelve la función penalized tienden a 0. El algoritmo detecta cuando esto ocurre y automáticamente reduce el valor lambda1 dividiéndolo por 10. Como ya se comentó en el apartado , si lambda1 toma valores muy pequeños puede ocurrir que cuando se invoca a la función penalized para calcular los coeficientes del modelo de regresión penalizada L1, ésta no converja hacia una solución, tal y como ocurre en el ejemplo de la figura anterior, cuando lambda toma el valor 1 durante la novena iteración. Por ello, sería necesario parar la ejecución del algoritmo y definir el mínimo valor que puede tomar lambda1. Esto es algo que se define mediante el argumento de entrada minl1, tal y como se muestra a continuación: r <- cera (400, 200, degree = 2, minl1 = 10, problem_name = Branin, maximize = F, iterations = 20) 60

66 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO Figura 3.16.: Ejecución de grado 2 convergente En este caso, dado que en la iteración 10 el algoritmo detecta que lambda1 toma un valor inferior al que se ha definido mediante minl1 (cuyo valor es 10), modifica el modo de funcionamiento: en vez de obtener modelos de regresión con penalización L1 como se estaba haciendo hasta ahora, se aplica penalización L2. Esto se hace por 3 motivos: 1. Pese a que una opción fuese que cuando lambda1 se hiciera menor que minl1 se detuviese el algoritmo, se ha considerado que podría ser beneficioso continuar generando los coeficientes del modelo de regresión con penalización L2, al menos hasta completar el número de generaciones indicadas por si aún hubiese margen de mejora del valor de fitness. 61

67 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO 2. Como se comentó en la sección , el aplicar penalización L1 lleva un número importante de coeficientes a 0. Dado que nos encontramos en un punto en el que todos los coeficientes asociados a los genes extendidos del genoma tomarían valor 0 (debido a la tendencia hacia la uniformidad de genomas), no tendría sentido que aplicásemos penalización L1 sobre los genes originales puesto que a algunos de éstos se les asignaría un coeficiente cuyo valor sería 0, cuando sabemos que todos y cada uno de los genes originales influyen en el valor de fitness que toma la función, por muy pequeña que sea dicha influencia. Por ello, llegado a este punto, no sería apropiado el modelo generado mediante regresión penalizada L1. 3. El cálculo del modelo de coeficientes de regresión penalizada L2 es significativamente más rápido que el cálculo del modelo con penalización L1. Una opción interesante que se puede activar es la del argumento trace. Si toma valor TRUE genera una traza de la ejecución del algoritmo, permitiendo visualizar el conjunto de individuos que van a ser introducidos en la función penalized, los coefiecientes de regresión penalizada, así como los individuos evolucionados y que formarán parte de las nuevas poblaciones. r <- cera (90, 15, problem_name = Branin, maximize = F, iterations = 10, trace = T) Figura 3.17.: Argumento TRACE: Individuos seleccionados para penalized 62

68 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO En la figura anterior se puede ver gracias al argumento trace, los mejores individuos que son seleccionados de una población de 90 individuos y que formarán parte del conjunto de datos utilizado por la función penalized para el cálculo de los coeficientes del modelo de regresión. Cuando éste es obtenido se muestra de la siguiente manera: Figura 3.18.: Argumento TRACE: Modelo de regresión devuelto por penalized Por último, se mostrarían los individuos evolucionados que forman parte de la nueva población una vez aplicado el método de simulación mediante el uso del modelo de regresión obtenido: Figura 3.19.: Argumento TRACE: Población evolucionada En el ejemplo anterior, se ha utilizado el argumento trace para mostrar el funcionamiento del algoritmo sobre un problema sobre el que indicamos que existe independen- 63

69 3.2. IMPLEMENTACIÓN DEL ALGORITMO CAPÍTULO 3. DESARROLLO cia entre variables. Asimismo, resulta interesante utilizar el argumento trace cuando se resuelve un determinado problema con la opción de interacción entre variables, ya que de este modo se puede comprobar si, efectivamente, las interacciones entre variables están teniendo importancia en el valor de fitness que toma un determinado genoma. Así pues, supongamos que se desea optimizar el problema para el que la función de fitness es n i=1 x 2 i, donde el genoma de cada uno de los individuos está formado por 10 genes. Dado que la función es de grado 2, al ejecutar la función cera usaremos el argumento degree = 2: r <- cera (400, 200, degree = 2, problem_name = Sphere, maximize = F, iterations = 10, trace = T) Figura 3.20.: Coeficientes β con interacciones grado 2 Esta figura ilustra claramente cómo la función penalized detecta las interacciones de grado 2 del tipo x i x i entre los genes del individuo. Los coeficientes del modelo de regresión que devuelve la función penalized, son muy dependientes de los parámetros de entrada. En general, introduciendo un número elevado de individuos dentro de la función penalized dará lugar a la obtención de mejores modelos de regresión penalizada, pero habrá que tener en cuenta que dependerá también del tamaño del genoma de los individuos. 64

70 4. Resultados En este capítulo se muestran los resultados obtenidos para una batería de problemas, de los cuales se ha recogido una breve explicación así como los puntos del espacio de búsqueda donde alcanzan su valor óptimo global. Para tomar una medida de cómo de buenos han sido los resultados obtenidos mediante el algoritmo CERA, éstos se han comparado con los obtenidos mediante los EDAs. Se ha escogido una implementación de los EDAs sobre dominios continuos denominada CEDA, la cual ha sido desarrollada por Ramon Etxeberria. A fin de conseguir resultados en igualdad de condiciones, las ejecuciones se han llevado a cabo empleando los mismos argumentos de entrada tanto para los problemas ejecutados mediante el algoritmo CERA como con los EDA. Los argumentos empleados han sido los siguientes: Tamaño de la población: se han realizado ejecuciones para tamaños de población de 300, 400 y individuos. Selección de individuos: para los tamaños de población de 300, 400 y individuos se han seleccionado 50, 200 y 300 individuos respectivamente. Elitismo: ejecuciones con y sin elitismo. Interacción entre variables: en el caso de los CEDA se emplea el método basado en UMDA c, cuando no se aplique interacciones entre variables; y MIMIC c cuando se aplique interacciones entre variables (ambos métodos se explicaron en las secciones y respectivamente). En el caso de los CERA, se utilizarán modelos de regresión penalizada L2 cuando no se aplique interacciones entre variables y modelos de regresión penalizada L1 cuando indiquemos interacciones entre variables de grado n. Tamaño del genoma: es el número de genes que componen el genoma de cada uno de los individuos de la población. El valor elegido se muestra en los cuadros descriptivos correspondientes a cada problema en cuestión. Finalmente, una vez mostrados los resultados obtenidos, tanto para uno como para el otro algoritmo, se procederá a explicar los resultados obtenidos mediante la aplicación de un test estadístico no paramétrico que confirme si un algoritmo es mejor que el 65

71 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS otro Batería de funciones Se han seleccionado un conjunto de 13 problemas [33], formando un banco de pruebas para comparar los resultados obtenidos mediante la aplicación de los CERAs y de los CEDAs. Dentro del conjunto de funciones de fitness asociadas a los problemas que se han seleccionado, se encuentran una serie de ellas a las que se les denomina funciones trampa. Las funciones trampa (deceptive trap functions) son utilizadas con frecuencia en el estudio de algoritmos evolutivos. Consisten en funciones específicamente diseñadas para guiar a los algoritmos de optimización hacia óptimos locales. Figura 4.1.: Ejemplo de función trampa La figura muestra un ejemplo de función trampa. Si intentáramos maximizar esta función utilizando un algoritmo de optimización por escalada que partiera del punto indicado, se exploraría solamente la parte izquierda del espacio de búsqueda, alejándonos del máximo global. De forma similar, si la población del algoritmo de estimación de regresión esta compuesta por muchos individuos cercanos al óptimo local es probable que dichos elementos acaben controlando la evolución del algoritmo, convergiendo este hacia una solución local y no óptima. De esta forma este tipo de funciones son interesantes para medir la resistencia de algoritmos de optimización frente a mínimos o máximos locales. 66

72 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS Problema de Ackley El problema de Ackley [1] es un problema de minimización. Inicialmente se definió para 2 dimensiones, pero posteriormente se generalizó para n dimensiones [3]. Tipo problema Función fitness Dominio de búsqueda Mínimos locales Minimización ( ) 1 n f 1 (x) = 20 exp n i=1 x2 i exp ( 1 n n i=1 cos (2πx i) ) e 32 x i 32, i = 1, 2,..., n Varios mínimos locales Mínimo global x = (0,..., 0) Fitness óptimo f 1 (x ) = 0 Tamaño del genoma n = 30 Implementación CERA Implementación CEDA Ackley.R (configuración en Ackley.cfg) Ackley.cc Cuadro 4.1.: Problema de Ackley Figura 4.2.: Representación gráfica del problema de Ackley 67

73 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS Problema de Branin Branin es un problema propuesto por F. K. Branin en [6] para el estudio de algoritmos de optimización. El objetivo es la búsqueda de un mínimo, que se alcanza en tres puntos distintos del espacio de búsqueda. Esta característica lo convierte en un buen candidato para el estudio de algoritmos de optimización. Tipo problema Minimización ( ) Función de fitness f 2 (x) = (x 2 5 x 4π π x 1 6) π cos (x 1 ) + 10 Dominio de búsqueda 5 x 1 10, 0 x 2 15 Mínimos locales No hay Mínimo global x = ( π, 12,275), (π, 2,275), (9,42478, 2,475) Fitness óptimo f 2 (x ) = 0, Número de variables n = 2 Implementación CERA Branin.R (configuración en Branin.cfg) Implementación CEDA Branin.cc Cuadro 4.2.: Problema de Branin Figura 4.3.: Representación gráfica del problema de Branin 68

74 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS Problema de Griewank El problema de Griewank define un problema de minimización sobre un espacio multidimensional. El parámetro d controla la profundidad de los mínimos locales; cuanto más grande sea éste más se parecerán los mínimos locales al mínimo global. Para la resolución de este problema mediante los algoritmos de optimización en cuestión se ha fijado d = Tipo problema Minimización Función de fitness f 3 (x) = 1 ni=1 x 2 d i n i=1 cos ( ) i x i + 1 Dominio de búsqueda 600 x i 600 Mínimos locales Varios mínimos locales Mínimo global x = (0,..., 0) Fitness óptimo f 3 (x ) = 0 Número de variables n = 30 Implementación CERA Griewank.R (configuración en Griewank.cfg) Implementación CEDA Griewank.cc Cuadro 4.3.: Problema de Griewank Figura 4.4.: Representación gráfica del problema de Griewank (con d = 4000) 69

75 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS Problema Quartic con ruido El problema Quartic se trata de un problema de minimización al que se le añade un pequeño ruido, generado aleatoriamente en un intervalo [0, 1). Tipo problema Minimización Función fitness f 4 (x) = n i=1 ix 4 i + random [0, 1) Dominio de búsqueda 1,28 x i 1,28 Mínimos locales No hay Mínimo global x = (0,..., 0) Fitness óptimo f 4 (x ) = 0 Número de variables n = 30 Implementación CERA Quartic.R (configuración en Quartic.cfg) Implementación CEDA Quartic.cc Cuadro 4.4.: Problema Quartic con ruido Problema de Schwefel 1.2 Esta función define un problema de minimización donde la mayor dificultad se encuentra en el hecho de que los coeficientes del modelo de regresión calculado por la función penalized sean adecuados y que mediante el método de simulación basado en desplazamiento de la media de una normal sea capaz de evolucionar individuos hacia el valor óptimo, dada la definición de la función. Tipo problema Minimización Función fitness f 5 (x) = ( n ij=1 ) 2 i=1 x j Dominio de búsqueda 100 x i 100 Mínimos locales No hay Mínimo global x = (0,..., 0) Fitness óptimo f 5 (x ) = 0 Tamaño del genoma n = 20 Implementación CERA Schwefel_12.R (configuración en Schwefel_12.cfg) Implementación CEDA Schwefel_12.cc Cuadro 4.5.: Problema de Schwefel

76 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS Problema de Schwefel 2.21 El valor de fitness para este problema consiste en quedarse con el gen de mayor valor de un determinado genoma (formado por 30 genes), de modo que lo que interesa en este caso es que los genes de los individuos tiendan a 0. Tipo problema Minimización Función fitness f 6 (x) = max i { x i, 1 i 30} Dominio de búsqueda 100 x i 100 Mínimos locales No hay Mínimo global x = (0,..., 0) Fitness óptimo f 6 (x ) = 0 Tamaño del genoma n = 30 Implementación CERA Schwefel_221.R (configuración en Schwefel_221.cfg) Implementación CEDA Schwefel_221.cc Cuadro 4.6.: Problema de Schwefel Problema de Schwefel 2.22 Dada la definición de la función de fitness de este problema, valores muy altos del fitness pueden dar problemas inicialmente en el cálculo de los coeficientes del modelo de regresión. Tipo problema Minimización Función fitness f 7 (x) = n i=1 x i + n i=1 x i Dominio de búsqueda 10 x i 10 Mínimos locales No hay Mínimo global x = (0,..., 0) Fitness óptimo f 7 (x ) = 0 Tamaño del genoma n = 15 Implementación CERA Schwefel_222.R (configuración en Schwefel_222.cfg) Implementación CEDA Schwefel_222.cc Cuadro 4.7.: Problema de Schwefel

77 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS Problema de Six-Hump Camel-Back El problema de Six-Hump Camel-Back es un problema de minimización para 2 variables, y para el que existen 2 mínimos globales. Tipo problema Minimización Función fitness f 8 (x) = 4x 2 1 2,1x x6 1 + x 1 x 2 4x x 4 2 Dominio de búsqueda 5 x i 5 Mínimos locales No hay Mínimo global x = (0,08983, 0,7126), ( 0,08983, 0,7126) Fitness óptimo f 8 (x ) = 1, Tamaño del genoma n = 2 Implementación CERA Six-Hump.R (configuración en Six-Hump.cfg) Implementación CEDA Six-Hump.cc Cuadro 4.8.: Problema de Six-Hump Camel-Back Figura 4.5.: Representación gráfica del problema de Six-Hump 72

78 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS Problema de Rastrigin El problema generalizado de Rastrigin es un ejemplo típico de función multimodal no lineal. Inicialmente fue propuesto por Rastrigin [31] como una función bidimensional, siendo posteriormente generalizado por Mühlenbein [21]. Esta función supone un problema díficil de optimizar debido a su amplio espacio de búsqueda así como por el gran número de mínimos locales. Tipo problema Minimización Función fitness f 9 (x) = n i=1 [x 2 i 10 cos (2πx i ) + 10] Dominio de búsqueda 5,12 x i 5,12 Mínimos locales Varios mínimos locales Mínimo global x = (0,..., 0) Fitness óptimo f 9 (x ) = 0 Tamaño del genoma n = 5 Implementación CERA Rastrigin.R (configuración en Rastrigin.cfg) Implementación CEDA Rastrigin.cc Cuadro 4.9.: Problema de Rastrigin Figura 4.6.: Representación gráfica del problema de Rastrigin 73

79 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS Problema de Rosenbrock También conocido como el Valle de Rosenbrock o la Banana de Rosenbrock. El mínimo global se encuentra dentro de un largo y estrecho valle parabólico donde encontrar dicho valle es trivial, pero no así el mínimo global. Tipo problema Minimización Función fitness f 10 (x) = [ n 1 i=1 100 (xi+1 x 2 i )2 + (x i 1) 2] Dominio de búsqueda 30 x i 30 Mínimos locales Varios mínimos locales Mínimo global x = (1,..., 1) Fitness óptimo f 10 (x ) = 0 Tamaño del genoma n = 20 Implementación CERA Rosenbrock.R (configuración en Rosenbrock.cfg) Implementación CEDA Rosenbrock.cc Cuadro 4.10.: Problema de Rosenbrock Figura 4.7.: Representación gráfica del problema de Rosenbrock 74

80 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS Problema Generalizado de Schwefel H. P. Schwefel propuso en [29] esta función para comprobar el rendimiento de distintos modelos de optimización numérica. Se trata de una función multimodal para la que existen varios mínimos locales en la vecindad del mínimo global. Tipo problema Minimización Función fitness f 11 (x) = 418,9829n n i=1 x i sin Dominio de búsqueda 500 x i 500 Mínimos locales Varios mínimos locales Mínimo global x = (420,9687,..., 420,9687) Fitness óptimo f 11 (x ) = 0 Tamaño del genoma n = 10 Implementación CERA Implementación CEDA x i Schwefel_226.R (configuración en Schwefel_226.cfg) Schwefel_226.cc Cuadro 4.11.: Problema Generalizado de Schwefel Figura 4.8.: Representación gráfica del problema generalizado de Schwefel 75

81 4.1. BATERÍA DE FUNCIONES CAPÍTULO 4. RESULTADOS Problema de la Esfera El problema de la Esfera es un problema de minización para el que el mínimo global se encuentra en x = (0,..., 0). La mayor dificultad en cuanto a la optimización de este problema reside en el amplio espacio de búsqueda en el que las variables pueden tomar valores. Este es un buen problema para analizar cómo interaccionan las variables entre sí (interacciones de grado 2) cuando se aplica un modelo de regresión con penalización L1. Tipo problema Minimización Función fitness f 12 (x) = n i=1 x 2 i Dominio de búsqueda 100 x i 100 Mínimos locales No hay Mínimo global x = (0,..., 0) Fitness óptimo f 12 (x ) = 0 Tamaño del genoma n = 30 Implementación CERA Sphere.R (configuración en Sphere.cfg) Implementación CEDA Sphere.cc Cuadro 4.12.: Problema de la Esfera Figura 4.9.: Representación gráfica del problema de la Esfera 76

82 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Problema del Escalón El problema del Escalón define un problema de minimización donde la mayor dificultad en cuanto a su optimización reside en el amplio espacio de búsqueda en el que las variables pueden tomar valores. Tipo problema Minimización Función fitness f 13 (x) = n i=1 ( x i + 0,5 ) 2 Dominio de búsqueda 100 x i 100 Mínimos locales No hay Mínimo global x = (0,..., 0) Fitness óptimo f 13 (x ) = 0 Tamaño del genoma n = 30 Implementación CERA Step.R (configuración en Step.cfg) Implementación CEDA Step.cc Cuadro 4.13.: Problema del Escalón 4.2. Resultados experimentales Dada la necesidad de procesamiento requerida para calcular las soluciones de los problemas de optimización propuestos, en el caso del algoritmo CERA se abrió una cuenta en la máquina baobab, perteneciente al Departamento de Arquitectura y Tecnología de Sistemas Informáticos (DATSI) de la facultad. Dicha máquina se compone de un total de 16 nodos sobre la que se pueden ejecutar hasta 4 procesos por nodo. En el caso de los EDA, la ejecución se llevó a cabo sobre la máquina laurel (también perteneciente al DATSI) dadas las menores exigencias en cuanto a potencia de cálculo para efectuar la resolución de los problemas. En cualquier caso, tanto para los CERA como para los CEDA se han generado una serie de scripts para automatizar el proceso de recogida de los resultados. Para cada problema, dados una serie de datos de entrada determinados, se realizan 10 ejecuciones del algoritmo, calculándose la media de los fitness obtenidos a lo largo de las 10 ejecuciones. Esto permitirá llevar a cabo una serie de test no paramétricos para la comparación de los resultados obtenidos mediante ambos algoritmos y, de ese modo, determinar qué algoritmo obtiene mejores resultados. 77

83 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Datos de entrada Como ya se ha explicado en la sección 4, se han fijado los parámetros de entrada con los que se quiere resolver un determinado problema de optimización para los algoritmos CERA y CEDA. Así pues, fijando el tamaño de la población y el número de individuos a ser seleccionados resultan 3 configuraciones que se han introducido como argumentos de entrada en los algoritmos para resolver cada uno de los problemas propuestos. Dichas configuraciones son las siguientes: Configuración 1: CERA Tamaño de la población 300 Individuos seleccionados 50 Tamaño del genoma Ver configuración problema Elitismo Sí No Interacciones entre genes No L2 Sí L1 CEDA Tamaño de la población 300 Individuos seleccionados 50 Tamaño del genoma Ver configuración problema Elitismo Sí No Interacciones entre genes No UMDA c Sí MIMIC c Configuración 2: CERA Tamaño de la población 400 Individuos seleccionados 200 Tamaño del genoma Ver configuración problema Elitismo Sí No Interacciones entre genes No L2 Sí L1 CEDA Tamaño de la población 400 Individuos seleccionados 200 Tamaño del genoma Ver configuración problema Elitismo Sí No Interacciones entre genes No UMDA c Sí MIMIC c 78

84 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Configuración 3: CERA Tamaño de la población 1200 Individuos seleccionados 300 Tamaño del genoma Ver configuración problema Elitismo Sí No Interacciones entre genes No L2 Sí L1 CEDA Tamaño de la población 1200 Individuos seleccionados 300 Tamaño del genoma Ver configuración problema Elitismo Sí No Interacciones entre genes No UMDA c Sí MIMIC c Como se puede observar, de cada una de las configuraciones se dan a su vez cuatro posibilidades: Ejecución con elitismo. Ejecución sin elitismo. Ejecución con interacción entre genes. Ejecución sin interacción entre genes Resultados A continuación se van a mostrar los resultados obtenidos para cada uno de los algoritmos. Se han agrupado los resultados por tamaño de población, número de individuos seleccionados y elitismo. 79

85 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Tamaño población 300, selección 50 individuos Con Elitismo f(x ) CERA L2 CEDA UMDAc CERA L1 CEDA MIMICc f E E-06 f f E E-06 f f f f E E-06 f f f f f E E-06 f Cuadro 4.14.: Resultados para Pob=300, Sel=50, Elitismo=Sí f CERA L2 f CEDA UMDAc f CERA L1 f CEDA MIMICc f E E-06 f f E E-06 f f f f E E-06 f E E-06 f f f f E E-06 f Cuadro 4.15.: Error con respecto a f(x ) (Pop=300,Sel=50,Elitismo=Sí) 80

86 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Sin Elitismo f(x ) CERA L2 CEDA UMDAc CERA L1 CEDA MIMICc f E E-06 f f E E-06 f f f f E E-06 f f E E-08 f f f E E-06 f Cuadro 4.16.: Resultados para Pob=300, Sel=50, Elitismo=No f CERA L2 f CEDA UMDAc f CERA L1 f CEDA MIMICc f E E-06 f f E E-06 f f f f E E-06 f E E-06 f E E-08 f f f E E-06 f Cuadro 4.17.: Error con respecto a f(x ) (Pop=300,Sel=50,Elitismo=No) Según se puede observar en los resultados obtenidos, los algoritmos CEDA consiguen valores más próximos al fitness óptimo que los CERA. En la siguiente tabla se muestra una comparación entre ambos algoritmos (agrupados por interacción y sin interacción entre variables) en la que se indica qué algoritmo se encuentra más cerca del fitness óptimo: 81

87 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS L2 vs UMDA c L1 vs MIMIC c Elitismo = Sí Elitismo = No Elitismo = Sí Elitismo = No f 1 CEDA CEDA CEDA CEDA f 2 CEDA CEDA CEDA CEDA f 3 CEDA CEDA CEDA CEDA f 4 CEDA CEDA CEDA CEDA f 5 CERA CEDA CERA CEDA f 6 CEDA CERA CERA CERA f 7 CEDA CEDA CEDA CEDA f 8 CEDA CEDA CEDA CEDA f 9 CERA CEDA CERA CEDA f 10 CEDA CEDA CEDA CEDA f 11 CERA CERA CERA CERA f 12 CEDA CEDA CEDA CEDA f 13 CEDA CEDA IGUALES CEDA Cuadro 4.18.: Comparación entre algoritmos (Pop=300,Sel=50) Esto no significa que los algoritmos CERA no sean capaces de optimizar los problemas propuestos sino que no lo hacen con la precisión de los algoritmos CEDA. En las tablas que se muestran a continuación se muestran los porcentajes de problemas que cada algoritmo es capaz de optimizar por debajo de un error (diferencia con respecto al valor de fitness) dado: CERA Elitismo Sin elitismo Error L2 L1 L2 L1 < 0, % % % % < 0, % % % % < 0, % % % % CEDA Elitismo Sin Elitismo UMDAc MIMICc UMDAc MIMICc % % % % % % % % % % % % Cuadro 4.19.: Problemas optimizados por debajo del error especificado (Pop=300, Sel=50) En la tabla anterior se puede comprobar cómo el algoritmo CERA con elitismo e interacciones L1, es capaz de optimizar un mayor número de problemas (un 77 % de los problemas) que los CEDA, cuando el error con respecto al valor de fitness óptimo se encuentra por debajo de Del mismo modo, se puede verificar que a medida que restringimos el valor del error acercándonos al valor óptimo del fitness, los CERA obtienen peor precisión que los CEDA, manteniendo éstos últimos mayor estabilidad, lo cual explica por qué en términos absolutos son comparativamente mejores que los CEDA tal y como se vio en la tabla

88 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Tamaño población 400, selección 200 individuos Con Elitismo f(x ) CERA L2 CEDA UMDAc CERA L1 CEDA MIMICc f E E-05 f f E E-06 f f f E-05 f E E-06 f f f f f E E-06 f Cuadro 4.20.: Resultados para Pob=400, Sel=200, Elitismo=Sí f CERA L2 f CEDA UMDAc f CERA L1 f CEDA MIMICc f E E-05 f f E E-06 f f f E-05 f E E-06 f E E-06 f f f f E E-06 f Cuadro 4.21.: Error con respecto a f(x ) (Pop=400,Sel=200,Elitismo=Sí) 83

89 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Sin Elitismo f(x ) CERA L2 CEDA UMDAc CERA L1 CEDA MIMICc f E E-05 f f E E-06 f f f f E E-06 f f E E-07 f f f E E-06 f Cuadro 4.22.: Resultados para Pob=400, Sel=200, Elitismo=No f CERA L2 f CEDA UMDAc f CERA L1 f CEDA MIMICc f E E-05 f f E E-06 f f f f E E-06 f f E E-07 f f f E E-06 f Cuadro 4.23.: Error con respecto a f(x ) (Pop=400,Sel=200,Elitismo=No) 84

90 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS L2 vs UMDA c L1 vs MIMIC c Elitismo = Sí Elitismo = No Elitismo = Sí Elitismo = No f 1 CEDA CEDA CEDA CEDA f 2 CEDA CEDA CEDA CEDA f 3 CEDA CEDA CEDA CEDA f 4 CEDA CEDA CEDA CEDA f 5 CEDA CEDA CEDA CERA f 6 CEDA CEDA CEDA CEDA f 7 CEDA CEDA CEDA CEDA f 8 CEDA CEDA CEDA CEDA f 9 CEDA CEDA CEDA CEDA f 10 CEDA CEDA CEDA CEDA f 11 CERA CERA CERA CERA f 12 CEDA CEDA CEDA CEDA f 13 IGUALES IGUALES IGUALES IGUALES Cuadro 4.24.: Comparación entre algoritmos (Pop=400,Sel=200) CERA Elitismo Sin elitismo Error L2 L1 L2 L1 < 0, % % % % < 0, % % % % < 0, % % % % CEDA Elitismo Sin Elitismo UMDAc MIMICc UMDAc MIMICc % % % % % % % % % % % % Cuadro 4.25.: Problemas optimizados por debajo del error especificado (Pop=400, Sel=200) Para una población de 400 individuos y 200 seleccionados, se observa una mejora en la estabilidad de los resultados obtenidos por los CERA para un error inferior a 0.1. Por otro lado, los CEDA mantienen su estabilidad y además mejoran el número de problemas solucionados con un margen de error aceptable (por debajo de 0.25). 85

91 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Tamaño población 1200, selección 300 individuos Con Elitismo f(x ) CERA L2 CEDA UMDAc CERA L1 CEDA MIMICc f E E-06 f f E E-07 f f f E E-06 f E E-06 f f f f f E E-07 f Cuadro 4.26.: Resultados para Pob=1200, Sel=300, Elitismo=Sí f CERA L2 f CEDA UMDAc f CERA L1 f CEDA MIMICc f E E-06 f f E E-07 f f f E E-06 f E E-06 f E E-06 f f f f E E-07 f Cuadro 4.27.: Error con respecto a f(x ) (Pop=1200,Sel=300,Elitismo=Sí) 86

92 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Sin Elitismo f(x ) CERA L2 CEDA UMDAc CERA L1 CEDA MIMICc f E E-06 f f E E-07 f f f E E-06 f E E-06 f f E E-08 f f f E E-07 f Cuadro 4.28.: Resultados para Pob=1200, Sel=300, Elitismo=No f CERA L2 f CEDA UMDAc f CERA L1 f CEDA MIMICc f E E-06 f f E E-07 f f f E E-06 f E E-06 f E-06 f E E-08 f f f E E-07 f Cuadro 4.29.: Error con respecto a f(x ) (Pop=1200,Sel=300,Elitismo=No) 87

93 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS L2 vs UMDA c L1 vs MIMIC c Elitismo = Sí Elitismo = No Elitismo = Sí Elitismo = No f 1 CEDA CEDA CEDA CEDA f 2 CEDA CEDA CEDA CEDA f 3 CEDA CEDA CEDA CEDA f 4 CEDA CEDA CEDA CEDA f 5 CEDA CEDA CEDA CERA f 6 CEDA CEDA CEDA CEDA f 7 CEDA CEDA CEDA CEDA f 8 CEDA CEDA CEDA CEDA f 9 CEDA CEDA CEDA CEDA f 10 CEDA CEDA CEDA CEDA f 11 CERA CERA CERA CERA f 12 CEDA CEDA CEDA CEDA f 13 IGUALES IGUALES IGUALES IGUALES Cuadro 4.30.: Comparación entre algoritmos (Pop=1200,Sel=300) CERA Elitismo Sin elitismo Error L2 L1 L2 L1 < 0, % % % % < 0, % % % % < 0, % % % % CEDA Elitismo Sin Elitismo UMDAc MIMICc UMDAc MIMICc % % % % % % % % % % % % Cuadro 4.31.: Problemas optimizados por debajo del error especificado (Pop=1200, Sel=300) Para una población de 1200 individuos y 300 seleccionados, se observa una mejora en la estabilidad de los resultados obtenidos por los CERA, consiguiendo además igualar el porcentaje de problemas resueltos de los CEDA para el caso de elitismo con interacciones (penalización L1). Por otro lado, los CEDA mantienen su estabilidad y además mejoran el número de problemas solucionados con un margen de error aceptable (por debajo de 0.25), que como se puede apreciar se corresponde con el 77 % de los problemas (10 de 13 problemas) bajo todas las condiciones de configuración Tests estadísticos para comparar algoritmos Puesto que se dan 3 configuraciones posibles para cada tipo de algoritmo (CERA y CEDA, 6 configuraciones por tanto) y sabiendo que para cada una de ellas hay 4 88

94 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS posibilidades (elitismo e interacciones), existen un total de 24 variedades de ejecución, 12 para los CERA y otras 12 para los CEDA. Dado que determinar los parámetros de entrada óptimos para cada algoritmo constituye a su vez un problema de optimización, se va a considerar cada una de las 24 posibilidades de ejecución como algoritmos diferentes pese a que en realidad el funcionamiento interno de éstos es el mismo. Se muestra a continuación la equivalencia de cada uno de los 24 algoritmos resultantes que se van a utilizar para compararse entre sí: Código Tam. población Indiv. seleccionados Elitismo Interacciones Algoritmo alg No No L2 CERA alg Sí No L2 CERA alg No No L2 CERA alg Sí No L2 CERA alg No No L2 CERA alg Sí No L2 CERA alg No Sí L1 CERA alg Sí Sí L1 CERA alg No Sí L1 CERA alg Sí Sí L1 CERA alg No Sí L1 CERA alg Sí Sí L1 CERA alg No No UMDA c CEDA alg Sí No UMDA c CEDA alg No No UMDA c CEDA alg Sí No UMDA c CEDA alg No No UMDA c CEDA alg Sí No UMDA c CEDA alg No Sí MIMIC c CEDA alg Sí Sí MIMIC c CEDA alg No Sí MIMIC c CEDA alg Sí Sí MIMIC c CEDA alg No Sí MIMIC c CEDA alg Sí Sí MIMIC c CEDA Cuadro 4.32.: Combinación de algoritmos posibles Para determinar qué algoritmo es mejor se va a aplicar un test estadístico sobre el conjunto de los resultados obtenidos. Para comprobar si los datos siguen distribuciones normales se debe llevar a cabo un test de normalidad (Kolmogorov-Smirnov). En caso de que esto fuera así se aplicaría un test paramétrico basado en la distribución t de Student. 89

95 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS En el caso propuesto, los datos no siguen distribuciones normales por lo que el test a aplicar debe ser no paramétrico. En tal caso hay dos opciones en función de si las muestras son apareadas o no. Si las muestras son apareadas se aplicaría el test de Wilcoxon, mientras que en caso de que las muestras sean no apareadas (independientes) debe aplicarse el test de Mann-Whitney. Sobre el contexto del presente trabajo hablaríamos de muestras apareadas en caso de que las poblaciones iniciales para la ejecución i-ésima fueran las mismas para el CEDA y el CERA que estamos comparando. Si la inicialización de la población se ha hecho teniendo en cuenta el reloj del ordenador o cualquier otra característica que haga que las dos poblaciones iniciales de los algoritmos a comparar sean distintas, las muestras se dicen no apareadas (o independientes). Dado que las poblaciones iniciales se crean en instantes completamente diferentes y siguiendo distribuciones de probabilidad diferentes (CERA uniforme, CEDA normal), las muestras serían no apareadas, debiéndose aplicar por tanto el test de Mann- Whitney Test de Mann-Whitney La prueba de Mann-Whitney [20] es un método no paramétrico aplicado a dos muestras independientes, cuyos datos han sido medidos al menos en una escala de nivel ordinal, que sirve para comparar dos muestras con respecto a su tamaño general, basado en estratificar las observaciones y luego comparar las medias de las dos muestras. La hipótesis nula del contraste es que las dos muestras, de tamaño n1 y n2, respectivamente, proceden de poblaciones continuas idénticas: H 0 = f 1 (x) = f 2 (x). La hipótesis alternativa puede ser unilateral o bilateral y únicamente supone que la tendencia central de una población difiere de la otra, pero no una diferencia de forma o de dispersión. Por esta razón, esta prueba es el equivalente no paramétrico de la prueba t para la diferencia de dos medias cuando las muestras son independientes pero no puede suponerse la normalidad de las poblaciones de origen. Para realizar el contraste se ordenan conjuntamente las observaciones de las dos muestras, de menor a mayor, y se les asignan rangos de 1 a n 1 + n 2. Si la tendencia central de ambas poblaciones es la misma los rangos deberían distribuirse aleatoriamente entre las dos muestras y el rango medio correspondiente a las observaciones de una muestra debería ser muy similar al correspondientes a las observaciones de la otra. El estadístico de prueba U de Mann-Whitney se construye a partir de la suma de rangos de una de las muestras, Ri, elegida arbitrariamente: U i = n 1 n 2 + n i (n i + 1) 2 R i 90

96 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Para tamaños de muestra pequeños la distribución del estadístico U, bajo el supuesto de que la hipótesis nula sea cierta, es discreta y está tabulada. Si los tamaños son suficientemente grandes la distribución del estadístico se aproxima a una normal de parámetros: µ U = n 1n 2 2 σ 2 U = n 1n 2 (n 1 + n 2 + 1) 12 El estadístico de prueba es el valor Z: Z = U µ U σ U La región de rechazo de H 0 se localiza en las dos colas de la normal tipificada si H 1 no es direccional o en una de las colas si H 1 es direccional [16] [2]. Para la aplicación del test de Mann-Whitney se ha empleado la función wilcox.test proporcionada por el paquete básico de R. Esta función tiene la siguiente interfaz: Donde x es el vector de fitness (obtenido tras 10 ejecuciones del algoritmo para un problema dado) del algoritmo que se desea comparar (a partir de ahora algoritmo pivote) con los restantes 23 algoritmos e y es el vector de fitness del algoritmo con el que se está comparando. Se mantiene el valor paired = F ALSE por defecto dado que son muestras no pareadas y se establece el valor alternative = c( less ). La función wilcox.test devuelve, entre otros, el p-value, que es el valor que nos permite decidir si un algoritmo es mejor que otro resolviendo un determinado problema. Así pues, si la función devuelve un p value < 0,05, significa que el algoritmo pivote obtiene mejores resultados que el algoritmo con el que se compara. El algoritmo pivote sumaría por tanto un punto. En caso de que p value 0,05 no se puede determinar que el algoritmo con el que se está comparando sea mejor. Por ello se aplicaría nuevamente la función wilcox.test sólo que esta vez y sería el vector de fitness del algoritmo pivote y x el del algoritmo con el que se desea comparar. En caso de que p-value tampoco sea inferior a 0,05, significa que no hay un algoritmo mejor que otro en la resolución del problema propuesto. Si p value < 0,05 el algoritmo con el que se compara sumaría un punto. En caso contrario, dado que ambos habrían empatado, no se les suma ningún punto a ninguno de los 2 algoritmos. 91

97 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS Una vez que se ha terminado de aplicar el test para los 13 problemas, se realiza el recuento de puntuación y aquel que obtiene mayor puntación es el ganador Resultado del test de Mann-Whitney Para generar los resultados se ha implementado un pequeño algoritmo (ver archivo Test_Mann_Whitney.R) cuyo funcionamiento está descrito en la sección anterior. La puntuación máxima que puede obtener un determinado algoritmo es de 23 puntos. A continuación, se muestra una tabla con los resultados obtenidos por cada algoritmo: Test Mann-Whitney Algoritmo Puntuación alg 1 3 alg 2 1 alg 3 5 alg 4 0 alg 5 9 alg 6 6 alg 7 5 alg 8 2 alg 9 6 alg 10 3 alg alg 12 8 alg alg alg alg alg alg alg alg alg alg alg alg Cuadro 4.33.: Puntuación de algoritmos Como ya dejaban entrever los resultados mostrados en la sección 4.2.2, los CEDAs 92

98 4.2. RESULTADOS EXPERIMENTALES CAPÍTULO 4. RESULTADOS (algoritmo 13 al 24) obtienen mejores resultados que los CERAs (algoritmo 1 al 12). Las posiciones que ocuparían en el ranking serían: Ranking Posición Algoritmo 1º alg 18, alg 24 2º alg 17, alg 23 3º alg 14 4º alg 20 5º alg 13, alg 19 6º alg 16, alg 22 7º alg 21 8º alg 15 9º alg 11 10º alg 5 11º alg 12 12º alg 6, alg 9 13º alg 3, alg 7 14º alg 1, alg 10 15º alg 8 16º alg 2 17º alg 4 Cuadro 4.34.: Ranking de algoritmos El primer puesto compartido lo ocuparían los algoritmos alg 18 y alg 24 correspondientes a los CEDAs: Algoritmo Tam. población Num. Indiv. Selección Elitismo Interacciones alg Sí No UMDA c alg Sí Sí MIMIC c De los CERAs, el algoritmo que mejores resultados ha obtenido es el algoritmo alg 11 : Algoritmo Tam. población Num. Indiv. Selección Elitismo Interacciones alg No Sí L1 93

99 5. Conclusiones Se ha desarrollado un método de resolución de problemas de optimización basado en regresión regularizada. Además, se ha realizado un estudio de su capacidad de resolución de problemas sobre diversos escenarios. Del estudio llevado a cabo se desprende que, sobre el mejor de los escenarios, el algoritmo CERA consigue optimizar 10 de los 13 problemas propuestos con un error inferior a 0.1 con respecto al valor de fitness óptimo. En comparación con los CEDAs, el algoritmo CERA consigue resolver el mismo número de problemas en el mejor de los escenarios pero obteniendo resultados menos ajustados al fitness óptimo. Esto supone que, para diferentes configuraciones, los algoritmos basados en CEDA obtienen resultados más próximos al fitness óptimo, lo cual significa que a nivel global podría considerarse mejor algoritmo que el basado en CERA. Pese a ello, conviene mencionar que la inicialización de poblaciones en uno y otro algoritmo se realiza de forma diferente. Mientras que en el caso del algoritmo CERA, los genes de los individuos de la población toman valores siguiendo una distribución uniforme sobre el rango definido por el problema a resolver, el algoritmo CEDA lo hace siguiendo una distribución normal de media µ = 0 y V ar = 5. Esto tiene como resultado que los genes de la población inicial toman valores centrados en el 0, no sobre todo el intervalo como ocurre en los CERA y, dado que una gran parte de los problemas de optimización alcanza su fitness óptimo para individuos donde sus genes toman valor 0, esto hace que el algoritmo CEDA parta con una clara ventaja con respecto al CERA. Por otro lado, tal y como se ha podido comprobar mediante los resultados obtenidos, la ejecución de ambos algoritmos con la opción de elitismo apenas tiene impacto sobre los resultados con respecto a la no aplicación. Puesto que la librería se ha desarrollado en R, su funcionamiento se basa en un intérprete de código, lo cual conlleva tiempos de ejecución para la obtención de resultados bastante más elevados que las ejecuciones de algoritmos escritos en lenguajes para los que se genera código máquina, como en el caso de los CEDAs, que están escritos en C++. Por ello, una de las propuestas para mejorar el rendimiento de la librería consistiría en portar el código de dicha librería a un lenguaje como C++. Con la presentación del algoritmo CERA, se abre una nueva línea de investigación dentro de los algoritmos de optimización de funciones no lineales sobre dominios 94

100 CAPÍTULO 5. CONCLUSIONES continuos. La aplicación de regresión regularizada para obtener modelos de regresión lineales supone un nuevo enfoque hacia la resolución de problemas de optimización. La librería CERA desarrollada para este trabajo final de carrera, proporciona la flexibilidad necesaria para añadir nuevos métodos de simulación sin cambios sobre la estructura general del algoritmo principal. Asimismo, el método de simulación desarrollado (al que se ha denominado método del desplazamiento Gaussiano), supone una aproximación en cuanto a la resolución de problemas de optimización, dejando la puerta abierta a futuras mejoras sobre el mismo. Del mismo modo, se propone como futura línea de investigación el desarrollo de nuevos métodos de simulación, aparte del ya estudiado, para la posterior comparación entre los diversos métodos de simulación implementados haciendo uso del modelo de regresión proporcionado mediante la aplicación de regresión con penalización L1 ó L2. 95

101 A. Cómo crear CERAS en R A continuación, se explica cómo crear el paquete CERAS en R. Las ventajas de crear un paquete que incluya el código desarrollado son las siguientes: 1. Se asegura que el paquete funciona correctamente y, de esta forma, se puede difundir fácilmente, permitiendo su utilización instalando éste sin complicaciones. 2. Se puede generar documentación sobre el funcionamiento del paquete en formato HTML así como en L A TEX, editando una serie de archivos. Al crear el paquete la documentación se genera automáticamente en ambos formatos. 3. Desde la propia consola R, al hacer help, aparece información sobre el paquete con las funciones que se han desarrollado. Aunque se va a explicar el proceso que hay que seguir para crear un paquete en R de la versión de Windows el proceso sería análogo para el resto de sistemas operativos. A.1. Herramientas R se diseñó sobre un entorno Unix, los cuales suelen incluir un conjunto completo de compiladores, herramientas de programación, así como utilidades para dar formato a texto. Puesto que Windows carece de ese tipo de componentes es necesario instalar previamente un subconjunto de las herramientas que se encuentran en Unix para poder crear paquetes propios. Estas herramientas se encuentran disponibles gracias al trabajo de Brian Ripley y Duncan Murdoch en [25]. Así pues, las herramientas que se necesitarían para generar el paquete son las siguientes: 1. Conjunto de utilidades Unix (RTools). 2. Compilador GNU (si el paquete contuviera código C/C++/Fortran). 96

102 A.1. HERRAMIENTAS APÉNDICE A. CÓMO CREAR CERAS EN R 3. Perl (intérprete de lenguaje utilizador por el instalador y chequeador de R). 4. Compilador de ayuda html de Microsoft. 5. Versión de TEX (MiKTEX por ejemplo). TEX se va a necesitar para generar documentación en L A TEX. Una vez que se han instalado los anteriores componentes conviene establacer la ruta donde se encuentra cada uno de los programas dentro de la variable de entorno PATH de Windows. Para ello habría que ir a Inicio Configuración Panel de control Sistema Opciones avanzadas Variables de entorno y modificar el valor de la variable Path. Figura A.1.: Variables de entorno A continuación se expone el contenido de la variable Path a modo de ejemplo: C:\Archivos de programa\miktex 2.7\miktex\bin; C:\R\R-2.6.0\bin; C:\Archivos de programa\rtools\mingw\bin; C:\Archivos de programa\rtools\bin; C:\Archivos de programa\rtools\perl\bin; C:\Archivos de programa\html Help Workshop 97

103 A.2. CREACIÓN APÉNDICE A. CÓMO CREAR CERAS EN R Una vez se acepten los cambios se ha de reiniciar el sistema para que éstos surtan efecto. A.2. Creación En primer lugar, se va a generar la estructura básica de directorios. Para ello, desde la consola de R, se introducirá el código fuente de la función cera (especificando la ruta donde se encuentra) mediante el comando source: source("c://r//r-2.6.0//ceras//r//cera.r") Ahora se crea una vector con los nombres de los objetos que se desea incluir en la librería CERAS. Dado que se desea llamar dinámicamente a los métodos de simulación y los problemas a resolver, éstos se incluirán a posteriori en el paquete, de modo que únicamente vamos a incluir el código fuente de la función cera: funcionesaincluir <- c("cera") Finalmente se realiza una llamada al comando package.skeleton: package.skeleton (name="ceras", funcionesaincluir, environment=.globalenv, path="c://") Una vez ejecutado este comando, la estructura de directorios generada quedará como: Figura A.2.: Estructura de directorios tras aplicar package.skeleton En la carpeta R, se encuentra el código correspondiente a las funciones que forman parte de la librería, en este caso cera.r. El archivo DESCRIPTION sirve para indicar la versión de la librería, su finalidad y el autor entre otra información. Dentro de 98

104 A.2. CREACIÓN APÉNDICE A. CÓMO CREAR CERAS EN R la carpeta man se encuentran una serie de archivos con extensión.rd, que sirven para documentar el funcionamiento de las funciones implementadas. A partir de ellos se genera la ayuda tanto en formato HTML como para L A TEX, cuando se genera el paquete binario. Para generar el paquete binario, abriremos una consola de sistema (cmd) y tras situarnos en la ruta donde hemos generado la estructura de directorios anterior teclearemos el siguiente comando: R CMD build force binary ceras Al ejecutar dicho comando se generará una salida como la de la figura A.3: Figura A.3.: Generación del paquete binario Si todo ha ido bien, se habrá generado el archivo ceras_0.3.zip. La estructura del paquete se muestra en la figura A.4. 99

105 A.2. CREACIÓN APÉNDICE A. CÓMO CREAR CERAS EN R Figura A.4.: Estructura de directorios del paquete binario Finalmente se añaden las carpetas improving_methods y problems y se guardan los cambios. Figura A.5.: Estructura de directorios completa del paquete binario 100

8.1. Introducción... 1. 8.2. Dependencia/independencia estadística... 2. 8.3. Representación gráfica: diagrama de dispersión... 3. 8.4. Regresión...

8.1. Introducción... 1. 8.2. Dependencia/independencia estadística... 2. 8.3. Representación gráfica: diagrama de dispersión... 3. 8.4. Regresión... Tema 8 Análisis de dos variables: dependencia estadística y regresión Contenido 8.1. Introducción............................. 1 8.2. Dependencia/independencia estadística.............. 2 8.3. Representación

Más detalles

Covarianza y coeficiente de correlación

Covarianza y coeficiente de correlación Covarianza y coeficiente de correlación Cuando analizábamos las variables unidimensionales considerábamos, entre otras medidas importantes, la media y la varianza. Ahora hemos visto que estas medidas también

Más detalles

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases. BASES Y DIMENSIÓN Definición: Base. Se llama base de un espacio (o subespacio) vectorial a un sistema generador de dicho espacio o subespacio, que sea a la vez linealmente independiente. β Propiedades

Más detalles

CAPITULO 4 JUSTIFICACION DEL ESTUDIO. En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de

CAPITULO 4 JUSTIFICACION DEL ESTUDIO. En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de CAPITULO 4 JUSTIFICACION DEL ESTUDIO En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de estudios previos y los alcances que justifican el presente estudio. 4.1. Justificación.

Más detalles

Análisis de los datos

Análisis de los datos Universidad Complutense de Madrid CURSOS DE FORMACIÓN EN INFORMÁTICA Análisis de los datos Hojas de cálculo Tema 6 Análisis de los datos Una de las capacidades más interesantes de Excel es la actualización

Más detalles

Introducción a la Computación Evolutiva

Introducción a la Computación Evolutiva Introducción a la Computación Evolutiva Sección de Computación CINVESTAV-IPN Av. IPN No. 2508 Col. San Pedro Zacatenco México, D.F. 07300 email: ccoello@cs.cinvestav.mx http: //delta.cs.cinvestav.mx/~ccoello

Más detalles

CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de

CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de cualquier modelo en el software Algor. La preparación de un modelo,

Más detalles

CORRELACIÓN Y PREDICIÓN

CORRELACIÓN Y PREDICIÓN CORRELACIÓN Y PREDICIÓN 1. Introducción 2. Curvas de regresión 3. Concepto de correlación 4. Regresión lineal 5. Regresión múltiple INTRODUCCIÓN: Muy a menudo se encuentra en la práctica que existe una

Más detalles

ETSIINGENIO 2009 DIBUJO DE GRAFOS MEDIANTE ALGORITMOS GENÉTICOS

ETSIINGENIO 2009 DIBUJO DE GRAFOS MEDIANTE ALGORITMOS GENÉTICOS ETSIINGENIO 2009 DIBUJO DE GRAFOS MEDIANTE ALGORITMOS GENÉTICOS EtsiIngenio Inteligencia Artificial 1 Raposo López Alejandro Sánchez Palacios Manuel Resumen dibujo de grafos mediante algoritmos genéticos

Más detalles

MÁQUINA DE VECTORES DE SOPORTE

MÁQUINA DE VECTORES DE SOPORTE MÁQUINA DE VECTORES DE SOPORTE La teoría de las (SVM por su nombre en inglés Support Vector Machine) fue desarrollada por Vapnik basado en la idea de minimización del riesgo estructural (SRM). Algunas

Más detalles

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

ESTIMACIÓN. puntual y por intervalo

ESTIMACIÓN. puntual y por intervalo ESTIMACIÓN puntual y por intervalo ( ) Podemos conocer el comportamiento del ser humano? Podemos usar la información contenida en la muestra para tratar de adivinar algún aspecto de la población bajo estudio

Más detalles

Análisis y cuantificación del Riesgo

Análisis y cuantificación del Riesgo Análisis y cuantificación del Riesgo 1 Qué es el análisis del Riesgo? 2. Métodos M de Análisis de riesgos 3. Método M de Montecarlo 4. Modelo de Análisis de Riesgos 5. Qué pasos de deben seguir para el

Más detalles

Parte I: Introducción

Parte I: Introducción Parte I: Introducción Introducción al Data Mining: su Aplicación a la Empresa Cursada 2007 POR QUÉ? Las empresas de todos los tamaños necesitan aprender de sus datos para crear una relación one-to-one

Más detalles

Ingeniería en Informática

Ingeniería en Informática Departamento de Informática Universidad Carlos III de Madrid Ingeniería en Informática Aprendizaje Automático Junio 2007 Normas generales del examen El tiempo para realizar el examen es de 3 horas No se

Más detalles

"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios

Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios "Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios Miguel Alfonso Flores Sánchez 1, Fernando Sandoya Sanchez 2 Resumen En el presente artículo se

Más detalles

Tema 2. Espacios Vectoriales. 2.1. Introducción

Tema 2. Espacios Vectoriales. 2.1. Introducción Tema 2 Espacios Vectoriales 2.1. Introducción Estamos habituados en diferentes cursos a trabajar con el concepto de vector. Concretamente sabemos que un vector es un segmento orientado caracterizado por

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

SISTEMAS INTELIGENTES

SISTEMAS INTELIGENTES SISTEMAS INTELIGENTES T11: Métodos Kernel: Máquinas de vectores soporte {jdiez, juanjo} @ aic.uniovi.es Índice Funciones y métodos kernel Concepto: representación de datos Características y ventajas Funciones

Más detalles

Gestión de la Configuración

Gestión de la Configuración Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición de

Más detalles

7. Conclusiones. 7.1 Resultados

7. Conclusiones. 7.1 Resultados 7. Conclusiones Una de las preguntas iniciales de este proyecto fue : Cuál es la importancia de resolver problemas NP-Completos?. Puede concluirse que el PAV como problema NP- Completo permite comprobar

Más detalles

GANTT, PERT y CPM. Figura 5.3: Carta GANTT 3.

GANTT, PERT y CPM. Figura 5.3: Carta GANTT 3. GANTT, PERT y CPM Características Conseguir una buena programación es un reto, no obstante es razonable y alcanzable. Ella debe tener el compromiso del equipo al completo, para lo cual se recomienda que

Más detalles

Metodología. del ajuste estacional. Tablero de Indicadores Económicos

Metodología. del ajuste estacional. Tablero de Indicadores Económicos Metodología del ajuste estacional Tablero de Indicadores Económicos Metodología del ajuste estacional Componentes de una serie de tiempo Las series de tiempo están constituidas por varios componentes que,

Más detalles

Algoritmos Genéticos. Introduccion a la Robótica Inteligente

Algoritmos Genéticos. Introduccion a la Robótica Inteligente Algoritmos Genéticos Introduccion a la Robótica Inteligente 7 Marzo 2014 (IRIN) AGs 7/03/2014 1 / 43 Índice 1 Introducción 2 Algoritmos Genéticos 3 Algunos Fundamentos Matemáticos 4 Conclusiones (IRIN)

Más detalles

El programa Minitab: breve introducción a su funcionamiento. Para mostrar la facilidad con la que se pueden realizar los gráficos y cálculos

El programa Minitab: breve introducción a su funcionamiento. Para mostrar la facilidad con la que se pueden realizar los gráficos y cálculos El programa Minitab: breve introducción a su funcionamiento Para mostrar la facilidad con la que se pueden realizar los gráficos y cálculos estadísticos en la actualidad, el libro se acompaña, en todo

Más detalles

CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA. Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo

CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA. Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo CAPÍTUL07 SISTEMAS DE FILOSOFÍA HÍBRIDA EN BIOMEDICINA Alejandro Pazos, Nieves Pedreira, Ana B. Porto, María D. López-Seijo Laboratorio de Redes de Neuronas Artificiales y Sistemas Adaptativos Universidade

Más detalles

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas. El primer paso en el diseño de una base de datos es la producción del esquema conceptual. Normalmente, se construyen varios esquemas conceptuales, cada uno para representar las distintas visiones que los

Más detalles

4. Programación Paralela

4. Programación Paralela 4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios

Más detalles

Análisis de componentes principales

Análisis de componentes principales Capítulo 2 Análisis de componentes principales 2.1. INTRODUCCIÓN El Análisis de componentes principales trata de describir las características principales de un conjunto de datos multivariantes, en los

Más detalles

ANÁLISIS DE VARIANZA EMPLEANDO EXCEL y WINSTATS

ANÁLISIS DE VARIANZA EMPLEANDO EXCEL y WINSTATS ANÁLISIS DE VARIANZA EMPLEANDO EXCEL y WINSTATS 1) INTRODUCCIÓN El análisis de varianza es una técnica que se puede utilizar para decidir si las medias de dos o más poblaciones son iguales. La prueba se

Más detalles

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar CAPITULO 4 Requerimientos, Análisis y Diseño El presente capítulo explica los pasos que se realizaron antes de implementar el sistema. Para esto, primero se explicarán los requerimientos que fueron solicitados

Más detalles

Novedades en Q-flow 3.02

Novedades en Q-flow 3.02 Novedades en Q-flow 3.02 Introducción Uno de los objetivos principales de Q-flow 3.02 es adecuarse a las necesidades de grandes organizaciones. Por eso Q-flow 3.02 tiene una versión Enterprise que incluye

Más detalles

Métodos Heurísticos en Inteligencia Artificial

Métodos Heurísticos en Inteligencia Artificial Métodos Heurísticos en Inteligencia Artificial Javier Ramírez rez-rodríguez Ana Lilia Laureano-Cruces Universidad Autónoma Metropolitana Métodos Heurísticos en Inteligencia Artificial Los problemas de

Más detalles

Programación Genética

Programación Genética Programación Genética Programación Genética consiste en la evolución automática de programas usando ideas basadas en la selección natural (Darwin). No sólo se ha utilizado para generar programas, sino

Más detalles

Tema 3. Espacios vectoriales

Tema 3. Espacios vectoriales Tema 3. Espacios vectoriales Estructura del tema. Definición y propiedades. Ejemplos. Dependencia e independencia lineal. Conceptos de base y dimensión. Coordenadas Subespacios vectoriales. 0.1. Definición

Más detalles

Ejercicio de estadística para 3º de la ESO

Ejercicio de estadística para 3º de la ESO Ejercicio de estadística para 3º de la ESO Unibelia La estadística es una disciplina técnica que se apoya en las matemáticas y que tiene como objetivo la interpretación de la realidad de una población

Más detalles

Los valores de las respuesta son las puntuaciones que, de cada individuo, o cluster, obtenemos semanalmente durante cinco semanas consecutivas:

Los valores de las respuesta son las puntuaciones que, de cada individuo, o cluster, obtenemos semanalmente durante cinco semanas consecutivas: Sobre los modelos lineales mixtos Ejemplo: Recuperación de infarto. Para estudiar las diferencias entre dos procedimientos diferentes de recuperación de pacientes de un infarto, se consideraron dos grupos

Más detalles

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto

Más detalles

Estacionalidad. Series de tiempo. Modelos econométricos. Modelos econométricos. Q= T Kα Lβ

Estacionalidad. Series de tiempo. Modelos econométricos. Modelos econométricos. Q= T Kα Lβ Estacionalidad Qué es la estacionalidad? La estacionalidad es una componente que se presenta en series de frecuencia inferior a la anual (mensual, trimestral,...), y supone oscilaciones a corto plazo de

Más detalles

TEMA 7: Análisis de la Capacidad del Proceso

TEMA 7: Análisis de la Capacidad del Proceso TEMA 7: Análisis de la Capacidad del Proceso 1 Introducción Índices de capacidad 3 Herramientas estadísticas para el análisis de la capacidad 4 Límites de tolerancia naturales 1 Introducción La capacidad

Más detalles

CAPÍTULO 4: ALGORITMOS DE APRENDIZAJE

CAPÍTULO 4: ALGORITMOS DE APRENDIZAJE Capítulo 4 Algoritmos de Aprendizaje 26 CAPÍTULO 4: ALGORITMOS DE APRENDIZAJE En este capítulo se proporcionan las descripciones matemáticas de los principales algoritmos de aprendizaje para redes neuronales:

Más detalles

ANÁLISIS DESCRIPTIVO CON SPSS

ANÁLISIS DESCRIPTIVO CON SPSS ESCUELA SUPERIOR DE INFORMÁTICA Prácticas de Estadística ANÁLISIS DESCRIPTIVO CON SPSS 1.- INTRODUCCIÓN Existen dos procedimientos básicos que permiten describir las propiedades de las distribuciones:

Más detalles

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)

Más detalles

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Resumen Todo documento XBRL contiene cierta información semántica que se representa

Más detalles

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net 2012 Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net Servinet Sistemas y Comunicación S.L. www.softwaregestionproyectos.com Última Revisión: Febrero

Más detalles

Otras medidas descriptivas usuales

Otras medidas descriptivas usuales Tema 7 Otras medidas descriptivas usuales Contenido 7.1. Introducción............................. 1 7.2. Medidas robustas.......................... 2 7.2.1. Media recortada....................... 2 7.2.2.

Más detalles

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007 Enunciado Se desea efectuar el testing funcional de un programa que ejecuta transferencias entre cuentas bancarias. El programa recibe como parámetros la cuenta de origen, la de cuenta de destino y el

Más detalles

CAPÍTULO IV METODOLOGÍA PARA EL CONTROL DE INVENTARIOS. En este capítulo se presenta los pasos que se siguieron para la elaboración de un sistema de

CAPÍTULO IV METODOLOGÍA PARA EL CONTROL DE INVENTARIOS. En este capítulo se presenta los pasos que se siguieron para la elaboración de un sistema de CAPÍTULO IV METODOLOGÍA PARA EL CONTROL DE INVENTARIOS En este capítulo se presenta los pasos que se siguieron para la elaboración de un sistema de inventarios para lograr un control de los productos.

Más detalles

Espacios generados, dependencia lineal y bases

Espacios generados, dependencia lineal y bases Espacios generados dependencia lineal y bases Departamento de Matemáticas CCIR/ITESM 14 de enero de 2011 Índice 14.1. Introducción............................................... 1 14.2. Espacio Generado............................................

Más detalles

Tema 1. VECTORES (EN EL PLANO Y EN EL ESPACIO)

Tema 1. VECTORES (EN EL PLANO Y EN EL ESPACIO) Vectores Tema. VECTORES (EN EL PLANO Y EN EL ESPACIO Definición de espacio vectorial Un conjunto E es un espacio vectorial si en él se definen dos operaciones, una interna (suma y otra externa (producto

Más detalles

Fundamentos de Investigación de Operaciones Investigación de Operaciones 1

Fundamentos de Investigación de Operaciones Investigación de Operaciones 1 Fundamentos de Investigación de Operaciones Investigación de Operaciones 1 1 de agosto de 2003 1. Introducción Cualquier modelo de una situación es una simplificación de la situación real. Por lo tanto,

Más detalles

SEDO: SOFTWARE EDUCATIVO DE MATEMÁTICA NUMÉRICA. Lic. Maikel León Espinosa. mle@uclv.edu.cu

SEDO: SOFTWARE EDUCATIVO DE MATEMÁTICA NUMÉRICA. Lic. Maikel León Espinosa. mle@uclv.edu.cu EDU082 Resumen SEDO: SOFTWARE EDUCATIVO DE MATEMÁTICA NUMÉRICA Lic. Maikel León Espinosa mle@uclv.edu.cu Departamento de Ciencia de la Computación Universidad Central Marta Abreu de Las Villas Carretera

Más detalles

Estructuras algebraicas

Estructuras algebraicas Tema 2 Estructuras algebraicas básicas 2.1. Operación interna Definición 29. Dados tres conjuntos A, B y C, se llama ley de composición en los conjuntos A y B y resultado en el conjunto C, y se denota

Más detalles

ANÁLISIS DE DATOS NO NUMERICOS

ANÁLISIS DE DATOS NO NUMERICOS ANÁLISIS DE DATOS NO NUMERICOS ESCALAS DE MEDIDA CATEGORICAS Jorge Galbiati Riesco Los datos categóricos son datos que provienen de resultados de experimentos en que sus resultados se miden en escalas

Más detalles

TEMA 4: Introducción al Control Estadístico de Procesos

TEMA 4: Introducción al Control Estadístico de Procesos TEMA 4: Introducción al Control Estadístico de Procesos 1 Introducción 2 Base estadística del diagrama de control 3 Muestreo y agrupación de datos 4 Análisis de patrones en diagramas de control 1. Introducción

Más detalles

Capítulo 12: Indexación y asociación

Capítulo 12: Indexación y asociación Capítulo 12: Indexación y asociación Conceptos básicos Índices ordenados Archivos de índice de árbol B+ Archivos de índice de árbol B Asociación estática Asociación dinámica Comparación entre indexación

Más detalles

MUESTREO TIPOS DE MUESTREO

MUESTREO TIPOS DE MUESTREO MUESTREO En ocasiones en que no es posible o conveniente realizar un censo (analizar a todos los elementos de una población), se selecciona una muestra, entendiendo por tal una parte representativa de

Más detalles

MODELOS DE RECUPERACION

MODELOS DE RECUPERACION RECUPERACIÓN Y ORGANIZACIÓN DE LA INFORMACIÓN INGENIERÍA INFORMÁTICA RECUPERACIÓN Y ACCESO A LA INFORMACIÓN MODELOS DE RECUPERACION AUTOR: Rubén García Broncano NIA 100065530 grupo 81 1 INDICE 1- INTRODUCCIÓN

Más detalles

Aula Banca Privada. La importancia de la diversificación

Aula Banca Privada. La importancia de la diversificación Aula Banca Privada La importancia de la diversificación La importancia de la diversificación La diversificación de carteras es el principio básico de la operativa en mercados financieros, según el cual

Más detalles

1.1. Introducción y conceptos básicos

1.1. Introducción y conceptos básicos Tema 1 Variables estadísticas Contenido 1.1. Introducción y conceptos básicos.................. 1 1.2. Tipos de variables estadísticas................... 2 1.3. Distribuciones de frecuencias....................

Más detalles

Estadística con Excel Informática 4º ESO ESTADÍSTICA CON EXCEL

Estadística con Excel Informática 4º ESO ESTADÍSTICA CON EXCEL 1. Introducción ESTADÍSTICA CO EXCEL La estadística es la rama de las matemáticas que se dedica al análisis e interpretación de series de datos, generando unos resultados que se utilizan básicamente en

Más detalles

CICLO DE VIDA DEL SOFTWARE

CICLO DE VIDA DEL SOFTWARE CICLO DE VIDA DEL SOFTWARE 1. Concepto de Ciclo de Vida 2. Procesos del Ciclo de Vida del Software 3. Modelo en cascada 4. Modelo incremental 5. Modelo en espiral 6. Prototipado 7. La reutilización en

Más detalles

Capitulo V Administración de memoria

Capitulo V Administración de memoria Capitulo V Administración de memoria Introducción. Una de las tareas más importantes y complejas de un sistema operativo es la gestión de memoria. La gestión de memoria implica tratar la memoria principal

Más detalles

Matemáticas 2º BTO Aplicadas a las Ciencias Sociales

Matemáticas 2º BTO Aplicadas a las Ciencias Sociales Matemáticas 2º BTO Aplicadas a las Ciencias Sociales CONVOCATORIA EXTRAORDINARIA DE JUNIO 2014 MÍNIMOS: No son contenidos mínimos los señalados como de ampliación. I. PROBABILIDAD Y ESTADÍSTICA UNIDAD

Más detalles

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA E. SÁEZ, M. ORTIZ, F. QUILES, C. MORENO, L. GÓMEZ Área de Arquitectura y Tecnología de Computadores. Departamento de Arquitectura

Más detalles

Espacios vectoriales. Bases. Coordenadas

Espacios vectoriales. Bases. Coordenadas Capítulo 5 Espacios vectoriales. Bases. Coordenadas OPERACIONES ENR n Recordemos que el producto cartesiano de dos conjuntos A y B consiste en los pares ordenados (a,b) tales que a A y b B. Cuando consideramos

Más detalles

Sistema Inteligente de Exploración

Sistema Inteligente de Exploración Observatorio Municipal de Estadística Sistema Inteligente de Exploración Capítulos 1. Consideraciones iniciales y requerimientos... 2 2. Navegación... 3 3. Consulta de indicadores... 5 3.1. Elaboración

Más detalles

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE PRUEBAS DE SOFTWARE La prueba del software es un elemento crítico para la garantía de la calidad del software. El objetivo de la etapa de pruebas es garantizar la calidad del producto desarrollado. Además,

Más detalles

El Futuro de la Computación en la Industria de Generación Eléctrica

El Futuro de la Computación en la Industria de Generación Eléctrica El Futuro de la Computación en la Industria de Generación Eléctrica Retos a los que se enfrenta la industria de generación La industria de generación eléctrica se enfrenta a dos retos muy significativos

Más detalles

TEMA 5 ESTUDIOS CORRELACIONALES.

TEMA 5 ESTUDIOS CORRELACIONALES. TEMA 5 ESTUDIOS CORRELACIONALES. 1. INTRODUCCIÓN. 2. CONCEPTO DE CORRELACIÓN. 3. CASOS EN LOS QUE SE UTILIZA LA INVESTIGACIÓN CORRELACIONAL. 4. LIMITACIONES DE LOS ESTUDIOS CORRELACIONALES 1 1. INTRODUCCIÓN.

Más detalles

CAPÍTULO 6 SIMULACIONES Y RESULTADOS

CAPÍTULO 6 SIMULACIONES Y RESULTADOS CAPÍTULO 6 SIMULACIONES Y RESULTADOS 6.1 Proceso de Simulación Las simulaciones fueros llevadas a cabo empleando como herramienta la Versión 6.5 Release 13 de Matlab. Para lo cual fue empleado un banco

Más detalles

Se podría entender como una matriz de filas y columnas. Cada combinación de fila y columna se denomina celda. Por ejemplo la celda A1, B33, Z68.

Se podría entender como una matriz de filas y columnas. Cada combinación de fila y columna se denomina celda. Por ejemplo la celda A1, B33, Z68. Departamento de Economía Aplicada: UDI de Estadística. Universidad Autónoma de Madrid Notas sobre el manejo de Excel para el análisis descriptivo y exploratorio de datos. (Descriptiva) 1 1 Introducción

Más detalles

Tema 1: Test de Distribuciones de Probabilidad

Tema 1: Test de Distribuciones de Probabilidad Tema 1: Test de Distribuciones de Probabilidad 1.- Una compañía de seguros tiene 1000 asegurados en el ramo de accidentes. Si la el modelo mejor para el número de siniestros en un año es: a) Normal (5;,3).

Más detalles

La Tecnología líder en Simulación

La Tecnología líder en Simulación La Tecnología líder en Simulación El software de simulación Arena, es un "seguro de vida" para las empresa: le ayuda a predecir el impacto en las organizaciones de nuevas ideas, estrategias y políticas

Más detalles

35 Facultad de Ciencias Universidad de Los Andes Mérida-Venezuela. Potencial Eléctrico

35 Facultad de Ciencias Universidad de Los Andes Mérida-Venezuela. Potencial Eléctrico q 1 q 2 Prof. Félix Aguirre 35 Energía Electrostática Potencial Eléctrico La interacción electrostática es representada muy bien a través de la ley de Coulomb, esto es: mediante fuerzas. Existen, sin embargo,

Más detalles

Introducción a la Firma Electrónica en MIDAS

Introducción a la Firma Electrónica en MIDAS Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento

Más detalles

Cómo?: Resolviendo el sistema lineal homógeneo que satisfacen las componentes de cualquier vector de S. x4 = x 1 x 3 = x 2 x 1

Cómo?: Resolviendo el sistema lineal homógeneo que satisfacen las componentes de cualquier vector de S. x4 = x 1 x 3 = x 2 x 1 . ESPACIOS VECTORIALES Consideremos el siguiente subconjunto de R 4 : S = {(x, x 2, x 3, x 4 )/x x 4 = 0 x 2 x 4 = x 3 a. Comprobar que S es subespacio vectorial de R 4. Para demostrar que S es un subespacio

Más detalles

Maxpho Commerce 11. Gestión CSV. Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd

Maxpho Commerce 11. Gestión CSV. Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd Maxpho Commerce 11 Gestión CSV Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd Índice general 1 - Introducción... 3 1.1 - El archivo CSV... 3 1.2 - Módulo CSV en Maxpho... 3 1.3 - Módulo CSV

Más detalles

BREVE MANUAL DE SOLVER

BREVE MANUAL DE SOLVER BREVE MANUAL DE SOLVER PROFESOR: DAVID LAHOZ ARNEDO PROGRAMACIÓN LINEAL Definición: Un problema se define de programación lineal si se busca calcular el máximo o el mínimo de una función lineal, la relación

Más detalles

Escuela de Organización Industrial

Escuela de Organización Industrial TRABAJO: MEJORA DE LA METODOLOGÍA DE IDENTIFICACIÓN Y PRIORIZACIÓN DE LOS TEMAS RELEVANTES DE RESPONSABILIDAD CORPORATIVA, A TRAVÉS DE LA INVOLUCRACIÓN CON LOS GRUPOS DE INTERÉS. PROMOTOR: VODAFONE ESPAÑA

Más detalles

Diseño orientado al flujo de datos

Diseño orientado al flujo de datos Diseño orientado al flujo de datos Recordemos que el diseño es una actividad que consta de una serie de pasos, en los que partiendo de la especificación del sistema (de los propios requerimientos), obtenemos

Más detalles

Capítulo 2. Las Redes Neuronales Artificiales

Capítulo 2. Las Redes Neuronales Artificiales Capítulo 2. Las Redes Neuronales Artificiales 13 Capitulo 2. Las Redes Neuronales Artificiales 2.1 Definición Redes Neuronales Artificiales El construir una computadora que sea capaz de aprender, y de

Más detalles

El Proceso Unificado de Desarrollo de Software

El Proceso Unificado de Desarrollo de Software El Proceso de Desarrollo de Software Ciclos de vida Métodos de desarrollo de software El Proceso Unificado de Desarrollo de Software 1 Fases principales del desarrollo de software Captura de requisitos:

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer

Más detalles

1.1 EL ESTUDIO TÉCNICO

1.1 EL ESTUDIO TÉCNICO 1.1 EL ESTUDIO TÉCNICO 1.1.1 Definición Un estudio técnico permite proponer y analizar las diferentes opciones tecnológicas para producir los bienes o servicios que se requieren, lo que además admite verificar

Más detalles

Algoritmos Genéticos Y

Algoritmos Genéticos Y Algoritmos Genéticos Y Optimización n Heurística Dr. Adrian Will Grupo de Aplicaciones de Inteligencia Artificial Universidad Nacional de Tucumán awill@herrera.unt.edu.ar Algoritmos Genéticos - Operadores

Más detalles

Proyecto Scratch: http://scratch.mit.edu/projects/38518614/

Proyecto Scratch: http://scratch.mit.edu/projects/38518614/ Proyecto Scratch: http://scratch.mit.edu/projects/38518614/ SISTEMAS DE NUMERACÍON Dos de los sistemas de numeración más utilizados son el sistema decimal, que se emplea en la vida cotidiana, y el sistema

Más detalles

Determinación de primas de acuerdo al Apetito de riesgo de la Compañía por medio de simulaciones

Determinación de primas de acuerdo al Apetito de riesgo de la Compañía por medio de simulaciones Determinación de primas de acuerdo al Apetito de riesgo de la Compañía por medio de simulaciones Introducción Las Compañías aseguradoras determinan sus precios basadas en modelos y en información histórica

Más detalles

ANALISIS MULTIVARIANTE

ANALISIS MULTIVARIANTE ANALISIS MULTIVARIANTE Es un conjunto de técnicas que se utilizan cuando se trabaja sobre colecciones de datos en las cuáles hay muchas variables implicadas. Los principales problemas, en este contexto,

Más detalles

ANÁLISIS DE UN JUEGO DE CARTAS: LAS SIETE Y MEDIA

ANÁLISIS DE UN JUEGO DE CARTAS: LAS SIETE Y MEDIA ANÁLISIS DE UN JUEGO DE CARTAS: LAS SIETE Y MEDIA MaMaEuSch (Management Mathematics for European School) http://www.mathematik.uni-kl.de/~mamaeusch/ Modelos matemáticos orientados a la educación Clases

Más detalles

Estructuras de Control - Diagrama de Flujo

Estructuras de Control - Diagrama de Flujo RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS Ingeniería en Computación Ingeniería en Informática UNIVERSIDAD NACIONAL DE SAN LUIS DEPARTAMENTO DE INFORMÁTICA AÑO 2015 Índice 1. Programación estructurada 2 1.1.

Más detalles

Ejercicios de Teoría de Colas

Ejercicios de Teoría de Colas Ejercicios de Teoría de Colas Investigación Operativa Ingeniería Informática, UC3M Curso 08/09 1. Demuestra que en una cola M/M/1 se tiene: L = ρ Solución. L = = = = = ρ np n nρ n (1 ρ) nρ n n=1 ρ n ρ

Más detalles

Tema 3: Variables aleatorias y vectores aleatorios bidimensionales

Tema 3: Variables aleatorias y vectores aleatorios bidimensionales Estadística 38 Tema 3: Variables aleatorias y vectores aleatorios bidimensionales El concepto de variable aleatoria surge de la necesidad de hacer más manejables matemáticamente los resultados de los experimentos

Más detalles

Medidas de tendencia central o de posición: situación de los valores alrededor

Medidas de tendencia central o de posición: situación de los valores alrededor Tema 10: Medidas de posición y dispersión Una vez agrupados los datos en distribuciones de frecuencias, se calculan unos valores que sintetizan la información. Estudiaremos dos grandes secciones: Medidas

Más detalles

FASES DEL PROCESO DE RESOLUCIÓN DE PROBLEMAS

FASES DEL PROCESO DE RESOLUCIÓN DE PROBLEMAS FASES DEL PROCESO DE RESOLUCIÓN DE PROBLEMAS Varios autores han tratado de identificar y describir las distintas fases en el proceso de resolución de problemas. Polya (1945), en su modelo descriptivo,

Más detalles

5. DISTRIBUCIONES DE PROBABILIDADES

5. DISTRIBUCIONES DE PROBABILIDADES 5. DISTRIBUCIONES DE PROBABILIDADES Dr. http://academic.uprm.edu/eacunaf UNIVERSIDAD DE PUERTO RICO RECINTO UNIVERSITARIO DE MAYAGUEZ DISTRIBUCIONES DE PROBABILIDADES Se introducirá el concepto de variable

Más detalles

1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE

1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE MANUAL DE USUARIO DE ABANQ 1 Índice de contenido 1 ÁREA DE FACTURACIÓN......4 1.1 ÁREA DE FACTURACIÓN::PRINCIPAL...4 1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA...4 1.1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA::General...4

Más detalles

Ecuaciones de primer grado con dos incógnitas

Ecuaciones de primer grado con dos incógnitas Ecuaciones de primer grado con dos incógnitas Si decimos: "las edades de mis padres suman 120 años", podemos expresar esta frase algebraicamente de la siguiente forma: Entonces, Denominamos x a la edad

Más detalles

Capítulo VI. Diagramas de Entidad Relación

Capítulo VI. Diagramas de Entidad Relación Diagramas de Entidad Relación Diagramas de entidad relación Tabla de contenido 1.- Concepto de entidad... 91 1.1.- Entidad del negocio... 91 1.2.- Atributos y datos... 91 2.- Asociación de entidades...

Más detalles

www.bvbusiness-school.com

www.bvbusiness-school.com Gráficos de Control de Shewart www.bvbusiness-school.com GRÁFICOS DE CONTROL DE SHEWART Una de las herramientas estadísticas más importantes en el Control Estadístico de Procesos son los Gráficos de Control.

Más detalles