TesisFernandoAquino FinalVersion
TesisFernandoAquino FinalVersion
TesisFernandoAquino FinalVersion
iii
Agradecimientos
Quiero dedicar este trabajo a mi familia y amigos que siempre me han acompañado
y me han brindado el apoyo necesario para concretar este desafío y a todos aquellos
que de una u otra manera apoyaron y acompañaron en cada momento.
iv
Índice General
Lista de tablas ix
Lista de figuras xi
1 Introducción 1
1.2 Hipótesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Marco Teórico 5
v
2.6.3 Cadenas de adición – sustracción . . . . . . . . . . . . . . . . 15
3 Algoritmos Bioinspirados 22
4 Trabajos relacionados 31
vi
4.2.5 Uso de un algoritmo basado en cúmulo de partículas para
generar cadenas de adición óptimas . . . . . . . . . . . . . . . 47
5 Algoritmo Propuesto 53
vii
7.2 Descripción de los experimentos . . . . . . . . . . . . . . . . . . . . . 92
viii
Lista de Tablas
5.7 valores absolutos y número de rango para cada diferencia entre los
resultados de GWOc y GA Annealing. . . . . . . . . . . . . . . . . . 66
5.9 Mejores resultados obtenidos por AIS [6], PSO [19], EP [8] y GWOc
para un conjunto de exponentes diversos y difíciles de optimizar. . . . 70
ix
6.3 Resultados obtenidos con GWOc_SWM para un conjunto de
exponentes difíciles de optimizar, respecto de: AIS, PSO, EP y GA. . 86
7.5 Mejores resultados obtenidos por AIS [6], PSO [19], EP [8], GWOc y
LGWOc para un conjunto de exponentes “difíciles”. . . . . . . . . . . 98
x
Lista de Figuras
xi
5.18 Cadena para e=607. . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
xii
Capítulo 1
Introducción
1
satisfacer la siguiente ecuación:
b = Ae modP (1.1)
Dado un valor A entero, arbitrario en el rango [1,P −1] y un número e entero, positivo
y arbitrario, se define exponenciación modular al problema de encontrar un valor único
y entero positivo b ∈ [1,P − 1], capaz de satisfacer la Ecuación (1.1) siendo para el
problema estudiado aquí, la función objetivo a optimizar para poder obtener un valor
b mínimo (i.e., una cadena de adición de longitud mínima). El problema radica en
que a medida que se incrementa el exponente e, aumenta el número de operaciones a
realizar para resolver la Ecuación (1.1), con lo cual se requiere una alternativa para
optimizar el proceso: la alternativa es emplear cadenas de adición para poder reducir
el número de multiplicaciones para resolver una potencia. Ejemplo: dado el exponente
e = 91, en vez de multiplicar la base 91 veces es factible contar con una cadena
asociada al número 91, como ser: C = 1,2,4,6,8,14,22,36,58,80,88,90,91 y entonces
resolver la potencia consistiría en multiplicar la base por cada uno de los exponentes
de C, es decir que para este ejemplo se realizan sólo 13 operaciones. Sin embargo y
teniendo en cuenta que no existe una única cadena para un exponente, hallar una
cadena de longitud mínima, constituye un problema de optimización combinatoria y
puede abordarse empleando una metaheurística para evitar las pruebas por fuerza
bruta para hallar un valor óptimo (cadena de longitud mínima).
2
• Realizar pruebas estadísticas paramétricas y no paramétricas, según
corresponda, para cotejar rigurosamente los resultados obtenidos con la
metaheurística propuesta respecto a los algoritmos del estado del arte.
1.2 Hipótesis
1.3 Justificación
Puesto que los sistemas de criptografía asimétricos utilizan cadenas de adición, dotar
a los mismos de un mecanismo para hallar cadenas de longitud mínima sería un
beneficio para ellos, debido a la reducción del costo computacional inherente al proceso
de cifrado y descrifrado de datos.
3
presentes en la literatura del tema. El Capítulo 3 cita y describe las distintas
metaheurísticas bioinspiradas que han sido empleadas como instrumento de abordaje
en estudios anteriores. En el Capítulo 4 se describe el trabajo relacionado con
la generación y optimización de cadenas de adición de longitud mínima, teniendo
en cuenta tanto los métodos deterministas como estocásticos. En el Capítulo 5
se describe la propuesta objeto de este trabajo que consta de la adaptación de
la metaheurística: optimización basada en manada de lobos grises GWO para el
problema de generación óptima de cadenas de adición (GWOc), los experimentos
propuestos y discusión de los resultados. En el Capítulo 6 se presenta una propuesta
alternativa de GWO con mecanismo de ventana deslizante para tratamiento de
exponentes de mayor rango numérico (GWOc_SWM), los experimentos asociados
a la propuesta y discusión de los resultados obtenidos. El Capítulo 7 plantea una
propuesta alternativa de mejora de GWOc mediante combinación con Búsqueda
Local (LGWOc), con sus respectivos experimentos y la discusión de los resultados.
Finalmente en el Capítulo 8 se exponen las conclusiones y trabajo futuro propuesto.
4
Capítulo 2
Marco Teórico
Esta ciencia está dividida en dos grandes ramas: la criptografía, ocupada del diseño
de los artefactos capaces de lograr una codificación robusta para ocultar el significado
de los mensajes (criptosistemas) y el criptoanálisis que trata de descifrar los mensajes
codificados en clave, intentando vulnerar los criptosistemas [9].
5
2.2 Introducción a la criptografía
• Ataque de tiempo: este tipo es más novedoso que los anteriores y se basa en
la medición repetida de los tiempos de ejecución (exacta) de las operaciones
de exponenciación modular [16], algunos de los objetivos de este tipo de
ataques son los métodos criptográficos: RSA, Diffie-Hellman y las técnicas
basadas en Curvas Elípticas. Generalmente los algoritmos en su implementación
realizan cálculos de tiempo de ejecución no constante, debido al proceso de
optimización del rendimiento. Si un sistema de criptoanálisis logra instrumentar
6
un mecanismo capaz de recuperar información estadística de los tiempos de
ejecución de las operaciones o variaciones de dichos tiempos, puede recuperar
a partir de esta información el valor de ciertos parámetros secretos o revelar
detalles de la implementación del algoritmo.
• Criptoanálisis Diferencial, Lineal y Lineal-Diferencial: el criptoanálisis
diferencial es un tipo de ataque que puede aplicarse a codificadores de bloque
iterativos. Dentro de este tipo tenemos los algoritmos simétricos o de clave
secreta: DES (por sus siglas en inglés: Data Encryption Standard), 3DES (por
sus siglas en inglés: Three Data Encryption Standard, es decir DES utilizando
3 claves), etc., de hecho estas técnicas fueron introducidas y posteriormente
mejoradas y se utilizaron para atacar el DES. El criptoanálisis diferencial es
un ataque aplicado sobre textos sin cifrar, escogidos previamente y se basa
en un análisis de la evolución de las diferencias entre dos textos sin cifrar
relacionados cuando se cifran bajo la misma clave. Mediante un cuidadoso
análisis de los datos disponibles, las probabilidades pueden asignarse a cada
una de las posibles claves y eventualmente la clave más probable se identifica
como la correcta. El segundo caso de este grupo es el criptoanálisis lineal que
fue ideado para un ataque sobre FEAL (por sus siglas en inglés: Fast data
Encipherment Algorithm). Fue extendido por Matsui para atacar al DES. Es
un ataque dirigido a texto no cifrado conocido y emplea una aproximación
lineal para describir el comportamiento del cifrador de bloque. En función
de esto, al tener suficientes pares de texto sin cifrar y los correspondientes
textos cifrados, es posible obtener los bits de información acerca de la clave de
cifrado y a medida que aumenta la cantidad de pares (texto no cifrado con sus
correspondientes cifrados) dan lugar a una elevada probabilidad de éxito en
el ataque. Posteriormente, han surgido una serie de mejoras de las cuales ha
resultado un tipo denominado lineal – diferencial que combina elementos de
ambos tipos de criptoanálisis.
• Ataques de diccionario: a diferencia de los casos anteriores, el objetivo de este
tipo de criptoanálisis no es obtener la clave, sino directamente el dato concreto
que se pretende ocultar, ya que el método de cifrado es público y aunque no
se disponga de la clave se puede reproducir. Este es el caso que suele aplicarse
en los sistemas de cifrado de claves de acceso, en sistemas operativos, para
vulnerar claves de usuario, teniendo en cuenta que cuando un usuario se da
de alta, introduce su código y clave de acceso. Luego se cifra dicha clave y
posteriormente se compara el resultado con la clave cifrada (almacenada en
el fichero de claves), al momento de un intento de inicio de sesión con estas
credenciales y si son iguales, el sistema considera que el usuario es quien dice
ser, permitiendo el acceso. Teniendo en cuenta lo anterior, los sistemas de
criptoanálisis dedicados a vulnerar claves, parten del hecho de obtener una copia
del archivo de claves, a fin de comprobar si existe alguna cuenta de usuario sin
clave asociada, para valerse de la misma. Estos sistemas utilizan un diccionario
con grandes cantidades de palabras y combinaciones comunes y válidas como
claves. Dicho diccionario es cifrado empleando la utilidad de cifrado del sistema
7
operativo en cuestión o una copia de dicha herramienta y a continuación se
ejecuta un proceso de comparación del archivo de claves del sistema con el
resultado del cifrado, de modo que si se producen coincidencias para al menos
un caso, se puede inferir cuál es la palabra o combinación de caracteres oculta
bajo una clave.
• Ataques por búsqueda exhaustiva o fuerza bruta: este tipo de ataque se realiza
generando de forma aleatoria todos los posibles valores de las claves de acceso de
un sistema y transformándolas, de manera que se pueda elegir la clave de acceso
cuya transformada coincida con la interceptada. Este criptoanálisis resulta útil
cuando la clave es de tamaño reducido, ya que en caso contrario el número de
combinaciones sería impracticable, sin embargo para claves de gran longitud es
factible agilizar este tipo de ataque mediante técnicas de hardware, pero a un
costo muy elevado.
2. El método de procesamiento del texto a ser cifrado, este puede ser: mediante
bloques, bits, bytes, etc.
Los sistemas criptográficos se pueden clasificar en dos grandes tipos, dependiendo del
número de claves que utilizan [30]:
8
• Sistemas de clave privada: también llamados de criptografía convencional o
simétrica.
9
Una firma digital es una transformación que vincula de forma única un documento
con la clave privada del firmante del mismo (ver Figura 2.1), mediante el uso de una
función para firmar y otra para verificar la firma, tal como se expone en [16]. A
continuación se describen dichos procesos.
• Firma
Esta operación puede describirse de la siguiente manera:
• Verificación
Las firmas digitales trabajan y operan bajo esquemas de clave pública, en donde la
clave privada se utiliza para firmar, y la pública para verificar la firma. Con el fin
de asegurar tanto la integridad del documento como la identidad del remitente. Es
aconsejable que se utilicen diferentes claves para el cifrado y para la firma digital.
Este tipo de criptosistemas utilizan la exponenciación modular para las operaciones
de cifrado y descifrado de datos.
Las firmas digitales entre otros sistemas de cifrado de clave pública han cobrado
importancia en la actualidad producto del desarrollo de los sistemas de cómputo e
información y la importancia de proteger los activos de información de organizaciones
de diversos rubros y sectores de la sociedad, como las empresas del rubro bancario que
deben realizar operaciones y movimientos económicos, intercambiando información
sensible como datos personales, estados de cuenta, etc.; entre entidad y clientes o
bien entre dichas entidades y terceros, asegurando el resguardo de dicha información.
10
Figura 2.1: Esquema de uso de firma digital.
Este tipo de criptografía está basado en la teoría matemática de las curvas elípticas
sobre la cual sólo se hace una breve introducción conceptual a continuación, debido a
la complejidad del tema, sin embargo para un análisis y revisión detallada se puede
consultar [29].
Las curvas elípticas son ecuaciones cúbicas de dos variables, cuya forma general es
como se ejemplifica en ecuación 2.1. Son curvas sobre números reales.
Y 2 = X 3 + aX + b (2.1)
Una curva elíptica sobre el campo numérico Zp (conjunto de números enteros primos
p), con un determinado valor de p, es el conjunto de todos los pares ordenados (x, y) ∈
Zp que satisfacen:
Y 2 = X 3 + aX + b mod p (2.2)
11
Así como mediante los sistemas criptográficos tales como el algoritmo RSA (Rivest,
Shamir y Adleman) [16], la finalidad es factorizar números, cuando se trabaja con
curvas elípticas el objetivo es tratar de obtener logaritmos o en realidad un grupo de
logaritmos que mientras más complejo sea, más seguro resulte el criptosistema o el
esquema de cifrado.
• La operación debe ser cerrada: esto significa que si dos elementos, por ejemplo:
a, b, pertenecen al grupo, el resultado de a ⊗ b también deberá pertenecer al
grupo.
• La operación debe ser asociativa.
• Debe cumplir con existencia de elemento neutro, de modo que: a ⊗ e = e ⊗ a,
donde e es el elemento neutro respecto de ⊗.
• Debe cumplir con existencia de elemento opuesto.
Éstas son las propiedades que definen a un grupo, en particular para este tipo de
criptosistemas, los que son de interés son los grupos “cíclicos”, es decir, aquellos que
mediante un elemento llamado generador, son capaces de generar todos los elementos
que lo componen [29].
El empleo de los sistemas basados en curvas elípticas surge como una alternativa
a los sistemas criptográficos clásicos de clave pública, como el RSA, debido a la
ventaja de poder utilizar claves más reducidas en tamaño con costos computacionales
menores tal como se describe en [29].
12
2.5 Cadenas de adición
Una cadena de adición [31] C cuya longitud podemos expresarla como Lc, es una
secuencia de números enteros positivos C = [c1 ; c2 ; c3 ; ...; ci ; ...; cLc ], con c1 = 1, c2 = 2
y cLc = e y ci−1 < ci < ci+1 < cLc , donde cada elemento ci se obtiene de la suma
de dos elementos previos, no siempre distintos y e resulta ser el número asociado de
dicha cadena, en otras palabras una cadena de adición C para un número dado e, es
una secuencia de números que debe cumplir las siguientes propiedades:
Entonces, una cadena de adición se puede ver como la secuencia numérica asociada
a e, siendo el valor entero Lc la longitud de la cadena de adición C. Vale mencionar
que la longitud es igual al número de elementos de la cadena menos uno.
Existen diversos tipos de cadenas de adición, las cuales han sido definidas en el
transcurso del tiempo de acuerdo con las necesidades que involucraban su uso.
13
2.6.1 Cadenas de adición euclidianas
Dicho lo anterior podemos denotar a una cadena euclidiana Ce con longitud LCe a
un secuencia de número enteros positivos:
Donde:
• c1 = 1, c2 =2, cLCe = e,
Por su naturaleza, la longitud LCe de una cadena de adición euclidiana mínima sería
de mayor o igual longitud a una cadena de adición tradicional.
El uso de este tipo de cadenas en los criptosistemas se justifica en ciertos casos ya que
reducen el riesgo de diversos tipos de ataques criptográficos que se realizan durante
el proceso de cifrado y descifrado.
Son un tipo de cadenas [17] que se caracterizan por estar conformadas por vectores,
donde cada vector es producto de la suma de dos vectores pertenecientes a la cadena.
Una cadena vectorial Cv cumple las siguientes propiedades:
14
En [16] se puede ver el siguiente ejemplo de una cadena de adición vectorial:
[1; 0; 0]
[0; 1; 0] → [[0; 1; 1][1; 1; 1][0; 1; 2][1; 2; 3][1; 3; 5][2; 4; 6][3; 7; 11][4; 8; 12][7; 15; 23]]
[0; 0; 1]
Este tipo de cadenas de adición pueden emplearse para encontrar las secuencias
mínimas de adición o en exponenciación con vectores.
Este tipo de cadenas [31] son similares a las cadenas de adición tradicionales pero
éstas se denotan como se expresa a continuación.
Una cadena de adición – sustracción, en adelante: AS, con longitud Las se puede
definir como aquella secuencia de números enteros positivos de la forma:
Donde:
Este tipo de cadena fue desarrollado, al igual que las cadenas vectoriales, debido a
necesidades puntuales que no eran satisfechas por las cadenas de adición tradicionales,
por tanto no son aplicables a todos los tipos de operaciones.
15
2.7 Aplicaciones de las cadenas de adición
Definición de congruencia
Cabe mencionar que si m divide al resultado de la operación (a − b), esto supone que
a y b tienen ambos el mismo resto, al ser divididos por el módulo m.
16
resultantes de la relación de congruencia, de este modo, la relación clasifica a cualquier
entero según el resto obtenido al dividirlo por el módulo m correspondiente [12].
Las operaciones aritméticas que hacen la mayoría de las computadoras son de este
tipo, donde el modulo es 2b siendo b el número de bits de los valores sobre los que
operamos.
Nótese que a ∗ b mod m = [(a mod m)(b mod m)] mod m, y que por grande que
sea el exponente, nunca es necesario multiplicar por números enteros mayores que el
módulo m.
17
Algoritmo 1 exponenciación modular
Entrada: a, e y m.
Salida: exp = ae mod m.
1: exp := a; i := 0;
2: mientras (i < e); i + + hacer
3: exp := (exp × a) mod m
4: fin mientras
5: devolver exp
Donde:
Por ejemplo, si se desea calcular a17 (mod 9), una manera predecible de realizarlo, es
multiplicar la base a, 16 veces y de manera análoga calcular el módulo. No obstante,
una manera más eficiente de calcularlo es empleando cadenas de adición. Dada la
cadena de adición C, donde C = [1; 2; 4; 6; 10; 16; 17], valiéndonos de las propiedades
de la potencia, el cálculo se reduce a 6 multiplicaciones:
a1 = a (mod 9)
a2 = a1 × a1 (mod 9)
a4 = a2 × a2 (mod 9)
a6 = a2 × a4 (mod 9)
a10 = a4 × a6 (mod 9)
a16 = a6 × a10 (mod 9)
a17 = a1 × a16 (mod 9)
18
Algoritmo 2 algoritmo criptográfico RSA
Entrada: p, q (aleatorios)
Salida: d, n
1: obtener los números:
n=p×q
ϕ = (p − 1) × (q − 1);
2: obtener e
3: Se calcula d = e−1 mod ϕ , con mod = resto de la división de números enteros.
Donde:
p, q : números primos grandes, por ejemplo del orden de los 100 o hasta 300 dígitos.
n: clave pública.
d: clave privada.
e: número sin múltiplos comunes con ϕ, capaz de satisfacer la ecuación 2.3.
El método opera con exponente público y módulo (e; n) = (13; 143), y conserva como
privado, los siguientes datos: d = 113, p = 11, q = 13. De este modo el proceso típico
de cifrado / descifrado se ejecuta según los pasos del Algoritmo 2:
n = p × q = 143
ϕ = (p − 1) × (q − 1) = (11 − 1) × (13 − 1) = 120
e = 17, arbitrario pero que no tenga múltiplos en común con ϕ.
d = e−1 mod ϕ = 17−1 mod 120 = 113
19
En este ejemplo M representa el mensaje en texto plano y M̂ al mensaje cifrado.
M = 50
M̂ = M e (mod n)
M̂ = 5017 (mod 143)
M̂ = 85
M̂ = 85
M = M d ( mod n)
M = 85113 ( mod 120)
M = 50
En función de lo anterior, para fines prácticos, dicho proceso puede ser optimizado
empleando la siguiente cadena de adición: C = [1; 2; 4; 6; 7; 13; 20; 33; 53] cuya
longitud Lc = 8, puesto que es fácil notar que sólo para cifrar la letra “H” deben
llevarse a cabo 53 multiplicaciones del exponente e igual cantidad de operaciones
módulo. A fin de demostrar de forma práctica la resolución mediante el uso de la
cadena C, se muestra el esquema sólo para cifrar la letra “H” del mensaje, no obstante
para cada letra a cifrar se debe realizar el mismo proceso de forma iterativa.
20
El mecanismo consiste en utilizar productos de potencias de igual base, donde la base
será igual a cada ocurrencia de carácter del mensaje y las potencias que se utilizan
en cada paso son los elementos de la cadena de adición, expresadas como producto
de potencias de igual base. A continuación se muestra, a modo de ejemplo, los pasos
necesarios para cifrar el carácter “H” de la palabra “HOLA”, donde cada elemento ci
es un término de la cadena de adición empleada.
c1 =1: a1 → a1 = 72
c2 =2: a2 → a × a = 72 × 72 mod 143 = 36
c3 =4: a4 → a2 × a2 = 36 × 36 mod 143 = 9
c4 =6: a6 → a4 × a2 = 9 × 36 mod 143 = 38
c5 =7: a7 → a6 × a = 38 × 72 mod 143 = 19
c6 =13: a13 → a7 × a6 = 19 × 38 mod 143 = 7
c7 =20: a20 → a7 × a13 = 7 × 19 mod 143 = 133
c8 =33: a33 → a13 × a20 = 7 × 133 mod 143 = 73
c9 =53: a53 → a20 × a33 = 133 × 73 mod 143 = 128 ≡ H
21
Capítulo 3
Algoritmos Bioinspirados
22
Si bien existen diferencias específicas en cada propuesta de algoritmos bioinspirados,
también tienen componentes comunes, como la representación de las soluciones, la
generación de un conjunto de soluciones iniciales (paso 1), mecanismos de selección
(paso 3) y el uso de operadores de variación (paso 4).
De acuerdo con los fenómenos naturales en los que se encuentran inspirados estos
algoritmos se clasifican en dos grandes grupos: algoritmos o procesos evolutivos [32]
y algoritmos de inteligencia colectiva [14]. A continuación se describen estos dos
grupos de algoritmos.
Los Algoritmos Evolutivos (EAs, por sus siglas en inglés: Evolutionary Algorithms),
son un conjunto de metaheurísticas basadas en principios de la teoría de evolución
de las especies, factibles de aplicar a diversos problemas de optimización numérica
y combinatoria para poder hallar soluciones subóptimas, dentro de un espacio de
soluciones, en tiempo polinomial.
En los EAs se parte de un población (espacio de soluciones) para el problema a
resolver. El proceso de búsqueda sobre este espacio de soluciones, es conducido por
los operadores de variación (mutación y cruce) y selección, aplicados en cada una
de las iteraciones, hasta cumplido un criterio de finalización de las ejecuciones. El
objetivo de estos operadores es crear diversidad en la población, explorando nuevas
zonas del espacio de búsqueda.
Los algoritmos de inteligencia colectiva (SIAs, por sus siglas en inglés: Swarm
Intelligence Algorithms) son aquellos que imitan el comportamiento de seres vivos
que interactúan entre sí con la finalidad de resolver un problema complejo de manera
conjunta. Los SIAs basan su funcionamiento en el comportamiento social de algunas
23
especies de animales, insectos, bacterias, entre otros. A continuación se describen
algunos algoritmos bioinspirados que forman parte de este grupo.
• Su posición actual.
24
3.3.2 Algoritmos basados en colonias de hormigas (ACO)
Los algoritmos ACO (por sus siglas en inglés: Ant Colony Optimization) descriptos
en [3], son metaheurísticas inspiradas en el comportamiento colectivo de las colonias
de hormigas y en un fenómeno denominado Estigmergia [1] que básicamente se
caracterizada por el mecanismo de depositar una señal o rastro de feromonas en el
terreno, como un sistema de auto-organización para propiciar la comunicación entre
seres vivos, modificando características del entorno local. El aspecto más interesante
de este mecanismo colaborativo es la capacidad de encontrar caminos más cortos,
entre la fuente de alimento y los hormigueros, y la posibilidad de comunicarlos a
otros miembros de la colonia mediante senderos trazados con rastro de feromonas que
van depositando las hormigas durante el trayecto entre estos puntos. Estos senderos
en la medida que otras hormigas los transitan y también depositan su rastro de
feromona se intensifican debido a la concentración de feromona, generando que otros
individuos opten por la elección de dicha ruta para llegar desde la fuente de comida
al hormiguero o viceversa.
Desde su formulación estos algoritmos fueron empleados para modelar y abordar con
éxito problemas de optimización combinatoria complejos.
• Actualización de feromona.
Los rastros de feromona para las soluciones construidas, son actualizados,
posterior a cada iteración del método, mediante una función. En relación a
este proceso pueden darse dos situaciones: que el rastro se incremente porque
las hormigas depositan feromona en cada componente o conexión que usan para
moverse dentro del espacio de búsqueda, reforzando dicha conexión; o bien que
el mismo se evapore para una conexión por tener pocas “visitas” por dicho
punto, lo que favorece que otras hormigas lo ignoren. De esta manera se van
perdiendo las “malas soluciones”.
• Ejecución de acciones.
Este proceso es opcional y no posee un equivalente en la naturaleza porque
no pueden ser realizados por cada individuo (hormiga). Esto puede incluir la
aplicación de refuerzo del rastro de feromonas a la mejor solución generada.
Pueden incluirse estrategias para mejorar el rendimiento del método como
por ejemplo una actualización del rastro de feromona diferente, introduciendo
cambios localizados en el espacio de búsqueda para favorecer la exploración.
25
La estructura general de un ACO se puede representar de manera general mediante
el Algoritmo 5.
26
Durante este proceso de búsqueda de alimento muchas de las bacterias afrontan
situaciones problemáticas, como por ejemplo encontrarse con sustancias nocivas que
pueden causar su eliminación o dispersión y que deberán sortear mediante algún
mecanismo de defensa como la segregación de sustancias químicas empleada como
mecanismo de comunicación.
Los algoritmos basados en enjambres de abejas (Artificial Bee Colony o ABC, por sus
siglas en inglés) [15], son métodos inspirados en el proceso de búsqueda de alimento
por parte de las abejas.
El modelo conceptual del algoritmo ABC, plantea que las colonias de abejas contienen
tres grupos de abejas artificiales: recolectoras productivas (en adelante, obreras), y dos
tipos de recolectoras no productivas o desempleadas (observadoras y exploradoras).
A continuación se describe cada uno de los tipos.
27
• Obreras: se trata de aquellas abejas que se encuentran explotando una fuente
particular de alimento, es decir, están empleadas con la misma. Las abejas
de este tipo comparten con otros tipos de abejas, como las observadoras, la
información sobre su fuente de alimento, por ejemplo: la ubicación de la
misma respecto de la colmena, la concentración de alimento y la facilidad para
extraerlo.
Los pasos contenidos en cada ciclo del ABC (pasos 4 a 10 del Algoritmo 8) pueden
resumirse en las siguientes acciones:
28
Algoritmo 8 Algoritmo ABC
1: Inicializar población de fuentes de alimento (soluciones).
2: Evaluar desempeño de la población.
3: mientras No se alcance condición de fin, hacer
4: Generar nuevas soluciones para las abejas empleadas.
5: Evaluar soluciones en base a la función objetivo a optimizar y conservar las
mejores.
6: Seleccionar solución que será visitada por una abeja observadora en base a su
aptitud.
7: Generar nuevas soluciones para las abejas observadoras.
8: Evaluar y conservar las mejores soluciones.
9: Determinar si existen fuentes abandonadas (agotadas) y reemplazarlas (por
medio de una exploradora).
10: Memorizar la mejor solución encontrada hasta el momento.
11: fin mientras
GWO (por sus siglas en inglés: Grey Wolf Optimizer) [24] es una metaheurística
poblacional, basada en inteligencia colectiva, inspirada en el comportamiento social
de las manadas de lobos grises (Canis Lupus) y su organización para la actividad
de caza de presas. GWO plantea que una manada de lobos grises se dividen en tres
tipos de individuos: α (líder o líderes), β y δ (subordinados de los anteriores y que le
asisten en la toma de decisiones) y resto de los individuos son ω.
El proceso de caza de los lobos grises y su organización social para esta actividad, ha
sido modelado metamáticamente para la resolución de problemas complejos, dando
lugar a una metaheurística. Dicho proceso de optimización consta de las siguientes
acciones [24]:
• Atacar a la presa.
29
El algoritmo GWO será explicado en detalle en el Capítulo 5, pues constituye
el principal objeto de estudio de la propuesta de esta tesis que es adaptar dicha
metaheurística para tratamiento del problema de generación óptima de cadenas de
adición.
30
Capítulo 4
Trabajos relacionados
En esta sección se exponen algunos de los métodos existentes, que son de interés en
el desarrollo de esta tesis y representan el estado del arte para generar cadenas de
adición de longitud mínima. Como se ha mencionado el sustento de las mismas es
la posibilidad de disminuir el número de operaciones (multiplicaciones y divisiones)
que plantea la exponenciación modular empleada en los algoritmos criptográficos
asimétricos. Tales métodos pueden clasificarse de manera general en: determinísticos
y estocásticos. Dentro del grupo de los determinísticos se describe la estrategia
binaria, estrategia de ventana y ventana adaptativa o deslizante y método factor.
Dentro del grupo de los estocásticos se enumeran y describen las metaheurísticas que
resultaron de interés dentro de estado del arte como antecedentes de tratamiento del
problema a tratar y cuyos resultados serán empleados para comparar los obtenidos
por las propuestas de la tesis.
31
[6]:
• Por cada bit de la secuencia escaneado, se multiplica por dos al último número
de la cadena de adición.
• Si el bit escaneado resulta ser uno, se le suma uno al último valor de la cadena
de adición.
Donde:
Por ejemplo, dado e = 177, para aplicar este método tomaremos el exponente en
binario, siendo entonces (10110001)2 . Una vez aplicado el Algoritmo 9 se obtiene la
siguiente cadena de adición C = [1; 2; 4; 5; 10; 11; 22; 44; 88; 176; 177].
Al igual que el método anterior; éste opera sobre una representación binaria del
exponente e, como una secuencia de bits de la forma e = (em−1 ... e1 e0 ). En este caso
los bits de la representación binaria son particionados en fragmentos de k-longitud
32
denominados cadenas o ventanas, utilizaremos W para referirnos a dichas ventanas.
En este método la ventana tendrá una longitud máxima la cual puede definirse de
acuerdo con el contexto de aplicación y sobre esto existen estudios particulares como
[4], donde se describe el método con un tamaño de ventana de 5 bits.
• En cada iteración, se realiza una multiplicación cada vez que la i-ésima ventana
W es diferente de cero. Todos menos uno de los 2k diferentes valores de Wi
es distinto de cero. El número promedio de multiplicaciones requeridas en este
sentido está dado por: (ϕ -1) (1 – 2−k ) – [(m/k) - 1)] (1 – 2−k ).
33
Algoritmo 10 Estrategia de la ventana
Entrada: e =(em−1 ... e1 e0 ), ϕ = m/k
Salida: C = [1;...;e]
1: Generar y almacenar (pre-computar) xj = 1,2,3,4,...,2k - 1.
2: Dividir e en ventanas de k bits → Wi con i = 1, 2, 3,... ϕ -1.
ϕ−1
3: Y = X W // Agregar este resultado al final de la cadena C.
4: para i: [(ϕ-2) .. e0 ] decreciendo, hacer
5: Y = Y 2k // (es decir, x = 2 × x).
6: Agregar x al término de la cadena C.
7: si Wi , 0, entonces
8: (es decir, que es el último bit de la ventana actual)
9: Y = Y × X W i.
10: // ubicar como último valor de la cadena el valor en decimal de la ventana
actual.
11: Agregar x al término de la cadena C.
12: fin si
13: fin para
14: Ordenar (xj unión C).
15: devolver C
Donde:
Por ejemplo, dado e = 177, utilizado para demostrar la estrategia binaria, tomaremos
el exponente en binario siendo entonces (10110001)2 . Con m = 8 y k = 3, con lo
cual para dividir la cadena en 3-bits será necesario completar con un cero la cadena,
obteniéndose (010 110 001)2 .
Una vez aplicado el Algoritmo 10 se obtiene:
Una vez obtenido lo anterior, resta calcular la operación (xj unión C) cuyo resultado
es la siguiente secuencia final:
C=[1; 2; 3; 4; 5; 7; 8; 16; 22; 44; 88; 176; 177] (cadena de adición para e=177)
Este método es una variante del anterior y constituye una alternativa para abordar
exponenciaciones con exponentes extremadamente grandes (aquellos cuya longitud
34
supera los 128-bits) debido a su capacidad para ajustar su método de cálculo de
acuerdo con el exponente a trabajar. Dicho ajuste se realiza mediante la división
del exponente e de entrada, en una serie de cadenas de longitud variable (no nulas)
llamada ventanas, tal como se encuentra planteado en [6].
35
Algoritmo 11 Estrategia de ventana adaptativa
Entrada: e=(em−1 ... e1 e0 ), ϕ = m/k
Salida: C = [1;...;e]
1: Generar y almacenar (pre-computar) xj = 1,2,3,4,...,ϕ - 1. // Se generan las
ventanas VC y VNC.
ϕ−1
2: Y = X W // Agregar este resultado al final de la cadena C.
3: para i: [(ϕ-2) .. e0 ] decreciendo, hacer
4: Y = Y 2k // (es decir, x = 2 × x).
5: Agregar x al término de la cadena C.
6: si Wi , 0, entonces
7: (es decir, que es el último bit de la ventana actual)
8: Y = Y × X Wi .
9: // ubicar como último valor de la cadena el valor en decimal de la ventana
actual.
10: Agregar x al término de la cadena C.
11: fin si
12: fin para
13: devolver C
Donde:
Donde:
n: número entero, equivalente al valor del exponente e en cuestión para el que se
desea obtener una cadena de adición.
r y s: factores.
36
Figura 4.1: Árbol de factorización.
37
problema, comparable al resultado de la operación r! (factorial de r). En virtud de
lo anterior se formularon diversos métodos estocásticos para afrontar la complejidad
del problema, a continuación se describen, en ésta sección, las que resultan de interés
para la tesis.
Donde:
e: exponente entero.
N: tamaño máximo de población.
pc : probabilidad de cruce.
pm : probabilidad de mutación.
C: cadena de adición asociada a e.
El Algoritmo 13 muestra una adaptación del algoritmo genético o GA (por sus siglas
en inglés), donde se emplean los operadores usuales de mutación y cruce y donde la
aptitud está determinada por la longitud de la cadena de adición.
Este enfoque fue verificado en [7] para exponentes e del rango de longitudes de [1, 1000]
y para exponentes especiales cuyas cadenas de adición óptima, son particularmente
difíciles de hallar. Los resultados obtenidos por este método fueron comparados con
varios algoritmos deterministas superando los resultados de los mismos.
38
En dicho trabajo, se adoptó una codificación de enteros para el GA, con cromosomas
de longitud variable que son el equivalente a las cadenas de adición buscadas.
Cada elemento de la cadena es asignado directamente en cada gen o elemento del
cromosoma, en función de esto, se trata de un GA donde el genotipo y el fenotipo
son iguales.
De este modo, si lo que se busca es minimizar la cadena de adición para un exponente
e = 5288, una solución candidata podría ser: [1; 2; 4; 8; 16; 32; 64; 128; 256;
512; 1024; 2048; 4096; 5120; 5248; 5280; 5288], como cadena de adición óptima, la
cual representa un cromosoma de longitud 16, teniendo en cuenta que este método
permita el “doblado” de números, es decir, que algunos genes del cromosoma puedan
ser generados por la suma de otro elemento consigo mismo, para dar origen a un
nuevo elemento de la secuencia.
Parámetro Valor
Tamaño de población 100
Número de generaciones 300
Probabilidad de cruce 0.6
Probabilidad de mutación 0.5 (con operador de mutación de un punto)
Operador de selección torneo binario
39
de recocido, que se basa en un esquema simple de retroalimentación. El Algoritmo
14 esquematiza la propuesta de [27].
• Por cada individuo mutado que supera el umbral, se añade la diferencia (“Diff”,
ver Algortimo 14) entre el umbral y la energía del mutante, al banco de energía,
para almacenamiento temporal.
40
Una vez que la población de N individuos ha sido mutada de manera aleatoria, tiene
lugar el “recalentamiento” como se expone en [27], elevando los umbrales y dicha
variación será determinada en función de la energía acumulada en el banco de energía
y de la velocidad a que se desea “enfriar” la población.
41
relacionada, pero buscando mayor diversidad en el proceso de generación.
Ambos tipos de operadores incluirán la repación dentro de su secuencia de
pasos.
• Por otro lado el mecanismo de reparación de soluciones que plantea este método
es necesario en función de que se espera que tanto los operadores de variación
(cruce y mutación) como el de selección, produzcan muchas soluciones no
válidas, tal como lo explicaron sus autores en dicha propuesta.
2. De manera al azar pero uniforme, elegir entre todas las sub cadenas mínimas
formadas por tres elementos (es decir, la segunda, tercera y cuarta posición en
la cadena) y una elección al azar del segundo elemento tomando valor 3 o 4.
3. Con probabilidad igual a 3/5, tomar el doble de los elementos hasta alcanzar la
mitad del tamaño exponente (longitud de la cadena).
42
Tanto el operador de cruce como el de mutación son similares a los utilizados por
otras propuestas. El operador de mutación empleado es análogo a la mutación de un
solo punto y este enfoque implementa también dos operadores de cruce, en aras de
favorecer la diversidad. Puesto que en [26] no se brindan los nombres dados a los
operadores de variación propuestos, se esquematizan los mismos a continuación (ver
Algoritmos 15 y 16.
Dónde:
43
Algoritmo 16 Operador de mutación
Entrada: exp > 0; e = e0 , e1 ,...,en
rand = Random (2, exp − 1 )
rand2 = Random (0,1)
1: si rand2, entonces
2: erand = erand−1 + erand−2
3: si no
4: rand3 = Random (2, rand − 1)
5: erand = erand−1 + erand−3
6: fin si
7: RepararCadena (e, exp)
8: devolver e = e0 , e1 ,...,en
Al igual que en las otras propuestas de abordaje del problema, en función de que
el objetivo es la reducción al mínimo posible del número de elementos de la cadena
asociada al exponente, la función de aptitud empleada es la longitud de la cadena.
44
En la ejecución de esta propuesta se utilizó una configuración de 50 ejecuciones
por cada experimento y se utilizó el criterio de 100 ejecuciones sin mejora de los
resultados, como criterio de finalización. Por otro lado se empleó un número total
de las generaciones de 1500 y tamaño de población de 300 individuos, en todos los
experimentos.
La observación de los resultados de [26] arrojó que los tamaños de población más
grandes se destacaron, producto de una mayor diversidad inducida por el mecanismo
de inicialización, pero sin embargo, la evolución de los individuos se mantuvo costosa
en tiempo de ejecución para los valores grandes exponente, insumiendo para los
exponente más grandes, menos de una hora.
Los experimentos realizados con esta propuesta contemplaron pruebas con exponentes
hasta el valor 2127 – 3, es decir el número (170 141 183 460 469 231 731 687 303 715
884 105 725).
Los algoritmos inmunes AIS (por sus siglas en inglés: Artificial Immune System), son
aquellos inspirados en un principio denominado selección clonal, que es la manera
en que los anticuerpos de un organismo eliminan los antígenos (cuerpos extraños).
En este enfoque un antígeno será representado como el exponente e que se desea
alcanzar, mientras que los anticuerpos, son representados por el par (U, L), donde
U es la secuencia de la cadena de adición, construida previamente mediante alguno
de los métodos ya mencionados y L es un número entero positivo que representa
la longitud de U , que se traduce en el número de pasos necesarios para lograr el
objetivo deseado. La población de anticuerpos representa las posibles soluciones para
el problema. En [6] se propone el uso de la metaheurística AIS, haciendo uso de los
siguientes elementos:
• Construcción de anticuerpos.
• Un operador denominado “Hipermutación”.
• Memoria inmune.
• Un mecanismo de selección, denominado “Selección Clonal”.
Construcción de anticuerpos.
Cada anticuerpo se representa por el par ordenado (U, L), donde U es una cadena de
adición válida de longitud L. En función de esto, se debe definir un procedimiento
para construir cadenas de adición válidas a fin de que la población de anticuerpos del
sistema inmune pueda crearse y ser mutada.
45
Operador de hipermutación.
Memoria inmune.
(a) Por ejemplo, un clon generado desde el más alto grado de afinidad (i-ésimo
anticuerpo) obtendrá un punto de mutación seleccionada a partir de la
mitad superior de su cadena. Digamos por ejemplo que este punto es i =
14.
(b) Se selecciona un número j aleatorio con (0 ≤ j < i < e) por ejemplo j = 7.
(c) El nuevo valor de la cadena de adición clonada en el punto de mutación,
será: Ui+1 = Ui + Uj , entonces tenemos por ejemplo: U15 = 1836 + 49 =
46
1885. En este punto nuestra cadena es [1; 2; 4; 8; 16; 24; 48; 49; 98; 196;
294; 588; 612; 1224; 1836; 1885].
(d) Se repara la parte superior de la cadena {Uk > i + 1} con la operación
de llenado, donde k es la ubicación a partir de donde se aplicará dicha
operación. Supongamos entonces que la cadena de adición es [1; 2; 4; 8;
16; 24; 48; 49; 98; 196; 294; 588; 612; 1224; 1836; 1885; 1901; 1903] con
afinidad L = 17 (longitud de cadena).
9. Se reemplazan los anticuerpos que mostraron menos afinidad por otros nuevos.
Por ejemplo, digamos que uno de los flamantes candidatos así producidos es [1;
2; 3; 6; 12; 15; 30; 33; 66; 99; 198; 213; 426; 852; 885; 1737; 1836; 1869; 1902;
1903].
En el estudio reportado en [6] se observa que AIS para grandes exponentes se emplea
en combinación con el método determinista de ventana adaptativa (deslizamiento de
ventana) para la generación de cadenas de adición subóptimas.
47
Algoritmo 18 Algoritmo PSO para generar cadenas de adición.
Entrada: e
Salida: C = [1;...;e]
1: Generar población inicial de partículas (cadenas).
2: mientras El número máximo de generaciones no sea alcanzado, hacer
3: para cada partícula, hacer
4: Calcular aptitud (fitness) de cada individuo.
5: si aptitud de la partícula es mejor que la mejor patícula, entonces
6: mejor partícula = aptitud de la partícula actual
7: fin si
8: Buscar al mejor vecino y asignarle la posición de la mejor partícula.
9: Actualizar la posición y velocidad de la partícula actual.
10: fin para
11: fin mientras
12: devolver C
Donde:
e: número entero.
C: cadena de adición. Partícula de menor longitud.
48
• Generar población inicial aleatoriamente de n individuos.
Cabe destacar que EP no requiere efectuar selección de padres ya que todos los
individuos de la población generan un hijo mediante el operador de mutación.
Población inicial
Tomando como base las características de las cadenas de adición, cada individuo será
generado en base a estas reglas:
2. Suma de dos números previos, de modo que: ui+1 = ui + ui−1 . Tomando como
ejemplo la misma cadena que en punto 1, el quinto elemento (9) es igual al
tercero sumado al cuarto.
49
Esta reglas se aplican para generar los términos teniendo en cuenta la premisa de
que los dos primeros elementos de las cadenas serán el 1 y 2 de forma consecutiva,
seguidos de 3 o 4 (tomado de forma aleatoria) de acuerdo con las 3 reglas anteriores,
posteriormente se puede aplicar para obtener nuevos términos una función como la
que se presenta en [6].
Este estudio propuso utilizar como operador de variación una búsqueda local donde
se generan t mutantes para cada individuo de los cuales se toma como individuo hijo
aquel de mejor valor de adaptación.
En [25] fue propuesto un algoritmo ACO (por sus siglas en inglés: Ant Colony
optimization) para la optimización de cadenas de adición. La novedad de este
aporte radica en el uso de un algoritmo basado en inteligencia colectiva (esquema
multiagente).
50
Aquí se representa la estructura general de un sistema de hormigas, en el que Ai
representa cada agente de orden i (i-ésima hormiga) y LMi la memoria local de la
misma, respectivamente. Por otro lado, la memoria compartida SM , contiene la
información del rastro de feromona, mientras que la memoria LMi local (de cada
hormiga) mantiene la solución (posiblemente parcial), es decir, que tan lejos llegó el
agente Ai . El Algoritmo 19 esquematiza el funcionamiento de ACO, cuyos parámetros
son (N, C), detallado en [25].
Donde:
51
El comportamiento de una colonia de hormigas se resume en el Algoritmo 19, donde el
primer paso consiste en la activación de N hormigas que deberán funcionar en forma
simultánea (paso 4, “Activar”). Cada vez que una hormiga finaliza su búsqueda se
actualiza la memoria compartida con un valor de feromona (cantidad de feromona)
que será proporcional a la calidad de la solución alcanzada. Entonces luego se ejecuta
la actualización de la memoria compartida con el valor de feromona global (paso
10). Cuando el rendimiento de una solución obtenida por el trabajo de una hormiga
es adecuado (es decir, que se ajusta con C), se detienen todas las hormigas activas
(paso 14). En caso contrario, se itera el proceso hasta que se encuentra una solución
adecuada (paso 15).
52
Capítulo 5
Algoritmo Propuesto
En [24] se propone una metaheurística denominada Grey Wolf Optimizer, GWO (por
su siglas en inglés), inspirada en el comportamiento de las manadas de lobos grises
(Canis Lupus) y su organización social para la caza de presas.
Los lobos grises por naturaleza prefieren vivir en grupo de entre 5 y 12 miembros
en promedio. La manada se conforma de dos líderes llamados alfa (un macho y una
hembra) y el resto de la manada. En esta estructura social, los miembros alfa son
los responsables de la toma de decisiones sobre la caza, lugar donde dormir, hora de
despertar, y el resto de los miembros debe seguir sus órdenes. El miembro alfa de
una manada no necesariamente debe ser el más fuerte pero si el mejor en términos
de conducción del grupo y capacidad para tomar decisiones. El segundo nivel en
la jerarquía del grupo son los miembros beta (subordinados de los alfa), que deben
colaborar con la toma de decisiones y el cumplimiento de las órdenes de los alfa. Estos
miembros son los candidatos a convertirse en alfa cuando alguno de estos fallece o
envejece. Existe otra clasificación que se encuentra más abajo en la jerarquía de las
manadas de lobos grises se denomina omega, estos deben someterse a los alfa y betas
obedeciéndoles, en muchos casos suele verse en este tipo a miembros que ofician de
niñeros de las crías, dentro de la manada [22].
Las principales fases de la caza en manadas de lobo gris son las siguientes:
• Atacar a la presa.
53
Esta técnica de caza naturalmente e intuitivamente realizada por los lobos grises,
fue modelada matemáticamente en [24] con la finalidad de proponer un método de
optimización y emplearlo en la resolución de problemas complejos.
Acorralamiento de la presa:
54
Por otro lado, los vectores A y C se calculan como sigue:
A = 2a · r1 − a (5.2a)
C = 2 · r2 (5.2b)
Según la formulación original GWO en [24] los componentes del vector A disminuyen
linealmente desde 2 hasta 0, sobre el curso de las iteraciones y r1 , r2 son vectores
aleatorios en el rango [0, 1].
La Figura 5.2 esquematiza los efectos de las ecuaciones (5.1a) y (5.1b). Se muestra en
la figura un lobo gris en la posición (x1 ,x2 ), éste sería el equivalente a X de la ecuación
(5.1b) y puede actualizar su posición según la posición de la presa Y=(y1 ,y2 ), es decir
el equivalente a Xp de la ecuación (5.1a). Como se observa en la figura, pueden
alcanzarse diferentes lugares alrededor de la presa, con respecto a la posición actual
del lobo, ajustando el valor de las coordenadas de los los vectores de posición. Por
ejemplo, X=(x1 , y2 -x2 ).
Ataque a la presa:
55
suponemos que el miembro alfa (mejor solución candidata), beta y delta tienen un
mejor conocimiento sobre la posible ubicación de la presa. Por lo tanto, guardamos las
primeras tres mejores soluciones obtenidas hasta el momento y obligamos a los otros
agentes de búsqueda (incluidos los omegas) a actualizar sus posiciones de acuerdo
a la posición de los mejores agentes de búsqueda. En este sentido se proponen las
siguientes fórmulas:
En función de que cada agente actualiza su posición según: alfa, beta y delta en un
espacio de búsqueda, se puede decir que el rol de alfa, beta y delta es estimar la
posición de la presa y los otros lobos actualizan sus posiciones al azar alrededor de la
misma.
Los lobos tienen posiciones diferentes respectos de la presa pero convergen a la misma
para atacar. El modelo matemático de esta divergencia se refleja en el uso de valores
aleatorios para el vector A (mayores que 1 y menores que −1), a través de r1 (ver 5.2a),
para asegurar divergencia y que la búsqueda abarque de mejor manera el espacio de
búsqueda, característica relacionada con la exploración, es decir que cuando |A| > 1
se está obligando a los lobos a divergir respecto de la presa.
56
actualiza su distancia respecto de la presa. El parámetro “a” es disminuido desde
2 hasta 0 con el fin de enfatizar la exploración y explotación, respectivamente. Las
soluciones candidatas divergen respecto de la presa cuando |A| > 1 y convergen hacia
la presa cuando |A| < 1 (ver figura 5.2). Por último, el algoritmo GWO termina
por la satisfacción de un criterio de fin. Tal como describe en [24] GWO ha sido
aplicado a una serie de problemas de optimización y dentro de ellos se aplicó a un
problema real del ámbito de la ingeniería óptica [24]. En el Algoritmo 20 se presenta
el esquema general del método.
Algoritmo 20 GWO.
Inicializar población de lobos Xi (con i = 1, 2, ..., n)
Inicializar α, A y C
Calcular fitness de cada agente de búsqueda
Xα = el mejor agente.
Xβ = el segundo mejor agente.
Xδ = el tercer mejor agente.
mientras ( t < número máximo de iteraciones) hacer
para i = [1..n] hacer
Actualizar la posición de cada agente mediante la ecuación (5.3c)
fin para
Actualizar α, A y C
Calcular el fitness de todos los agentes de búsqueda
Actualizar Xα , Xβ y Xδ
t=t+1
fin mientras
Retornar Xα
57
Algoritmo 21 Producir cadena de adición válida.
Entrada: e
Salida: (U, L)
Asignar a u0 = 1 y u1 = 2
Asignar a u2 = Rand(3,4)
Completar la secuencia invocando la función FILL(U , k, e) // parámetros que
emplea la función para “llenar” la cadena.
Retornar (U, L)
La función FILL opera tomando como parámetro de entrada una cadena de adición
incompleta U de longitud L, asociada al exponente e. El valor de k representa la
siguiente posición de la cadena a completar.
Donde:
58
Al igual que en [8] los individuos de la población serán generados aplicando las 3
reglas mencionadas a continuación, siempre con la premisa de que las dos primeras
componentes de la cadena son 1 y 2, en este mismo orden:
2. Suma de dos números previos, de modo que: ui+1 = ui + ui−1 . Tomando como
ejemplo la misma cadena del punto 1, el quinto elemento (9) es igual al tercero
sumado al cuarto.
De esta manera, la función FILL aplica las reglas anteriores con determinados valores
de probabilidad. Para los experimentos se ha tomado como referencia los valores
reportados por el enfoque [8] que ha demostrado resultados competitivos para varios
rangos de exponentes, a fin de poder comparar nuestra propuesta bajo condiciones
similares en términos de generación de soluciones y desempeño de la metaheurística
propuesta. Dichos valores son:
59
• Agentes_de_búsqueda= 10 (número de lobos).
La Tabla 5.1 resume los mejores resultados obtenidos por enumeración, para los
exponentes de cada rango expresado ([1,128], [1,256] y [1,512]), es decir, para el
rango [1,128] se obtuvo las cadenas de adición para los números del 1 al 128 y
60
así sucesivamente para los otros rangos numéricos. La operación antes mencionada
se ejecutó 30 veces por cada rango, tomando el mejor resultado en términos de
longitud de cadenas acumuladas dentro de los resultados de cada rango, a fin de
poder comparar tales resultados con otras propuestas para las que se han ejecutado
experimentos empleando los mismos rangos de exponentes.
Tabla 5.2: Cadenas de adición acumuladas para todas las longitudes de exponentes
e ∈ [1, 512]
e [1, 512]
Optimal [6] 4924
Binary [6] 5388
Çuaternary [6] 5226
Resultados GWOc
Tabla 5.3: Comparación de los mejores resultados acumulados para GWOc con otros
enfoques, para el mismo rango de exponentes.
La Tabla 5.2 muestra una comparación de los resultados para GWOc respecto de
los métodos deterministas del estado del arte tomados de [6] cuyos resultados fueron
utilizados para comparar con el enfoque AIS [6]. Por otro lado, el Cuadro 5.3 brinda
una comparación de los mejores resultados de cadenas de adición acumuladas para el
mismo rango de exponentes [1, 512] obtenidos por métodos estocásticos y comparados
en [8], salvo PSO que no reportó resultados para este rango de exponentes, respecto
de la propuesta GWOc. En el Cuadro 5.2 se puede observar además que GWOc se
aproxima al resultado del método “Optimal”[6], siendo éste quien mejor desempeño
logró para dicho rango de exponentes según [6]. Finalmente, en el Cuadro 5.3 se
observa que GWOc, en su mejor ejecución, se acerca a los mejores resultados que
arrojaron AIS, GA, PSO, EP para el rango [1, 512]. En comparación con los resultados
de los métodos deterministas se observa que en su mejor ejecución se aproxima al
mejor resultado arrojado por “Optimal”, mientras que en los resultados comparativos
con los demás métodos estocásticos se acerca a los mejores resultados reportados de
las otras propuestas, no superando las mismas por un porcentaje de ∼ 0, 9 %.
Puesto que GWOc ha obtenido valores muy cercanos a otros enfoques del estado
del arte como AIS y EP para el mismo rango de exponentes [1, 512] se aplicará la
prueba “T” de Student para demostrar que tales resultados son competitivos y que
61
las diferencias no son significativas.
Se toma GA[7], AIS[6] y EP[8] como puntos de comparación pues se tiene para
sendos estudios los valores de promedios de longitudes acumuladas y desvío estándar,
obtenidos por las metaheurísticas para las muestras. PSO [19] no será tomado en
cuenta puesto que no reporta resultados para dicho rango de exponentes.
GWOc respecto de GA[7]
• Nivel de significación:
α=0,05
• Estadístico de prueba:
S 2 = [(n1 − 1)S1 2 + (n2 − 1)S2 2 ]/(n1 + n2 − 2) = [(512 − 1)3, 8025 + (512 −
1)22, 4676]/1022 = (1943, 0775 + 11480, 9436)/1022 = 13, 13
•
(X1 − X2)
T = √ = 10, 6
S 2 ( n11 + n12 )
• Los grados de libertad son 1022, (n1 +n2 -2)=(512+512-2), entonces verificamos
en la tabla de “T de Student” el valor 10,6 de T obtenido, para 1022 grados de
libertad.
62
GWOc respecto de AIS[6]
• Nivel de significación:
α=0,05
• Estadístico de prueba:
•
(X1 − X2)
T = √ = 25, 26
S 2 ( n11 + n12 )
Para 25,26 con 1022 grados de libertad, los valores de probabilidad están entre
1,708 y 2,060. Esto implica que se debe aceptar la hipótesis nula y por tanto
al no existir diferencias significativas entre ambas metaheurísticas se concluyen
en que los resultados de GWOc fueron satisfactorios.
63
• Planteamiento de la hipótesis de términos estadísticos:
H0 (hipótesis nula) aunque las muestran registren promedios y desvíos diferentes
provienen del mismo universo y por tanto la diferencia observada se debe al azar.
Na (hipótesis alternativa) las muestran provienen de universos con promedios
distintos.
• Nivel de significación:
α=0,05
• Estadístico de prueba:
S2 = [(n1 − 1)S1 2 + (n2 − 1)S2 2 ]/(n1 + n2 − 2) = [(512 − 1)3, 8025 + (512 −
1)0, 093025]/1022 = (1943, 0775 + 47, 535775)/1022 = 1, 95
•
(X1 − X2)
T = √ = 27, 51
S 2 ( n11 + n12 )
Para 27,51 con 1022 grados de libertad los valores de probabilidad están entre 1,703
y 2,052, por lo tanto se debe aceptar la hipótesis nula considerando que no existen
diferencias significativas entre los resultados de ambas metaheurísticas.
Tanto para los resultados de la prueba de comparación de GWOc con AIS como
GWOc respecto de EP, el valor del estadístico obtenido conduce a la aceptación de
la hipótesis nula y por tanto se concluye que las diferencias en los resultados de los
experimentos entre las metaheurísticas comparadas no son significativos dejando en
evidencia que GWOc obtuvo resultados competitivos.
64
optimizar. Se considera dentro de esta categoría a aquellos exponentes para los cuales
no es posible hallar cadenas de longitud mínima mediante los métodos deterministas.
Se puede observar que en los 5 casos, GWOc ha obtenido cadenas de longitud igual
o menor al enfoque propuesto en [27]. Si bien los métodos aplicados en [6], [19] y [8]
también han sido probados con esta clase de exponentes diversos, no son los mismos
que los empleados en [27]. Por esta razón, se efectúa la comparación en Tabla 5.4 y
en el próximo experimento se hace respecto a los otros métodos del estado del arte.
Se aplicó la prueba de los rangos de signos de Wilcoxon a fin de verificar los resultados
obtenidos por GWOc respecto de [27] con α= 0,05 a fin de validar si existen diferencias
significativas. La comparación fue realizada en función de las longitudes de cadenas
obtenidas con cada metaheurística. A continuación se describe el procedimiento.
Tabla 5.5: Cálculo de las diferencias entre los resultados de las metaheurísticas.
Segundo paso
Puesto que lo importante son las filas de la tabla que contienen los resultados
de las diferencias en valor absoluto para cada exponente, nos quedaremos solo
con las columnas exponente (“Exp.”) y “Valor Absoluto”. Las filas de la tabla
65
deben quedar ordenadas de manera decreciente, en función del valor absoluto,
en este caso ya se encontraban ordenadas desde el paso anterior (ver Tabla 5.6).
Tabla 5.6: Diferencias de cada metaheurística en valor absoluto para cada exponente.
Tercer paso
A cada valor de diferencia de la Tabla 5.6 se le asignará un número de rango,
de manera creciente.
Tabla 5.7: valores absolutos y número de rango para cada diferencia entre los
resultados de GWOc y GA Annealing.
Cuarto paso
En este paso se obtienen los signos asociados a cada rango del siguiente modo,
los rangos asociados a valores de la columna “Diferencia” con signo positivo
se colocarán en la columna “(+)” y aquellos con signo negativo en la columna
“(−)”, adicionalmente se descartan las diferencias nulas (ver Tabla 5.8).
66
• Cálculo del estadístico W de Wilcoxon.
El valor del estadístico W será la suma de los rangos correspondientes a las
diferencias positivas, en este caso todas las diferencias resultaron ser positivas,
por lo que W = 10.
• Criterio de decisión.
El p-valor de la prueba se calcula en 0,00195, y se obtiene de la siguiente manera.
Teniendo en cuenta que se aplica prueba de dos colas sería 0,0039 (2×p-valor)
y este resultado menor que α=0,05, con lo cual se rechaza la hipótesis nula en
favor de la hipótesis alternativa.
Curva de Convergencia
23
18 GWOc
Mejor cadena obtenida
17
16
15
13
11
10
7
5 10 15 20 25 30
Iteración
67
Curva de Convergencia
22
GWOc
18
13
12
11
10
8
5 10 15 20 25 30
Iteración
Curva de Convergencia
41
38
GWOc
Mejor cadena obtenida
30
25
21
19
15
11
9
5 10 15 20 25 30
Iteración
Curva de Convergencia
50
GWOc
48
Mejor cadena obtenida
35
30
23
19
12
10
5 10 15 20 25 30
Iteración
68
Curva de Convergencia
123
GWOc
111
55
45
35
30
21
15
11
10
5 10 15 20 25 30
Iteración
La Tabla 5.9 resume los resultados del tercer experimento, correspondiente a los
mejores resultados obtenidos por GWOc para un conjunto de exponentes diversos
y difíciles de optimizar al igual que los resultados del experimento mostrados en la
Tabla 5.4 pero comparando dichos resultados con los obtenidos por AIS [6], PSO
[19] y EP [8] para los mismos casos. GWOc ha sido comparado tomando algunos
exponentes de las metaheurísticas mencionadas en el párrafo anterior a excepción
de [7] pues tal como se menciona en [8], todas las demás ([6], [19]) superan sus
resultados. Si bien GWOc no supera los resultados obtenidos para los exponentes
listados mediante el uso de los otros enfoques (ver Tabla 5.9) tampoco ha arrojado
resultados de menor calidad en términos de longitud de cadena, salvo para el caso
del exponente e = 1087 empleado en este lote de casos de prueba. Cabe destacar que
es correcto que GWOc no supere los valores de longitud de cadena reportados por
las otras metaheurísticas con las cuales se comparó en este experimento pues dichos
resultados corresponden a la mínima longitud conocida para cada caso, tal como se
muestra en la Tabla 5.10 de exponentes “diversos” presentada en [6].
69
Tabla 5.9: Mejores resultados obtenidos por AIS [6], PSO [19], EP [8] y GWOc para
un conjunto de exponentes diversos y difíciles de optimizar.
Exponente Longitud
e Cadena AIS [6] PSO [19] EP [8] GWOc
5 1, 2, 3, 5 3 3 3 3
7 1, 2, 4, 5, 7 4 4 4 4
11 1, 2, 4, 8, 10, 11 5 5 5 5
19 1, 2 ,4, 8, 16, 18, 19 6 6 6 6
29 1, 2, 3, 6, 7, 14, 28, 29 7 7 7 7
47 1, 2, 4, 8, 9, 18, 36, 45, 47 8 8 8 8
1, 2, 3, 6, 7, 14, 21, 35, 70,
71 9 9 9 9
71
1,2, 3, 6, 12, 18, 30, 60, 63,
127 10 10 10 10
126, 127
1, 2, 3, 6, 12, 18, 19, 38, 57,
191 11 11 11 11
95, 190, 191
1, 2, 3, 6, 9, 18, 27, 45, 72,
379 12 12 12 12
117, 189, 378, 379
1, 2, 3, 6, 9, 15, 30, 60, 61,
607 13 13 13 13
121, 182, 303, 606, 607
1, 2, 3, 6, 9, 18, 36, 54, 108,
1087 216, 324, 540, 541, 1082, 14 14 14 15
1085, 1087
70
Tabla 5.10: Conjunto de exponentes que tienen una cadena de adición óptima asociada
de longitud determinada.
Los siguientes gráficos muestran las curvas de convergencia del algoritmo GWOc
para los casos ejecutados en el experimento, conforme el avance de las iteraciones,
correspondiente a la ejecución con la cual se obtuvo el valor mínimo de longitud de
cadena de adición para cada exponente.
Vale aclarar que en las siguientes gráficas los valores correspondientes al eje de
abscisas no parten de cero sino que lo hacen desde el menor valor encontrado de
longitud de cadena de adición para cada exponente.
71
Curva de Convergencia
4
GWOc
3
5 10 15 20 25 30
Iteración
Curva de Convergencia
6
GWOc
Mejor cadena obtenida
4
5 10 15 20 25 30
Iteración
Curva de Convergencia
9
8
GWOc
Mejor cadena obtenida
5
5 10 15 20 25 30
Iteración
72
Curva de Convergencia
15
GWOc
14
11
6
5 10 15 20 25 30
Iteración
Curva de Convergencia
29
21
GWOc
Mejor cadena obtenida
20
19
16
13
12
10
7
5 10 15 20 25 30
Iteración
Curva de Convergencia
28
25
GWOc
Mejor cadena obtenida
24
22
20
19
18
14
10
8
5 10 15 20 25 30
Iteración
73
Curva de Convergencia
24
21
GWOc
18
16
14
13
12
11
10
9
5 10 15 20 25 30
Iteración
Curva de Convergencia
40
38 GWOc
Mejor cadena obtenida
35
33
28
27
25
21
20
18
15
13
12
10
5 10 15 20 25 30
Iteración
Curva de Convergencia
49
41
GWOc
Mejor cadena obtenida
39
38
35
33
32
31
15
14
13
11
5 10 15 20 25 30
Iteración
74
Curva de Convergencia
58
GWOc
41
39
30
29
21
19
18
14
13
12
5 10 15 20 25 30
Iteración
Curva de Convergencia
61
GWOc
52
Mejor cadena obtenida
47
41
39
30
28
23
20
13
5 10 15 20 25 30
Iteración
Curva de Convergencia
144
111 GWOc
97
Mejor cadena obtenida
89
81
80
75
69
65
59
53
48
41
33
31
30
29
27
16
15
5 10 15 20 25 30
Iteración
75
5.4 Discusión de los resultados
Un dato relevante de los experimentos de este capítulo es que en todos los casos
los resultados de GWOc se obtuvieron con 300 evaluaciones por ejecución, aunque
también vale mencionar que GWOc fue sometido sólo a exponentes pequeños (menores
a 128-bits) de acuerdo con el objetivo de la tesis, en tanto que otras propuestas
contemplaron escenarios hasta el rango [1,4096-bits]. Sin embargo, se considera
que es válido tener en cuenta que GWOc insumió menor cantidad de evaluaciones
para alcanzar los mismos resultados en términos de longitud de cadena para varios
exponentes “difíciles” también reportados por PSO[19], AIS [6] y EP [8], este último
con 92000 evaluaciones. A continuación en la Tabla 5.11 se expone un resumen del
número de evaluaciones insumidos por GWOc y otros abordajes.
76
Tabla 5.11: Desempeño de cada enfoque comparado en términos de cantidad de
evaluaciones realizadas
Propuesta # Evaluaciones
GWOc 300
PSO [19] 300000
AIS [6] -
EP [8] 92000
GA [7] 30000
GA Annealing
-
[27]
Como se observa en la Tabla 5.11, se evidencia una ventaja de GWOc respecto de los
otros enfoques con los que se ha comparado la propuesta, en términos de cantidad
de evaluaciones, teniendo en cuenta que en todos los experimentos con GWOc se
utilizó una configuración de 30 iteraciones y 10 agentes de búsqueda (lobos), dando
como resultado 300 evaluaciones por ejecución. Para el caso de la propuesta con PSO
[19] según lo reportado se trabajó con una configuración de 30 iteraciones con 1000
partículas, dando un total de 300000 evaluaciones por ejecución de experimento. Por
otro lado, EP [8] reportó 92000 evaluaciones, determinadas por la configuración de
parámetros del algoritmo y la propuesta con GA [7] empleó 30000 evaluaciones por
ejecución para sus experimentos. Las propuestas con AIS [6] y de GA Annealing [27]
no reportaron cantidad de evaluaciones.
77
Capítulo 6
78
y ceros) y en función de algunos parámetros que emplea para definir la longitud de
las ventanas no nulas y de los elementos “separadores” o ventanas nulas.
Donde:
79
intermedia U , vale decir que se aplica una unión, y C será completada aplicando
ventana deslizante tal como se describe en [8, 16].
80
Figura 6.1: División en ventanas de la representación binaria del exponente.
De las dos variantes de métodos de ventana deslizante expuestos en [17], ambos son
métodos m-arios que trabajan sobre la representación binaria del exponente e, el tipo
de método de ventana aplicado es aquel que permite ventanas de tamaño variable
(tanto si las mismas son de elementos nulos como elementos no nulos). Ésta variante
presenta dos parámetros a considerar, el tamaño máximo que tendrá una ventana del
81
tipo VNC, y el otro parámetro es la cantidad de elementos ceros consecutivos que
se admitirán dentro de una ventana VNC, teniendo en cuenta que dichas ventanas
pueden tener elementos cero pero no todos ellos lo son.
Se diseñaron dos experimentos, tomando como base para esta actividad los métodos
de prueba expuestos en la literatura especializada del tema y adecuando los mismos
a rangos de exponentes específicos, en función de los objetivos planteados para esta
tesis.
82
Tabla 6.1: Resultado de la mejor ejecución de 10 exponentes del rango de los 128-bits
en representación binaria, tomados aleatoriamente:
La Tabla 6.1 resume los casos correspondientes a la mejor ejecución del experimento
de Sección 6.2.1 que para fines prácticos solo fueron enumerados (caso 1 al 10) en
función de que se trata de 10 números aleatorios dentro del rango de los 128-bits y
considerando su longitud. La columna “longitud” de la tabla corresponde a la longitud
de la cadena de adición obtenida para cada caso (exponente) sometido al experimento,
considerando que la tabla reune el resultado de la mejor de 30 ejecuciones, es decir,
aquella donde se obtuvo menor longitud de cadena para cada uno de los 10 casos. La
última columna muestra el promedio de longitud de cadena acumulada para todos
los casos de la mejor ejecución.
Tabla 6.2: Comparación de los resultados obtenidos por GWOc_SWM para un rango
de 10 exponentes aleatorios, contra SWM, AIS_SWM y EP_SWM:
83
EP_SWM y GWOc_SWM representan tamaño de ventana y cantidad de ceros
permitidos en ventanas VNCs respectivamente.
∑k Ri 2
12
H=[ (n×(n+1) × i=1 ni ] − 3 × (n + 1)
• Criterio de decisión.
Teniendo en cuenta que H=2,4, los grados de libertad del escenario (k−1=3) y el
nivel de significancia empleado (α=0,05), según la tabla de χ2 (Chi-cuadrado),
obtenemos un valor crítico de 7,815.
• Conclusión.
Puesto que el valor crítico obtenido es mayor que el valor H debemos aceptar
84
la hipótesis nula y por tanto concluimos en que las poblaciones de donde se
tomaron las muestras para cada método utilizado son de idénticas características
o todas las muestras proceden de la misma población.
La Tabla 6.3 muestra los resultados de cadenas obtenidas con GWOc_SWM para el
conjunto de exponentes difíciles escogidos y compara el desempeño del método con
AIS [6], PSO [19], EP [8] y GA [26]. De la lectura de la tabla se observa que en la
mejor de 30 ejecuciones para el experimento, GWOc_SWM iguala los resultados de
las otras propuestas en términos de longitud de cadena hallada para cada valor de
exponente y para el caso del exponente “3585” obtiene una menor longitud de cadena
de adición, al igual que EP [8].
85
Tabla 6.3: Resultados obtenidos con GWOc_SWM para un conjunto de exponentes
difíciles de optimizar, respecto de: AIS, PSO, EP y GA.
Exp. Longitud
e Cadena AIS [6] PSO [19] EP [8] GA[26] GWOc_SWM
1, 2, 3, 6, 7, 14, 21, 42,
1087 63, 64, 128, 256, 512, 14 14 14 14 14
1024, 1087
1, 2, 3, 5, 10, 15, 30,
1903 60, 90, 180, 360, 720, 15 15 15 15 15
1480, 1840, 1900, 1903
1, 2, 3, 6, 7, 14, 28,
3585 56, 112, 224, 448, 896, 16 16 14 - 14
1792, 3584, 3585
1, 2, 3, 5, 10, 20, 30,
31, 60, 120, 240, 480,
6271 17 17 17 17 17
960, 1920, 3840, 5760,
6240, 6271
1, 2, 3, 5, 10, 20, 30,
35, 70, 140, 280, 560,
11231 18 18 18 18 18
1120, 2240, 4480, 8960,
11200, 11230, 11231
1, 2, 3, 5, 10, 15, 30,
60, 63, 126, 252, 504,
34303 1008, 2016, 4032, 8064, 20 20 20 20 20
16128, 32256, 34272,
34302, 34303
1, 2, 3, 5, 10, 15, 30,
60, 120, 240, 255, 480,
65131 960, 1920, 3840, 7680, 21 21 21 21 21
14360, 28720, 57440,
65120, 65130, 65131
1, 2, 3, 6, 12, 24,
30, 60, 120, 240, 360,
720, 1440, 2880, 5760,
110591 11520, 23040, 46080, 23 23 23 23 23
92160, 184320, 195840,
196560, 196590,
196591
86
6.3 Discusión de los resultados
Puesto que en los experimentos del Capítulo 5 se observó que a medida que los
exponentes se incrementan el desempeño de la propuesta GWOc declina, se efectuó
una serie de pruebas, incrementando la cantidad de evaluaciones por ejecución
hasta el máximo de 300 y el número de agentes de búsqueda (lobos) a 50 y 100
respectivamente, sin observar mejoras significativas. En función de lo anterior se
diseño la propuesta GWOc_SWM, inspirada en trabajos precedentes [6, 8, 16].
87
de las generaciones a 1500 y tamaño de población de 300 individuos, en todos los
experimentos con GA [26]. GWOc_SWM insumió menor cantidad de evaluaciones
que los otros enfoques utilizados para la comparación, para la optimización de los
exponentes empleados en el experimento descripto en Sección 6.2.2. La Tabla 6.4
refleja dicha situación.
Propuesta # Evaluaciones
GWOc_SWM 300
PSO [19] 300000
AIS [6] -
EP [8] 92000
GA [26] 450000
88
Capítulo 7
Propuesta de combinación de
GWOc con Búsqueda Local
En este capítulo se propone una mejora para GWOc que se denominó LGWOc
(“Local-Grey Wolf Optimizer of Chains”), basada en el uso de Búsqueda Local como
el caso del algoritmo Hill-Climbing [21] y la estrategia de introducir información
al proceso de búsqueda para mejorar el desempeño del algoritmo GWO aplicado
a optimización de cadenas de adición (GWOc). También se combinó LGWOc
con ventana deslizante, algoritmo denominado LGWOc_SWM “Local-Grey Wolf
Optimizer of Chains with Sliding Window Method”.
Donde:
X: solución incial.
X’: mejor solución dentro del vecindario de X.
N (X): vencidario de X.
89
LGWOc emplea al Algoritmo 25 como un operador de búsqueda local para intentar
mejorar la convergencia y evitar la tendencia de GWO al estancamiento en óptimos
locales. Tal operador será un método de búsqueda local que tomará como parámetro
de entrada (solución inicial) la mejor solución actual Xα de GWOc y buscará
iterativamente hasta no satisfacer un criterio de finalización, por una solución mejor
en el vecindario de Xα, utilizando como criterio de comparación para esto la longitud
de cadena (función de fitness o adaptación) siendo la mejor solución aquella cadena
con menor longitud. En caso de no poder mejorar el valor de solución, el proceso de
búsqueda culminará retornando el mismo valor Xα que intentaba mejorar. Se emplea
un parámetro que establece la cantidad de ejecuciones del operador de búsqueda local
por iteración.
Hill Climbing [17] (Algoritmo 25) utilizado como operador de búsqueda local por
LGWOc, es un algoritmo que generalmente opera comenzando con una solución
elegida al azar pero en esta implementación el valor inicial será Xα de GWOc utilizado
como parámetro de entrada. Dicha solución, denominada “padre” es mutada,
generando otra denominada “hijo”. De estas dos soluciones se escoge aquella que tenga
mejor aptitud para permanecer en la población, para el presente caso considerando que
cada posible solución es un cadena de adicion asociada a un exponente en particular,
será la cadena de menor longitud.
Puesto que esta hibridación está planteada para mejorar el desempeño general de
GWO adaptado para obtener cadenas de adición de longitud mínima (GWOc), en
los experimentos ejecutados con la nueva propuesta LGWOc, se utilizará la misma
configuración empleada en GWOc:
90
Algoritmo 26 LGWOc.
1: Inicializar población de lobos Xi (con i = 1, 2, ..., n)
2: Inicializar α, A y C
3: Calcular aptitud (fitness) de cada agente de búsqueda
4: Determinar los 3 mejores agentes búsqueda:
5: Xα = el mejor agente.
6: Xβ = el segundo mejor agente.
7: Xδ = el tercer mejor agente.
8: mientras ( t < número máximo de iteraciones) hacer
9: para i = [1..n] hacer
10: Actualizar la posición de cada agente mediante la ecuación (7.3c)
11: fin para
12: Elegir la mejor solución actual Xα como punto de partida y generar una nueva
solución X ′ α mediante el Algoritmo 25.
13: si X ′ α < Xα, entonces
14: reemplazar Xα con X ′ α // Xα = X ′ α
15: si no
16: iterar desde el paso 12.
17: fin si
18: Actualizar α, A y C
19: Calcular el fitness de todos los agentes de búsqueda
20: Actualizar Xα , Xβ y Xδ
21: t=t+1
22: fin mientras
23: Retornar Xα
Donde:
A = 2a · r1 − a (7.2a)
C = 2 · r2 (7.2b)
91
7.2 Descripción de los experimentos
Tabla 7.1: Cadenas de adición acumuladas para todas las longitudes de exponentes
e ∈ [1, 512]
e [1, 512]
Optimal [6] 4924
Binary [6] 5388
Çuaternary [6] 5226
Resultados GWOc
La Tabla 7.1 resume los resultados del experimento donde se observa una leve mejora
de LGWOc respecto de GWOc para el valor de cadena acumulada (4934) para todos
los exponentes del rango [1, 512], acercándose más a lo reportado por la estrategia
92
determinista “Optimal” [6].
Por otro lado también fue comparado el valor mínimo de cadena acumulada obtenido
con LGWOc respecto de las propuestas estocásticas del estado del arte y con el propio
GWOc (ver Tabla 7.2), donde la mejor ejecución de LGWOc reportó resultados
mejores a GWOc y más cercanos a las otras propuestas antecesoras.
Tabla 7.2: Comparación de los mejores resultados acumulados para LGWOc respecto
de otros enfoques, para el mismo rango de exponentes.
Además del experimento para cadenas acumuladas se planteó otro, con la estrategia
de combinación de ventana deslizante con LGWOc, de manera análoga a como se
describió en el Capítulo 6 pero empleando LGWOc en reemplazo de GWOc, cuyos
resultados se describen en la Sección 7.2.2.
93
de ventana VNC), justificando el empleo de tales parámetros en función del rango
numérico al que pertenecen los exponentes aleatorios y a lo expuesto en Seccion 6.2.1.
Los siguientes gráficos muestran las curvas de convergencia del algoritmo LGWOc
para los casos ejecutados en el experimento, conforme el avance de las iteraciones,
correspondiente a la ejecución con la cual se obtuvo el valor mínimo de cadena para
cada exponente. A fin de visualizar la mejora de LGWOc sobre GWOc respecto de la
cantidad de evaluaciones se presenta las curvas de convergencia de ambas propuestas
para cada exponente tratado en el experimento. Vale aclarar que en las siguientes
gráficas los valores correspondientes al eje de abscisas no parten de cero sino que lo
hacen desde el menor valor encontrado de longitud de cadena de adición para cada
exponente.
94
Curva de Convergencia
23
18 GWOc
16
15
13
11
10
7
5 10 15 20 25 30
Iteración
Curva de Convergencia
15
14
LGWOc
Mejor cadena obtenida
13
12
10
7
5 10 15 20 25 30
Iteración
Curva de Convergencia
22
GWOc
18
Mejor cadena obtenida
16
13
12
11
10
8
5 10 15 20 25 30
Iteración
Curva de Convergencia
30
LGWOc
28
Mejor cadena obtenida
25
21
20
19
18
15
10
8
5 10 15 20 25 30
Iteración
95
Curva de Convergencia
41
38
GWOc
25
21
19
15
11
9
5 10 15 20 25 30
Iteración
Curva de Convergencia
58
LGWOc
55
Mejor cadena obtenida
47
35
28
21
15
11
8
5 10 15 20 25 30
Iteración
35
30
23
19
12
10
5 10 15 20 25 30
Iteración
Curva de Convergencia
42
LGWOc
Mejor cadena obtenida
38
35
28
22
21
18
13
10
5 10 15 20 25 30
Iteración
96
Curva de Convergencia
123
GWOc
111
55
45
35
30
21
15
11
10
5 10 15 20 25 30
Iteración
Curva de Convergencia
101
91
LGWOc
Mejor cadena obtenida
63
59
52
42
37
31
25
23
19
11
10
5 10 15 20 25 30
Iteración
La Tabla 7.5 resume los resultados del experimento, donde se observa que LGWOc
obtuvo resultados idénticos a GWOc y otras metaheurísticas del estado del arte,
para el conjunto de exponentes evaluados, incluso superando el desempeño de GWOc
para el exponente 1087 donde dicha propuesta no logró obtener la longitud óptima
de cadena.
97
Tabla 7.5: Mejores resultados obtenidos por AIS [6], PSO [19], EP [8], GWOc y
LGWOc para un conjunto de exponentes “difíciles”.
Exp. Longitud
e Cadena AIS [6] PSO [19] EP [8] GWOc LGWOc
5 1, 2, 3, 5 3 3 3 3 3
7 1, 2, 4, 5, 7 4 4 4 4 4
11 1, 2, 4, 8, 10, 11 5 5 5 5 5
19 1, 2 ,4, 8, 16, 18, 19 6 6 6 6 6
29 1, 2, 3, 6, 7, 14, 28, 29 7 7 7 7 7
47 1, 2, 4, 8, 9, 18, 36, 45, 47 8 8 8 8 8
1, 2, 3, 6, 7, 14, 21, 35, 70,
71 9 9 9 9 9
71
1,2, 3, 6, 12, 18, 30, 60, 63,
127 10 10 10 10 10
126, 127
1, 2, 3, 6, 12, 18, 19, 38, 57,
191 11 11 11 11 11
95, 190, 191
1, 2, 3, 6, 9, 18, 27, 45, 72,
379 12 12 12 12 12
117, 189, 378, 379
1, 2, 3, 6, 9, 15, 30, 60, 61,
607 13 13 13 13 13
121, 182, 303, 606, 607
1, 2, 3, 6, 9, 18, 36, 54, 108,
1087 216, 324, 540, 541, 1082, 14 14 14 15 14
1085, 1087
A continuación se pueden observar las curvas de convergencia para cada uno de los
casos tratados en el experimento bajo la propuesta LGWOc. A fin de visualizar la
mejora de LGWOc sobre GWOc respecto de la cantidad de evaluaciones se presenta
las curvas de convergencia de ambas propuestas para cada exponente tratado en el
experimento.
Vale aclarar que en las siguientes gráficas los valores correspondientes al eje de
abscisas no parten de cero sino que lo hacen desde el menor valor encontrado de
longitud de cadena de adición para cada exponente.
98
Curva de Convergencia
4
GWOc
Curva de Convergencia
4
LGWOc
Mejor cadena obtenida
3
5 10 15 20 25 30
Iteración
Curva de Convergencia
6
GWOc
Mejor cadena obtenida
4
5 10 15 20 25 30
Iteración
Curva de Convergencia
6
LGWOc
Mejor cadena obtenida
4
5 10 15 20 25 30
Iteración
99
Curva de Convergencia
9
8
GWOc
5
5 10 15 20 25 30
Iteración
Curva de Convergencia
10
LGWOc
Mejor cadena obtenida
5
5 10 15 20 25 30
Iteración
Curva de Convergencia
15
GWOc
14
Mejor cadena obtenida
12
11
6
5 10 15 20 25 30
Iteración
Curva de Convergencia
14
13
LGWOc
Mejor cadena obtenida
12
11
10
6
5 10 15 20 25 30
Iteración
100
Curva de Convergencia
29
21
GWOc
19
16
13
12
10
7
5 10 15 20 25 30
Iteración
Curva de Convergencia
22
LGWOc
21
Mejor cadena obtenida
20
19
17
15
13
10
7
5 10 15 20 25 30
Iteración
Curva de Convergencia
28
25
GWOc
Mejor cadena obtenida
24
22
20
19
18
14
10
8
5 10 15 20 25 30
Iteración
Curva de Convergencia
28
24
LGWOc
Mejor cadena obtenida
21
17
14
13
12
11
10
8
5 10 15 20 25 30
Iteración
101
Curva de Convergencia
24
21
GWOc
18
16
14
13
12
11
10
9
5 10 15 20 25 30
Iteración
Curva de Convergencia
45
41
LGWOc
Mejor cadena obtenida
37
34
31
26
21
19
16
11
9
5 10 15 20 25 30
Iteración
Curva de Convergencia
40
38 GWOc
Mejor cadena obtenida
35
33
28
27
25
21
20
18
15
13
12
10
5 10 15 20 25 30
Iteración
Curva de Convergencia
43
33
LGWOc
Mejor cadena obtenida
31
28
23
19
17
15
12
11
10
5 10 15 20 25 30
Iteración
102
Curva de Convergencia
49
41
GWOc
38
35
33
32
31
15
14
13
11
5 10 15 20 25 30
Iteración
Curva de Convergencia
66
51
LGWOc
50
Mejor cadena obtenida
48
46
42
35
33
31
28
25
22
19
17
13
11
5 10 15 20 25 30
Iteración
Curva de Convergencia
58
GWOc
41
39
Mejor cadena obtenida
35
30
29
21
19
18
14
13
12
5 10 15 20 25 30
Iteración
Curva de Convergencia
58
44
33
LGWOc
Mejor cadena obtenida
31
30
27
23
21
19
14
13
12
5 10 15 20 25 30
Iteración
103
Curva de Convergencia
61
GWOc
52
41
39
30
28
23
20
13
5 10 15 20 25 30
Iteración
Curva de Convergencia
70
63 LGWOc
59
Mejor cadena obtenida
51
48
42
30
29
27
20
18
15
13
5 10 15 20 25 30
Iteración
Curva de Convergencia
144
111 GWOc
97
Mejor cadena obtenida
89
81
80
75
69
65
59
53
48
41
33
31
30
29
27
16
15
5 10 15 20 25 30
Iteración
Curva de Convergencia
103
91
LGWOc
Mejor cadena obtenida
77
75
66
58
47
40
35
33
21
14
5 10 15 20 25 30
Iteración
104
7.3 Discusión de los resultados
Los experimentos planteados en este capítulo son análogos a los descriptos en el los
Capítulos 5 y 6. Los experimentos de Secciones 7.2.1 y 7.2.2, pretenden evidenciar
mejoras en el desempeño de LGWOc y LGWOc_WSM, respecto de GWOc y
GWOc_SWM, comparando estas propuestas teniendo en cuentan que comparten
el objetivo de comparar longitutes de cadenas acumuladas para ciertos rangos de
exponentes.
En el experimento de Sección 7.2.1 se compara el rendimiento de LGWOc para hallar
longitudes mínimas de cadenas acumuladas en el rango [1,512], donde se evidenció
una mejora de LGWOc respecto de GWOc, ya que la longitud total acumulada para
cadenas del rango de referencia estuvo más cercana al total acumulado del método
determinista “Optimal” que GWOc, y por encima del resto de los otros métodos
comparados.
El experimento de Sección 7.2.2 plantea demostrar la mejora en longitudes totales de
cadenas acumuladas para exponentes en representación binaria de hasta una longitud
de 128-bits, respecto de GWOc, para el mismo rango y tomando 10 exponentes
aleatorios para replicar las condiciones del experimento de Sección 6.2.1. En función
de tratarse de exponentes grandes para este experimento se utilizó una estrategia
de combinación con mecanismo de ventana deslizante equivalente a la propuesta
GWOc_SWM, llamada LGWOc_SWM, obteniendo ésta última mejores resultados
que su antecesora.
105
y 7.2.4, que corresponden a la mejor ejeucución de cada caso, revelan que dichos
resultados fueron obtenidos en menor cantidad de iteraciones en LGWOc respecto
de GWOc, puesto que la curvas convergen a la longitud mínima de cadena asociada
al exponente en menos iteraciones (en algunos casos en las primeras).
Propuesta # Evaluaciones
GWOc 300
GWOc_SWM 300
LGWOc 3000
LGWOc_SWM 3000
PSO [19] 300000
AIS [6] -
EP [8] 92000
GA [26] 450000
106
Capítulo 8
107
de la cantidad de ejecuciones se ha utilizado la misma configuración en todas las
propuestas (30 ejecuciones) para que resulte válida la comparación pero se infiere
que con la mejora de hibridación de LGWOc y LGWOc_SWM, se podría mejorar,
observando las curvas de convergencia, puesto que en muchos casos el valor mínimo
de longitud de cadena es alcanzado rápidamente en las primeras evaluaciones.
108
local (LGWOc) a fin de validar si aportaba mejoras y ayudaba a la metaheurística a
resolver un conocido problema de estancamiento en soluciones óptimas locales y su
equivalente para manejo de exponentes grandes (LGWO_SWM). Ambas propuestas
con la misma configuración de parámetros de GWOc y GWOc_SWM lograron igualar
e incluso mejorar los resultados en menor cantidad de ejecuciones según los gráficos
de convergencia de las pruebas experimentales.
Las propuestas se consideran muy promisorias respecto de los tiempos de ejecución,
aunque no es posible establecer comparaciones mediante este criterio con las
propuestas del estado del arte. Sólo AIS [6] reportó un tiempo máximo de 170
milisegundos para exponentes de hasta 20-bits y tiempos menores para exponentes de
menor tamaño, pero no informa tiempos para rangos superiores. Los experimentos
planteados en este trabajo con exponentes menores o iguales a los 32-bits insumieron
máximo 180 milisegundos y para los casos de exponentes dentro del rango 128-bits
(experimentos de Secciones 6.2.1 y 7.2.2.) insumieron tiempos por debajo del minuto.
109
Bibliografía
[4] Bos, J. y Coster, M. (1990). Addition chain heuristics. Centrum voor Wiskunde
en Infomatica. Kruislaan 413. 1098 SJ Amsterdam. The Netherlands.
[7] Cruz-Cortés, N., Rodríguez-Henríquez, F., Juárez Morales, R., y Coello Coello,
C. (2005). Finding optimal addition chains using a genetic algorithm approach.
México.
[11] Goundar, R., Shiota, K., y Toyonaga, M. (2008). New strategy for doubling-free
short addition-subtraction chain. International Journal of Applied Mathematics
2.3. U.S.A., pages 438–445.
110
[12] Gómez Bello, M. (2011). La aritmética modular y algunas de sus aplicaciones.
Universidad Nacional de Colombia, Facultad de Ciencias - Maestría en Enseñanza
de las Ciencias Exactas y Naturales. Bogotá.
[14] Karaboga, D. (2005). An idea based on honey bee swarm for numerical
optimization. Erciyes University, Engineering Faculty, Computer Engineering
Department. Kayseri, Türkiye.
[17] Kaya Koc, C. (1995). Analysis of sliding window techniques for exponentiation.
Computers Math. Applic., 30, N10:17–24.
[22] Mech., D. (1999). Alpha status, dominance, and division of labor in wolf packs.
Canadian Journal of Zoology. Jamestown, Dakota del Norte.
[24] Mirjalili, S., Mirjalili, S., y Lewis, A. (2014). Grey wolf optimizer. School
of Information and Communication Technology, Griffith University, Nathan
Campus, Brisbane QLD 4111, Australia. Department of Electrical Engineering,
Faculty of Electrical and Computer Engineering, ShahidBeheshti University, G.C.
1983963113. Tehran, Iran.
111
[25] Nedjah, N. y De Macedo-Mourelle, L. (2004). Finding minimal addition chains
using ant colony. Department of Systems Engineering and Computation Faculty of
Engineering, State University of Rio de Janeiro. Rio de Janeiro, Brasil.
[26] Picek, S., Coello Coello, A., Jakobovic, D., y Metens, N. (2016). Evolutionary
algorithms for finding short addition chains: Going the distance. Volume 9595 of
the series Lecture Notes in Computer Science, pages 121–137.
[28] Rivest, R., Shamir, A., y Adlman, L. (1978). A method for obtaining digital
signatures and public-key cryptosystems. Cambridge.
[29] Rotger, L., Coma, J., y Tena-Ayuso, J. (2012). Criptografía con curvas elípticas.
Universitat Oberta de Catalunya. España.
112