Distribución y localización de fragmentos en una base de datos
Transcripción
Distribución y localización de fragmentos en una base de datos
Distribución y localización de fragmentos en una base de datos distribuida mediante el uso de algoritmos genéticos Luis Miguel Beltrán Sierra Juan Carlos Villamizar Perdomo Resumen Abstract La distribución óptima de fragmentos en un sistema de datos distribuido o base de datos distribuida constituye un problema. Este tipo de problema, dada su complejidad computacional (tiempo de computación) no puede ser t rat ado con méto dos de prog ramación lineal convencionales. The optimal fragment distribution in a data system distributed or distributed database represents a problem. This kind of problem, given its computational complexity (time of computation) cannot be treated with conventional methods of linear programming. En este artículo se muestra una aproximación a su solución mediante el uso de técnicas metaheurísticas, en concreto, algoritmos genéticos. Se parte del análisis de las variables implícitas en el problema, se deduce luego un modelo matemático para la estimación de costos de una distribución, el cual converge en una función de costos. Se diseña y programa un algoritmo genético que, tomando la información del sistema y evaluando la función de costos, encuentre las distribuciones que resulten más económicas. Pa l a b r a s c l a v e s : A lg o r i t m o , C o m p l e j i d a d Computacional, Máquina de Turing, Problema Tipo, Metaheurísticas, Computación Evolutiva, Algoritmo Genético, Fragmentación. In this article is shown an approach to the solution to this problem by means of metaheurístics techniques, in particular, genetic algorithms. It begins with the analysis of the implicit variables in the problem; the mathematical model is deduced for the estimation of costs of a distribution that converges in a function of cost. A genetic algorithm is designed and programmed to taking the information from the system and evaluate the function of costs, finding the distributions that are more economical. Key words: Algorithm, Computational Complexy, Turing Machine, Problem Type, Metaeuristhics, Evolutive Computation, Genetic Algorithm, Fragmentation. 8 Universidad El Bosque - Facultad de Ingeniería de Sistemas I. INTRODUCCIÓN Hasta hace unos 30 años se pensaba que todos o al menos la mayoría de problemas prácticos de optimización podían ser resueltas con la programación lineal [4], pero lamentablemente esa no es la realidad. Más aún, si se piensa en los problemas reales que suelen ser de interés, para los cuales el objetivo es encontrar la solución que optimiza algún tipo de criterio (por ejemplo, la que da lugar al menor costo bajo determinadas circunstancias) la situación es justamente la opuesta: tan sólo una pequeña parte de ellos pueden ser resueltos. En tales circunstancias los métodos heurísticos están adquiriendo cada vez mayor importancia. Dentro de las técnicas heurísticas, la computación evolutiva ha sido una de las herramientas más potentes y eficientes. Esta plantea los problemas de búsqueda y optimización bajo un enfoque evolutivo, basado inicialmente y a grandes rasgos en la teoría de la evolución de las especies elaborada por Darwin. De forma general, estos algoritmos realizan una búsqueda estocástica guiada, basándose en la evolución reiterada de un conjunto de estructuras y la selección de las más adecuadas (aptas) en cada ciclo. Estas técnicas pueden ser clasificadas en tres categorías principales: Los algoritmos genéticos (AG), las estrategias evolutivas (EE) y la programación evolutiva (PE). [1] [2] La distribución óptima de fragmentos de información de una base de datos o sistema de datos distribuido en una red de sitios o nodos cae en la categoría de problemas de optimización combinatoria, para los cuales, desde el punto de vista computacional no existe (o al menos no se conoce hasta ahora) una algoritmo polinomial de resolución, lo que obliga al uso de técnicas heurísticas para su solución. En este artículo se hace una descripción de una aproximación a dicha solución con el uso de los algoritmos genéticos. II. ALGORITMOS GENÉTICOS Forman parte de los métodos inspirados en la naturaleza y parte de la premisa de que la naturaleza siempre busca las soluciones óptimas a sus problemas, razón muy válida para querer imitar sus procesos. En el caso de los algoritmos genéticos lo que se imita es el mismo proceso de evolución. La evolución es el resultado de la interacción de pro cesos esto c á st icos (Reproducción, mutación, selección) actuando sobre una población, generación tras generación. La evolución de las especies da como resultado especies cada vez mejor adaptadas a su medio ambiente. El mejor individuo (el más adaptado, el más fuerte), tiene una mayor probabilidad de sobrevivir y de reproducirse (se alimenta mejor, gana peleas). Los padres pasan información genética a sus descendientes entre la que se encuentra la que le permitió ser uno de los mejor adaptados. Los Algoritmos Genéticos [1] (GA) fueron introducidos por John Holland en 1970, quien manejó el principio Darwiniano de la evolución de las especies y la genética, para el desarrollo de sus proyectos de optimización, estos se definen como: “Algoritmos probabilísticos que ofrecen un mecanismo de búsqueda paralela y adaptativa basada en el principio de supervivencia de los más aptos y en la reproducción de los mismos” [1]. Poco tiempo después, Holland comenzó a analizar los sistemas de desarrollo de algoritmos genéticos, lo cual le permitió plantear satisfactoriamente los objetivos de lo que vendría a ser su investigación. Estos objetivos fueron los siguientes: • Imitar los procesos adaptativos de los sistemas naturales. • Diseñar sistemas artificiales (normalmente Algoritmos) que retengan los mecanismos importantes de los sistemas naturales. Partiendo de los objetivos anteriormente mencionados, concluyó que la evolución tenía lugar en los cromosomas, en donde estaba codificada la información del ser vivo y que esta variaba de una generación a otra. Determinó que en el proceso de formación de un nuevo individuo, se combinaban las informaciones cromosómicas de los progenitores, aunque la forma exacta en que se realizaba este procedimiento era desconocido para él. Aunque muchos aspectos están todavía por discernir, existen unos principios generales ampliamente aceptados por la comunidad científica. De acuerdo con la teoría de C. Darwin, el principio de selección privilegia los individuos más aptos con mayor longevidad y, por lo tanto, con mayor probabilidad de reproducción, además los individuos con más descendentes tienen más opor tunidades de transmitir sus códigos genéticos en las próximas generaciones, tales códigos genéticos constituyen la identidad de cada individuo y están representados en los cromosomas. En términos generales se trata de procesos iterativos que, en cada etapa, mantienen una población de soluciones candidatas que satisfacen las restricciones de un problema. En cada etapa, a partir de la población actual, una nueva generación de soluciones es formada usando un conjunto de operadores, dentro de los cuales los tres más importantes son la selección, el cruce y la mutación. A continuación se describen cada uno de ellos: Revista de Tecnología - Journal of Technology • Volumen 6, No. 1, Enero - Junio 2007 • Selección: Consiste en seleccionar aleatoria o heurísticamente un subconjunto de elementos de la población, con base en un factor cuantitativo de calidad del elemento (denomina función de evaluación).[3] • Cruce: Consiste en seleccionar pares de elementos o soluciones para ser combinados entre sí, generando nuevos elementos que mantienen, por lo tanto, características de cada uno de los progenitores. En él esta combinación debe ser realizada teniendo en cuenta el dominio del problema, es decir, generando nuevos elementos que de por sí también constituyen soluciones factibles. En teoría, este proceso daría mejores hijos, pero si se pasaran las características tal cual, llegaría un momento de estado estable donde todos tendrían la misma información. Es en este punto donde entra la mutación para introducir características diferentes que pueden ser mejores o peores. • Mutación: Consiste en que el operador de mutación crea nuevos elementos produciendo pequeñas alteraciones en algunos de los elementos generados en la etapa anterior. • Elitismo: Este procedimiento consiste en escoger el mejor elemento de la población actual y pasarlo sin modificación alguna a la siguiente generación. Para llevar a la práctica los conceptos anteriores, se debe realizar un análisis detallado tanto del la representación del problema como de las operaciones a utilizar. Por ello, al aplicar un algoritmo genético para resolver un problema de asignación, el primer análisis que se debe hacer es tratar de codificar dicho problema en un cromosoma artificial. Los cromosomas artificiales pueden ser cadenas de unos y ceros, listas de parámetros o hasta códigos complejos. secuencia de poblaciones que esperanzadamente contendrán más y mejores soluciones para el problema en cuestión. Existe una amplia variedad de operadores utilizados en un algoritmo genético, pero en general son selección, cruce y mutación. El operador de selección aporta mayor supervivencia a los mejores individuos y los operadores de cruce y mutación aportan mayor diversidad a la población. Se dice que los algoritmos genéticos son métodos de búsqueda ciega debido a que estos no disponen de más información del problema a resolver que aquella obtenida de la función objetivo empleada. Como fue mencionado, el proceso comienza con la generación aleatoria de un conjunto de soluciones o población inicial (N individuos). Cada una de estas soluciones (individuo) esta codificada mediante una cadena de longitud finita que la hace corresponder con un punto del dominio del problema. Estableciendo la analogía natural, cada cadena sería un cromosoma y cada elemento de la cadena un gen. Dichos cromosomas representan “algo” que al usuario le interesa. El usuario debe codificar ese “algo” (por ejemplo, en una cadena de bits) y saber que representa cada uno de dichos cromosomas. La figura 1 representa a un individuo en términos generales, no se especifica qué representa cada cromosoma o cada gen: Figura 1. Representación de un individuo. Otro componente que se debe tener en cuenta, es el procedimiento o los medios para discriminar las soluciones buenas de las malas, este proceso lo logra una función de evaluación, que será usada por el Algoritmo Genético para guiar la evolución de las generaciones futuras. Una vez codificado el problema de manera cromosómica y teniendo los medios para discriminar las buenas soluciones de las malas, se está en condiciones de evolucionar soluciones para el problema mediante la creación de una población inicial de soluciones posibles. Esta población puede ser creada aleatoriamente o utilizando algún conocimiento previo de buenas soluciones posibles. Generada la población inicial, los operadores genéticos procesan la población iterativamente para crear una La transformación de los individuos de cada generación se lleva acabo mediante la definición de una serie de operadores genéticos, los más habituales son la selección, el cruce y la mutación, como puede apreciarse en la figura 2. Mediante la aplicación de estos operadores sobre los cromosomas de diferentes miembros de la población, es CRUCE 1 0 1 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 Padres Mutación 0 1 1 1 0 0 Antes 0 1 0 1 0 0 Después Figura 2. Cruce y mutación. Hijos 9 10 Universidad El Bosque - Facultad de Ingeniería de Sistemas El proceso se repite hasta que algún individuo alcanza un valor prefijado del nivel de adaptación, el algoritmo converge, o simplemente hasta que el número de iteraciones llega a un valor predeterminado. La Figura 3 representa dicho proceso. a través de una red. Los procesadores de un sistema distribuido pueden variar en cuanto su tamaño y función. Pueden incluir microcomputadores pequeños, estaciones de trabajo y sistemas de computadores grandes de aplicación general. Estos procesadores reciben diferentes nombres, tales como localidades, nodos o computadores. Estructura de un algoritmo genético La estructura de un algoritmo genético se representa mediante la siguiente secuencia de acciones: Crear y evaluar la población inicial de cromosomas Hacer Seleccionar y reproducir dos cromosomas Selección, cruce, mutación El medio ambiente típico de un SMBDD consiste de un conjunto de sitios o nodos los cuales tiene un sistema de procesamiento de datos completo que incluye una base de datos local, un sistema de manejo de bases de datos y facilidades de comunicaciones. Si los diferentes sitios pueden estar geográficamente dispersos, entonces, ellos están interconectados por una red de tipo WAN. Por otro lado, si los sitios están localizados en diferentes edificios o depar tamentos de una misma organización pero geográficamente en la misma ubicación, entonces, están conectados por una red local (LAN) (Figura 4). Evaluar el fitness del nuevo hijo Bogotá Sustituir generación Evaluación de los hijos f( ) Cromosoma Palabra Aptitud A 100100 1296 B 010010 324 C 010110 484 D 000001 1 Cali Manizales Hasta cumplir criterio de terminación Red de Comunicaciones Padres Medellín Barranquilla Evolución Figura 4. Un medio ambiente distribuido para bases de datos. Hijos Reproducción Figura 3. Ciclo de un algoritmo genético III. BASES DE DATOS DISTRIBUIDAS A. Generalidades Una base de datos distribuida o sistema distribuido de bases de datos consiste en un conjunto de localidades, cada uno de las cuales puede participar en la ejecución de transacciones que accedan a datos de una o varias localidades. La diferencia principal entre los sistemas de base de datos centralizados y distribuidos es que, en los primeros, los datos residen en una sola localidad, mientras que, en los últimos, se encuentran en varias localidades [5]. En un sistema de base de datos distribuida, los datos se almacenan en varios computadores comunicados entre sí B. Factores a considerar en la construcción de una BDD Existen varios factores relacionados a la construcción de bases de datos distribuidas que no se presentan en bases de datos centralizadas. Entre los más importantes se encuentran los siguientes: el diseño, el procesamiento de las consultas, el control de concurrencia, la confiabilidad y la transparencia.1 El diseño de las bases de datos centralizadas contempla los dos puntos siguientes: 2 • Diseño del "esquema conceptual" el cual describe la base de datos integrada (esto es, todos los datos que son utilizados por las aplicaciones que tienen acceso a las bases de datos). 1 Bell, D.; Germson, J. "Distributed Database Systems". Addison Wesley, 1992 2 Ceri, S.; Pelagatti, G. "Distributed Database. Principles and Systems". Mc.GrawHill, 1985 Revista de Tecnología - Journal of Technology • Volumen 6, No. 1, Enero - Junio 2007 • Diseño "físico de la base de datos", esto es, mapear el esquema conceptual a las áreas de almacenamiento y determinar los métodos de acceso a las bases de datos. En el caso de las bases de datos distribuidas se tienen que considerar además los dos problemas siguientes: • Diseño de la fragmentación, este se determina por la forma en que las relaciones globales se subdividen en fragmentos horizontales, verticales o mixtos. • Diseño de la asignación de los fragmentos, esto se determina en la forma en que los fragmentos se mapean a las imágenes físicas, en esta forma, también se determina la solicitud de fragmentos. IV. EL PROBLEMA Las dos primeras fases del diseño corresponden en realidad al trabajo que se debe efectuar sobre cualquier base de datos por lo que su desarrollo teórico o conceptual esta bien determinado y no constituye actualmente un problema. La tercera fase correspondiente a la fragmentación de las relaciones o tablas, también está actualmente bien sustentada, toda vez que se han desarrollado y demostrado los fundamentos teóricos matemáticos que sustentan en forma eficiente dicho proceso. Sin embargo, es en la cuarta y última fase donde radica el problema alrededor del cual se desarrolla este artículo, por cuanto, una vez hechos los fragmentos y sus réplicas, se debe enfrentar la cuestión de cómo distribuirlos en la red de modo que dicha distribución resulte lo más eficiente posible, entendiendo como eficiente el hecho de que cumpla con todos los requerimientos del sistema al menor costo posible, esto es, que dicha distribución resulte óptima. Se puede deducir entonces que se trata de un problema de optimización. El estudio de los problemas que caen en dicha categoría se inicio en los años 40 alrededor de situaciones que exigían una adecuada distribución y uso de recursos tales como personal, tiempo, presupuesto, máquinas, distancias, etc., donde tanto las funciones matemáticas como las restricciones son lineales. Surgió entonces alrededor de estos problemas, la investigación operativa y la programación lineal como sustento matemático. Esta funciona bien cuando el espacio de búsqueda es relativamente pequeño; pero cuando es del orden de millones de posibilidades, aunque podría hacerlo, su tiempo de respuesta tiempo de cómputo es excesivamente la rgo aún pa ra g randes sup er computadores. Existe además dentro del campo de la optimización un tipo de problema que implica probar todas las combinaciones posibles para obtener la respuesta óptima, se denominan problemas de optimización combinatoria, el problema alrededor del cual gira este trabajo cae en ese dominio y es un problema complejo desde el punto de vista computacional, se ha caracterizado este tipo de problema desde el punto de vista matemático como clase NP No Polinomial en el sentido que, al crecer la complejidad, esto es, al aumentar las posibilidades de combinaciones, su tiempo de búsqueda de solución óptima no crece en relación polinomial sino exponencial. Dada la dificultad práctica para resolver los problemas de tipo combinatorio y la necesidad de ofrecer alguna solución, empezaron a formularse en principio una serie de algoritmos que proporcionan soluciones factibles, las cuales, aunque no optimizan la función objetivo, se supone que al menos se acercan al valor óptimo en un tiempo de cálculo razonable, por lo que se podrían llamar soluciones satisfactorias. Este tipo de algoritmos se denominan metaheurísticas. Las principales técnicas metaheurísticas en la actualidad son: recocido simulado, algoritmos genéticos, búsqueda tabú, GRASP (Greedy Randomized Adaptive Search Procedures) y redes neuronales. V. APROXIMACIÓN A LA SOLUCIÓN DEL PROBLEMA A. Deducción del modelo de costos Supongamos que hay un conjunto de fragmentos F = {F1, F2, ..., Fn }y una red que consiste de los sitios S = {S1, S2, ..., Sm } en los cuales un conjunto de consultas Q = {q1, q2, ..., qq }se van a ejecutar. En la fase de asignación se necesita conocer información cuantitativa relativa a la base de datos, las aplicaciones que se utilizarán, la red de comunicaciones, las capacidades de procesamiento y de almacenamiento de cada nodo en la red. • Requerimientos de información En la fase de asignación se necesita conocer información cuantitativa relativa a la base de datos, las aplicaciones que se utilizarán, la red de comunicaciones, las capacidades de procesamiento y de almacenamiento de cada nodo en la red. Información sobre la base de datos. Es necesario conocer la selectividad de un fragmento Fj con respecto a una consulta qi, esto es, el número de tuplas de Fj que será necesario accesar para procesar qi. Este valor se denota como sel( Fj ). Así también, es necesario conocer el tamaño de cada fragmento, el cual está dado por: 11 12 Universidad El Bosque - Facultad de Ingeniería de Sistemas Size(Fj ) = card( Fj ) * length( Fj ) Donde length( Fj ) es la longitud en Bytes de una tupla del fragmento Fj . Información sobre las aplicaciones. Las dos medidas mas importantes a tener en cuenta son el número de accesos de lectura que una consulta qi hace a un fragmento Fj durante su ejecución (denotada por RRij) y el número de accesos de actualización que dicha consulta haga a dicho fragmento (denotada por URij). Es necesario distinguir el número de lecturas que una consulta q j hace a un fragmento Fj durante su ejecución, del número de escrituras. Se requiere de una matriz que indique que consultas actualizan cuales fragmentos. Una matriz similar se necesita para indicar las lecturas de consultas a fragmentos. Por tanto, se requiere definir dos matrices RM y UM con elementos rij y uij, respectivamente, los cuales se especifican de la siguiente manera: rij = En la práctica dicho costo sobre el frame se define en función de un conjunto de variables que en términos generales podrían ser: la velocidad de comunicación la cual implica a su vez la capacidad del canal, la distancia entre sitios, el tipo de protocolo y el medio de transporte-, el tiempo de latencia en la comunicación y la cantidad de trabajo adicional a realizar para una comunicación. • Modelo de localización El modelo de localización debe responder a la siguiente forma: min (Costo Total) Sujeto a -Restricciones en el tiempo de respuesta -Restricciones en las capacidades de almacenamiento -Restricciones en el tiempo de procesamiento 1 si la consulta qi recupera desde el fragmento Fj 0 si la consulta qi NO recupera desde el fragmento Fj uij = frame entre dos nodos Si y Sj y fsize como el tamaño del frame en bytes. En el caso particular de este trabajo se asumirá fsize = 1 Byte. 1 si la consulta qi actualiza el fragmento Fj 0 si la consulta qi NO actualiza el fragmento Fj A continuación se tratará de ampliar las componentes de este modelo. Se define la variable de decisión xij de la siguiente manera: xij = 1 si el fragmento Fj es almacenado en el nodo Sj 0 en otro caso Además, se necesita saber cual es el nodo de la red que origina cada consulta. Por tanto, se requiere definir un vector O con valores o(i), donde o(i) especifica cual es el nodo de la red que origina cada consulta. Finalmente, para definir la restricción de tiempo de respuesta, un máximo tiempo de respuesta permisible en cada aplicación debe ser definido. Información sobre cada nodo de la red. Para cada nodo es ne ces a r io cono cer sus c apacidades t a nto de almacenamiento como de proceso. Ya sean calculadas mediante algún tipo de función o por simple estimación. Las medidas utilizadas son el costo unitario de almacenamiento de datos en un nodo y el costo unitario de procesamiento de datos en un nodo. El costo unitario de almacenamiento de datos en un nodo Sk se denota como USCk y el costo unitario de procesamiento de datos en un nodo Sk se denota como LPCk. Información sobre la red de comunicaciones. Asumimos en nuestro modelo una red simple donde el costo de comunicación es definido en términos de un frame de datos. Por tanto gij denotará el costo de comunicación por La función de costo total tiene dos componentes: procesamiento de consultas y almacenamiento. Así, puede ser expresado de la siguiente forma: TOC = ∑QPC + ∑ ∑STC ∀qi ∈Q i (1) ∀s k ∈S ∀F j ∈F jk Donde QPCi es el costo de procesamiento de la consulta qi, y STCjk es el costo de almacenar el fragmento Fj en el nodo Sk. El costo de almacenamiento se puede expresar como: STCjk = USCk * size( Fj ) * xjk (2) Donde USCk es el costo de almacenamiento unitario en el nodo Sk. El costo de procesamiento de una consulta tiene dos componentes: el costo de procesamiento y el costo de transmisión. Esto se puede expresar como: Revista de Tecnología - Journal of Technology • Volumen 6, No. 1, Enero - Junio 2007 QPCi = PCi + TCi (3) TCU i = La componente de procesamiento involucra tres factores: el costo acceso (AC), el costo de mantenimiento de la integridad (IE) y el costo debido al control de concurrencia (CC). Así podemos expresar: La especificación detallada de cada uno de esos factores de costo depende del algoritmo utilizado para realizar estas tareas. Sin embargo, el costo de acceso se puede especificar con algún detalle: ∑ ∑(u *UR +r *RR )*LPC *x ∀Sk∈S ∀Fj∈F ij ij ij ij ∀S k ∈S ∀F j ∈F ∑ ∑u ∀S k ∈S ∀F j ∈ F ij * g o (i ), k * x jk + ij * g k , o(i ) * x jk (7) PCi = ACi + IEi + CCi (4) ACi = ∑ ∑u k Donde la primera componente de la suma representa el envío del mensaje de actualización de qi desde el nodo de origen o(i) a todas las réplicas de fragmentos que requieran ser actualizadas y la segunda componente es para la confirmación. La componente de recuperación o consulta la función de transmisión es: jk TCR i (5) El término entre paréntesis es el total de actualizaciones y lecturas realizadas por la consulta qi en el fragmento Fj, y LPCk es el costo unitario de procesamiento local, en Sk, de una unidad de trabajo. Los costos del mantenimiento de la integridad y del control de concurrencia pueden ser, o bien estimados con base en la experiencia o calculados similarmente al costo de acceso pero para ello se requiere un estudio juicioso sobre los métodos de concurrencia y chequeo de integridad que abarcan varios capítulos de un texto sobre diseño y administración de sistemas de bases datos distribuidas. En nuestro modelo simple los omitiremos. Respecto a la componente de transmisión (TCi), ésta puede separarse en el procesamiento de actualizaciones y de consultas (lecturas): TCi = TCUi + TCRi (6) Dado que los tiempos de procesamiento para ellas son completamente diferentes. En las actualizaciones, es necesario informar a todos los nodos con réplicas, mientras que en las lecturas o consultas, es suficiente con accesar solo una de las copias. Más aún, al final de una solicitud de actualización, no existe una transmisión de datos de regreso más que un mensaje de confirmación, mientras que una consulta puede resultar una transmisión significativa de datos. La componente de actualizaciones de la función de transmisión es: r ij * g = ∑ min ∀ F j∈ F k ,o ( i ) * sel (u Sk∈S i j ij * length fsize * g * x o ( i ), k (F j ) * x + jk jk ) (8) El primer término representa el costo de transmitir la solicitud de consulta a aquellos nodos que contienen copias de los fragmentos que necesitan ser accesados. El segundo término toma en cuenta la transmisión de los resultados de esos nodos al nodo de origen. La ecuación sólo considera de entre los nodos con copias del mismo fragmento, solo el nodo que produce el costo mínimo de transmisión. • Restricciones Las funciones de restricción se pueden especificar con un detalle similar a la función de costo total. Sin embargo, en lugar de describir tales funciones con profundidad, se indicará simplemente cual es su forma general. * La restricción del tiempo de respuesta se debe especificar como: Tiempo de ejecución de qi máximo tiempo de respuesta de qi , ∀qi ∈ Q * La restricción de almacenamiento se puede especificar como: que la capacidad de jk a lmac ena m iento del ∀F j ∈F nodo ∑ STC ≤ S k , ∀S k ∈ S 13 14 Universidad El Bosque - Facultad de Ingeniería de Sistemas lpc[ ]]:Vector de costo unitario de proceso sel[ ][ ]]: Matriz de selectividad de los fragmentos len[ ]]:Vector de longitud de tuplas size[ ]]:Vector de tamaño de Fragmento * La restricción del tiempo de procesamiento es: ∑ carga de procesamiento de qi en Sk capacidad de almacenamiento del nodo ∀qi ∈Q S k , ∀ S ∈ k • Variables del Algoritmo genético S Esto completa nuestro análisis para obtener un modelo aproximado al problema de localización de fragmentos y réplicas en una red, el modelo podrá ser considerado completo cuando se le agreguen las componentes referentes al control de concurrencia y el mantenimiento de la integridad pero como se mencionó su estudio esta fuera del objetivo de este trabajo y por ahora no se asumen o se utilizarán costos estimados teóricamente. procruce procruce: Probabilidad de cruce promutación promutación: Probabilidad de mutación tamp tamp: Tamaño de la población numgen numgen: Número de Generaciones • Diagramas de flujo Generales El modelo de costos, función final de Costos, función objetivo o desde el punto de vista del algoritmo genético, Función para Evaluación queda por tanto expresado de la siguiente forma: Inicio No TOC = ∑[ ∑ ∑(u ∀qi∈Q ∀Sk ∈S ∀Fj∈F ∑ ∑u ∀Sk ∈S ∀Fj ∈F ij ∑ S k ∈S ∑u ∀Sk ∈S ∀Fj ∈F ij ij * g o (i ),k * x jk + rij * g k ,o (i ) * ∑ USC ∀sk ∈ S ∀F j∈ F Nuevo *URij + rij * RRij ) * LPCk * x jk + * go(i),k * x jk + ∑ ∑ min(u ∀F j ∈F ij k * gk,o(i) * x jk * x jk ) + seli j * length( F j ) * size( fsize Fj ) * x ]+ jk Parámetros Generales Variables problema Configuración del sistema Cargar Datos (9) B. Planteamiento del algoritmo • Parámetros generales Algoritmo Genéticos m: Numero de sitios o nodos de la red n: Número de fragmentos r: Número de consultas No ¿Sale? • Variables del problema Um[ ][ ]]:Matriz de decisión de actualización rm[ ]]:Matriz de decisión de lectura x[ ][ ]]:Matriz de individuo o[ ]]:Vector de orígenes de las consultas g[ ][ ]]:Matriz costos de transmisión ur[ ][ ]]:Matriz de frecuencias de actualización rr[ ][ ]]:Matriz de frecuencias de lectura Fin Figura 5.Diagrama General Archivos Datos Revista de Tecnología - Journal of Technology • Volumen 6, No. 1, Enero - Junio 2007 • Pseudocódigo de funciones Algoritmo Genético Definir vector mejores [ ] Población Inicial i<=0; generaciones; 1 Evaluación Sacar mejor individuo Agregar mejor a mejores [ ] Aptitud Selección Cruce Cambio Generación Mejor individuo, costo Fin Figura 6.Diagrama Algoritmo Genético Función población inicial Definir vector Población Para jj=0 hasta tamp Definir vector individuo Para ii=0 hasta m*n Generar aleatorio entre 0-1 Agregar aleatorio a vector individuo Siguiente i Agregar vector individuo a Población Siguiente j Fin Función Función evaluación Definir ct=0; //Costo total Para ii=0 hasta r ct = ct+Función Costo de proceso (i)+ Función Costo de Transmisión (i) Siguiente i ct=ct +Función Costo Almacenamiento Definir suma=0; //Penalización si no ubica fragmento Para ii=0 hasta n Definir suma2=0; Para jj=0 hasta m Si x[i][j] 0 suma2=suma2+1 Fin Si Si suma2=0 suma=suma+1 Fin Si Siguiente j Siguiente i Ct=ct*(1+2*suma) // Incrementa el costo para que no entre en los mejores Retornar ct Fin Función Función aptitud // Calcula y guarda las aptitudes de todos los individuos Definir vector aptitudes Definir suma A=0 // Suma total de Aptitudes Para ii=0 hasta tamaño del vector evaluaciones aptitud= mayor - iésimo elemento de evaluaciones Agregar aptitud al vector de aptitudes SumaA=sumaA+aptitud Siguiente i Fin Función Función selección // selecciona a los padres más aptos Definir suma1, suma2 Definir vector padres//contendrá los padres seleccionados Para ii=0 hasta tamp uno=aleatorio entre 1- SumaA Suma1=0; Para j=0 hasta tamp val=iésimo elemento del vector aptitudes Si val 0 suma2=suma1 suma1=suma1+val Si suma1=uno=suma2 posición=j; Salir de ciclo j Fin Si Fin Si Siguiente j Padre=Extraer elemento en posición posición del vector Población Agregar padre a vector padres Siguiente i Fin Función 15 16 Universidad El Bosque - Facultad de Ingeniería de Sistemas Función Cruce Definir vectores hijo1, hijo2, nueva generación Para ii=0 hasta tamp Step 2 pc=aleatorio entre 0 y 100 // probabilidad de cruce Si pc 100-procruce // Hay cruce Posini= (aleatorio entre 0 y m*n) +1 // posición inicio cruce Definir vectores hijo11, hijo22 hijo1=iésimo elemento del vector padres hijo2= iésimo+1 elemento del vector padres Para jj=0 hasta posini val1= jésimo elemento del vector hijo1 Val2= jésimo elemento del vector hijo2 Agregar val1 a hijo11 Agregar val2 a hijo22 Siguiente j Para jj=posini hasta n*m val1= jésimo elemento del vector hijo1 val2= jésimo elemento del vector hijo2 Agregar val1 a hijo11 Agregar val2 a hijo22 Siguiente j hijo1= llamar función mutación (hijo11) hijo2= llamar función mutación (hijo22) Agregar hijo1 al vector nueva generación Agregar hijo2 al vector nueva generación Si no // No hay cruce hijo1= iésimo elemento del vector padres hijo2= iésimo+1 elemento del vector padres Agregar hijo1 al vector nueva generación Agregar hijo2 al vector nueva generación Fin Si Siguiente i Fin Función Función cambio Generación Definir vector población // Para nueva generación Para ii=0 hasta tamaño del vector nueva generación Agregar elemento iésimo del vector nueva generación al vector Población Siguiente i Fin Función Se programó tanto el algoritmo como la función de evaluación (modelo de costos) en Java de modo que permitirá construir cualquier configuración de red para hacer la simulación. C. Pruebas Para comprobar la eficiencia del algor itmo se desarrollaron algunas pruebas, se extraen las más significativas para mostrar en este artículo. Tabla1. Datos prueba 1 PRUEBA 1 Tiempos de respuesta (Segundos) 800MHz 1.6GHz 3.2 GHz 3 2 1 N F Q P G PC PM 3 3 3 50 50 98 2 Figura 7. Pantalla captura datos Figura 8. Resultados Prueba 1 En este caso, la probabilidad de mutación es baja por lo que se observa una estabilidad en los costos de cada generación, tendiendo a ser constante en cada corrida como a lo largo de todas las corridas. Por otra parte, tanto el número de nodos como de fragmentos y consultas es realidad muy bajo para considerarlo un problema real, las posibles soluciones (combinaciones) también son muy pocas por lo que no se puede apreciar la potencia y eficacia del algoritmo. Tabla 2. Datos prueba 2 PRUEBA 2 Tiempos de respuesta (Segundos) 800MHz 1.6GHz 3.2 GHz 5 3 2 N F Q P G PC PM 5 5 5 50 50 98 5 Revista de Tecnología - Journal of Technology • Volumen 6, No. 1, Enero - Junio 2007 Se observa que si aumentamos el número de generaciones la eficiencia del algoritmo es mucho mayor por cuanto encuentra mucho mas rápido soluciones más económicas. Tabla 4. Datos prueba4 PRUEBA 4 Tiempos de respuesta (Segundos) 800MHz 1.6GHz 3.2 GHz 43 22 15 N F Q P G PC PM 10 10 10 50 1000 98 5 Figura 9. Resultados Prueba 2 Se observa que si aumentamos la probabilidad de mutación el algoritmo encuentra mejores soluciones de manera más rápida, es decir en menos corridas, por cuanto si la mutación es baja, las soluciones tienden a ser siempre las mismas. En este caso particular en 4 corridas logra bajar el costo de la solución inicial aleatoria propuesta de 1639812 a 1024986 Tabla3. Datos prueba 3 PRUEBA 3 Tiempos de respuesta (Segundos) 800MHz 1.6GHz 3.2 GHz 35 16 11 N F Q P G PC PM 10 10 10 50 500 98 5 Figura 11. Resultados Prueba 4 Se obser va que si aumentamos el número de generaciones, la eficiencia del algoritmo es mucho mayor por cuanto encuentra mucho mas rápido soluciones más económicas. El tiempo de proceso crece. VI. CONCLUSIONES En este trabajo, para el problema de localización de fragmentos en una base de datos distribuida, se ha propuesto un simple y comprensivo modelo que puede reflejar los costos de transacciones en este tipo de arquitectura. Basados en un modelo tanto de configuración como de transacciones, se ha desarrollado y propuesto un modelo matemático para la función objetivo para hallar distribuciones cercanas a la óptima de modo que el costo de todo el proceso se minimice tanto como sea posible. Figura 10. Resultados Prueba 3 Se ha programado un algoritmo basado en computación evolutiva, de modo que a través de sus etapas sea capaz de procesar el modelo matemático y proponer soluciones. 17 18 Universidad El Bosque - Facultad de Ingeniería de Sistemas Los resultados muestran que el algoritmo es eficiente por cuanto es capaz de bajar los costos implícitos en una solución propuesta de arranque en un porcentaje considerable acorde con los parámetros de entrada del algoritmo. Se ha notado que la eficiencia del algoritmo crece o se aprecia mejor en la medida que crece el tamaño de la red, el número de fragmentos a distribuir y el número de transacciones a realizar. En problemas donde dichas variables tiene valores pequeños, las posibilidades o combinaciones posibles son pocas, por lo que el algoritmo tiende a estabilizarse muy rápido, esto es, a dar valores constantes desde el principio. Para valores grandes (mayores a 10), en los parámetros de configuración, se aprecia como el algoritmo es capaz de bajar los costos paulatinamente, esto es, partiendo de una solución propuesta con un determinado costo, el algoritmo es capaz de encontrar soluciones cuyo costos es apreciablemente mas bajo aunque como es de esperar, los tiempos de proceso crecen, aunque no necesariamente en proporción lineal. Otra cosa que se ha notado es que, en la medida en que crece el número de generaciones, crece la rapidez de convergencia a soluciones más económicas. VII. REFERENCIAS [1] Cheng, Runwei y Gen, Mitsuo, (1996), A tutorial survey of job-shop scheduling problems using genetic algorithms. Representation. Computers & Industrial Engineering, September 1996. [2] Croce, Federico Della y Tadei, Roberto, A genetic algorithm for the job shop problem. Computers & Operations Research, January 1995. Volume 22, Pages: 15 - 24 [3] Hancock, Peter J.B., (1995), Selection Methods for Evolutionary Algorithms, en Lance Chambers (editor), Practical Handbook of Genetic Algorithms, Vol. II, CRC Press, Boca Raton, Florida, pp. 67-92. [4] Hillier, Lieberman, (2001), Investigación de Operaciones. Mc Graw Hill. Capítulo 11. México. [5] Tamer, Ozsu; Valduriez, Patrick, (1999), Principles of Distributed Database Systems, Second Edition, Edit. Prentice Hall, México. Desde el punto de vista de sus deficiencias, cabe señalar que es un algoritmo aproximado por cuanto, por una parte, no se consideraron algunos aspectos referentes a los costos de mantenimiento de integridad y control de concurrencia, aspectos que un modelo real, son de gran importancia. Artículo de investigación Científica y Tecnológica. Sometido a Arbitraje. Los Autores Juan Carlos Villamizar Perdomo Ingeniero de Producción Agroindustrial, con Maestría en Ciencias de la Computación de Instituto Tecnológico de Monterrey. Es docente de planta en la Universidad de la Sabana, Investigador del Centro de Investigación en Tecnologías Avanzadas de Decisión (CITAD) de la Universidad de la Sabana. Actualmente lidera la línea de técnicas metaheurísticas, de la cual han sido presentados artículos a nivel nacional e internacional. Así mismo lidera los proyectos de desarrollo de software del CITAD. [email protected] Luis Miguel Beltrán Sierra Licenciado en Física, Ingeniero de Sistemas con maestría en Docencia de la Física Es docente de planta en la Universidad de la Sabana, Investigador del Centro de Investigación en Tecnologías Avanzadas de Decisión (CITAD) de la Universidad de la Sabana. Actualmente lidera el grupo de investigación sobre Desarrollo de Tecnologías Informáticas para el Apoyo a la toma de Decisiones del programa de Ingeniería Informática de la Universidad de la Sabana. [email protected]