Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
Centro Nacional de Investigación y Desarrollo Tecnológico
Departamento de Ciencias Computacionales
TESIS DE MAESTRÍA EN CIENCIAS
Desarrollo de una Herramienta de Apoyo al Análisis Experimental del Desempeño de Algoritmos Metaheurísticos
presentada por
Iliana Lizbeth Alvarado Lara Lic. en Informática por el Instituto Tecnológico de Zacatepec
como requisito para la obtención del grado de:
Maestría en Ciencias en Ciencias de la Computación
Director de tesis: Dr. Joaquín Pérez Ortega
Jurado:
Dra. Olivia Graciela Fragoso Díaz - Presidente
M.C. Humberto Hernández García - Secretario Dr. Joaquín Pérez Ortega - Vocal
Dr. Jaime Muñoz Arteaga - Vocal Suplente
Cuernavaca, Morelos, México. 17 de febrero de 2012
DEDICATORIA
No es fácil llegar, se necesita lucha y deseo, pero sobre todo apoyo como el que
he recibido durante este tiempo, ahora más que nunca se acredita mi cariño,
respeto y admiración a mis seres queridos.
Dedico esta tesis a mis padres Elodia Lara Montero y Raymundo Alvarado Valdez,
por sus enseñanzas de esfuerzo perpetuo, afectivo, respetuoso, por el gran amor
que les tengo y por enseñarme a luchar por lo que quiero.
A mi esposo Oscar Enrique Flores Alarcón, por el apoyo constante, la paciencia
enorme y sacrificada, y el gran amor que nos une sólidamente.
A mi hermana Cindy Alvarado Lara y a mi sobrino Christopher Uriel Colín Alvarado
por el cariño incondicional que siempre me han mostrado y por el gran amor que
siento por ellos.
A todos los miembros de las familias Lara, Alvarado, Alarcón y Flores por la
voluntad de conservar los lazos familiares.
A mis nuevos amigos de IS; Blanca, Luci, Christi, Ricardo y Adrian, por su cariño y
apoyo.
RECONOCIMIENTOS
Mi profundo agradecimiento a los miembros del comité tutorial de esta tesis: Dr.
Joaquín Pérez Ortega, Dr. René Santaolaya Salgado, M.C. Adriana Mexicano
Santoyo, M.C. Olivia Graciela Fragoso Díaz, M.C. Humberto Hernández García,
Dr. Jaime Muñoz Arteaga.
En especial, mi sincero aprecio al Dr. Joaquín Pérez Ortega por haber dirigido esta
tesis; y al Dr. René Santaolaya Salgado, M.C. Adriana Mexicano Santoyo por sus
valiosas sugerencias y críticas.
Reciban mi reconocimiento las instituciones participantes. Estoy en deuda con el
Centro Nacional de Investigación y Desarrollo Tecnológico (CENIDET), quien
proporcionó todas las facilidades necesarias para esta investigación. Así como con
el Consejo Nacional de Ciencia y Tecnología (CONACYT) por el apoyo brindado
durante los dos años del posgrado.
A mis maestros por sus valiosas enseñanzas, gracias por su paciencia, por su
comprensión y por sus consejos.
Finalmente, doy gracias Dios por acompañarme en todo momento de dificultad,
permitirme terminar satisfactoriamente mi posgrado y por cuidar a mi familia en las
horas de ausencia.
i
RESUMEN
En este trabajo se abordó el desarrollo de una herramienta de apoyo al
análisis experimental del comportamiento de algoritmos metaheurísticos
orientados a la solución del problema de Bin Packing de una dimensión, a la cual
se le denominó VICAM. Tradicionalmente el análisis del comportamiento de los
algoritmos metaheurísticos estaba limitado a estudiar los resultados de los
algoritmos al término de su ejecución, como cajas negras. Sin embargo, se
carecía de elementos para explicar el comportamiento durante la ejecución del
algoritmo lo cual limitaba considerablemente el identificar aspectos del algoritmo
que pudieran mejorarse.
Actualmente se conocen varias herramientas orientadas a apoyar al análisis de
algoritmos metaheurísticos, sin embargo, solo una está orientada al problema de
Bin Packing de una dimensión. Las herramientas más destacadas son: V-MDF,
VIZ, TSPAntSim, CuboidTSP, SphereTSP y VisTHAA. Dichas herramientas están
inmersas en el código del algoritmo que analizan, lo cual las imposibilita para
analizar otros algoritmos. Otra particularidad es que muestran sus resultados al
tiempo de ejecución, limitando la reproducción de alguna ejecución de interés para
su análisis detallado. En contraste con las herramientas mencionadas, VICAM
tiene las siguientes características: a) cuenta con una interfaz que le permite el
paso de parámetros entre el algoritmo a analizar y VICAM, b) almacena en una
base de datos los valores de los parámetros al tiempo de ejecución posibilitando el
análisis detallado de cualquier ejecución, c) permite visualizar de manera gráfica
y tabular las soluciones generadas en las diferentes fases de ejecución del
algoritmo. VICAM fue validada con una implementación algorítmica que da
solución al problema de Bin Packing de una dimensión y un conjunto de 45
instancias, con resultados satisfactorios. En particular, se identificó al menos un
punto de mejora importante, el cual consistió en mejorar el criterio de paro. Con
base en los resultados obtenidos en esta tesis, se proponen como trabajos futuros
el desarrollo de este tipo de herramientas orientadas a otros problemas
combinatorios.
ii
ABSTRACT
In this work the development of a visualization tool for analyzing the
behavior of metaheuristic algorithms to solve the Bin Packing Problem called
VICAM is presented. Traditionally the analysis of metaheuristic algorithms has
been limited to study the output solutions at the end of its execution, as black
boxes. However, the lack of elements to explain the behavior during the execution
of the algorithm limits significantly the identification of aspects that could be
improved.
Currently several tools designed to support the analysis of metaheuristic algorithms
have been developed, however, as the author’s knowledge, only one of them is
used for analyzing algorithms for solving the one-dimensional Bin Packing
problem. In this sense, the most important tools are; V-MDF, VIZ, TSPAntSim,
CuboidTSP, SphereTSP, and VisTHAA. For all these tools, the algorithm that is
going to be analyzed, have to be implemented inside the visual tool framework, this
feature limits the tools for analyzing other algorithms. Other peculiarity is that they
only show their results on runtime, avoiding the reproduction of any execution of
interest for doing a detailed analysis. In contrast to the mentioned tools, VICAM
has the following characteristics; a) it has an interface that allows the pass of
parameters between the algorithm to analyze and VICAM, b) every execution and
the parameter changes of metaheuristic are stored in a database; it allows the
manipulation data by SQL queries and permits analyzing different stages of
algorithm performance, and c) the visual abstraction of the whole or specific parts
of algorithm executions can be accessed for doing detailed analyzes by means of
observing visual patterns. VICAM was validated using the implementation of an
algorithm that solves the one-dimensional Bin Packing problem and a set of 45
instances, and satisfactory results were obtained. In particular, by means of using
VICAM, a significant improvement in the stopping criterion was detected. Based on
the obtained results, the development of visual tools oriented to analyze
metaheuristics that solve other combinatorial problems is proposed as future work.
iii
TABLA DE CONTENIDO
Página
1INTRODUCCIÓN ........................................................................................................................................... 1
1.1 MOTIVACIONES ..................................................................................................................................... 3
1.2 DESCRIPCIÓN DEL PROBLEMA DE INVESTIGACIÓN .................................................................... 4
1.3 OBJETIVO DE LA TESIS ........................................................................................................................ 5
1.3.1 Objetivo general ................................................................................................................................. 5
1.3.2 Objetivos específicos .......................................................................................................................... 5
1.4 CONTEXTO DE LA INVESTIGACIÓN .................................................................................................. 6
1.5 ORGANIZACIÓN DEL DOCUMENTO .................................................................................................. 7
2 TRABAJOS RELACIONADOS ................................................................................................................... 8
2.1 ANÁLISIS DE ALGORITMOS METAHEURÍSTICOS MEDIANTE EL USO DE MÉTODOS
ESTADÍSTICOS ............................................................................................................................................. 8
2.2 HERRAMIENTAS DE VISUALIZACIÓN GRÁFICA .......................................................................... 11
2.3 ANÁLISIS COMPARATIVO ................................................................................................................. 14
3 DESARROLLO DE LA HERRAMIENTA ............................................................................................... 18
3.1 AUDIENCIA ........................................................................................................................................... 18
3.2 ANÁLISIS ............................................................................................................................................... 18
3.2.1 Modelo conceptual de la herramienta .............................................................................................. 18
3.2.2 Definición de requerimientos ........................................................................................................... 19
3.2.2.1 Definición de requerimientos de la biblioteca ............................................................................................ 19
3.2.2.2 Definición de requerimientos de la base de datos ....................................................................................... 20
3.2.2.3 Definición de requerimientos del visualizador gráfico ............................................................................... 21
3.3 DISEÑO .................................................................................................................................................. 24
3.3.1 Biblioteca de funciones .................................................................................................................... 24
3.3.1.1 Función “Parametros” ................................................................................................................................. 24
3.3.1.2 Función “Solucion” .................................................................................................................................... 25
3.3.1.3 Función “Almacenamiento” ....................................................................................................................... 26
3.3.2 Diseño de la base de datos relacional .............................................................................................. 27
3.3.2.1 Modelo relacional ....................................................................................................................................... 27
3.3.2.2 Diccionario de datos ................................................................................................................................... 27
3.3.3 Visualizador gráfico ......................................................................................................................... 31
3.3.3.1 Diagramas de flujo...................................................................................................................................... 32
3.3.3.1.1 Visualización del desempeño .............................................................................................................. 32
3.3.3.1.2 Visualización gráfica ........................................................................................................................... 33
3.3.3.1.3 Visualización tabular ........................................................................................................................... 34
iv
3.4 IMPLEMENTACIÓN DE LA HERRAMIENTA VICAM .................................................................................... 35
3.4.1 Menú principal de la herramienta .................................................................................................... 35
3.4.2 Visualización del desempeño ............................................................................................................ 35
3.4.3 Visualización gráfica ........................................................................................................................ 37
3.4.4 Visualización tabular ....................................................................................................................... 38
3.5 IMPLEMENTACIÓN DE LA BIBLIOTECA DE FUNCIONES ............................................................................... 39
4 PRUEBAS EXPERIMENTALES ............................................................................................................... 42
4.1 DESCRIPCIÓN DE LOS DATOS .......................................................................................................... 42
4.1.2 Algoritmo de prueba ......................................................................................................................... 42
4.1.3 Conjunto de instancias de Bin Packing ............................................................................................ 43
4.1.3.1 Instancias del grupo Hard28 ....................................................................................................................... 43
4.1.3.2 Instancias del grupo WAE_GAU1 ............................................................................................................. 44
4.2 EXPERIMENTACIÓN ........................................................................................................................... 44
5 ANÁLISIS DE RESULTADOS .................................................................................................................. 49
5.1 ANÁLISIS DE LA REPRODUCCIÓN DEL COMPORTAMIENTO .................................................... 49
5.2 PROCEDIMIENTO ACTUAL DEL ALGORITMO .............................................................................. 51
5.3 PROPUESTA DE MEJORA AL ALGORITMO ..................................................................................... 53
5.4 RESULTADOS OBTENIDOS ................................................................................................................ 54
6 CONCLUSIONES Y TRABAJOS FUTUROS .......................................................................................... 58
6.1 CONCLUSIONES ................................................................................................................................... 58
6.2 TRABAJOS FUTUROS .......................................................................................................................... 60
6.3 LISTA DE PUBLICACIONES ............................................................................................................... 60
REFERENCIAS .............................................................................................................................................. 62
ANEXO A. MANUAL DE USUARIO DE LA HERRAMIENTA .............................................................. 69
v
LISTA DE TABLAS
Página
TABLA 1 TRABAJOS RELACIONADOS CON EL APOYO AL ANÁLISIS DEL COMPORTAMIENTO DE ALGORITMOS
METAHEURÍSTICOS .................................................................................................................................... 16
TABLA 2 REQUERIMIENTOS GENERALES DE LA BIBLIOTECA ............................................................................. 20
TABLA 3 REQUERIMIENTOS GENERALES DE LA BASE DE DATOS ...................................................................... 20
TABLA 4 REQUERIMIENTOS GENERALES DEL VISUALIZADOR GRÁFICO ............................................................ 22
TABLA 5 DESCRIPCIÓN DE LOS ARGUMENTOS DE ENTRADA DE LA FUNCIÓN “PARAMETROS” ........................ 25
TABLA 6 DESCRIPCIÓN DE LOS ARGUMENTOS DE ENTRADA DE LA FUNCIÓN “SOLUCION” .............................. 26
TABLA 7 DESCRIPCIÓN DE LA TABLA “INSTANCIAS” .......................................................................................... 28
TABLA 8 DESCRIPCIÓN DE LA TABLA “PESOS_INSTANCIAS” ............................................................................ 29
TABLA 9 DESCRIPCIÓN DE LA TABLA “DESCRIPCION_SOLUCION” ................................................................... 29
TABLA 10 DESCRIPCIÓN DE LA TABLA “CONTENEDORES_SOLUCION” ............................................................ 30
TABLA 11 RESULTADOS OBTENIDOS DE LAS INSTANCIAS HARD28 ................................................................. 55
TABLA 12 RESULTADOS OBTENIDOS DE LAS INSTANCIAS WAE_GAU1 ......................................................... 55
TABLA 13 COMPARACIÓN DEL NÚMERO DE SOLUCIONES GENERADAS CON LA IMPLEMENTACIÓN
ALGORÍTMICA Y LAS INSTANCIAS DEL GRUPO WAE_GAU1 .................................................................... 56
TABLA 14 COMPARACIÓN DEL NÚMERO DE SOLUCIONES GENERADAS CON LAS IMPLEMENTACIONES
ALGORÍTMICAS Y LAS INSTANCIAS DEL GRUPO HARD28 .......................................................................... 57
vi
LISTA DE FIGURAS
Página
FIGURA 1 ESQUEMA GENERAL DEL PROBLEMA .................................................................................................. 4
FIGURA 2 MODELO CONCEPTUAL DE LA HERRAMIENTA ................................................................................... 19
FIGURA 3 MODELO RELACIONAL ...................................................................................................................... 27
FIGURA 4 DESCRIPCIÓN GENERAL DEL VISUALIZADOR .................................................................................... 31
FIGURA 5 DIAGRAMA DE FLUJO DE LA VISUALIZACIÓN DEL DESEMPEÑO ......................................................... 32
FIGURA 6 DIAGRAMA DE FLUJO DE LA VISUALIZACIÓN GRÁFICA ...................................................................... 33
FIGURA 7 DIAGRAMA DE FLUJO DE LA VISUALIZACIÓN TABULAR ...................................................................... 34
FIGURA 8 MENÚ PRINCIPAL DE VICAM ............................................................................................................ 35
FIGURA 9 MÓDULO DE LA VISUALIZACIÓN DEL DESEMPEÑO ............................................................................ 36
FIGURA 10 MÓDULO DE LA VISUALIZACIÓN GRÁFICA ....................................................................................... 38
FIGURA 11 MÓDULO DE LA VISUALIZACIÓN TABULAR ....................................................................................... 39
FIGURA 12 IMPLEMENTACIÓN DE LA FUNCIÓN “PARAMETROS” ....................................................................... 39
FIGURA 13 IMPLEMENTACIÓN DE LA FUNCIÓN “ALMACENAMIENTO” ................................................................ 40
FIGURA 14 PROCESO DE EXPERIMENTACIÓN ................................................................................................... 44
FIGURA 15 LLAMADO DE FUNCIONES EN LA IMPLEMENTACIÓN ALGORÍTMICA ................................................. 45
FIGURA 16 DESEMPEÑO DE LA IMPLEMENTACIÓN ALGORÍTMICA CON LA INSTANCIA TEST0030 .................. 46
FIGURA 17 VISUALIZACIÓN TABULAR DE LA SOLUCIÓN DE LA INSTANCIA TEST0030 .................................... 47
FIGURA 18 VISUALIZACIÓN GRÁFICA DE LA SOLUCIÓN ÓPTIMA DE LA INSTANCIA TEST0030 ........................ 48
FIGURA 19 COMPORTAMIENTO DE LA IMPLEMENTACIÓN ALGORÍTMICA CON LA INSTANCIA HBPP47 ............ 50
FIGURA 20 COMPORTAMIENTO DE LA IMPLEMENTACIÓN ALGORÍTMICA CON LA INSTANCIA HBPP561 .......... 51
FIGURA 21 MENÚ PRINCIPAL DE VICAM ......................................................................................................... 69
FIGURA 22 MENÚ DE VISUALIZACIÓN DE SOLUCIONES..................................................................................... 69
FIGURA 23 PANTALLA DE LA VISUALIZACIÓN DEL COMPORTAMIENTO ............................................................. 70
FIGURA 24 PARÁMETROS DE CONFIGURACIÓN PARA LA VISUALIZACIÓN DEL COMPORTAMIENTO .................. 70
FIGURA 25 MANIPULACIÓN DE LA GRÁFICA ...................................................................................................... 71
FIGURA 26 GRÁFICA DEL COMPORTAMIENTO................................................................................................... 71
FIGURA 27 PANTALLA DE LA VISUALIZACIÓN GRÁFICA ..................................................................................... 72
FIGURA 28 PARÁMETROS DE CONFIGURACIÓN PARA LA VISUALIZACIÓN GRÁFICA .......................................... 73
FIGURA 29 PARÁMETROS DE CONFIGURACIÓN DEL GRÁFICO .......................................................................... 73
FIGURA 30 DESCRIPCIÓN DE LA EJECUCIÓN .................................................................................................... 74
FIGURA 31 VISUALIZACIÓN GRÁFICA (ACOMODO DE LOS PESOS EN LOS CONTENEDORES) ........................... 75
FIGURA 32 PANTALLA DE LA VISUALIZACIÓN TABULAR DE LA EJECUCIÓN ....................................................... 76
FIGURA 33 PANTALLA DE LA VISUALIZACIÓN TABULAR DE LA SOLUCIÓN ......................................................... 77
FIGURA 34 MENÚ DE BASE DE DATOS .............................................................................................................. 77
FIGURA 35 PANTALLA DE RESTAURACIÓN DE BASE DE DATOS ........................................................................ 78
vii
FIGURA 36 MENÚ DE AYUDA ............................................................................................................................. 78
FIGURA 37 PANTALLA DE AYUDA PARA EL MANEJO DE LA HERRAMIENTA VICAM .......................................... 79
FIGURA 38 PANTALLA DE INFORMACIÓN GENERAL DE LA HERRAMIENTA VICAM ........................................... 79
viii
GLOSARIO
BPP: Bin Packing Problem
QAP: Quadratic Assignment Problem
TSP: Travelling Salesman Problem
MTP: Military Transport Planning
HGGA-BP: Hibrid Grouping Genetic Algorithm
TS: Tabu Search
ACO: Ant Colony Optimization
SA: Simulated Anneling
GA: Genetic Algorithm
MTP: Military Transport Planning
ILS: Iterative Local Search
ReTS: Reactive Tabu Search
SLS: Stochastic Local Search
RoTS: Robust Tabu Search
VICAM: Visualización del Comportamiento de Algoritmos Metaheurísticos
1
Capítulo 1 INTRODUCCIÓN
Capítulo 1
INTRODUCCIÓN
Un problema de optimización combinatoria consiste en encontrar una solución con
el valor mínimo de la función objetivo dentro de un conjunto de soluciones
[Papadimitriou82, Blum03, Murty95], un ejemplo de un problema de optimización
combinatoria es el problema de Bin Packing de una dimensión (Problema de
Empaquetado de objetos en contenedores) [Tirado09], a partir de un conjunto
finito de elementos con pesos asociados se crean subconjuntos de tal forma que
la suma de pesos de cada subconjunto no exceda la capacidad del contenedor
con el objetivo de encontrar el número mínimo de contenedores [Coffman02,
Daza09, Yang08].
En el caso particular del problema de Bin Packing de una dimensión, con la
finalidad de encontrar soluciones a las instancias del problema, varios algoritmos
han sido desarrollados incluyendo los enfoques realizados en [Martello90,
Bhatia04, Ducatelle04, Fleszar02, Gómez09, Jing06, Stawowy08, Ülker08].
Entre los enfoques alternativos para abordar problemas complejos de
búsqueda, se destaca la computación evolutiva [Pino01] con los algoritmos
genéticos [Holland75, Falkenauer96, Nieto07] y una gran variedad de algoritmos
metaheurísticos, como recocido simulado [Kirkpatrick83], optimización de colonia
de hormigas [Dorigo92, Ducatelle01], búsqueda tabú [Glover86, Scholl97,
Alvim04], entre otros [Maroto02, Rayward96, Osman96].
2
Capítulo 1 INTRODUCCIÓN
Debido a que este tipo de algoritmos no garantiza la obtención de los
óptimos globales para todos los casos, se han hecho varios intentos para mejorar
los algoritmos mediante el análisis de su comportamiento.
Tradicionalmente el análisis del comportamiento de algoritmos
metaheurísticos se ha enfocado en la eficiencia [Cruz99, Pérez02, Pérez07,
Landero08], el desempeño [Hooker94, Barr95, Cohen95, McGeoch02, Lemeire04,
Lemeire05, Lemeire07 Quiroz09], en la aplicación de algunos métodos
estadísticos [Tukey77, Hartwig79, Liu96], y la estadística descriptiva [Cruz04,
Álvarez06].
Uno de los intentos más prometedores es la creación de herramientas que
muestren gráficamente el comportamiento de los algoritmos que dan solución a
problemas de optimización combinatoria.
Actualmente el análisis del comportamiento de los algoritmos
metaheurísticos representa un gran reto debido a que las herramientas actuales
son limitadas y hasta ahora no se sabe con exactitud cómo se comportan los
algoritmos metaheurísticos. Sin embargo resulta de interés conocer que ocurre
dentro del algoritmo mientras se ejecuta para encontrar la solución.
Sabiendo que uno de los retos presentes en el área de la algoritmia es el
desarrollo de herramientas de software que ayuden a analizar el comportamiento
de los algoritmos metaheurísticos, resulta de gran utilidad la creación de
herramientas de visualización gráfica que apoyen al análisis experimental del
comportamiento de los algoritmos metaheurísticos que dan solución al problema
de Bin Packing de una dimensión para la mejora de estos.
3
Capítulo 1 INTRODUCCIÓN
1.1 MOTIVACIONES
En los trabajos revisados se observó que el análisis de los algoritmos
metaheurísticos se ha realizado en dos enfoques:
El primer enfoque se base en los resultados de las soluciones que arroja,
empleando métodos estadísticos, métricas de desempeño, eficiencia y
eficacia, sin embargo, no se han analizado en profundidad los basados en
el desempeño del algoritmo en cada una de sus diferentes fases de
ejecución, lo cual limita un análisis en detalle que potencie la mejora de los
algoritmos.
El segundo enfoque es mediante herramientas visuales, la limitante que
presenta este enfoque es la relación que se tiene entre la herramienta y la
implementación algorítmica debido a que trabajan de manera monolítica, lo
cual limita la experimentación de la herramienta con otras
implementaciones algorítmicas.
En ninguna de las herramientas de visualización revisadas tienen
considerado lo siguiente:
Hacer uso de una interfaz entre la herramienta y la implementación
algorítmica para extraer la información de las soluciones generadas durante
la ejecución de la implementación algorítmica.
Hacer uso de una base de datos, sin embargo, se consideró importante la
interacción con un repositorio de datos que permita el almacenamiento de
parámetros y la reproducción del comportamiento de la implementación
algorítmica.
Visualizar el comportamiento de implementaciones algorítmicas que dan
solución al problema de Bin Packing de una dimensión.
4
Capítulo 1 INTRODUCCIÓN
1.2 DESCRIPCIÓN DEL PROBLEMA DE INVESTIGACIÓN
El problema de investigación que se aborda en este trabajo se describe a
continuación:
“Se desconoce el comportamiento de los algoritmos metaheurísticos al
tiempo de ejecución debido a que cuentan con un componente de aleatoriedad
que produce soluciones no deterministas”.
Figura 1 Esquema general del problema
b) Implementación algorítmica que da solución al problema de Bin
Packing de 1 dimensión
Solución 1
Contenedores: 5
Capacidad contenedor: 20
Contenedor1={5,7,8}
Contenedor2={2,6,7,4}
Solución n
Contenedores: 4
Capacidad contenedor: 20
Contenedor1={7,7,6}
Contenedor2={2,4,5,8}
…
d) Soluciones no deterministas
a) Conjunto de instancias de
prueba
5
Capítulo 1 INTRODUCCIÓN
Una descripción gráfica del problema se muestra en la Figura 1, se observa
que teniendo como entrada un mismo conjunto de instancias de prueba (a) y una
misma implementación algorítmica que da solución al problema de bin packing de
una dimensión (b), debido al componente de aleatoriedad que implementan este
tipo de algoritmos (c), se pueden obtener diferentes soluciones no deterministas,
pudiendo ser algunas mejores que otras (d), por lo que se desconoce el camino
que el algoritmo toma en cada caso.
Como puede apreciarse, en este enfoque se considera el comportamiento
de los algoritmos como una caja negra en donde solo se conocen sus datos de
entrada y los resultados finales del algoritmo, lo cual limita el análisis detallado del
comportamiento de los algoritmos metaheurísticos que dan solución al problema
de Bin Packing de una dimensión y su posible mejora.
La tarea primordial de esta investigación es determinar si es factible
mediante una herramienta visual conocer que pasa durante la ejecución de los
algoritmos metaheurísticos que dan solución al problema de Bin Packing de una
dimensión, con la finalidad de contribuir a su mejora.
1.3 OBJETIVO DE LA TESIS
A continuación se presentan el objetivo general y los objetivos específicos de esta
investigación.
1.3.1 Objetivo general
Determinar si es factible apoyar al análisis experimental del comportamiento de
algoritmos metaheurísticos orientados a la solución del problema de Bin Packing
de una dimensión mediante el desarrollo de una herramienta visual.
1.3.2 Objetivos específicos
De manera particular la herramienta a desarrollar debe tener las siguientes
características:
6
Capítulo 1 INTRODUCCIÓN
a) Que con una interfaz que le permita el paso de parámetros entre un
algoritmo que de solución al problema de Bin Packing de una dimensión
y la herramienta para su análisis.
b) Que almacene en una base de datos los valores de los parámetros al
tiempo de ejecución, posibilitando posteriormente el análisis detallado de
cualquier ejecución.
c) Que permita reproducir cualquier ejecución, visualizando de manera
gráfica y tabular los valores de las soluciones producidas por la
implementación algorítmica al tiempo de ejecución.
1.4 CONTEXTO DE LA INVESTIGACIÓN
En el Centro Nacional de Investigación y Desarrollo Tecnológico se han
desarrollado varias tesis sobre el análisis del comportamiento de los algoritmos
metaheurísticos, de las cuales se mencionan las siguientes:
a) “Clasificación de Algoritmos Heurísticos para la Solución de Problemas
de Bin Packing”, en este trabajo se propuso una metodología para
caracterizar el desempeño de algoritmos metaheurísticos basada en el
uso de índices de complejidad, en el uso de técnicas estadísticas y de
aprendizaje automático, se desarrollaron dos índices de complejidad
para analizar el desempeño final de algoritmos orientados a solucionar
el problema de Bin Packing de una dimensión [Cruz04].
b) “Metodología para la explicación causal del comportamiento y
desempeño de algoritmos heurísticos aplicados al problema de Bin
Packing”, en este trabajo se presenta una metodología basada en el
análisis causal y la estadística que permite identificar características
criticas del comportamiento y desempeño de los algoritmos, se
propusieron índices para caracterizar el comportamiento de los
algoritmos e índices para caracterizar el desempeño final del algoritmo
como la calidad de la solución y el tiempo que llevó encontrar la mejor
7
Capítulo 1 INTRODUCCIÓN
solución; en particular, para su aplicación al problema de Bin Packing de
una dimensión y los algoritmos de Aceptación por Umbral y Búsqueda
Tabú [Landero08].
1.5 ORGANIZACIÓN DEL DOCUMENTO
A continuación se describe como se encuentra organizado el resto de la tesis:
El Capítulo 2 muestra la revisión de los trabajos relacionados con el apoyo
al análisis del comportamiento de algoritmos metaheurísticos, así como las
herramientas visuales existentes que apoyan al análisis del comportamiento de
algoritmos metaheurísticos.
El Capítulo 3 presenta el desarrollo de la herramienta, mediante prototipos
rápidos se muestra la definición de requerimientos, el diseño de la herramienta, la
implementación y finalmente las pruebas desarrolladas.
El Capítulo 4 muestra la experimentación realizada para validar la
herramienta propuesta que apoya al análisis del comportamiento de algoritmos
metaheurísticos.
El Capítulo 5 presenta el análisis de los resultados obtenidos en base a las
pruebas de experimentación realizadas.
El Capítulo 6 muestra las conclusiones a las que se llegó durante el
desarrollo de esta investigación y se muestran algunos posibles trabajos futuros
que pueden dar continuidad a esta investigación.
8
Capítulo 2 HERRAMIENTAS DE APOYO AL ANÁLISIS DE ALGORITMOS
Capítulo 2
TRABAJOS RELACIONADOS
En esta sección se abordan los trabajos enfocados al estudiado del análisis del
comportamiento de los algoritmos mediante el uso de métodos estadísticos y las
herramientas visuales orientadas a apoyar el análisis del comportamiento de
algoritmos metaheurísticos.
2.1 ANÁLISIS DE ALGORITMOS METAHEURÍSTICOS MEDIANTE EL USO DE
MÉTODOS ESTADÍSTICOS
En esta sección se describen investigaciones que abordan el estudio del análisis
del comportamiento de algoritmos metaheurísticos mediante el uso de métodos
estadísticos, en contraste con el tema de tesis no cuentan con un visualizador
gráfico del comportamiento del algoritmo:
a) “Automatización del diseño de la Fragmentación Vertical y Ubicación en
Bases de Datos Distribuidas usando Métodos Heurísticos y Exactos”,
este trabajo muestra que a partir de datos experimentales y mediante un
tratamiento estadístico, se pueden obtener funciones de eficiencia y
eficacia de los algoritmos con lo cual es posible predecir el
comportamiento de estos, se mostró que se pudo obtener un algoritmo
que dados como entrada el tamaño del problema y los parámetros de
eficiencia y tolerancia deseados, recomienda el método de solución que
9
Capítulo 2 HERRAMIENTAS DE APOYO AL ANÁLISIS DE ALGORITMOS
cumple con los requerimientos, o bien, señala que la solución no es
factible. Para esto, se incorporaron en el algoritmo las funciones de
eficiencia y eficacia de los métodos. Con la función polinomial de
eficiencia de un algoritmo se pretende describir la relación entre el
tamaño del problema y el tiempo que tarda el algoritmo en obtener la
solución de dicho problema, usa el análisis de regresión para obtener las
funciones polinomiales que permiten estimar la eficiencia de los
algoritmos cuando se conoce el tamaño del problema. De esta manera,
el algoritmo de selección de métodos trata con problemas a gran escala,
por lo que la solución de problemas de tamaño real es factible [Cruz99].
b) “Predicción del Desempeño de Algoritmos Exactos y Heurísticos: un
Enfoque Estadístico”, en este artículo se muestra que es factible
caracterizar diferentes algoritmos obteniendo sus funciones de
desempeño lo que ayuda a comprender mejor el comportamiento de los
algoritmos, utilizando pruebas estadísticas muy conocidas para
relacionar significativamente el desempeño empírico de los algoritmos y
concluye cuál de ellos es el mejor, es decir, primero genera una muestra
representativa del comportamiento de los algoritmos, posteriormente
mediante análisis de regresión, determina las funciones de desempeño,
las que incorpora finalmente a un mecanismo de selección de algoritmos
[Pérez02].
c) “Modelo para representar la complejidad del problema y el desempeño
de algoritmos”, se desarrollaron 21 índices de complejidad basados en
estadística descriptiva para medir la influencia de las características
estructurales del problema sobre el desempeño algorítmico y se
desarrollo un método RPI (Regla de Pertenencia Informada) para validar
el desempeño del agente de selección de algoritmos, basado en reglas
de pertenencia que consideran el comportamiento de los algoritmos de
prueba [Álvarez06].
10
Capítulo 2 HERRAMIENTAS DE APOYO AL ANÁLISIS DE ALGORITMOS
d) “Modelado Causal del Desempeño de Algoritmos Metaheurísticos en
Problemas de distribución de objetos”, se desarrollo una metodología
para la construcción sistemática de modelos causales que representan
las relaciones entre la complejidad del problema, el comportamiento del
algoritmo y el desempeño obtenido por el mismo. El modelado causal
aplicado al análisis de algoritmos permite explicar con rigor estadístico,
cómo la naturaleza del problema y la estructura de diseño de los
algoritmos afectan su desempeño. Además se presenta la formulación
de indicadores que describen al problema, el comportamiento del
algoritmo y su desempeño y una estrategia para generar e interpretar
modelos causales a partir de indicadores del proceso algorítmico para
identificar relaciones entre problema, algoritmo y desempeño [Pérez07].
e) “Caracterización de factores de desempeño de algoritmos de solución
de BPP”, se desarrollo una metodología experimental para el análisis del
desempeño de algoritmos metaheurísticos que permite comprender el
comportamiento del algoritmo y mejorar su desempeño además se
definió un conjunto de índices de caracterización para el
comportamiento del algoritmo y se generaron modelos de desempeño
que permitieron obtener explicaciones del comportamiento del algoritmo
genético HGGA-BP en la solución de instancias de BPP (Bin Packing
Problem) con diferentes estructuras. [Quiroz09].
f) “Caracterización del Proceso de Optimización de Algoritmos
Heurísticos”, en este trabajo se desarrollo una metodología experimental
para el análisis del comportamiento de algoritmos metaheurísticos. Se
aportó un conjunto de índices de caracterización de BPP (Bin Packing
Problem) que impactan en el comportamiento y se mejoró el desempeño
del algoritmo HGGA-BP [Cruz10].
11
Capítulo 2 HERRAMIENTAS DE APOYO AL ANÁLISIS DE ALGORITMOS
2.2 HERRAMIENTAS DE VISUALIZACIÓN GRÁFICA
En los siguientes párrafos se encuentran los trabajos más destacados sobre
herramientas de visualización gráfica orientadas a apoyar al análisis del
comportamiento de algoritmos metaheurísticos.
a) “Visualizer for Metaheuristics Development Framework (V-MDF)”, es una
herramienta genérica de visualización gráfica orientada a la visualización
y sintonización de la trayectoria de búsqueda de soluciones de
algoritmos metaheurísticos enfocados a resolver problemas de
optimización combinatoria. El objetivo principal es reportar visualmente
cualquier anomalía al usuario y que por ende este pueda aplicar
estrategias que remedien los problemas. La herramienta cuenta con dos
módulos principales, Distance Radar: que muestra gráficamente por
medio de puntos de anclaje (ordenados de acuerdo a su valor objetivo),
la distancia, el valor de la función objetivo y la información reciente de
las mejores soluciones obtenidas comparándolas con la solución actual.
El segundo módulo llamado Rule-Based se encarga de almacenar
reglas que son extraídas durante la ejecución de la metaheurística que
se analiza, las cuales proporcionan información de los incidentes que se
registraron durante la ejecución, dichas reglas se utilizan posteriormente
para sintonizar los parámetros del problema o bien sirven para ser
implementadas como funciones que automáticamente se ejecuten para
mejorar el comportamiento de la búsqueda o implementaciones dentro
de la misma metaheurística. A diferencia de nuestro trabajo esta
herramienta requiere que cualquier metaheurística a analizar, deba ser
implementada dentro del marco que se propone y posteriormente
analizarla. En este caso la herramienta ha sido aplicada a las
metaheurísticas: Tabú Search, Ant Colony Optimization (ACO),
Simulated annealing, y Genetic algorithm; para resolver el problema
Military Transport Planning (MTP) [Hock08, Halim09, Hoong04].
12
Capítulo 2 HERRAMIENTAS DE APOYO AL ANÁLISIS DE ALGORITMOS
b) “The visualizer (VIZ)”, es una herramienta de visualización gráfica para
el análisis de algoritmos de búsqueda estocásticos utilizados para
resolver problemas de optimización combinatoria. La herramienta es
capaz de reproducir de forma animada el comportamiento del algoritmo
de búsqueda. Las funciones de visualización con las que cuenta
permiten observar: el valor de la función objetivo y el comportamiento de
la función objetivo (Fitness Distance Correlation). La herramienta
también cuenta con una barra de eventos que permite resaltar la
información de interés durante la búsqueda. Las gráficas son escalables
y es posible hacer acercamientos para analizar información de interés.
Con respecto al algoritmo que se analiza, permite observar los cambios
que se realizan durante la búsqueda de forma dinámica, y permite
comparar entre dos ejecuciones a la vez ya que la información se
almacena en registros. En este trabajo fueron implementados los
algoritmos: Iterated Local Search, Robust Tabu Search and Tabu
Search. En cuanto a la visualización del problema que se resuelve, la
herramienta cuenta con un mecanismo intuitivo directamente
relacionado con el problema de optimización combinatoria que se
resuelve, en este sentido la herramienta está acondicionada para
trabajar con los problemas: Travelling Salesman Problem (TSP), Low
Autocorrelation Binary Sequence y Quadratic Assignment Problem
(QAP). En cuanto a visualización tabular de información sobre la
ejecución, este trabajo presenta información numérica correspondiente a
lo que se visualiza y en caso de analizar dos ejecuciones a la vez,
permite comparar los resultados obtenidos en ambas ejecuciones.
Diferentes fases del desarrollo de este trabajo fueron publicadas en
[Hock07, Hoong07, Hoong06, Halim07, Halim05, Halim06].
c) “TSPAntSim”, es un software de análisis y simulación para resolver el
problema de TSP usando seis diferentes versiones del algoritmo ACO.
La herramienta permite calcular soluciones para TSP utilizando los
parámetros e instancias de entrada; dando como resultado la
13
Capítulo 2 HERRAMIENTAS DE APOYO AL ANÁLISIS DE ALGORITMOS
visualización gráfica de la solución actual y los cambios que ocurren en
cada ejecución, además muestra el nivel de feromona de las hormigas
después de cada iteración. También es posible la elección de una
hormiga específica y hacer un acercamiento con la finalidad de
monitorear todo su comportamiento y el cambio de los parámetros hasta
llegar a la solución final. Los resultados se pueden visualizar
textualmente y de ser necesario permite imprimirlos. Esta herramienta
está disponible en [Aybars08, TSPAntSim10].
d) “CuboidTSP”, es una herramienta de visualización 3D, para la solución
de una variante de TSP donde todos los puntos y rutas se encuentran
sobre la superficie de un cubo. Para la solución del problema se utiliza
un algoritmo genético. Con la finalidad de encontrar la distancia menor
entre puntos utiliza un algoritmo desarrollado específicamente para
calcular distancias mínimas de puntos sobre una superficie cuboide.
Esta herramienta de forma visual permite agregar instancias de prueba
por medio de puntos que el mismo usuario determina y puede modificar
y eliminar cuando necesite, en cuanto a los parámetros que utiliza el
algoritmo genético, la herramienta brinda la opción de modificarlos
manualmente con la finalidad poder entender y examinar las soluciones
arrojadas por el sistema. Las soluciones de las instancias son
representadas mediante la unión de los puntos colocados por el usuario
sobre la superficie cuboide. La herramienta está disponible en [Uğur09,
CuboidTSP10].
e) “SphereTSP”, herramienta de visualización gráfica 3D, diseñada
específicamente para resolver TSP en una superficie esférica. En esta
versión de TSP, las líneas planas son reemplazadas por círculos en un
espacio geométrico esférico. Con la finalidad de resolver el problema se
utiliza un algoritmo genético implementado en la herramienta. Con la
finalidad de resolver instancias de prueba, la herramienta permite que el
usuario coloque puntos sobre la superficie de la esfera, posteriormente
se resuelve la instancia y finalmente sobre la superficie de la esfera se
14
Capítulo 2 HERRAMIENTAS DE APOYO AL ANÁLISIS DE ALGORITMOS
despliega la solución encontrada por el algoritmo genético por medio de
líneas que unen cada nodo. Disponible en [SphereTSP10]. En este caso
la herramienta solamente permite ver los resultados sin permitir analizar
el proceso que realiza el algoritmo encargado de encontrar la solución
[Uğur08].
f) “VisTHAA”, es una herramienta visual aplicada al análisis de algoritmos
heurísticos. Esta diseñada por un conjunto de módulos que permiten
generar instancias, medir el desempeño y realizar un análisis
comparativo de algoritmos, los cuales incluyen; índices estadísticos que
permiten obtener medidas que cuantifican los factores que definen la
estructura del problema y el desempeño parcial y final del algoritmo,
representa gráficamente la estructura de una instancia, mediante
gráficas estadísticas visualiza características que describen los factores
del problema, muestra gráficamente el valor objetivo, el módulo de
análisis comparativo de algoritmos evalúa estadísticamente el
desempeño de dos algoritmos de diferente naturaleza o diferentes
versiones del mismo, el módulo de modelación del desempeño permite
establecer relaciones existentes entre los factores del algoritmo
metaheurístico y su desempeño, un enfoque lo constituye el modelado
causal [Castillo11].
2.3 ANÁLISIS COMPARATIVO
En esta sección se destaca un análisis comparativo de los trabajos relacionados a
este trabajo de investigación.
De acuerdo al estudio realizado de los trabajos relacionados, se observó
que las herramientas de visualización gráfica encaminadas a apoyar al análisis del
comportamiento de algoritmos metaheurísticos visualizan gráficamente las
soluciones que arrojan el algoritmo permitiendo sintonizar los parámetros o
modificar los algoritmos, lo cual contribuye a su mejora pero están muy limitadas a
analizar lo que sucede dentro del algoritmo durante su ejecución.
15
Capítulo 2 HERRAMIENTAS DE APOYO AL ANÁLISIS DE ALGORITMOS
Para el caso de los trabajos [Cruz99, Pérez02, Álvarez06, Pérez07,
Quiroz09, Cruz10, Castillo11] están enfocados al apoyo del análisis del
comportamiento de algoritmos metaheurísticos que dan solución al problema de
Bin Packing, con base en sus resultados finales y a las soluciones que arroja
empleando métodos estadísticos, métricas de desempeño, eficiencia y eficacia,
sin embargo, no se ha realizado un análisis profundo basándose en el
comportamiento del algoritmo en cada una de sus diferentes fases de ejecución, lo
cual limita un análisis a detalle que potencie la mejora de los algoritmos.
Por otra parte una fuerte limitación que se detectó en las herramientas
V-DMF, VIZ, TSPAntSim, CuboidTSP y SphereTSP es que están diseñadas para
trabajar con algoritmos que resuelven problemas de optimización combinatoria
diferentes a Bin Packing de una dimensión.
Las herramientas V-MDF, VIZ, TSPAntSim, CuboidTSP, SphereTSP y
VisTHAA tienen como limitante que el algoritmo que se va analizar debe ser
implementado dentro del marco de la herramienta visual para poder analizarlo.
En contraste con los trabajos relacionados, en esta tesis se presenta un
nuevo enfoque que consiste en desarrollar funciones que pueden ser insertadas
dentro de la implementación algorítmica que da solución al problema de Bin
Packing de una dimensión a fin de poder extraer y almacenar información en una
base de datos relacional y posteriormente mediante la visualización gráfica y
tabular reproducir las soluciones generadas por la implementación algorítmica en
sus diferentes fases de ejecución para su posterior análisis.
16
Capítulo 2 HERRAMIENTAS DE APOYO AL ANÁLISIS DE ALGORITMOS
En la Tabla 1 se contrastan las herramientas revisadas con respeto a la herramienta que se propone.
Tabla 1 Trabajos relacionados con el apoyo al análisis del comportamiento de algoritmos metaheurísticos
Herramientas de visualización gráfica
Trabajos relacionados
Bin
Packing
(1D)
Travelling
Salesman
Military
Transport
Planning
Quadratic
Assignment Reproducción
Interfaz con la
implementación
algorítmica
B.D. Visualización
Tabular
Trabaja
de
manera
Monolítica
V-MDF
VIZ
TSPAntSim
CuboidTSP
SphereTSP
VisTHAA
VICAM
La columna “Trabajos relacionados” muestra el nombre de la herramienta cuyas características se resumen en la
tabla. Las columnas “Bin Packing (1D), Travelling Salesman, Military Transport Planning y Quadratic Assignment” indican si
la herramienta permite visualizar el comportamiento de un algoritmo orientado a resolver cada uno de los problemas de
optimización combinatoria respectivamente. En este caso podemos observar que la herramienta propuesta en esta tesis
denominada VICAM y la herramienta denominada VisTHAA están orientadas a apoyar al análisis del comportamiento de
algoritmos que dan solución al problema de Bin Packing de una dimensión.
17
Capítulo 2 HERRAMIENTAS DE APOYO AL ANÁLISIS DE ALGORITMOS
La columna “Reproducción” indica si es posible la reproducción de
ejecuciones, las herramientas V-MDF y VIZ permiten la reproducción de
ejecuciones, sin embargo, VICAM cuenta con un módulo de base de datos
relacional para almacenar la información de cada ejecución lo que permite
accederla en el momento que se requiera, además de que brinda la posibilidad de
ejecutar consultas en SQL de interés para el usuario.
La columna “Interfaz con la implementación algorítmica” indica si la
herramienta cuenta con una interfaz entre el algoritmo a analizar y la herramienta,
mediante una biblioteca de funciones que pueda ser invocada en la
implementación del algoritmo, lo cual le permite la generalidad, esta característica
solo se presenta en VICAM.
La columna “B.D.” indica si la herramienta cuenta con una base de datos
para el almacenamiento de parámetros.
La columna “Visualización tabular” indica si la herramienta puede mostrar
información de forma tabular. Como se puede observar TSPAntSim y VICAM
permiten visualizar información de forma tabular.
La columna “Trabaja de manera monolítica” indica si la herramienta de
visualización como el algoritmo que se analiza forman parte del mismo código del
sistema, esta característica se presenta en V-MDF, VIZ, TSPAntSim, CuboidTSP,
SphereTSP y VisTHAA.
Las principales características que presenta la herramienta se describen en
el Capítulo 3.
18
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
Capítulo 3
DESARROLLO DE LA HERRAMIENTA
En este capítulo se presenta el desarrollo de la herramienta de apoyo al análisis
del comportamiento de algoritmos metaheurísticos orientados a la solución del
problema de Bin Packing de una dimensión.
3.1 AUDIENCIA
En particular esta herramienta está orientada a aquellos usuarios que trabajan con
el análisis, desarrollo y mejora de los algoritmos metaheurísticos orientados a la
solución del problema de Bin Packing de una dimensión.
3.2 ANÁLISIS
Desarrollar una herramienta orientada a apoyar al análisis del comportamiento de
algoritmos metaheurísticos que dan solución al problema de Bin Packing de una
dimensión que permita extraer y almacenar los valores de los parámetros de la
implementación algorítmica al tiempo de ejecución y posteriormente reproducir las
ejecuciones.
3.2.1 Modelo conceptual de la herramienta
En la Figura 2 se observa que es necesario insertar el código que llama a las
funciones de la biblioteca (a.1) dentro de la implementación algorítmica (a.2) con
la finalidad de almacenar los parámetros en la base de datos (b) para su posterior
19
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
análisis. Una vez almacenada la información es posible reproducir la ejecución
mediante el visualizador gráfico (c), el cual proporciona tres opciones de
reproducción: en primer lugar, las ejecuciones de forma gráfica (i) permiten
reproducir la asignación de los pesos en cada contenedor; a continuación, el
desempeño general de la implementación algorítmica (ii), permite graficar los
valores objetivos producidos en cada ejecución, y finalmente, las ejecuciones de
forma tabular (iii), permiten reproducir el acomodo de los pesos en cada
contenedor de cada una de las soluciones.
Figura 2 Modelo conceptual de la herramienta
3.2.2 Definición de requerimientos
Con base en el modelo relacional se describen los requerimientos generales de la
biblioteca de funciones, de la base de datos y del visualizador gráfico.
3.2.2.1 Definición de requerimientos de la biblioteca
Para extraer información al tiempo de ejecución de la implementación algorítmica
que da solución al problema de Bin Packing de una dimensión se debe desarrollar
una interfaz que cumpla con los requerimientos generales que se muestran en la
Tabla 2.
c) Visualizador gráfico
1
2
b
0
0
a
10
5
I1
20
25
I2
i)
ii)
iii)
b) Base de datos
BD
Implementación algorítmica
Begin {
…..
….
…. } End
Parametros
Solucion
a.1) Biblioteca a.2) Inserción de
código
Parametros ();
Solucion ();
Almacenamiento Almacenamiento ();
20
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
Tabla 2 Requerimientos generales de la biblioteca
DESCRIPCIÓN DEL REQUERIMIENTO
1 El lenguaje de desarrollo de la interfaz para la extracción de información debe ser el mismo lenguaje de la implementación algorítmica, en este caso es lenguaje C.
2 Extraer la siguiente información de la instancia que se resuelve:
El nombre de la instancia.
La capacidad del contenedor.
El número de elementos que forman parte de la instancia.
El límite teórico.
El indicador que informa si la instancia ha sido resuelta (-1, indica que la instancia aún no ha sido resuelta, 1, indica que la instancia ha sido resuelta).
3 Extraer la siguiente información de la solución generada en cada una de las diferentes fases de ejecución de la implementación algorítmica que da solución al problema de bin Packing de una dimensión:
El número del contenedor.
El peso asignado a cada contenedor.
4 Extraer el número de ejecución interna de la implementación algorítmica que da solución al problema de Bin Packing de una dimensión.
5 Extraer el número de solución producida en cada una de las ejecuciones internas de la implementación algorítmica.
6 Almacenar la información extraída de la implementación algorítmica en una base de datos relacional, el desarrollo de esta función debe ser implementado en C#.
3.2.2.2 Definición de requerimientos de la base de datos
Para reproducir el comportamiento de la implementación algorítmica que da
solución al problema de Bin Packing de una dimensión se debe crear una base de
datos relacional que cumpla con los requerimientos listados en la Tabla 3.
Tabla 3 Requerimientos generales de la base de datos
DESCRIPCIÓN DEL REQUERIMIENTO
1 El manejador de la base de datos que se debe utilizar es SQL Server 2005.
2 Se debe almacenar la siguiente información de la instancia:
El nombre de la instancia.
21
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
La capacidad del contenedor..
El número de elementos que forman la instancia.
El límite teórico.
El indicador que informa si la instancia ha sido resuelta (-1, indica que la instancia aún no ha sido resuelta, 1, indica que la instancia ha sido resuelta).
3 Se debe almacenar la siguiente información de los pesos de cada instancia:
El nombre de la instancia.
Cada uno de los pesos de la instancia.
La frecuencia de aparición de cada uno de los pesos en la instancia.
4 Se debe almacenar la siguiente información de cada una de las soluciones producidas en las diferentes fases de ejecución:
El nombre de la instancia.
El número de ejecución.
El número de solución producida.
La solución encontrada por la implementación algorítmica.
5 Se debe almacenar la siguiente información de la asignación de los pesos en los contenedores por cada solución producida por la implementación algorítmica:
El nombre de la instancia.
El numero de ejecución.
El número de solución producida.
El numero de contenedor generado.
El peso asignado al contenedor generado.
La frecuencia de aparición del peso dentro del contenedor.
3.2.2.3 Definición de requerimientos del visualizador gráfico
Se debe desarrollar un visualizador que permita reproducir de forma gráfica y
tabular cada una de las soluciones generadas en las diferentes fases de ejecución
de una implementación algorítmica que da solución al problema de Bin Packing de
una dimensión, el cual debe cumplir con los requerimientos que se muestran en la
Tabla 4.
22
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
Tabla 4 Requerimientos generales del visualizador gráfico
DESCRIPCIÓN DEL REQUERIMIENTO
1 El lenguaje de desarrollo de la herramienta debe ser en el que se tenga mayor experiencia, en este caso es C#.
2 Se debe tener un menú que tenga las siguientes opciones:
Se debe tener un submenú que muestre los módulos de visualización del desempeño, visualización gráfica y visualización tabular.
La herramienta debe permitir la restauración de base de datos.
Se debe contar con un manual de ayuda implementado dentro de la herramienta
3 La herramienta debe contener los siguientes módulos para reproducir el comportamiento de la implementación algorítmica:
Un módulo que muestre el comportamiento del algoritmo graficando el resultado de la solución generada por la implementación algorítmica en cada una de sus diferentes fases de ejecución, el eje x debe corresponder al número de contenedores generados y el eje “y” debe corresponder al número de solución producida (módulo1).
Un módulo que represente gráficamente la asignación de los pesos en cada contenedor, por cada solución generada en la implementación algorítmica (módulo2).
Un módulo que muestre de forma tabular la asignación de los pesos en cada contenedor, así como la capacidad residual de cada contenedor (módulo3).
4 El módulo1 debe tener las siguientes características:
Debe permitir al usuario elegir la instancia que se desea visualizar.
Debe permitir al usuario elegir el número de ejecución que se desea visualizar de la instancia seleccionada.
Debe contener un botón que permita al usuario iniciar con la reproducción del gráfico, o mostrar las primeras 95 soluciones correspondientes a la instancia y al número de ejecución elegido.
Se debe graficar por grupos de 95 soluciones, para evitar la deformidad del gráfico.
Debe mostrar una leyenda que indique al usuario si en el conjunto de las 95 soluciones mostradas se encuentra la solución óptima global que es igual al límite teórico (L1).
Debe tener la opción de reproducir hacia adelante o hacia atrás por grupos de 95 soluciones.
Debe mostrar una leyenda que indique el total de óptimos globales encontrados en todo el conjunto de soluciones almacenadas.
El eje “x” debe corresponder al número de contenedores.
23
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
El eje “y” debe corresponder al número de solución producida por la implementación algorítmica.
El punto que intersecta el eje “x” y “y” es el número de contenedores generados por cada solución.
Se debe pintar de color rojo el punto de intersección que sea igual al óptimo global que es igual al límite teórico (L1).
Para el eje “y” la unidad debe representarse con 20 pixeles.
Para el eje “y” la unidad debe representarse con 5 pixeles.
5 El módulo2 debe tener las siguientes características:
Debe permitir al usuario elegir la instancia que se desea visualizar.
Debe permitir al usuario elegir el número de ejecución que se desea visualizar de la instancia seleccionada.
Debe permitir al usuario elegir el número de solución que desea visualizar de la instancia y de la ejecución seleccionada.
El tamaño del gráfico debe ser por default de las siguientes medidas; el alto de la gráfica de 670 pixeles y el ancho de la gráfica de 970 pixeles, se podrá ampliar el gráfico máximo a 1170 pixeles de alto y 1770 pixeles de ancho para evitar la deformidad del gráfico.
Debe tener un botón que muestre el gráfico en base a las opciones elegidas por el usuario.
Un contenedor se debe representar con un rectángulo verticalmente.
En el interior del rectángulo se debe representar los pesos asignados a cada contenedor.
Se debe pintar el valor que corresponde a cada uno de los pesos.
El eje “y” debe representar el porcentaje de llenado del contenedor, en secciones de 10% (por ej. 100%, 90%,…10%).
Se debe mostrar en la parte superior del contenedor las unidades de llenado de cada contenedor.
Debe tener la opción de generar y almacenar el gráfico de la solución.
Se debe mostrar la siguiente información general de la solución:
o El total de contenedores que quedaron sin capacidad residual.
o El total de contenedores que quedaron con capacidad residual.
o La sumatoria de la capacidad residual de todos los contenedores.
o El resultado de la solución, que es el total de contenedores que fueron
24
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
necesarios para la asignación de los pesos de la instancia.
o El total de objetos que tiene la instancia.
6 El módulo3 debe tener las siguientes características:
Debe permitir al usuario elegir la instancia que se desea visualizar.
Debe permitir al usuario elegir el número de ejecución que se desea visualizar de la instancia seleccionada.
Debe permitir al usuario elegir el número de solución que desea visualizar de la instancia y de la ejecución seleccionada.
Debe presentar de forma tabular la siguiente información:
o El número del contenedor.
o La capacidad residual del contenedor correspondiente a cada contenedor.
o Los pesos asignados a cada contenedor.
7 Los módulos deben interactuar con la base de datos relacional para la obtención de la información a graficar.
3.3 DISEÑO
En esta sección se describe la biblioteca de funciones, el diseño de la base de
datos y los diagramas de flujo de los módulos del visualizador gráfico.
3.3.1 Biblioteca de funciones
La biblioteca de funciones es una sección de código especial que actúa como una
interfaz entre la implementación algorítmica y la base de datos, con la finalidad de
extraer información de las soluciones en las diferentes fases de ejecución de la
implementación algorítmica que da solución al problema de Bin Packing de una
dimensión.
3.3.1.1 Función “Parametros”
Objetivo
Extraer información de la instancia que se está resolviendo por la implementación
algorítmica como; el nombre de la instancia, la capacidad del contenedor, el
número de pesos que forman parte de la instancia, el límite teórico y el indicador
25
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
que informa si la instancia ha sido resuelta.
Argumentos de entrada
Los argumentos de entrada se describen en la Tabla 5.
Tabla 5 Descripción de los argumentos de entrada de la función “Parametros”
ARGUMENTO TIPO DESCRIPCIÓN
instance char Variable que contiene el nombre de la instancia que se está resolviendo.
number_items int Variable que contiene el número de elementos que forman parte de la instancia que se está resolviendo.
bin_capacity int Variable que contiene la capacidad que tiene el contenedor para el almacenamiento de los pesos.
best_solution int Variable que contiene un identificador que informa si la instancia ha sido resuelta.
L1 int Variable que contiene el cálculo del límite teórico (L1).
weight[] int Arreglo que contiene los pesos de la instancia.
Argumentos de salida
Archivo de texto que contiene la información extraída de la implementación
algorítmica que da solución al problema de Bin Packing de una dimensión.
3.3.1.2 Función “Solucion”
Objetivo
Extraer información de la solución que se produce en cada una de las diferentes
fases de ejecución de la implementación algorítmica que da solución al problema
de Bin Packing de una dimensión. La información de la solución corresponde al
total de contenedores generados para el almacenamiento de los pesos y la
asignación de los pesos en cada contenedor que describe de forma detallada cada
contenedor.
Argumentos de entrada
Los argumentos de entrada se describen en la Tabla 6.
26
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
Tabla 6 Descripción de los argumentos de entrada de la función “solucion”
ARGUMENTO TIPO DESCRIPCIÓN
Xmj SOLUTION
Variable que contiene la descripción de la solución. SOLUTION es un tipo de dato formado por; L de tipo lista, la cual contiene la asignación de los pesos en cada contenedor y accumulated_bin de tipo int, el cual contiene la sumatoria de los pesos acumulado en cada contenedor.
numSol int Variable que contiene el número de solución que se genera dentro de la implementación algorítmica.
run int Variable que contiene el número de ejecución.
Argumentos de salida
Archivo de texto que contiene la información de la solución producida por la
implementación algorítmica que da solución al problema de Bin Packing de una
dimensión.
3.3.1.3 Función “Almacenamiento”
Objetivo
Almacenar en la base de datos relacional la información de la instancia y de la
solución producida por la implementación algorítmica que da solución al problema
de Bin Packing de una dimensión.
Argumentos de entrada
La función no recibe argumentos de entrada, lo único que se necesita son los
archivos de texto que contienen la información de la instancia y la información de
la solución que se generan con la función “Parametros” y la función “Solucion”.
Argumentos de salida
No hay argumentos de salida, el resultado que produce esta función es el
almacenamiento de los datos en las tablas correspondientes de la base de datos
relacional.
27
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
3.3.2 Diseño de la base de datos relacional
En esta sección se muestra el modelo relacional de la base de datos y el
diccionario de datos.
3.3.2.1 Modelo relacional
La base de datos se forma por cuatro tablas cuyo objetivo es almacenar
información de las instancias y de las soluciones generadas por la implementación
algorítmica que da solución al problema de Bin Packing de una dimensión. En la
Figura 3 se muestra el modelo relacional de la base de datos desarrollada en este
trabajo, la descripción de cada una de las tablas se encuentra en el diccionario de
datos (véase sección 3.3.2.2).
Figura 3 Modelo Relacional
3.3.2.2 Diccionario de datos
Nombre de la tabla: “Instancias”
Objetivo
Almacenar información definida al interior de la instancia, por ejemplo; el nombre
de la instancia, la capacidad del contenedor, el número de objetos que contiene la
28
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
instancia, el valor del límite teórico y el indicador que informa si la instancia ha sido
resuelta.
Descripción de los campos
La Tabla 7 muestra la descripción de cada uno de los campos de la tabla
“Instancias”.
Tabla 7 Descripción de la tabla “Instancias”
Nombre del campo Tipo de dato Descripción del campo
Instancia char Almacena el nombre de la instancia, este campo es considerado llave primaria de esta tabla.
C int Almacena la capacidad del contenedor, indica que la asignación de los pesos en el contenedor no debe exceder esta capacidad de llenado, es una característica definida al interior de la instancia.
N int Permite almacenar el número total de objetos que contiene una instancia.
L1 int Campo que almacena el límite teórico.
Solucion_reportada int Campo que almacena un indicador que informa si la instancia ha sido resuelta, para este caso -1 indica que la instancia aún no ha sido resuelta.
Nombre de la tabla: “Pesos_Instancias”
Objetivo
Almacenar los pesos que forman parte de la instancia y la frecuencia de aparición
de cada uno de los pesos dentro de la instancia.
Descripción de los campos
La llave primaria de esta tabla es una llave compuesta por el campo instancia y el
campo peso. Para almacenar el nombre de la instancia (“Instancia”) se debe
verificar que haya sido previamente almacenado en la tabla “Instancias”. La
descripción de cada uno de los campos de la tabla “Pesos_Instancias” se muestra
en la Tabla 8.
29
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
Tabla 8 Descripción de la tabla “Pesos_Instancias”
Nombre del campo Tipo de dato Descripción del campo
Instancia char Almacena el nombre de la instancia, para poder almacenar el nombre de la instancia en esta tabla se debe verificar la existencia del dato en la tabla “Instancias”, este campo es considerado parte de la llave primaria de esta tabla.
Peso int Campo que permite almacenar los pesos que contiene la instancia, este campo es considerado parte de la llave primaria de esta tabla.
Frecuencia int Almacena la frecuencia de aparición de cada uno de los pesos de la instancia.
Nombre de la tabla: “Descripcion_Solucion”
Objetivo
Almacenar información que describe las soluciones producidas en las diferentes
fases de ejecución de la implementación algorítmica que da solución al problema
de Bin Packing de una dimensión, por ejemplo, el nombre de la instancia, el
número de ejecución, el número de solución y el resultado de la solución que
corresponde al total de contenedores necesarios para la asignación de cada uno
de los pesos de la instancia.
Descripción de los campos
La llave primaria de esta tabla está compuesta por los campos; Instancia,
Numero_Ejecucion y Numero_Solucion. Para almacenar el nombre de la instancia
(“Instancia”) se debe verificar que haya sido previamente almacenado en la tabla
“Instancias”. La Tabla 9 muestra una descripción detallada de cada uno de los
campos de la tabla “Descripcion_Solucion”.
Tabla 9 Descripción de la tabla “Descripcion_Solucion”
Nombre del campo Tipo de dato Descripción del campo
Instancia char Almacena el nombre de la instancia a la que pertenece la solución.
30
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
Numero_Ejecucion int Campo que almacena el número de ejecución interna de la implementación algorítmica.
Numero_Solucion int Almacena el número de solución producida en cada una de las diferentes fases de ejecución de la implementación algorítmica.
Solucion_Encontrada int Almacena el total de contenedores necesarios para la asignación de cada uno de los pesos de la instancia.
Nombre de la tabla: “Contenedores_Solucion”
Objetivo
Almacenar información de cada uno de los pesos asignados a cada contenedor; el
nombre de la instancia a la que pertenece la solución, el número de ejecución, el
número de solución, el número del contenedor generado, el peso asignado al
contenedor y la frecuencia del peso dentro del contenedor.
Descripción de los campos
La llave primaria de esta tabla está formada por los campos; instancia,
Numero_Ejecucion, Numero_Solucion, Peso, Numero_Contenedor. Para
almacenar el nombre de la instancia (“Instancia”), el número de ejecución
(“Numero_Ejecucion”) y el número de solución (“Numero_Solucion”), se debe
verificar que hayan sido previamente almacenados en la tabla
“Descipción_Solucion”, para almacenar el peso (“Peso”) se debe verificar la
existencia del dato en la tabla “Pesos_Instancias”. La descripción detallada de
cada uno de los campos de la tabla “Contenedores_Solucion” se muestra en la
Tabla 10.
Tabla 10 Descripción de la tabla “Contenedores_Solucion”
Nombre del campo Tipo de dato Descripción del campo
Instancia char Almacena el nombre de la instancia al que pertenece la solución.
Numero_Ejecucion int Almacena el número de ejecución interna de la implementación algorítmica.
31
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
Numero_Solucion int Almacena el número de solución producida en cada una de las diferentes fases de ejecución de la implementación algorítmica.
Peso int Almacena el peso asignado al contenedor generado.
Numero_Contenedor int Almacena el número de contenedor generado por la implementación algorítmica.
Frecuencia_Encontenedor int Almacena la frecuencia de aparición del peso asignado al contenedor generado.
3.3.3 Visualizador gráfico
El visualizador gráfico es una sección de la herramienta que fue desarrollada con
la finalidad de apoyar al análisis de implementaciones algorítmicas mediante la
reproducción gráfica y tabular de las soluciones producidas en las diferentes fases
de ejecución del algoritmo (véase Figura 4).
Figura 4 Descripción general del visualizador
La Figura 4 muestra la arquitectura general del visualizador gráfico, la cual
está formada por los siguientes tres módulos;
a) Visualización gráfica, permite visualizar la asignación de los pesos en
cada uno de los contenedores.
b) Visualización tabular, permite visualizar de manera tabular el acomodo
de los pesos en los contenedores, además de mostrar el residuo de
cada contenedor.
c) Visualización del desempeño, grafica los diferentes valores objetivos
producidos durante las diferentes fases de ejecución de la
implementación algorítmica.
Visualizador
a) Visualización gráfica
b) Visualización tabular
c) Visualización del desempeño
32
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
3.3.3.1 Diagramas de flujo
En esta sección de muestra el proceso detallado de la visualización del
desempeño, de la visualización gráfica y de la visualización tabular que tiene
implementado la herramienta VICAM.
3.3.3.1.1 Visualización del desempeño
Objetivo
Reproducir gráficamente el comportamiento que tiene la implementación
algorítmica durante su ejecución. Graficando el resultado que se produce en cada
una de las soluciones generadas en las diferentes fases de ejecución de la
implementación algorítmica que da solución al problema de Bin Packing de una
dimensión. La Figura 5 muestra el proceso que se debe llevar a cabo para
reproducir de manera visual el comportamiento de la implementación algorítmica.
Figura 5 Diagrama de flujo de la visualización del desempeño
33
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
3.3.3.1.2 Visualización gráfica
Objetivo
Reproducir gráficamente la solución producida en cada una de las diferentes fases
de ejecución de la implementación algorítmica que da solución al problema de Bin
Packing de una dimensión, representando mediante un gráfico de barras la
asignación de los pesos de la instancia en los contenedores y mostrando la
siguiente información de la solución; las unidades de llenado de cada contenedor,
el total de contenedores que quedaron ocupados en su capacidad máxima, el total
de contenedores que quedaron con capacidad residual, la sumatoria de la
capacidad residual de los contenedores, el número de objetos que tiene la
instancia y el total de contenedores que fueron creados para el almacenamiento
de los pesos. La Figura 6 muestra el proceso que se debe realizar para visualizar
gráficamente la solución.
Figura 6 Diagrama de flujo de la visualización gráfica
34
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
3.3.3.1.3 Visualización tabular
Objetivo
Reproducir de manera tabular la solución generada por la implementación
algorítmica que da solución al problema de Bin Packing de una dimensión en cada
una de sus diferentes fases de ejecución, mostrando; el número de contenedor, la
capacidad residual del contenedor y los pesos asignados al contenedor. La Figura
7 muestra el proceso para visualizar de forma tabular el acomodo de los pesos en
los contenedores.
Figura 7 Diagrama de flujo de la visualización tabular
35
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
3.4 Implementación de la herramienta VICAM
3.4.1 Menú principal de la herramienta
VICAM cuenta con un menú principal para la manipulación de las diferentes
opciones de visualización de las soluciones producidas por la implementación
algorítmica que da solución al problema de Bin Packing de una dimensión (a), la
restauración de la base de datos (b) y la ayuda para el manejo de la herramienta
(c). La opción “Soluciones” está formada por un submenú que permite abrir los
siguientes módulos; “Visualización del desempeño”, “Visualización gráfica”,
“Visualización tabular” (véase Figura 8).
Figura 8 Menú principal de VICAM
3.4.2 Visualización del desempeño
El módulo del desempeño permite ver de forma gráfica el comportamiento de la
implementación algorítmica que da solución al problema de Bin Packing de una
dimensión. El usuario debe configurar el nombre de la instancia y el número de
corrida para visualizar gráficamente el comportamiento de la implementación
algorítmica (a), una vez configurados los parámetros se debe dar clic en el botón
para poder reproducir el grafico (b), el usuario tiene la opción de reproducir el
comportamiento del algoritmo hacia adelante y hacia atrás (c), el módulo muestra
una leyenda que indica el total de óptimos globales encontrados en todo el
conjunto de soluciones (d), el eje “Y” corresponde al número de contenedores (e),
el eje “X” corresponde al número de solución (f), la intersección representa el
resultado de la solución que corresponde al número de contenedores necesarios
para el acomodo de los pesos de la instancia que se resolvió (g), cuando el
resultado de la solución es el óptimo global que es igual al límite teórico la
intersección se muestra de color rojo (h), indicando al usuario con una leyenda el
a) b) c)
36
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
óptimo global (i) (véase Figura 9).
Figura 9 Módulo de la visualización del desempeño
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
37
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
3.4.3 Visualización gráfica
El módulo de visualización gráfica permite ver a detalle la solución producida por
la implementación algorítmica que da solución al problema de Bin Packing de una
dimensión, mostrando la asignación de los pesos en cada uno de los
contenedores. El usuario debe configurar el nombre de la instancia y el número de
corrida para visualizar gráficamente el comportamiento de la implementación
algorítmica (a), el ancho y alto del grafico se muestra en pixeles el cual está
definido por default en 670 de alto por 970 de ancho (b), una vez configurados los
parámetros se debe dar clic en el botón “Gráficar” para poder reproducir el grafico
(c). El usuario tiene la opción de crear una imagen del grafico (d). El eje “Y”
corresponde al porcentaje de llenado del contenedor (e). Los contenedores se
representan de forma rectangular (f) mostrando en el interior los pesos asignados
a cada uno de ellos (g), la sumatoria de los pesos asignados a cada contenedor se
muestra en la parte superior del contenedor. Finalmente se muestra información
sobre la solución reproducida como; el total de contenedores que se llenaron al
100% de su capacidad residual, el total de contenedores que quedaron con
capacidad residual, la sumatoria de las capacidades residuales, el total de
contenedores utilizados para el acomodo de los pesos y el total de objetos que
tiene la instancia (i) (véase Figura 10).
38
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
Figura 10 Módulo de la visualización gráfica
3.4.4 Visualización tabular
El módulo de visualización gráfica permite visualizar de manera tabular la solución
de forma detallada, mostrando el acomodo de los pesos en cada uno de los
contenedores. El usuario debe configurar el nombre de la instancia y el número de
corrida para visualizar gráficamente el comportamiento de la implementación
algorítmica (a), una vez que se configuran los parámetros se muestra de forma
tabular el listado de contenedores generados, cada fila corresponde a un
contenedor (b), la capacidad residual de cada contenedor mostrando 0 si el
contenedor quedo lleno al 100% de su capacidad residual (c), el listado de pesos
asignados a cada contenedor (d) (véase Figura 11).
39
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
Figura 11 Módulo de la visualización tabular
3.5 Implementación de la biblioteca de funciones
Se muestra de manera general la implementación de la biblioteca de funciones y
el llamado de las mismas dentro de la implementación algorítmica que da solución
al problema de Bin Packing de una dimensión.
Figura 12 Implementación de la función “Parametros”
La Figura 12 muestra parte de la implementación de la función
“Parametros”, la cual permite extraer información de la instancia que está siendo
resuelta por la implementación algorítmica como; el nombre de la instancia, la
capacidad del contenedor, el número total de pesos que forman la instancia, el
límite teórico y el indicador que informa si la instancia ha sido resuelta de la
instancia.
40
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
Figura 13 Implementación de la función “Almacenamiento”
La Figura 13 muestra parte de la implementación de la función
“Almacenamiento”, la cual permite almacenar la información extraída de la
instancia que está siendo resuelta por la implementación algorítmica.
A continuación se muestra el pseudocódigo de la implementación
algorítmica que da solución al problema de Bin Packing de una dimensión, se
observa la inserción de las funciones para la extracción de la información de las
instancias y de las soluciones generadas durante la ejecución.
1: Inicio
2: abrir archivo
3: hacer
4: recuperación de datos de la instancia
5: ordenación de objetos de forma decreciente
6: cálculo del límite teórico
7: inserción de la función “Parametros”
8: para cada ejecución interna (30)
9: solución_optima=false
10: si población_inicial<>0 entonces
11: crear solución con algoritmo determinista1
12: inserción de la función “Solucion”
13: crear solución con algoritmo determinista2
14: inserción de la función “Solucion”
15: crear solución con algoritmo determinista3
16: inserción de la función “Solucion”
17: crear solución con algoritmo determinista4
18: inserción de la función “Solucion”
19: crear solución con algoritmo determinista5
41
Capítulo 3 DESARROLLO DE LA HERRAMIENTA
20: inserción de la función “Solucion”
21: crear solución con algoritmo determinista6
22: inserción de la función “Solucion”
23: crear solución con algoritmo determinista7
24: inserción de la función “Solucion”
25: si solución es igual al límite teórico entonces
26: solución_optima=true
27: si solución_optima=true entonces
28: retonar 0
29: si no
30: retornar 1
31: para cada generación
32: crear solución con algoritmo genético
33: inserción de la función “Solucion”
34: si solución es igual al límite teórico entonces
35: solución_optima=true
36: si solución_optima=true entonces
37: retonar 0
38: si no
39: retornar 1
40: fin para
41: si solución_optima=true entonces
42: escribir solución en nuevoArchivo
43: fin para
44: mientras (archivo <> eof)
45: inserción de la función “Almacenamiento”
46: cerrar archivo
47:Fin
42
Capítulo 4 PRUEBAS EXPERIMENTALES
Capítulo 4
PRUEBAS EXPERIMENTALES
Este capítulo presentan las pruebas experimentales realizadas para la validación
de la herramienta de apoyo al análisis del desempeño de algoritmos
metaheurísticos.
4.1 DESCRIPCIÓN DE LOS DATOS
Debido a que en esta etapa se requiere de la descripción de la información que es
recopilada para comenzar con las pruebas experimentales, se tomarán como
datos de entrada un algoritmo metaheurístico enfocado a dar solución al problema
de Bin Packing y los conjuntos de instancias Hard28 y WAE_GAU1. Para una
mejor claridad del contenido se dividió la descripción de los datos en dos
secciones: Algoritmo de prueba y Conjunto de instancias.
4.1.2 Algoritmo de prueba
Es un algoritmo hibrido de agrupación genética (HGGA-BP) que da solución al
problema de Bin Packing este algoritmo incorpora estrategias heurísticas y
criterios que al aplicarse en la creación y evolución de individuos, de generación
en generación, permiten obtener buenas soluciones en tiempos cortos [Nieto07].
Para generar la población inicial se crea un conjunto de individuos utilizando
distintas soluciones deterministas, para ello se utiliza tres diferentes estrategias:
43
Capítulo 4 PRUEBAS EXPERIMENTALES
First Fit (FF): En este algoritmo cada objeto de la instancia es colocado
en el primer contenedor que tenga suficiente capacidad para
almacenarlo [Johnson73]. Si ningún contenedor abierto puede
almacenarlo sin rebasar su capacidad, se abre un nuevo contenedor.
Una variación a este método consiste en ordenar los pesos de los
objetos de forma decreciente antes de acomodarlos, lo cual toma el
nombre de First Fit Decresing (FFD).
Best Fit (BF): En este algoritmo se coloca el objeto más pesado libre en
el contenedor con capacidad residual suficiente o en el menos saturado
[Johnson73]. La variación de este algoritmo donde primero se deben
ordenar los pesos de forma decreciente se llama Best First Decreasing
(BFD).
Worst Fit (WF): En este algoritmo cada objeto es acomodado en el
contenedor disponible con mayor capacidad residual [Johnson73], al
acomodar los pesos de los objetos se convierte en la variante llamada
Worst Fit Decreasing (WFD).
Para el generar el resto de la población se utiliza un algoritmo genético.
4.1.3 Conjunto de instancias de Bin Packing
Las instancias consideradas se dividen en dos grupos, el primer grupo es llamado
Hard28, son consideradas como instancias difíciles y el segundo grupo es llamado
WAE_GAU1.
4.1.3.1 Instancias del grupo Hard28
Este grupo de instancias fue propuesto por Schoenfield en 2002 [Schoenfield02]
formado por 28 instancias llamadas Hard28, las cuales han sido citadas en
[Belov04, Belov10, Quiroz09]. En 2009 [Quiroz09] se encontraron ocho soluciones
óptimas de este conjunto. Las principales características de este conjunto de
instancias son; la capacidad del contenedor es de 1000 unidades y el número de
44
Capítulo 4 PRUEBAS EXPERIMENTALES
objetos varía entre 160 y 200.
4.1.3.2 Instancias del grupo WAE_GAU1
Este grupo de instancias fue propuesto por Wäscher y Gau en 1996 [Wäscher96]
por lo que las llamaron WAE_GAU1, formado por 17 instancias, las cuales han
sido citadas en [Alvim04, Kasap04, Loh08, Nieto07, Quiroz09, Singh07]. De las
cuales en [Quiroz09] se reportan 15 soluciones óptimas. Las principales
características de este conjunto de instancias son; la capacidad del contenedor es
de 10000 unidades y el número de objetos varía entre 57 y 239.
4.2 EXPERIMENTACIÓN
Para las pruebas experimentales se utilizó una máquina con las siguientes
características: Procesador intel core duo, Memoria 1 GB, Disco duro de 250 GB,
Sistema operativo Windows XP, SQL server, Borland C++, Visual Studio y la
herramienta VICAM.
En la Figura 14 se muestra el proceso de experimentación: Mediante el
llamado de funciones dentro de la implementación algorítmica se almacenó la
información que generó la implementación algorítmica al ejecutar los grupos de
instancias Hard28 y WAE_GAU1 en la base de datos, mediante la visualización
del desempeño se pudo obtener el número de veces que la implementación
algorítmica encuentra la solución para cada instancia, los resultados de esta
experimentación son descritos en las siguientes secciones: Instancias del grupo
Hard28 e Instancias del grupo WAE_GAU1.
Figura 14 Proceso de experimentación
45
Capítulo 4 PRUEBAS EXPERIMENTALES
Para probar la funcionalidad de la biblioteca de funciones, estas se
insertaron en la implementación algorítmica que da solución al problema de Bin
Packing de una dimensión durante su ejecución, la figura 15 muestra parte de la
implementación algorítmica en la cual se está haciendo el llamado de las
funciones, con la finalidad de extraer información.
Figura 15 Llamado de funciones en la implementación algorítmica
Lo que permitió que se almacenaran en la base de datos un total de
19882062 soluciones generadas de las 45 instancias de los grupos de instancias
Hard28 y WAE_GAU1 para su posterior análisis.
Mediante la visualización del desempeño que proporciona la herramienta
se pudo reproducir el desempeño que presentó la implementación algorítmica
durante su ejecución. En la Figura 16 se muestra un ejemplo del módulo, el cual
permite observar el desempeño del algoritmo en el espacio de soluciones
mediante una gráfica de puntos; el eje x corresponde al número de solución
alcanzada por la implementación algorítmica y el eje y corresponde al número de
contenedores utilizados en cada solución. Durante la ejecución de la
implementación algorítmica, al solucionar la instancia TEST0030, se generaron
877999 soluciones internas, entre las cuales, en 2 de ellas se alcanza el valor
óptimo global: 536766 y 787483.
46
Capítulo 4 PRUEBAS EXPERIMENTALES
Figura 16 Desempeño de la implementación algorítmica con la instancia TEST0030
Posterior a la visualización del desempeño y, sabiendo que se había
alcanzado la solución óptima, se utilizó el visualizador tabular para observar los
valores de los objetos que fueron asignados a cada contenedor (véase Figura 17),
la cual presenta la segunda solución óptima que se alcanzó. La primera y la
segunda columna contienen el número del contenedor y la capacidad residual de
los contenedores que forman la solución respectivamente, el resto de las
columnas corresponden a los valores de los pesos de los objetos que fueron
asignados a cada contenedor.
Óptimo global
47
Capítulo 4 PRUEBAS EXPERIMENTALES
Figura 17 Visualización tabular de la solución de la instancia TEST0030
Finalmente, haciendo uso del visualizador gráfico, se observó gráficamente
cada una de las soluciones obtenidas para el algoritmo. La Figura 18 muestra un
ejemplo de la segunda solución óptima; se observa que los contenedores están
llenos casi al 100% de su capacidad, dejando una capacidad residual del
contenedor del 0.1%.
Óptimo global
48
Capítulo 4 PRUEBAS EXPERIMENTALES
Figura 18 Visualización gráfica de la solución óptima de la instancia TEST0030
Óptima global
49
Capítulo 5 ANÁLISIS DE RESULTADOS
Capítulo 5
ANÁLISIS DE RESULTADOS
Este capítulo presenta un análisis de los resultados obtenidos en base a las
pruebas experimentales que se realizaron, además de presentar las sugerencias
de mejora del algoritmo hibrido de agrupación genética.
5.1 ANÁLISIS DE LA REPRODUCCIÓN DEL COMPORTAMIENTO
Se analizó gráficamente el comportamiento de la implementación algorítmica que
da solución al problema de Bin Packing de una dimensión con VICAM y se
encontró que el algoritmo no se detenía al obtener el óptimo global, lo que es
deseable.
En la Figura 19 se muestra el comportamiento de la implementación
algorítmica al resolver la instancia hBPP47 del conjunto de instancias Hard28
[ESICUP10, Shoenfield02], se observa que el valor óptimo global es alcanzado en
la solución número 187801, sin embargo, continua la ejecución de la
implementación algorítmica produciendo un total de 505101 soluciones lo que
ocasiona que se pierda el valor óptimo global. Para esta instancia en [Quiroz09] se
reporta que no es posible obtener su valor óptimo.
50
Capítulo 5 ANÁLISIS DE RESULTADOS
Figura 19 Comportamiento de la implementación algorítmica con la instancia hBPP47
El mismo caso se presentó al visualizar gráficamente el comportamiento de
la implementación algorítmica al resolver las instancias hBPP360, hBPP742 y
TEST0030 del grupo Hard28 y WAE_GAU1 [ESICUP10, Shoenfield02],
ocasionando que se perdiera el valor óptimo global, los cuales fueron alcanzados
en la solución número 31009, 1071001 y 787483 respectivamente, sin embargo,
en [Quiroz09] se reporta que no es posible alcanzar el valor óptimo global de las
instancias mencionadas.
Se tomo una semilla aleatoria del libro de estadística [Freund94], lo que
permitió encontrar el valor óptimo global para la instancia hBPP561 del grupo
Hard28 [ESICUP10, Shoenfield02], en la Figura 20 se muestra la visualización del
comportamiento de la implementación algorítmica al resolver la instancia,
encontrando el valor óptimo global en la solución número 489945.
Óptimo global
51
Capítulo 5 ANÁLISIS DE RESULTADOS
Figura 20 Comportamiento de la implementación algorítmica con la instancia hBPP561
5.2 PROCEDIMIENTO ACTUAL DEL ALGORITMO
Con base en los resultados obtenidos en la visualización del comportamiento de la
implementación algorítmica, fue posible detectar anomalías en la implementación
algorítmica, como el criterio de paro que tiene implementado, lo que permitió
proponer una mejora en la implementación.
A continuación se muestra el pseudocódigo de la implementación
algorítmica que da solución al problema de Bin Packing de una dimensión, el cual
fue utilizado para probar el funcionamiento de la herramienta.
En la línea 8 se pude observar el criterio de paro que tiene definido la
implementación algorítmica. En la Sección 5.3 se muestra la mejora que se
propone a la implementación algorítmica.
Algoritmo Hibrido de Agrupación Genética (HGGA-BP)
1: Inicio
2: abrir archivo
3: hacer
4: recuperación de datos de la instancia
Óptimo global
52
Capítulo 5 ANÁLISIS DE RESULTADOS
5: ordenación de objetos de forma decreciente
6: cálculo del límite teórico (L1)
7: para cada ejecución interna (30)
8: solución_optima=false
9: si población_inicial<>0 entonces
10: crear solución con algoritmo determinista1
11: crear solución con algoritmo determinista2
12: crear solución con algoritmo determinista3
13: crear solución con algoritmo determinista4
14: crear solución con algoritmo determinista5
15: crear solución con algoritmo determinista6
16: crear solución con algoritmo determinista7
17: si solución es igual a L1 entonces
18: solución_optima=true
19: si solución_optima=true entonces
20: retonar 0
21: si no
22: retornar 1
23: para cada generación
24: crear solución con algoritmo genético
25: si solución es igual a L1 entonces
26: solución_optima=true
27: si solución_optima=true entonces
28: retonar 0
29: si no
30: retornar 1
31: fin para
32: si solución_optima=true entonces
33: escribir solución en nuevoArchivo
34: fin para
35: mientras (archivo <> eof)
36: cerrar archivo
53
Capítulo 5 ANÁLISIS DE RESULTADOS
37:Fin
5.3 PROPUESTA DE MEJORA AL ALGORITMO
Gracias a la herramienta VICAM se pudo detectar anomalías en la implementación
algorítmica por lo que se propone una mejora en el criterio de paro que da como
resultado una mejora del 48% en la eficiencia de la implementación algorítmica.
A continuación se muestra el pseudocódigo de la implementación con la
propuesta de mejora. La línea 7 muestra la modificación en el criterio de paro de la
implementación algorítmica, lo que permite detener la ejecución de la
implementación algorítmica al encontrar el valor óptimo global, en consecuencia
reduce el total de soluciones generadas y el tiempo de búsqueda.
Propuesta de mejoramiento del procedimiento HGGA-BP
1: Inicio
2: abrir archivo
3: hacer
4: recuperación de datos de la instancia
5: ordenación de objetos de forma decreciente
6: cálculo del límite teórico (L1)
7: solución_optima=false
8: para cada ejecución interna (30)
9: si población_inicial<>0 entonces
10: crear solución con algoritmo determinista1
11: crear solución con algoritmo determinista2
12: crear solución con algoritmo determinista3
13: crear solución con algoritmo determinista4
14: crear solución con algoritmo determinista5
15: crear solución con algoritmo determinista6
16: crear solución con algoritmo determinista7
17: si solución es igual a L1 entonces
18: solución_optima=true
19: si solución_optima=true entonces
Propuesta de mejora
54
Capítulo 5 ANÁLISIS DE RESULTADOS
20: retonar 0
21: si no
22: retornar 1
23: para cada generación
24: crear solución con algoritmo genético
25: si solución es igual a L1 entonces
26: solución_optima=true
27: si solución_optima=true entonces
28: retonar 0
29: si no
30: retornar 1
31: fin para
32: si solución_optima=true entonces
33: escribir solución en nuevoArchivo
34: fin para
35: mientras (archivo <> eof)
36: cerrar archivo
37:Fin
5.4 RESULTADOS OBTENIDOS
De acuerdo con las pruebas realizadas y, gracias a la herramienta VICAM que
apoyó el análisis de cada una de las fases internas de la implementación
algorítmica, fue posible detectar anomalías en la implementación algorítmica,
como el criterio de paro del algoritmo que tiene implementado. Para efectos
prácticos de VICAM, se modificó el criterio de paro que tiene la implementación
algorítmica de prueba reduciendo un 48% en las soluciones generadas y
mejorando el tiempo de búsqueda.
En la Tabla 11 y Tabla 12 se muestran los resultados obtenidos gracias a la
visualización del comportamiento de cada una de las instancias del grupo Hard28
y WAE_GAU1 y los resultados reportados en [ESICUP10].
55
Capítulo 5 ANÁLISIS DE RESULTADOS
Tabla 11 Resultados obtenidos de las instancias Hard28
INSTANCIA SOLUCION REPORTADA SOLUCION ENCONTRADA
hBPP832 61 61
hBPP40 60 60
hBPP645 59 59
hBPP742 65 64
hBPP766 63 63
hBPP60 64 64
hBPP13 68 68
hBPP195 65 65
hBPP709 68 68
hBPP785 69 69
hBPP47 72 71
hBPP181 73 73
hBPP359 76 76
hBPP485 72 72
hBPP640 74 74
hBPP716 76 76
hBPP119 77 77
hBPP144 74 74
hBPP561 73 72
hBPP781 72 72
hBPP900 76 76
hBPP175 84 84
hBPP178 81 81
hBPP419 81 81
hBPP531 83 83
hBPP814 81 81
hBPP360 63 62
hBPP14 62 62
Tabla 12 Resultados obtenidos de las instancias WAE_GAU1
INSTANCIA SOLUCION REPORTADA SOLUCION ENCONTRADA
TEST0005 28 28
TEST0014 24 24
TEST0022 15 15
TEST0030 28 27
TEST0044 14 14
TEST0049 11 11
TEST0054 14 14
TEST0055a 15 15
TEST0055b 20 20
TEST0058 20 20
TEST0065 16 16
TEST0068 12 12
TEST0075 13 13
TEST0082 24 24
TEST0084 16 16
TEST0095 16 16
TEST0097 12 12
56
Capítulo 5 ANÁLISIS DE RESULTADOS
Otro hallazgo importante fue encontrar las soluciones óptimas de las
instancias TEST0030, hBPP47, hBPP360, hBPP742, hBPP561 del conjunto de
instancias WAE_GAU1 y Hard28 [ESICUP10, Shoenfield02], cuyas soluciones no
habían sido reportadas.
En la Tabla 13 y Tabla 14 se muestra la cantidad de información extraída
durante la ejecución de la implementación algorítmica mediante la inserción de las
funciones al solucionar las instancias de los grupos WAE_GAU1 y Hard28
[ESICUP10, Shoenfield02]. En la Tabla 13 se observa para la instancia TEST0030
una reducción de 341,233 soluciones.
La primera columna corresponde al nombre de la instancia, la segunda
columna corresponde al total de soluciones generadas durante la ejecución de la
implementación de prueba, y la tercera columna corresponde al total de
soluciones generadas con la implementación algorítmica mejorada.
Tabla 13 Comparación del número de soluciones generadas con la implementación algorítmica y las instancias del grupo WAE_GAU1
Instancia Total de soluciones
generadas con HGGA-BP
Total de soluciones generadas con la
modificación de HGGA-BP
1 TEST0022 961,579 961,579 2 TEST0065 97,419 97,419 3 TEST0097 37,032 1,122 4 TEST0058 452,532 10,181 5 TEST0055a 65,141 1,783 6 TEST0049 6,504 197 7 TEST0075 53,157 1,889 8 TEST0054 40,172 1,265 9 TEST0068 46,279 1,545 10 TEST0014 943,152 943,152 11 TEST0082 144,385 4,466 12 TEST0044 59,931 2,129 13 TEST0030 877,999 536,766 14 TEST0005 275,730 8,287 15 TEST0095 66,700 1,523 16 TEST0055b 12,526 400 17 TEST0084 36,792 946
En la Tabla 14 se observa para las instancias hBPP47, hBPP360,
hBPP742, hBPP561 una reducción de 424634, 456422, 420114, 458516
soluciones respectivamente.
57
Capítulo 5 ANÁLISIS DE RESULTADOS
Tabla 14 Comparación del número de soluciones generadas con las implementaciones
algorítmicas y las instancias del grupo Hard28
Instancia Total de soluciones
generadas con HGGA-BP
Total de soluciones generadas con la
modificación de HGGA-BP
1 hBPP832 533,410 533,410
2 hBPP40 842,110 842,110
3 hBPP645 831,430 831,430
4 hBPP742 527,216 107,102
5 hBPP766 538,263 538,263
6 hBPP60 544,369 544,369
7 hBPP13 536,141 536,141
8 hBPP195 531,745 531,745
9 hBPP709 534,364 534,364
10 hBPP785 541,317 541,317
11 hBPP47 505,101 80,467
12 hBPP181 546,010 546,010
13 hBPP359 546,561 546,561
14 hBPP485 541,623 541,623
15 hBPP640 408,999 11,648
16 hBPP716 551,830 551,830
17 hBPP119 532,744 532,744
18 hBPP144 528,377 528,377
19 hBPP561 528,307 69,791
20 hBPP781 530,418 530,418
21 hBPP900 531,281 531,281
22 hBPP175 544,505 544,505
23 hBPP178 539,761 539,761
24 hBPP419 538,636 538,636
25 hBPP531 197,996 7,444
26 hBPP814 270,621 7,669
27 hBPP360 487,432 31,010
28 hBPP14 537,456 537,456
Entre otros datos importantes, se almacenó un total de 21579702
soluciones en la base de datos, la herramienta permitió visualizar la secuencia de
cambios de las 6787571 soluciones generadas por la implementación algorítmica
de prueba, así como de las 14792131 soluciones generadas con la
implementación algorítmica mejorada de los grupos WAE_GAU1 y Hard28
[ESICUP10, Shoenfield02].
Capítulo 6. CONCLUSIONES Y TRABAJOS FUTUROS
58
Capítulo 6
CONCLUSIONES Y TRABAJOS FUTUROS
Este capítulo presentan las aportaciones del trabajo de investigación, y se dan
sugerencias para el desarrollo de trabajos futuros.
6.1 CONCLUSIONES
En este trabajo se muestra el desarrollo de una herramienta (denominada VICAM)
de apoyo al análisis experimental del comportamiento de algoritmos
metaheurísticos que resuelvan Bin Packing de una dimensión. La herramienta no
pretende sustituir a otros métodos de análisis de algoritmos, sino
complementarlos, mediante un enfoque visual del comportamiento de los
algoritmos.
Para validar la herramienta se realizó un conjunto de pruebas
experimentales, con resultados satisfactorios. En particular, se usó la herramienta
para analizar el algoritmo HGGA-BP. Como instancias de prueba de Bin Packing
se usaron los conjuntos WAE_GAU1 y Hard28 [ESICUP10, Shoenfield02].
Gracias a la visualización que proporciona la herramienta VICAM fue
posible observar el comportamiento interno del algoritmo HGGA_BP para el cual
se identificaron anomalías en el criterio de paro debido a esto se propuso una
mejora en el criterio de paro de dicho algoritmo.
Capítulo 6. CONCLUSIONES Y TRABAJOS FUTUROS
59
Para propósitos de contraste cuantitativo de resultados, se implementaron
las mejoras del algoritmo y se determinó que en la solución de algunas instancias
el algoritmo modificado incremento su eficiencia hasta un 48%.
Es destacable que en el caso de las instancias Hard28 se encontraron los
valores óptimos globales de 4 instancias, cuyas soluciones no habían sido
reportadas en la literatura, y en el caso de las instancias WAE_GAU1 se encontró
un óptimo global de 1 instancia.
La herramienta resultó particularmente útil, debido a las siguientes
características:
a) Cuenta con una biblioteca de funciones que le permite efectuar el
paso de parámetros entre la herramienta y el algoritmo que se
analiza, lo que permite que sea independiente de la implementación
algorítmica que da solución al problema de Bin Packing de una
dimensión.
b) Cuenta con una base de datos relacional que le permite almacenar y
posteriormente reproducir las soluciones intermedias del algoritmo
que se analiza, además permite la manipulación de datos haciendo
uso del lenguaje de SQL, con la finalidad de realizar consultas sobre
los valores de los parámetros del algoritmo en sus diferentes etapas
de ejecución, lo cual posibilita el análisis detallado de las
ejecuciones cuyos resultados son de interés especial.
c) Cuenta con módulos que muestra de forma visual toda la ejecución
del algoritmo, o bien, partes amplificadas para el análisis detallado
de patrones visuales de interés.
Capítulo 6. CONCLUSIONES Y TRABAJOS FUTUROS
60
Se considera que es factible desarrollar herramientas similares que apoyen
el análisis de algoritmos metaheurísticos orientados a la solución de otros
problemas NP-hard.
6.2 TRABAJOS FUTUROS
Durante el desarrollo de esta tesis fue posible detectar algunos temas de
investigación que pueden dar continuidad a este trabajo.
Se propone la extensión de la herramienta de apoyo al análisis
experimental del desempeño de algoritmos metaheurísticos.
Se propone generar para cada lenguaje una interfaz que le permita a la
herramienta hacer el paso de parámetros con la implementación del algoritmo que
se analiza.
Es predecible que otras aplicaciones requieran almacenamiento masivo de
datos, por lo que se recomienda analizar manejadores más potentes que SQL
Server.
Se propone desarrollar un módulo que permita la visualización del
comportamiento del algoritmo al tiempo de ejecución de las soluciones generadas
en sus diferentes fases de ejecución.
6.3 LISTA DE PUBLICACIONES
Los resultados de esta tesis fueron presentados en el CIICC’11 en Morelia,
Michoacán en colaboración con el director, co-directores y algunos revisores de
esta tesis con el siguiente artículo:
Peréz J. O., Mexicano S. A., Santaolaya S. R., Alvarado L. I. L,
Visualizador Gráfico de Apoyo al Análisis del Comportamiento de
Algoritmos Evolutivos. 17th International Congress on Computer Science
Research y 11° Simposium Iberoamericano de Computación e
Informática. Morelia, Michoacán, México, 2011.
Capítulo 6. CONCLUSIONES Y TRABAJOS FUTUROS
61
Los siguientes artículos ya fueron aceptados y serán publicados en el año en
curso:
Peréz O. J., Mexicano S. A., Santaolaya S. R., Alvarado L.I. L., Muñoz
J., A graphical Visualization Tool for Analyzing Metaheuristic Behavior.
The 2nd International Conference on Computer and Management.
Wuhan, China, 2012.
Peréz O.J., Mexicano S. A., Santaolaya S. R., Alvarado L. I. L., Hidalgo
M. A. R., De la Rosa R., A visual tool for analyzing the behavior of
metaheuristic algorithms. International Journal of Combinatorial
Optimization Problems and Informatics, México, 2012.
REFERENCIAS
62
REFERENCIAS
[Álvarez06] Álvarez M., Modelo para representar la complejidad del problema y el desempeño de algoritmos, Instituto Tecnológico de Ciudad Madero, 2006.
[Alvim04] Alvim, A. C. F., Glover, F., Ribeiro, C. y Aloise D. A hybrid improvement heuristic for the one-dimensional bin packing problem, Journal of Heuristics. 10, 205-229 (2004) doi:10.1023/B:HEUR.0000026267.44673.ed.
[Aybars08] Aybars U., Dogan A., An interactive simulation and analysis software for solving TSP using Ant Colony Optimization algorithms, Advances in Engineering Software, 40(5), 2008.
[Barr95] Barr S., Golden L., Kelly P., Resendez M., Stewart R. Designing and Reporting on Computational Experiments with Heuristic Methods. Journal of Heuristics, 1(1): 9-32, 1995.
[Belov04] Belov, G. Problems, models and algorithms in one and two dimensional cutting. Tesis de doctorado. Fakultät Mathematik und Naturwissenschaften der Technischen Universität Dresden (2004)
[Belov10] Belov, G., Letchford, A. y Uchoa, E. A node-flow model for 1D stock cutting: robust branch-cut-and-price, Tech. Rep. RPEP 5-7, http://www.math.tu-dresden.de/~capad/. Última visita: mayo 2010.
[Bhatia04] Bhatia, A. K. y Basu, S. K. Packing bins using multi-chromosomal genetic representation and better-fit heuristic, Neural Information in Processing, Lecture Notes in Computer Science, (3316, pp. 181-186), doi:10.1007/978-3-540-30499-9 26 (2004).
[Blum03] Blum C., Roli A., Metaheuristics in combinatorial optimization: Overview and conceptual comparison. ACM Computing Surveys, 35(3):268-308, 2003.
[Castillo11] Mejorando la eficiencia de algoritmos heurísticos mediante análisis visual, Proceedings of the 17th international congress on computer, 2011.
[Coffman02] Coffman, J. E., Courboubetis, C., Garey, M. R., Johnson, D. S., Shor, P. W., &, Weber R. R. Perfect packing theorems and the average case behavior of optimal and online bin packing, SIAM Review, 44, pp. 95-108 (2002).
REFERENCIAS
63
[Cohen95] Cohen P. R. Empirical Methods for Artificial Intelligence. The MIT Press, Cambridge, Massachusetts, 1995.
[Cruz04] Cruz L., Clasificación de Algoritmos Heurísticos para la Solución de Problemas de Bin Packing, Tesis Doctoral, Centro Nacional de Investigación y Desarrollo Tecnológico (cenidet), 2004.
[Cruz10] Cruz L., Caracterización del Proceso de Optimización de Algoritmos Heurísticos, 7ª Sesión del Taller Multidisciplinario del CINVESTAV, 2010.
[Cruz99] Cruz L., Automatización del diseño de la Fragmentación Vertical y Ubicación en Bases de Datos Distribuidas usando Métodos Heurísticos y Exactos, Tesis de Maestría, Universidad Virtual del Campus Tampico del Instituto Tecnológico y de Estudios Superiores de Monterrey, Altamira, Tampico, 1999.
[CuboidTSP10] Cuboid TSP Version 2.0, http://yzgrafik.ege.edu.tr/~ugur/CuboidTSP/, última visita: 21-nov-2010.
[Daza09] Daza J., Montoya J., Narducci F., Resolución del problema de enrutamiento de vehículos con limitaciones de capacidad utilizando un procedimiento metaheurístico de dos fases, Revista EIA, Número 12, ISSN 1794-1237, Medellín Colombia, Diciembre 2009, pp. 23-38.
[Dorigo92] Dorigo M. Optimization, Learning and Natural Algorithms. PhD thesis, Dipartimento di Elettronica, Politecnico di Milano, Itali, 1992.
[Ducatelle01] Ducatelle, F. y Levine, J. Ant colony optimization for bin packing and cutting stock problems, in Proceedings of UKCI-01, Edinburgh, United Kingdom (2001)
[Ducatelle04] Ducatelle, F. y Levine, J. Ant colony optimization and local search for bin packing and cutting stock problems, Journal of the Operational Research Society, 55, 705-716 (2004).
[ESICUP10] ESICUP, Euro especial interest group on cutting and packing (esicup). http://paginas.fe.up.pt/esicup/tiki-list file gallery.php?galleryId=1. Última visita: 2010.
REFERENCIAS
64
[Falkenauer96] Falkenauer, E. A hybrid grouping genetic algorithm for bin packing, Journal of Heuristics 2, 5-30 (1996)
[Fleszar02] Fleszar, K. y Hindi, K. S. New heuristics for one-dimensional bin-packing, Computers & Operations Research 29, 821 839 (2002).
[Freund94] Freund J., Simon G., Estadística elemental, Prentice Hall, (1994).
[Glover86] Glover F. Future paths for integer programming and links to artificial intelligence. Computers and Operations Research, 13: 533-549, 1986.
[Gómez09] Gómez, M. P. y Randall, M. A hybrid extremal optimisation approach for the bin packing problem, Lecture Notes in Artificial Intelligence (pp. 242-251) (2009)
[Halim05] Halim S., Wan H., Hoong L. Tuning Tabu Search Strategies via Visual Diagnosis. In 6th Metaheuristics International Conference, pp 630–636, 2005.
[Halim06] Halim S., Hock R., Hoong L. Visualization for Analyzing Trajectory-Based Metaheuristic Search Algorithms. In European Conference on Artificial Intelligence, pp 703–704, 2006.
[Halim07] Halim S., Hoong L. Tuning Tabu Search Strategies via Visual Diagnosis. In Meta-Heuristics: Progress in Complex Systems Optimization, pp 365–388, 2007.
[Halim09] Halim S., An Integrated White+Black Box Approach for Designing and Tuning Stochastic Local Search Algorithms.
[Hartwig79] Hartwig F., Dearing B. E. Exploratory Data Analysis. Sage University Paper Series on Cuantitative Research Methods, Vol. 16, Newbury Park, CA: Sage, 1979.
[Hock07] Hock R, Halim S. Designing and Tuning SLS through Animation and Graphics: an Extended Walk-through. In Engineering Stochastic Local Search, pp 16–30, 2007.
[Hock08] Hock R., Halim S., Halim F. Engineering Stochastic Local Search for the Low Autocorrelation Binary Sequence Problem. In Principles and Practice of Constraint Programming, pp 640–645, 2008.
REFERENCIAS
65
[Holland75] Holland J.H. Adaption in Natural and Artificial Systems. The University of Michigan Press, Ann Harbor, MI, 1975.
[Hooker94] Hooker J. N. Needed: An empirical science of algorithms. Operations Research, 42(2): 201-212, 1994.
[Hoong04] Hoong L., Wan H., Lim K., Halim S. A Development Framework for Rapid Meta-Heuristics Hybridization. In International Computer Software and Applications Conference, pp 362–367, 2004.
[Hoong06] Hoong L., Halim S., Hock R. Viz: A Visual Analysis Suite for Explaining Local Search Behavior. In 19th User Interface Software and Technology, pp 57–66, 2006.
[Hoong07] Hoong L., Halim S., Hock R. An Integrated White+Black Box Approach for Designing and Tuning Stochastic Local Search. In Principles and Practice of Constraint Programming, pp 332–347, 2007.
[Jing06] Jing, X., Zhou, X., y Xu, Y. A hybrid genetic algorithm for bin packing problem based on item sequencing, Journal of Information and Computing Science, 1, 61-64 (2006)
[Johnson73] Johnson, D. S. Near-optimal bin packing algorithms, Ph.D. diss., Thesis, Massachusetts Institute (1973)
[Kasap04] Kasap, N. y Agarwal, A. Augmented-neural networks approach for de bin packing problem, In Proceedings of the 4th International Symposium on Intelligent Manufacturing Systems (pp. 348-358), Sakarya, Turkey (2004)
[Kirkpatrick83] Kirkpatrick S., Gellat S., Vecchi C., M.P.: Optimization by simulated annealing. Science, 220:671-680, 1983.
[Landero08] Landero V. Metodología para la Explicación Causal del Comportamiento y Desempeño de Algoritmos Heurísticos Aplicados al Problema de Bin Packing. Tesis de doctorado, Centro Nacional de Investigación y Desarrollo Tecnológico, 2008.
[Lemeire04] Lemeire J., Dirkx E.: Causal Models for Performance Analysis, 4th PA3CT Symposium, Edegem, Belgica, 2004.
REFERENCIAS
66
[Lemeire05] Lemeire, J., Dirkx, E.: Causal Models for Parallel Performance Analysis. 4th PA3CT Symposium, Edegem, Belgium (2005).
[Lemeire07] Lemeire J. Learning Causal Models of Multivariate Systems and the Value of it for the Performance Modeling of Computer Programs. PhD thesis, Vrije Universiteit Brussel, 2007.
[Liu96] Liu X. Intelligent Data Analysis: Issues and Challenges. The Knowledge Engineering Review, 11: 365-371, 1996.
[Loh08] Loh, K., Golden B., y Wasil, E. Solving the one-dimensional bin packing problem with a weight annealing heuristic, Computers & Operations Research, 35(7), 2283-2291 (2008)
[Maroto02] Maroto C., Alcaraz J., Ruíz R., Investigación Operativa: modelos y técnicas de optimización, Ed. Universidad Politécnica de Valencia, 2002.
[Martello90] Martello, S. y Toth, P. Lower bounds and reduction procedures for the bin packing problem, Discrete Applied Mathematics, 28, 59-70 (1990) doi:10.1016/0166-218X(90)90094-S.
[McGeoch02] McGeoch C.C. Experimental Analysis of Algorithms. Pardalos, P.M., Romeijn, Handbook of Global Optimization, 2: 489-513, 2002.
[Murty95] Murty K., Operations research: deterministic optimization models. Prentice Hall, 1995.
[Nieto07] Nieto Diana, Hibridación de Algoritmos Metaheurísticos para Problemas de Bin Packing, Tesis de maestría, Instituto Tecnológico de Cd. Madero, Tamaulipas, México, 2007.
[Osman96] Osman, I., META-HEURISTICS: Theory & Applicactions, Massachusetts Kluwer Academic Publishers, 1996.
[Papadimitriou82] Papadimitriou C., Combinatorial optimization: algorithms and complexity, Prentice Hall, 1982.
[Pérez02] Pérez J., Pazos R., J. Frausto S., Romero D. y Cruz L., "Predicción del Desempeño de Algoritmos Exactos y Heurísticos: un Enfoque Estadístico", I+D Computación, Vol., 1 No. 2, ISSN 1665-238X, México, Nov. 2002, pp. 114-127.
REFERENCIAS
67
[Pérez07] Pérez V., Modelado Causal del Desempeño de Algoritmos Metaheurísticos en Problemas de Distribución de Objetos, Tesis de Maestría, Instituto Tecnológico de Ciudad Madero, 2007.
[Pino01] Pino R., Gómez A., Martínez N., Introducción a la inteligencia artificial: Sistemas expertos, redes neuronales artificiales y computación evolutiva, Ed. Universidad de Oviedo, 2001.
[Quiroz09] Quiroz M., Caracterización de factores de desempeño de algoritmos de solución de BPP, Tesis de Maestría, Instituto Tecnológico de Ciudad Madero, 2009.
[Rayward96] Rayward-Smith V., Osman I., Reeves C., Smith G. Modern Heuristic Search Methods. John Wiley & Sons, Chichester, 1996.
[Schoenfield02] Schoenfield, J.E.. Fast, exact solution of open bin packing problems without linear programming; 2002. Draft, US Army Space & Missile Defense Command.
[Scholl97] Scholl, A., Klein, R. y Jürgens, C. BISON: a fast hybrid procedure for exactly solving the one-dimensional bin packing problem, Computers & Operations Research, 24(7), 627-645 (1997) doi:10.1016/S0305-0548(96)00082-2.
[Singh07] Singh, A. y Gupta, A. K. Two heuristics for the one-dimensional bin-packing problem, OR Spectrum, doi:10.1007/s00291-006-0071-2 (2007)
[SphereTSP10] SphereTSP, http://yzgrafik.ege.edu.tr/~ugur/SphereTSP/, 20-nov-2010.
[Stawowy08] Stawowy, A. Evolutionary based heuristic for bin packing problem, Computers Industrial Engineering 55(2), 465-474 (2008)
[Tirado09] Tirado D., El doble problema del viajante con multiples pilas, Tesis Doctoral, Universidad Complutense de Madrid, 2009.
[TSPAntSim10] TSPAntSim, software en linea,
[Tukey77] Tukey J. W. Exploratory Data Analysis. Addison-Wesley, 1977.
REFERENCIAS
68
[Ülker08] Ülker, Ö., Korkmaz, E., y Özcan, E. A grouping genetic algorithm using linear linkage encoding for bin packing, Lecture Notes in Computer Science, Parallel Problem Solving from Nature - PPSN X, (pp. 1140-1149), Springer Berlin / Heidelberg (2008).
[Uğur08] Uğur A, Path Planning On A Cuboid Using Genetic Algorithms, Information Sciences 178, 3275-3287, 2008.
[Uğur09] Uğur A., Korukoğlu S., Caliskan A., Cinsdikici M., Alp A., Genetic Algorithm Based Solution For Tsp On A Sphere, Mathematical and Computational Applications, Vol. 14, No. 3, pp 219-228, 2009.
[Wäscher96] Wäscher, G. y Gau, T. Heuristics for the one-dimensional cutting stock problem: a computational study. OR Spektrum, 18, 131-144, 1996.
[Yang08] Yang M., Encyclopedia of Algorithms, Springer, 2008.
ANEXOS
69
ANEXO A. MANUAL DE USUARIO DE LA HERRAMIENTA
Bienvenido a la herramienta de visualización gráfica VICAM, el objetivo de esta
herramienta es apoyar al análisis de implementaciones algorítmicas que dan
solución a problemas complejos, como por ejemplo el problema de Bin Packing,
mediante la visualización gráfica y tabular, dicha herramienta cuenta con tres
opciones de visualización; Visualización del desempeño, Visualización gráfica y
Visualización tabular, tiene implementado la opción de Restauración de la base de
datos y cuenta con Ayuda para el usuario.
La Figura 21 muestra el menú principal de la manipulación de la
herramienta VICAM.
Figura 21 Menú principal de VICAM
En la Figura 22 se muestra el menú para visualizar las soluciones, las
cuales pueden ser; Visualización gráfica (permite ver de forma gráfica el acomodo
de los objetos en los contenedores), Visualización tabular (Ejecución: permite ver
de forma tabular información detallada de las soluciones y Solución: permite ver
de forma tabular información general de las soluciones) y Visualización del
desempeño (grafica el conjunto de soluciones generadas durante la ejecución de
la implementación algorítmica).
Figura 22 Menú de visualización de soluciones
ANEXOS
70
La Figura 23 muestra la pantalla de la visualización del desempeño que
tiene la implementación algorítmica durante su ejecución al resolver la instancia.
Figura 23 Pantalla de la visualización del comportamiento
La Figura 24 muestra los parámetros que deben ser configurados para
visualizar el comportamiento del algoritmo al solucionar la instancia. En 1) el
usuario debe seleccionar la instancia y el número de corrida para poder graficar su
conjunto de soluciones.
Figura 24 Parámetros de configuración para la visualización del comportamiento
La Figura 25 muestra los botones de manipulación de la gráfica, una vez
configurados los parámetros el usuario debe dar clic en el botón graficar 1) para
poder visualizar el gráfico generado con las soluciones correspondientes a la
1)
ANEXOS
71
instancia, el usuario tiene la opción de navegar dentro del conjunto de soluciones
generadas por secciones de 95 soluciones dando clic en el botón hacia adelante o
hacia atrás 2), muestra una leyenda que con el número total de soluciones
óptimas que se encontraron de todo el conjunto de soluciones 3).
Figura 25 Manipulación de la gráfica
La Figura 26 muestra la gráfica del comportamiento de la ejecución de la
implementación algorítmica, el eje “X” corresponde al número de soluciones
generadas y el eje “Y” corresponde al número de contenedores generados para el
almacenamiento de los objetos, el punto que intersecta el eje “x” y “y” corresponde
al número total de contenedores de la solución. Cuando se encuentra una solución
óptima el punto de intersección cambia a color rojo y en la parte superior de la
gráfica se genera una leyenda que indica que se encontró una solución óptima
dentro de la sección de 95 soluciones graficadas.
Figura 26 Gráfica del comportamiento
1)
2)
3)
ANEXOS
72
La Figura 27 muestra la pantalla de la visualización gráfica de una solución. Grafica el acomodo de los pesos en los
contenedores.
Figura 27 Pantalla de la visualización gráfica
ANEXOS
73
La Figura 28 muestra los parámetros que se deben configurar para
visualizar gráficamente el acomodo de los pesos en los contenedores, primero se
debe seleccionar el nombre de la instancia solucionada 1), a continuación el
usuario debe seleccionar el número de corrida o ejecución externa de la
implementación algorítmica 2), finalmente se debe seleccionar el número de
solución del conjunto de soluciones producidas por la implementación algorítmica
para determinada instancia 3).
Figura 28 Parámetros de configuración para la visualización gráfica
La Figura 29 muestra los parámetros de configuración del gráfico, el alto de
la gráfica y el ancho de la gráfica tienen configurados parámetros por default del
tamaño en pixeles de la gráfica, para el alto son 670 y para el ancho son 970, el
usuario tiene la opción de modificar estos parámetros 1), es opcional habilitar el
parámetro de guardar imagen para almacenar y crear una imagen del gráfico
generado 2), finalmente el usuario debe dar clic en el botón graficar para generar
el gráfico 3).
Figura 29 Parámetros de configuración del gráfico
1)
2)
3)
2)
3)
1)
ANEXOS
74
La Figura 30 muestra información general del gráfico generado; el total de
contenedores que quedaron si capacidad residual, el total de contenedores que
quedaron con capacidad residual, la sumatoria de los espacios residuales, el total
de contenedores generados para el almacenamiento de los objetos y el total de
objetos que forman la instancia.
Figura 30 Descripción de la ejecución
La Figura 31 muestra la visualización gráfica del acomodo de los pesos en
los contenedores, 1) representa un contenedor, 2) es el porcentaje de llenado del
contenedor, 3) representa el número del contenedor generado, 4) representa un
objeto, 5) representa la capacidad residual del contenedor y finalmente 6)
representa las unidades de llenado del contenedor. La visualización de los
contenedores se presenta de mayor a menor capacidad residual es por eso que
en 3) se muestra desordenado.
1)
ANEXOS
75
Figura 31 Visualización gráfica (acomodo de los pesos en los contenedores)
2)
1)
4)
5)
6)
3)
ANEXOS
76
La Figura 32 muestra la pantalla de la visualización tabular de la ejecución,
para visualizar de forma tabular una solución es necesario configurar los
parámetros de instancia, corrida y número de solución como se mostró en la
Figura 28. La descripción es la siguiente; 1) corresponde al número de contenedor
generado, 2) corresponde a la capacidad residual de cada contenedor y 3)
corresponden a los pesos almacenados en cada contenedor.
Figura 32 Pantalla de la visualización tabular de la ejecución
La Figura 33 muestra la pantalla de la visualización tabular de la solución,
en esta visualización se muestra por grupos de acuerdo a la solución encontrada,
el usuario debe elegir la instancia y la solución encontrada para poder desplegar el
1) 2)
3)
ANEXOS
77
grupo correspondiente a la configuración. La descripción de la visualización
tabular es la siguiente; 1) corresponde al número de la corrida o ejecución, 2)
corresponde al número de solución generada, 3) corresponde al nombre de la
instancia, 4) corresponde a la solución encontrada y 5) corresponde a la
capacidad del contenedor.
Figura 33 Pantalla de la visualización tabular de la solución
La Figura 34 muestra el menú de base de datos, la herramienta VICAM
permite al usuario restaurar bases de datos para la visualización de las
soluciones.
Figura 34 Menú de base de datos
1) 2) 3) 4) 5)
ANEXOS
78
La Figura 35 muestra la pantalla para la restauración de la base de datos, el
usuario debe escribir la ruta de la base de datos a restaurar 1) o elegir la ruta con
el botón de examinar 2), posteriormente se debe dar clic en el botón restaurar para
llevar a cabo el cambio de la base de datos 3).
Figura 35 Pantalla de restauración de base de datos
La Figura 36 muestra el menú de ayuda de la herramienta VICAM, muestra
al usuario ayuda para el manejo de la herramienta e información general sobre su
desarrollo.
Figura 36 Menú de ayuda
La Figura 37 muestra la pantalla de ayuda para el manejo de la herramienta
VICAM, dentro de la ayuda el usuario puede navegar entre los siguientes
capítulos; Introducción, este capítulo da la bienvenida a la herramienta, el capítulo
Soluciones, muestra al usuario paso a paso el manejo de cada una de las
visualizaciones que tiene implementadas VICAM como son; Visualización del
desempeño, Visualización gráfica y Visualización tabular de la ejecución y de la
solución, el capítulo Base de datos orienta al usuario en la restauración de base
de datos y el capítulo Ayuda muestra la información general de la herramienta.
1)
2) 3)