90
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

TESIS DE MAESTRÍA EN CIENCIAS Iliana... · Iliana Lizbeth Alvarado Lara Lic. en Informática por el Instituto Tecnológico de Zacatepec como requisito para la obtención del grado

  • Upload
    others

  • View
    9

  • 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)

ANEXOS

79

Figura 37 Pantalla de ayuda para el manejo de la herramienta VICAM

La Figura 38 muestra la pantalla que muestra la información general del

desarrollo de la herramienta VICAM.

Figura 38 Pantalla de información general de la herramienta VICAM