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]

Documentos relacionados