evaluación de la utilización de la metaheurística

138
PROFESOR PATROCINANTE: Mag. OSCAR ALEJANDRO ROMERO AYALA ESCUELA DE INGENIERÍA CIVIL INDUSTRIAL Evaluación de la utilización de la metaheurística Simulated Annealing para resolver problemas de abastecimiento de inventario, mediante un análisis comparativo de los resultados obtenidos con los de LINGO 11.0 Trabajo de Titulación para optar al título de Ingeniero Civil Industrial JAIME EDUARDO BARRÍA POVEDA PUERTO MONTT – CHILE 2014

Upload: others

Post on 28-Jun-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Evaluación de la utilización de la metaheurística

PROFESOR PATROCINANTE: Mag. OSCAR ALEJANDRO ROMERO AYALA

ESCUELA DE INGENIERÍA CIVIL INDUSTRIAL

Evaluación de la utilización de la metaheurística Simulated

Annealing para resolver problemas de abastecimiento de inventario,

mediante un análisis comparativo de los resultados obtenidos con los

de LINGO 11.0

Trabajo de Titulación

para optar

al título de Ingeniero Civil Industrial

JAIME EDUARDO BARRÍA POVEDA

PUERTO MONTT – CHILE

2014

Page 2: Evaluación de la utilización de la metaheurística

ii

DEDICATORIA

“La gran victoria que hoy parece fácil fue

el resultado de pequeñas victorias que

pasaron desapercibidas”

-Paulo Coelho

Page 3: Evaluación de la utilización de la metaheurística

iii

AGRADECIMIENTOS

Gracias a mis padres y hermana, por el cariño que siempre me han brindado, por ser el soporte que me ha

impulsado a seguir adelante, para nunca rendirme, y poder alcanzar las metas propuestas.

Gracias a mi familia, por la confianza, apoyo y preocupación entregada a mi formación como persona y

profesional.

Gracias a mis amigos, que hicieron más confortante el enfrentar día a día la vida universitaria. Sin duda, el

compartir con ustedes es el mejor aporte a lo largo de esta experiencia, tanto en el aspecto académico

como personal.

Gracias a mis profesores, por entregar los conocimientos y actitudes necesarias para forjarme como

profesional y poder afrontar el mundo laboral de la mejor manera posible. En especial agradezco al profesor

Oscar Romero, por el apoyo y conocimientos entregados, no solo en el desarrollo del presente proyecto de

título, sino que a lo largo de esta experiencia universitaria.

Gracias a la empresa, por haber proporcionado la información necesaria para realizar los análisis del

presente proyecto de título, en especial al Sr. Orlando Morales, por la disposición a entregar todo el apoyo

necesario y transmitir sus experiencias laborales.

Page 4: Evaluación de la utilización de la metaheurística

iv

SUMARIO

Los insumos son una parte importante para cualquier persona que desarrolla un negocio, ya que, permiten

desarrollar las actividades diarias sin problemas de abastecimiento, en especial, cuando se trata de

empresas de producción. La administración de inventarios permite supervisar el movimiento de éstos y

determinar los insumos que se deben reabastecer, en cuanto a cantidad y en el tiempo adecuado, para

manejar los recursos de manera apropiada. En cuanto a este último punto, existen software que permiten

controlar el movimiento de insumos para tomar decisiones pero que no entregan las cantidades necesarias

para disminuir los costos de almacenamiento, por lo tanto, se pretende generar un software apoyado en la

metaheurística Simulated Annealing, el cual, permita resolver problemas de abastecimiento de inventario

(multiproducto). Este software es comparado con uno de optimización (LINGO 11.0), mediante la utilización

de datos reales, para determinar si existen diferencias significativas entre ambos, en relación al costo total

y el tiempo de ejecución.

Finalmente, mediante los análisis realizados, fue posible determinar la superioridad del software generado,

en cuanto a costos totales, por sobre LINGO 11.0, lo cual, supone un aporte para la solución de problemas

de inventario. Tomando como base los resultados entregados por LINGO 11.0, el software propuesto arrojó

una variación porcentual de -0,5 por ciento en el costo total de inventario, una diferencia de $1.456.090.

Page 5: Evaluación de la utilización de la metaheurística

v

ÍNDICE DE CONTENIDO

Página 1. ANTECEDENTES GENERALES 1

1.1. Introducción 1

1.2. Objetivos 3

1.2.1. Objetivo General 3

1.2.2. Objetivos Específicos 3

1.3. Planteamiento del Problema 4

2. MARCO TEÓRICO 6

2.1. Inventario 6

2.1.1. Definición 6

2.1.2. Funciones del Inventario 7

2.1.3. Administración de Inventarios 8

2.1.4. Sistemas de Inventario 11

2.1.5. Componentes de los sistemas de Inventario 17

2.2. Simulated Annealing 22

2.2.1. Definición 22

2.2.2. Aceptación de Movimientos 24

2.2.3. Programación de Enfriamiento 25

2.2.4. Pseudo-Código 28

2.2.5. Otros métodos similares 28

2.3. Lenguajes de Programación 31

2.3.1. Definición 31

2.3.2. C 32

2.3.3. C++ 32

2.3.4. C# 33

2.3.5. Java 34

2.3.6. Python 35

2.4. Software LINDO/LINGO 36

2.4.1. Sintaxis LINDO 36

2.4.2. Sintaxis LINGO 36

2.4.3. Metodología de trabajo de LINGO 11.0 37

2.5. Análisis estadístico 37

2.5.1. Pruebas de Distribución Normal 38

2.5.2. Análisis paramétrico 39

Page 6: Evaluación de la utilización de la metaheurística

vi

2.5.3. Análisis no paramétrico 40

2.5.4. One-way ANOVA 40

3. DISEÑO METODOLÓGICO 42

3.1. Especificación de los límites de trabajo 43

3.1.1. Determinación de los parámetros y variables involucrados en la administración de inventario 43

3.1.2. Determinación de los parámetros, variables y conceptos involucrados con la metaheurística Simulated Annealing 44

3.1.3. Elección del lenguaje de programación a utilizar 44

3.1.4. Criterios de comparación 45

3.2. Desarrollo del software propuesto 45

3.2.1. Realización del software propuesto utilizando la metaheurística Simulated Annealing aplicado en problema de inventario 45

3.3. Evaluación de resultados del software propuesto y LINGO 11.0 46

3.3.1. Recopilación de datos reales para ser utilizados en la evaluación 46

3.3.2. Análisis de los resultados entregados por el software propuesto 47

3.3.3. Análisis de los resultados entregados por LINGO 11.0 48

3.3.4. Comparación del desempeño de ambos software 48

3.4. Diseño final del software propuesto 49

3.4.1. Depuración del software propuesto y elaboración de un manual para el usuario 49

4. PRESENTACIÓN Y ANÁLISIS DE RESULTADOS 50

4.1. Especificación de los límites de trabajo 50

4.1.1. Determinación de los parámetros y variables involucrados en la administración de inventario 50

4.1.2. Determinación de los parámetros, variables y conceptos involucrados con la metaheurística Simulated Annealing 52

4.1.3. Elección del lenguaje de programación a utilizar 53

4.1.4. Criterios de comparación 55

4.2. Desarrollo del software propuesto 55

4.2.1. Realización del software propuesto utilizando la metaheurística Simulated Annealing aplicado en problema de inventario 56

4.3. Evaluación de resultados del software propuesto y LINGO 11.0 65

4.3.1. Recopilación de datos reales para ser utilizados en la evaluación 65

4.3.2. Análisis de los resultados entregados por el software propuesto 67

4.3.3. Análisis de los resultados entregados por LINGO 11.0 78

4.3.4. Comparación del desempeño de ambos software 79

4.4. Diseño final del software propuesto 81

4.4.1. Depuración del software propuesto y elaboración de un manual para el usuario 81

Page 7: Evaluación de la utilización de la metaheurística

vii

5. CONCLUSIONES Y RECOMENDACIONES 84

5.1. Conclusiones 84

5.2. Recomendaciones 85

6. BIBLIOGRAFÍA 86

7. LINKOGRAFÍA 89

Page 8: Evaluación de la utilización de la metaheurística

viii

ÍNDICE DE FIGURAS

Página

Figura N° 2.1: Representación gráfica de la categorización ABC. 9

Figura N° 2.2: Modelo básico del EOQ. 12

Figura N° 2.3: Modelo EOQ con producción. 14

Figura N° 2.4: Planilla de la metaheurística Simulated Annealing. 28

Figura N° 3.1: Diseño metodológico. 42

Figura N° 4.1: Esquema de funcionamiento del software. 56

Figura N° 4.2: Entidad Producto. 57

Figura N° 4.3: Selección de modelo EOQ. 57

Figura N° 4.4: Esquema de inventario. 58

Figura N° 4.5: Aplicación de criterio ABC. 59

Figura N° 4.6: Selección de criterio para categorización. 60

Figura N° 4.7: Entidad Recocido. 60

Figura N° 4.8: Esquema de Simulated Annealing. 61

Figura N° 4.9: Planilla de la metodología del Simulated Annealing aplicada en el software. 63

Figura N° 4.10: Aspecto visual del software. 65

Figura N° 4.11: Insumos antes de la categorización ABC. 68

Figura N° 4.12: Insumos después de la categorización ABC. 69

Figura N° 4.13: Clase InformeRS. 73

Figura N° 4.14: Diseño final del software. 82

Page 9: Evaluación de la utilización de la metaheurística

ix

ÍNDICE DE TABLAS

Página

Tabla N° 2.1: Fórmulas de tasas que constituyen la TA. 20

Tabla N° 2.2: Rangos de valores para el costo de almacenamiento. 21

Tabla N° 2.3: Analogía entre el sistema físico y el problema de optimización 23

Tabla N° 2.4: Variantes del Algoritmo Demon 30

Tabla N° 4.1: Importancia de los parámetros y variables de inventario. 50

Tabla N° 4.2: Fórmulas de los modelos EOQ utilizados 51

Tabla N° 4.3: Importancia de los parámetros y variables de Simulated Annealing 52

Tabla N° 4.4: Función objetivo para cada modelo EOQ 53

Tabla N° 4.5: Ventajas y desventajas de los lenguajes de programación 54

Tabla N° 4.6: Tabla de datos del software. 57

Tabla N° 4.7: Parámetros necesarios para cada modelo EOQ. 58

Tabla N° 4.8: Conjunto de posibles soluciones. 62

Tabla N° 4.9: Estructura planilla Excel exportada. 64

Tabla N° 4.10: Posibles valores para N, Alfa y T°. 70

Tabla N° 4.11: Pruebas de Distribución Normal para los valores de temperatura. 71

Tabla N° 4.12: Pruebas de Distribución Normal para los valores de alfa. 71

Tabla N° 4.13: ANOVA de un factor para temperatura y alfa. 72

Tabla N° 4.14: Comparación de resultados obtenidos para N = 10 y N = 5. 73

Tabla N° 4.15: Extracto del informe generado por el software para las iteraciones del Simulated Annealing. 74

Tabla N° 4.16: Comparación de resultados obtenidos para N = 10 y N = 8. 76

Tabla N° 4.17: Pruebas de Distribución Normal para los valores de N. 77

Tabla N° 4.18: Resultados entregados por el software para las distintas situaciones de demanda. 78

Tabla N° 4.19: Resultados entregados por LINGO para las distintas situaciones de demanda. 79

Tabla N° 4.20: Resultados obtenidos en ambos software. 80

Tabla N° 4.21: Pruebas de Distribución Normal para ambos software según costo total. 80

Tabla N° 4.22: Prueba de t pareado para ambos software según costo total. 80

Page 10: Evaluación de la utilización de la metaheurística

x

ÍNDICE DE FÓRMULAS

Página

Fórmula (2.1): Representación del costo total para el modelo EOQ básico 13

Fórmula (2.2): Costo total para modelo EOQ básico 13

Fórmula (2.3): Cantidad requerida para modelo EOQ básico 13

Fórmula (2.4): Punto de Reorden 13

Fórmula (2.5): Cantidad requerida para modelo EOQ con producción 14

Fórmula (2.6): Cantidad requerida para modelo EOQ con descuentos 14

Fórmula (2.7): Costo total para modelo EOQ con faltantes 15

Fórmula (2.8): Cantidad requerida para modelo EOQ con faltantes 15

Fórmula (2.9): Cantidad óptima de unidades faltantes 15

Fórmula (2.10): Probabilidad de Bolztmann 23

Fórmula (2.11): Aceptación de movimientos desfavorables 25

Fórmula (2.12): Radio de aceptación de temperatura 25

Fórmula (2.13): Actualización geométrica de la temperatura 26

Fórmula (2.14): Actualización logarítmica de la temperatura 26

Page 11: Evaluación de la utilización de la metaheurística

xi

ÍNDICE DE ANEXOS

ANEXO A: Iteraciones realizadas para N = 5; donde T es tiempo y CT el costo total.

ANEXO B: Iteraciones realizadas para N = 10.

ANEXO C: Datos de Temperatura para N=10.

ANEXO D: Pruebas de Distribución Normal para los valores de temperatura.

ANEXO E: Prueba ANOVA para los valores de temperatura.

ANEXO F: Comparaciones múltiples para los valores de temperatura.

ANEXO G: Datos de Alfa para N=10.

ANEXO H: Pruebas de Distribución Normal para los valores de alfa.

ANEXO I: Prueba ANOVA para los valores de alfa.

ANEXO J: Comparaciones múltiples para los valores de alfa.

ANEXO K: Iteraciones realizadas para N=8.

ANEXO L: Datos de los distintos valores de N.

ANEXO M: Pruebas de Distribución Normal para los valores de N.

ANEXO N: Prueba ANOVA para los valores de N.

ANEXO O: Comparaciones múltiples para los valores de N.

ANEXO P: Informe de iteraciones realizadas por SA para N=10, alfa=0,5 y temperatura=100.000.

ANEXO Q: Iteraciones realizadas en el software para los distintos tipos de demanda.

ANEXO R: Modelo EOQ básico desarrollado en LINGO.

ANEXO S: Iteraciones realizadas en LINGO para los distintos tipos de demanda.

ANEXO T: Datos de ambos software según costo total.

ANEXO U: Prueba de Distribución Normal para ambos software según costo total.

ANEXO V: Prueba de t para ambos software según costo total.

ANEXO W: Gráficos Bloxpot para ambos software según costo total.

ANEXO X: Manual para el usuario.

ANEXO Y: Códigos utilizados para la programación del software.

Page 12: Evaluación de la utilización de la metaheurística

xii

NOMENCLATURA

Código: Conjunto de instrucciones propias de un lenguaje de programación que permiten

procesar los datos ingresados y entregar los resultados mediante una interfaz gráfica.

Interfaz: Conjunto de formas y códigos que permiten la interacción entre un sistema y los

usuarios.

Metaheurística: Procedimiento que permite resolver problemas de optimización mediante un

proceso de búsqueda, en el cual, se llevan a cabo un gran número de iteraciones. Debido a que

considera aspectos probabilísticos para la aceptaciones de soluciones, se dice que es un

procedimiento aproximado.

Metodología: Conjunto de procedimientos que determinan el funcionamiento de una

investigación, con el objetivo de encontrar una solución a un problema en particular.

Método: Forma de realizar algo de manera organizada y sistemática para alcanzar un resultado.

Óptimo local: Solución mejor o igual a cualquier otra solución de una región factible.

Óptimo global: Solución mejor que cualquier otra solución de una región factible.

Procedimiento: Conjunto ordenado de acciones, el cual, permite obtener un resultado y es

posible de realizar una y otra vez.

Pseudo-código: Lenguaje artificial que permite describir informalmente un algoritmo o

metaheurística para que una persona pueda interpretarlo y aplicarlo mediante un lenguaje de

programación en particular. Es una guía útil para la programación de metaheurísticas.

Región factible: Conjunto de datos, en el cual, es posible encontrar distintas soluciones para un

problema en particular.

Page 13: Evaluación de la utilización de la metaheurística

1

1. ANTECEDENTES GENERALES

1.1. Introducción

La inversión de las empresas se concentran, en la mayoría de los casos, en el inventario, por ende, saber

cómo gestionarlos es reflejo del éxito empresarial. La falta de información de los insumos almacenados

provoca errores en la empresa, los cuales, principalmente, afectan su operación, por ende, uno de los

puntos fundamentales para entender la importancia del inventario en la empresa, es conocer los costos

asociados, ya que, influyen en la compra, el almacenamiento y la manipulación de los insumos. La política

de inventario cobra un rol importante al interior de una compañía, ya que, determina el modo de operación,

las tecnologías a implementar y los niveles de costos, entre otros varios aspectos. (REVISTA LOGISTEC,

2014).

La administración de inventarios es muy importante en las empresas, ya que, permite manejar las

cantidades de los distintos insumos utilizados para la fabricación de productos o la distribución a clientes,

evitando caer en quiebre de stock o, por el contrario, tener una gran cantidad de insumos. El primer caso,

significaría el paro de las actividades de la empresa, debido a que las líneas productivas no dispondrían de

los insumos necesarios para la producción. Para una empresa de distribución o servicio, significa no poder

entregar insumos a tiempo al cliente. Para el segundo caso, independiente de la naturaleza de la empresa,

significa un gran aumento de los costos, ya que, en muchos casos, es necesario mantenerlos en ciertas

condiciones, se podrían dañar o quedar obsoletos, lo cual, dependiendo de la naturaleza del producto, se

traduce en pérdidas económicas. Por lo tanto, conocer la cantidad a pedir y establecer un punto de reorden,

son fundamentales para evitar estos problemas.

La administración de inventarios permite supervisar el movimiento de los insumos al interior de las

empresas y obtener información acerca de ellos, gracias a lo cual, es posible determinar las cantidades a

solicitar y el momento adecuado para hacerlo. El inventario involucra una variedad de costos, asociados a;

valor unitario de los insumos, almacenarlos o mantenerlos, realizar los pedidos y escasez; los cuales, se

pueden minimizar mediante un correcto control. Actualmente, existen distintos sistemas de inventario que

permiten controlar el movimiento de los insumos, pero no entregan las cantidades necesarias para disminuir

los costos de almacenamiento.

Dado lo anterior, se propone el desarrollo de un software utilizando la metaheurística Simulated Annealing,

la cual, permita disminuir los costos de inventario. Para asegurar si el software propuesto es una buena

alternativa, se realiza una comparación con el software de optimización LINGO 11.0, en cuanto al costo

total de inventario y el tiempo de ejecución.

Page 14: Evaluación de la utilización de la metaheurística

2

De acuerdo a lo planteado, se establece una secuencia de etapas, las cuales, permiten estructurar el

proyecto de título. En primer lugar, se realiza una revisión bibliográfica en relación a inventario y Simulated

Annealing, desarrollada en el capítulo 2: Marco Teórico, con el objetivo de comprenderlos a profundidad y

aplicar la metaheurística para resolver problemas de abastecimiento de inventario. Después, se establece

la metodología de trabajo necesaria para obtener los resultados deseados y poder aplicar los análisis

correspondientes, la cual, se desarrolla en el capítulo 3: Diseño metodológico. Por último, en el capítulo 4:

Resultados y análisis de resultados, se aplica la metodología de trabajo propuesta, con la finalidad de dar

una respuesta satisfactoria al objetivo general.

Page 15: Evaluación de la utilización de la metaheurística

3

1.2. Objetivos

1.2.1. Objetivo General

Desarrollar un software que utiliza la metaheurística Simulated Annealing en problemas de inventario,

mediante la comparación con un software de optimización (LINGO 11.0), para determinar si los resultados

entregados por el software propuesto son mejores en cuanto a costo total de inventario y el tiempo de

ejecución.

1.2.2. Objetivos Específicos

1. Comprender el comportamiento de los distintos parámetros implicados en la administración de

inventario, mediante el estudio bibliográfico existente, para determinar los límites en que se

desarrolla el software propuesto.

2. Comprender la metodología del Simulated Annealing, mediante el estudio de investigaciones

relacionados con la metaheurística, para su posterior aplicación en el diseño del software

propuesto.

3. Desarrollar el software, mediante el uso de un lenguaje de programación, para aplicar la

metodología del Simulated Annealing en problemas asociados a inventario.

4. Evaluar el software propuesto, a través de un problema real de inventario, para validar su

funcionamiento y contrastar sus resultados con los obtenidos por LINGO 11.0.

5. Elaborar un manual de usuario, mediante la descripción y funcionamiento del software propuesto,

para permitir el uso adecuado del este como la interpretación de los resultados.

Page 16: Evaluación de la utilización de la metaheurística

4

1.3. Planteamiento del Problema

Las empresas necesitan ciertos insumos para poder abastecer a los distintos departamentos que la

componen, lo cual, les permite funcionar sin inconvenientes y producir sus productos o prestar servicios a

sus clientes. Para ello, existe la administración de inventario, la cual, permite a las empresas disponer de

información en cuanto a la variedad de insumos que disponen en bodega, el número de unidades que

poseen de cada uno y cuando van a tener que realizar la compra de un nuevo lote de insumos. A partir de

esto, se generan preguntas como: ¿qué comprar?, ¿cuándo comprar?, ¿cuánto comprar? y ¿dónde

almacenar?. Una buena administración de inventario permite disminuir los errores en la toma de decisiones

de la empresa y facilita la implementación de políticas que determinan el modo de operación, tecnologías,

costos, nivel de controles a realizar, entre otros aspectos.

Todos estos puntos son importantes, ya que, el no disponer del stock adecuado de insumos, impediría a la

empresa seguir fabricando sus productos, lo cual, podría generar el paro de las actividades de la empresa

o la pérdida de sus clientes. Por otro lado, si se tiene un excesivo stock de insumos, estos producen gastos

adicionales, debido a que, en muchos casos, es necesario mantenerlos bajo ciertas condiciones (por

ejemplo a baja temperatura), ya que, si no es así, los insumos se deterioran o quedan obsoletos.

El objetivo de las empresas es obtener ganancias, por lo cual, buscan la mejor opción que les permita

maximizarlas, considerando los precios de sus productos/servicios y los costos asociados. Además, es

necesario tener en cuenta la calidad de estos, ya que, ello afecta a la percepción del cliente y, por ende,

influye en las ventas de la empresa. La administración de inventarios apela al aumento de los precios y la

disminución de los costos, lo cual implica: disponer de los insumos adecuados en el momento correcto,

enviarlos y utilizarlos en el lugar adecuado, y aumentar el nivel de servicio.

Debido a lo anterior, la administración de inventarios es una importante herramienta para maximizar las

utilidades de las empresas, ya que, gracias a esto, los altos directivos de las empresas disponen de

información de los insumos que poseen y en qué cantidades, por lo que, saben cuándo es necesario

efectuar una compra para disponer de los insumos correctos en el momento correcto y en el lugar correcto.

El adecuado manejo del inventario permite a la empresa controlar las órdenes de compra de insumos, para

así, disminuir los costos por orden y no reiterar las solicitudes realizadas previamente. De esta forma, se

evita tener un sobre stock de insumos y, por lo tanto, no incurrir en altos costos de almacenamiento.

Además, no todos los proveedores ofrecen los insumos a precios iguales y no siempre se pueden obtener

con un valor unitario igual, ya sea, por la diferencia de precios entre ellos como por los distintos descuentos

que ofrecen para incrementar sus ventas. Por lo tanto, es otro factor importante para disminuir los costos

de la empresa, porque se debe buscar al proveedor con la mejor oferta.

Page 17: Evaluación de la utilización de la metaheurística

5

Si bien actualmente existen distintos métodos para resolver los problemas anteriormente expuestos, como

por ejemplo: modelos EOQ (Economic Order Quantity); a veces se presentan problemas para determinar

de manera exacta la cantidad de insumos necesarios y, por lo tanto, el costo total obtenido no siempre es

el más conveniente para la empresa. Cabe mencionar, que existen varios software que trabajan con estos

tipos de sistemas, por ejemplo: LINDO, LINGO, MPL, entre otros; los cuales, se limitan a obtener los

resultados de acuerdo a los parámetros y restricciones consideradas.

Por lo tanto, en el presente proyecto de título se genera un software, mediante la utilización del Simulated

Annealing en problemas de inventario, el cual, permite llevar a cabo una búsqueda de un óptimo global en

un conjunto determinado de posibles soluciones y, por ende, encontrar la solución más conveniente en

temas de costo. En relación a los resultados que entrega el software generado, surgen interrogantes

vinculadas a las posibles diferencias con los software de optimización ya existentes: ¿existen diferencias

significativas entre los resultados obtenidos con el software propuesto y los entregados por LINGO 11.0?.

Se pretende dar respuesta a las incógnitas planteadas anteriormente, a partir de la comparación de los

resultados obtenidos (en cuanto a costo total de inventario y tiempo de ejecución) con el software propuesto

y los entregados por LINGO, versión 11.0, para determinar el aporte de la utilización de las metaheurísticas

en problemas de inventario.

Page 18: Evaluación de la utilización de la metaheurística

6

2. MARCO TEÓRICO

El presente proyecto de título se divide, principalmente, en 5 áreas temáticas: Inventario, Simulated

Annealing, Lenguajes de Programación, Software LINGO y Análisis estadístico. Los dos primeros, se

definen y presentan con mayor profundidad, ya que, los conceptos desarrollados en cada uno, permiten la

elaboración del software propuesto. Los lenguajes de programación son medios necesarios para poder

llevar a cabo el diseño de dicho software. LINGO se utilizará para realizar las comparaciones pertinentes

con los resultados finales, por ende, se considera necesario conocer cómo es su metodología de búsqueda

de solución para problemas en general. Los análisis estadísticos permiten estudiar y determinar los

parámetros más adecuados a considerar de acuerdo a distintos escenarios planteados.

2.1. Inventario

2.1.1. Definición

Inventario son existencias de piezas o recursos en la organización, los cuales, son almacenados para

satisfacer una demanda actual o futura, con el objetivo de facilitar la obtención de dichos recursos sin

necesidad de recurrir constantemente al mercado. CHASE (2009), destacan la diferencia de conceptos

referentes a inventario que existe entre manufactura y servicios. Cuando se habla de piezas que son

utilizadas para la fabricación de un producto y, por lo tanto, que forman parte de la producción de la

empresa, se utiliza el término inventario de manufactura, el cual, la mayoría de las veces, se clasifica en:

materia prima, productos terminados, partes componentes, suministros y trabajo en proceso. En los

servicios, el término inventario generalmente se refiere a los bienes tangibles que se venden en el negocio

y a los suministros que son necesarios para administrar un servicio adecuado (CHASE, 2009).

Mantener un control adecuado del inventario permite a las empresas vigilar los niveles de existencias y

poder dar respuestas a las principales problemáticas al interior de la organización, las cuales son: ¿qué

insumos necesito para el correcto desempeño de mi empresa?, ¿cuánto tendré que pedir de cada uno? y

¿cuándo tendré que realizar el pedido? (CHASE, 2009).

Se dice que el inventario es un mal necesario, pero SHINGO (1990) piensa que: “El 90% del énfasis es en

lo necesario y solamente el 10% en lo del mal. ¡Algunas personas afirman incluso que el stock es

necesario!”; y menciona que la presencia del inventario permite mitigar o resolver los problemas generados

por la variación en la producción y que permite responder ante demandas inesperadas. HEIZER (2008)

dicen que el inventario representa una importante inversión para muchas empresas y representa el mayor

activo de la empresa: “Esta inversión es muchas veces mayor de lo que debería porque a las empresas les

resulta más fácil mantener un inventario por si acaso (just in case) en vez de un inventario justo a tiempo

(just in time)”. Además, según CHASE (2009), el inventario es dinero: “Para muchos negocios, el inventario

Page 19: Evaluación de la utilización de la metaheurística

7

es el activo más importante en el balance general en todo momento, aun cuando a menudo no es muy

líquido”. Por lo tanto, de acuerdo a lo propuesto por estos autores, se puede determinar la importancia que

tiene el inventario al interior de una empresa, tanto desde el punto de vista productivo como monetario, ya

que, permite mitigar problemas relacionados con la producción y, a su vez, representa uno de los mayores

activos al interior de la empresa.

2.1.2. Funciones del Inventario

Autores como CHASE (2009) y HEIZER (2008), señalan la importancia del manejo de inventarios y, por lo

tanto, las principales razones de mantener un correcto suministro de este.

A. Independencia entre las operaciones: El suministro de materiales en el centro de trabajo

permite flexibilidad en las operaciones, lo cual es primordial, en especial en líneas de

ensamblaje, ya que, los tiempos de proceso son distintos entre una unidad y otra. Por lo tanto,

es importante tener un colchón de varias partes en la estación de trabajo para compensar

estas variaciones en los tiempos de proceso y, de esta manera, la producción promedio puede

ser muy estable.

B. Variación de la demanda: Comúnmente, la demanda no se conoce con precisión, por lo que,

es preciso disponer de inventarios de seguridad para poder cubrir esas variaciones en la

demanda.

C. Flexibilidad en la programación de la producción: La existencia de inventario alivia la presión

sobre el sistema de producción para tener listos los productos para satisfacer la demanda de

la empresa. Esto permite una planeación de la producción para tener un flujo más tranquilo y

una operación a más bajo costo, ya que, los lotes producidos son más grandes.

D. Variación en el tiempo de entrega de los pedidos: Al momento en el que el proveedor envía el

material requerido, pueden surgir demoras por distintas razones: variación normal en el tiempo

de envío, faltantes de material por parte del proveedor, huelgas inesperadas en la planta del

proveedor o en la empresa encargada de los envíos, errores en el material enviado o material

en mal estado.

E. Descuentos basados en tamaño del pedido: Mientras más grande sea el tamaño del envío,

menor será el costo unitario.

CHASE (2009) señalan que, debido a cada una de las razones anteriores, hay que considerar que

mantener inventario es costoso y que, generalmente, disponer grandes cantidades de existencias no es

recomendable. Con respecto a eso, TAHA (2012) es más específico y señala que mantener un exceso de

Page 20: Evaluación de la utilización de la metaheurística

8

existencias de un bien no es recomendable debido a que aumenta tanto el costo del capital como el costo

de almacenamiento, y que la escasez de bienes interrumpe la producción y/o las ventas. Por lo tanto, es

necesario es buscar un nivel de inventario que balancee las dos situaciones extremas minimizando una

función de costos apropiada.

2.1.3. Administración de Inventarios

En las organizaciones, se establecen sistemas con la finalidad de administrar los inventarios. De acuerdo

a CHASE (2009) y HEIZER (2008), dichos sistemas se ven enfrentados a dos problemas importantes, los

cuales son; cómo se pueden clasificar las existencias del inventario y garantizar que se lleven los registros

exactos de la disponibilidad de estos.

A continuación, se presentarán sencillos sistemas, mencionados por dichos autores, que se utilizan

frecuentemente en las organizaciones.

A. Categorización ABC

Para mantener el inventario en orden y sin problemas, es necesario realizar un conteo de las unidades

disponibles de cada artículo, elaborar los pedidos, recibir las existencias, entre otras muchas labores, lo

cual, requiere de tiempo del personal y cuesta dinero. Como no siempre se poseen los recursos necesarios

para realizar estas labores con cada uno de las existencias al interior de la organización, lo más lógico es

enfocarse en los artículos que son más importantes en el inventario, es decir, los que tiene más peso en

los ingresos (CHASE, 2009).

La categorización ABC se utiliza para clasificar el inventario en 3 grupos, de acuerdo a la relevancia de

estos en la organización, y se basa en el “Principio de Pareto”. En el siglo XIX, un economista italiano

llamado Vilfredo Pareto realizó un estudio sobre la distribución de la riqueza en la ciudad de Milán, Italia, y

descubrió que el 20% de las personas manejaban el 80% de las riquezas. De esto, surgió la lógica de que

la minoría posee la mayor importancia y que la mayoría tiene menor importancia, lo cual, se amplió a varias

situaciones, desde la aplicación en la vida diaria (donde la menor parte de las decisiones de las personas

son las que dan forma a su futuro y la mayoría de las decisiones son relativamente sin importancia), hasta

en los inventarios, donde, pocos artículos tienen una mayor importancia dentro de la empresa, es decir,

pocas de las existencias totales son las que más influyen económicamente al interior de la organización.

Por lo tanto, la idea de la aplicación de este principio, es la de dar un mayor enfoque las existencias que

más influyen en la empresa, en desmedro de las demás (CHASE, 2009)

Para realizar la categorización ABC adecuadamente, primero, se debe definir un criterio para llevar a cabo

la clasificación de las existencias, es decir, si se desea realizar una clasificación en función del volumen de

stock en inventario, de los kilos exportados, o del volumen en pesos, se deben ordenar las existencias de

acuerdo a uno de esos criterios. Después, la clasificación de los grupos se realiza de la siguiente forma:

Page 21: Evaluación de la utilización de la metaheurística

9

las existencias más relevantes que representan entre el 70 y 80% del total, pertenecen al grupo A; en el

grupo B, se encuentran las existencias que poseen entre el 15 y 25% del total; y, por último, en el grupo C

se encuentran los menos relevantes que representan el 5% del total (HEIZER, 2008).

Figura N° 2.1: Representación gráfica de la categorización ABC. Fuente: HEIZER, (2008).

La ventaja de llevar a cabo esta clasificación en grupos, es que se pueden establecer diferentes políticas

y controles para cada grupo, los cuales, según CHASE (2009) y HEIZER (2008), van desde la destinación

de recursos de compra (grupo A muy superior al grupo C), el nivel de control realizado sobre las existencias

(más estricto y registros más exactos para el grupo A), hasta la previsión de las existencias (los del grupo

A justifican una mayor atención). MARTÍNEZ (2012) agrega que la planificación del tiempo debe hacerse

en base a la importancia entregada por dicho análisis. MURILLO (2013) señalan en su estudio la

importancia de este análisis para la distribución de los productos en el almacén, ya que, los más importantes

(los que se encuentran en el grupo A) deberían estar al principio, debido a su alta rotación. Pero GAITHER

(2000) mencionan las excepciones que deberían hacerse al momento de realizar este análisis, por ejemplo:

con los materiales críticos para la producción, materiales con plazos de entrega muy erráticos, materiales

con demanda muy errática, materiales muy grandes o voluminosos, entre otros; por lo que, es necesario

utilizar el juicio en la aplicación del procedimiento.

CHASE (2009) también resaltan el hecho de que el costo unitario de cada una de las existencias no tiene

ninguna relación con su clasificación. Lo que realmente importa es el peso que dichas existencias pueden

tener al interior de la empresa.

Page 22: Evaluación de la utilización de la metaheurística

10

B. Exactitud de los registros

Es un elemento fundamental en los sistemas de inventarios, ya que, la precisión en los registros permite a

las organizaciones enfocarse en aquellas existencias que son necesarias, como ya ha sido mencionado en

el punto anterior, “Categorización ABC”.

En ciertas ocasiones, suele suceder que los registros no concuerden con el inventario físico, lo cual, puede

afectar negativamente a los encargados de tomar las decisiones, ya que, se pueden realizar pedidos de

productos que no son necesarios en ese momento y/o dejar de lado a los artículos que realmente tienen

un bajo stock de unidades. Existen muchas razones por las que no haya una concordancia entre ellos, las

cuales, pueden ser desde errores u omisión de los registros de la entrada o salida de existencias del

almacén, hasta el retiro no autorizado de unidades.

CHASE (2009), HEIZER (2008) y PÉREZ (2010) coinciden que, para llevar un correcto y exacto registro

de las existencias, un almacén bien organizado debe tener un acceso restringido, así, sólo el personal

autorizado podrá acceder a éste y serán ellos los que llevarán el control de las unidades que entren y

salgan de ahí. Además, las existencias se deben almacenar en un lugar en específico y no en cualquier

parte, de esta forma, serán más fáciles localizar y controlar, y todo debe estar bien rotulado, tanto las piezas

que se utilizarán más adelante, como las cajas y las estanterías donde se acomodaran las existencias.

También, señalan la importancia de informar al personal acerca de la relevancia que tiene llevar un registro

exacto en la empresa, para que dicha labor sea más fácil de desarrollar. Esto demuestra la importancia de

que sólo personal autorizado pueda ingresar a los almacenes de acceso restringido, ya que, si no fuese

así, cualquier persona podría ingresar a un almacén abierto y podría extraer existencias de su interior de

forma ilegal, afectando negativamente a la organización.

C. Conteo de Ciclo:

Consiste en verificar los registros mediante una inspección frecuente del inventario. De acuerdo a CHASE

(2009), la clave para llevar a cabo el conteo de manera efectiva y precisa es decidir que piezas se van a

contar, cuándo y por quién.

Según lo señalado por HEIZER (2008) y PÉREZ (2010), el conteo de ciclo se basa en la clasificación del

inventario de existencias obtenidas mediante la categorización ABC, por lo que, según la clasificación que

nos entrega dicho análisis, se puede determinar la frecuencia con la cual se realizará la revisión de ciertas

existencias en particular, es decir, los artículos más relevantes para la organización, los del grupo A, se

recontarán con mayor frecuencia, por ejemplo cada un mes; los artículos pertenecientes al grupo B con

una menor frecuencia y los del grupo C, posiblemente, una vez cada seis meses. De acuerdo a CHASE

Page 23: Evaluación de la utilización de la metaheurística

11

(2009), la clave para llevar a cabo un conteo de manera efectiva y precisa es decidir que piezas se van a

contar, cuándo y por quién.

Según CHASE (2009), el momento adecuado para realizar el recuento de existencias es cuando no existe

actividad en el almacén, por lo que, es recomendable realizarla los fines de semana o al final del último

turno. Hace algunos años, las empresas realizaban inventarios físicos anuales, lo cual, muchas veces

significaba cerrar la instalación para que el personal realizase el conteo del stock de unidades disponibles.

Algunas organizaciones disponen al personal regular para llevar a cabo el conteo en días determinados.

Otras, contratan empresas privadas, dedicadas al conteo de inventario, con lo cual, se aseguran de que

personas especializadas en dicha labor realicen el trabajo CHASE (2009).

2.1.4. Sistemas de Inventario

Como se mencionó en la sección anterior, después de realizar la admnistración de las existencias en

inventario se deben aplicar políticas operativas para mantener y controlar los bienes en existencia. De

acuerdo a CHASE (2009), un sistema de inventario proporciona dichas políticas y la estructura

organizacional necesarias para la organización. El sistema se encarga de llevar a cabo los pedidos y recibir

los bienes, determinar el momento en el cual se deben realizar los pedidos y llevar un registro de los bienes

que se pidieron, la cantidad que fue ordenada y a quién se le envió el pedido, y así, realizar un seguimiento

para saber si el proveedor recibió el pedido, si realmente se envió el pedido y si las fechas son correctas.

Sistemas de Inventarios de varios períodos

Este tipo de sistema está diseñado para garantizar que un determinado bien estará disponible a lo largo

del año. Dependiendo del sistema adoptado, se realizarán pedidos para obtener dicho bien varias veces

en el año, donde, se indicaran la cantidad real pedida y el momento en el cual se realiza el pedido.

Existen dos tipos generales de sistemas de inventario de varios períodos: Los modelos de cantidad de

pedido fija y los modelos de período fijo. CHASE (2009) indica que la distinción fundamental entre ambos

modelos es que, el primero, se basa en eventos, es decir, un pedido se inicia cuando se llega a un nivel

específico, en el cual, es necesario volver a realizar un pedido. Dependiendo de la demanda de las piezas

consideradas, este evento puede presentarse en cualquier momento. Este modelo también es conocido

como cantidad de pedido económico, EOQ (economic order quantity), y modelo Q. El segundo, se basa en

el tiempo, es decir, se limita a hacer pedidos al final de un período determinado. Este tipo de modelo

también es conocido como sistema periódico, sistema de revisión periódica, sistema de intervalo fijo y

modelo P.

Page 24: Evaluación de la utilización de la metaheurística

12

A. Modelo de la cantidad económica de pedido, EOQ (economic order quantity)

CHASE (2009) y HEIZER (2008) indican que es una de las técnicas de control de inventario más antiguas,

SCHRADY (1967) fue quien formuló el modelo EOQ determinístico, más conocidas y, relativamente, la más

fácil de implementar, pero que se basa bajo ciertas suposiciones:

La demanda de productos es constante y uniforme durante todo el período.

El tiempo de entrega de los pedidos es constante.

La cantidad pedida llega de una vez y en un solo lote.

Los únicos costos variables son el costo de preparación y el costo de mantención.

Se debe cubrir todas las demandas del producto.

Figura N° 2.2: Modelo básico del EOQ. Fuente: HEIZER, (2008).

Bajo estos supuestos, el gráfico de utilización del inventario a lo largo del tiempo tiene forma de diente de

sierra, como se puede apreciar en la figura N° 2.2, donde Q es la cantidad a pedir, R es el punto de Reorden

y L es el período de entrega.

Este tipo de modelos busca determinar el tamaño del pedido (Q) y en qué momento se debe hacer el pedido

(R), donde R siempre es un número específico de unidades. De esta forma, un pedido de tamaño Q se

realizará cuando las existencias en el inventario alcancen una cantidad R, el cual, llegará al finalizar el

período de entrega L (HEIZER, 2008).

De acuerdo a CHASE (2009) y HEIZER (2008), el modelo EOQ básico se construye a partir de los

supuestos expresados anteriormente, el cual, además, implica un modelo sin escasez. Por lo tanto, de los

Page 25: Evaluación de la utilización de la metaheurística

13

costos expresados en la sección “Costos”, para elaborar la función de costo total se consideran los costos;

por compra, de pedido y de mantención.

𝐶𝑜𝑠𝑡𝑜 𝑡𝑜𝑡𝑎𝑙 = 𝐶𝑜𝑠𝑡𝑜 𝑝𝑜𝑟 𝑐𝑜𝑚𝑝𝑟𝑎 + 𝐶𝑜𝑠𝑡𝑜 𝑑𝑒 𝑝𝑒𝑑𝑖𝑑𝑜 + 𝐶𝑜𝑠𝑡𝑜 𝑑𝑒 𝑚𝑎𝑛𝑡𝑒𝑛𝑐𝑖ó𝑛 (2.1)

El costo de compra se obtiene mediante el valor unitario de cada existencia (C) multiplicado por la demanda

de estas (D).

El costo de pedido corresponde al número real de pedidos, por lo cual, se divide la demanda del producto

(D) por el tamaño de los pedidos (Q), así, se obtiene el número de pedidos a realizar, y, posteriormente, se

multiplica este resultado por el costo de ordenar un pedido (Co).

El costo de mantención se obtiene mediante el inventario promedio (cantidad de pedido (Q)/2) multiplicado

por el costo de almacenar una unidad en inventario (Ch).

Por lo tanto, según lo señalado por CHASE (2009), la función de costo total se expresa de la siguiente

forma:

𝐶𝑇 = (𝐷 ∗ 𝐶) + (𝐷

𝑄) ∗ 𝐶𝑜 + (

𝑄

2) ∗ 𝐶ℎ (2.2)

La fórmula para calcular el tamaño del pedido óptimo se denomina Q*:

𝑄∗ = √2 𝐷 𝐶𝑜

𝐶ℎ (2.3)

El punto de Reorden R, como es el modelo sencillo, se puede expresar de la siguiente manera:

𝑅 = �̅� 𝐿 (2.4)

Donde, �̅� es la demanda diaria promedio y L es el tiempo de entrega en días.

A parte del modelo básico del EOQ que señalan autores como CHASE (2009), HEIZER (2008), HILLIER

(2010) y TAHA (2012), también, hacen mención de otros modelos que surgen de este modelo básico, los

cuales, serán desarrollados a continuación.

El modelo EOQ con producción se utiliza en situaciones en las cuales se producen unidades y se venden

en forma simultánea o cuando el inventario va acumulándose a lo largo de un período de tiempo después

de haber realizado un pedido (HEIZER, 2008).

Page 26: Evaluación de la utilización de la metaheurística

14

Figura N° 2.3: Modelo EOQ con producción. Fuente: HEIZER, (2008).

Ahora se agregan conceptos de producción (p) y demanda (d), durante un ciclo de producción (t), por lo

tanto, se modifica la ecuación de la cantidad requerida:

𝑄∗ = √2 𝐷 𝐶𝑜

𝐶ℎ∗[1−(𝑑

𝑝)]

(2.5)

El modelo EOQ de descuento por cantidad se utiliza en situaciones en las cuales los proveedores

realizan ofertas de descuentos en los precios en función del tamaño del pedido, con el fin de aumentar su

nivel de ventas y, por ende, sus ingresos. Un descuento es sencillamente un precio reducido (C) para un

artículo determinado cuando se realizan compras de grandes cantidades, por lo que, es normal encontrar

planes de descuento con diferentes valores dependiendo de la cantidad a pedir.

La ecuación utilizada para calcular la cantidad requerida es la misma que se utiliza en el modelo básico del

EOQ, con la salvedad de que el costo de mantención se expresa como (I*C), donde, C es el valor unitario

de los artículos e I es un porcentaje del valor unitario, ya que, el costo de almacenar va a variar de acuerdo

a como vaya variando el valor unitario, por lo que, no puede ser una constante. Por lo tanto, la expresión

queda de la siguiente forma (HEIZER, 2008):

𝑄∗ = √2 𝐷 𝐶𝑜

𝐼 𝑃 (2.6)

Posteriormente, se realiza el cálculo de Q óptimo con cada uno de los intervalos de descuentos que ofrece

el proveedor, es decir, si hay cuatro intervalos, se calcula el Q óptimo para cada uno de ellos con sus

respectivos valores unitarios. Existen tres posibilidades: Si el Q óptimo resultante está por sobre la cantidad

Page 27: Evaluación de la utilización de la metaheurística

15

máxima del intervalo, se ajusta el Q al número máximo para realizar el cálculo del costo total en la ecuación

(1.1). Si el Q óptimo está entre el intervalo, se utiliza ese Q. Si el Q óptimo está por debajo del intervalo, se

utiliza el número mínimo de dicho intervalo. Luego, se comparan los resultados obtenidos con cada uno de

ellos para poder determinar cuál es la cantidad que me entrega un menor costo (HEIZER, 2008).

También, existe un modelo denominado Modelo EOQ con órdenes pendientes, el cual, permite realizar

los mismos cálculos que se han realizado con los modelos anteriores, considerando faltantes. Esto es,

demanda que no se puede satisfacer debido a la falta de inventario, lo cual, muchas veces implica tratar

con los clientes para que dicha sea demanda pueda ser cubierta cuando se reabastezcan los inventarios

propios. Si los clientes están dispuestos a aceptar un retraso razonable en la recepción de sus pedidos, se

puede aplicar este modelo, el cual, considera el costo que implica que no se dispongan del total de unidades

en inventario. Además, en muchas ocasiones los costos de mantención de inventario pueden ser muy

elevados en comparación con los costos por faltantes, por lo que, si los clientes lo permiten, existe la

posibilidad de disminuir las unidades en inventario y permitir faltantes ocasionalmente (HILLIER, 2010).

Para desarrollar este modelo, se utiliza como base el modelo EOQ básico, se modifica el costo de

mantención y se le agrega a la función de costo total (1.1), el costo por faltantes.

La ecuación de costo de mantención queda de la siguiente manera: (𝐶ℎ

2𝐷) ∗ (𝑄 − 𝑆)2; y la ecuación de costo

de faltantes queda así: [(𝐶𝑠

2𝑄) ∗ 𝑆2].

En ambos casos, para eliminar el D del denominador, se multiplica por la expresión (D/Q). Se reemplazan

estos valores en la ecuación de costo total (1.1), y se obtiene (HILLIER, 2010):

𝐶𝑇 = (𝐷 ∗ 𝐶) ∗ (𝐷

𝑄) ∗ 𝐶𝑜 + (

𝐶ℎ

2𝑄) ∗ (𝑄 − 𝑆)2 + (

𝐶𝑠

2𝑄) ∗ 𝑆2 (2.7)

Finalmente, se deriva la ecuación de costo total con respecto a Q y S, y se obtiene:

𝑄∗ = 𝑄𝐸𝑂𝑄∗ √

𝐶ℎ+𝐶𝑠

𝐶𝑠 (2.8)

𝑆∗ = 𝑄𝐸𝑂𝑄∗ 𝐶ℎ

√𝐶𝑠(𝐶ℎ+𝐶𝑠) (2.9)

Page 28: Evaluación de la utilización de la metaheurística

16

B. Sistema de intervalo fijo o modelo P

En este caso, el pedido se realiza al final de un determinado período, recién ahí, es cuando se lleva a cabo

el conteo de las existencias en el inventario. Además, este tipo de modelos generan cantidades de unidades

a pedir que varían de un período a otro, ya que, no todos los períodos tienen la misma actividad del

inventario, por lo cual, la cantidad necesaria para llevar el stock de un determinado producto a uno

previamente prefijado, será diferente en comparación con el período anterior o el próximo (CHASE, 2009).

En los modelos de período fijo estándar, el conteo de las existencias en el inventario sólo se llevará a cabo

en el momento específico de la revisión, lo cual, presenta una ventaja, ya que, no se realizan recuentos

después de retirar un artículo del inventario. Esto también resulta muy conveniente desde el punto de vista

administrativo, en especial, si es una de las tantas labores que debe llevar a cabo un empleado (CHASE,

2009).

CHASE (2009) y HEIZER (2008) hacen mención de esto e indican que presenta una seria desventaja, ya

que, como no habrá un recuento de inventarios durante el período, puede llegar un momento donde ya no

existan más unidades disponibles de un determinado artículo. Además, cuando llegue el momento en el

que no se tengan unidades disponibles en inventario, el proceso de producción deberá detenerse y se

deberá realizar un nuevo pedido. No hay que olvidar que existe un período de entrega (L), el cual, indica

cuánto tiempo demorarán en llegar los artículos desde que se realizó el pedido, por lo que, no solo se

detendrán las actividades durante el día que se queden sin existencias, también, existe la probabilidad de

no puedan reiniciar las labores durante unos cuantos días. Por lo tanto, existe la posibilidad de que la

organización se quede sin unidades en el inventario durante el trascurso del período y el tiempo de entrega.

CHASE (2009) y HEIZER (2008) señalan que mantener un inventario de seguridad mayor ofrece una

protección contra este tipo de problemas. Esto se debe a que se dispone de un número mayor de unidades

en inventario, lo que, proporciona protección contra la ruptura de stock, tanto durante el transcurso del

período, como durante el período de entrega del pedido.

Para poder determinar la cantidad a pedir (Q) para cada período, se debe definir un nivel de inventario que

se quiere tener al comienzo de cada uno de ellos, es decir, establecer cuál es la cantidad necesaria para

que las actividades se lleven a cabo sin problemas durante el período, considerando o no el inventario de

seguridad. Para el período i, se calcula el Qi restando el inventario disponible actualmente a ese inventario

definido como el adecuado.

KRAJEWSKI (2008) señala la importancia del nivel de inventario en ambos modelos; en el caso del modelo

de cantidad de pedido fija para protegerse durante el tiempo de entrega y evitar quedarse sin stock mientras

el pedido va en camino, y, en el caso del modelo de período fijo, se requiere de una protección mayor para

evitar quedar sin stock durante el período y el tiempo de entrega. De acuerdo a esto, se podría concluir que

Page 29: Evaluación de la utilización de la metaheurística

17

el modelo de pedido fijo es mejor que el de período fijo, por el hecho de que, este último, al necesitar

mayores niveles de inventario para evitar el quiebre de stock, conlleve a mayores costos de mantenimiento.

Pero si lo analizamos desde el punto de vista de costo de pedidos, el de pedido fijo puede generar mayores

costos, ya que, en un período determinado pueden realizarse varios pedidos de determinadas cantidades,

en cambio, con el otro modelo, se puede realizar solo un gran pedido. También, hay que considerar el

hecho de que el modelo de período fijo solo requiere conteo de inventario en los períodos establecidos, en

cambio, en el modelo de pedido fijo, se debe realizar un registro después de cada retiro de existencias.

GAITHER (2000) mencionan la existencia de modelos de inventario híbridos, como el modelo de

reabastecimiento opcional o el de existencia base, y señalan la posibilidad de utilizar simultáneamente más

de uno de estos modelos, siempre y cuando se apliquen en distintas áreas de una organización.

Por todo lo anteriormente expuesto, es posible determinar la importancia de analizar cuidadosamente los

modelos para conocer las ventajas y desventajas que traen consigo, y las posibles soluciones que ofrecen

los autores para mitigar los problemas que estos puedan generar.

2.1.5. Componentes de los sistemas de Inventario

A continuación, se darán a conocer las componentes más importantes en los sistemas de inventarios.

A. Demanda

Corresponde a la cantidad de unidades requeridas en un período determinado. En general, la complejidad

de los modelos de inventario depende del comportamiento de la demanda, es decir, si la demanda es

determinística o probabilística. Además, dentro de ambas categorías, la demanda puede variar o no en el

tiempo, es decir, puede ser dinámica o constante (estática). Para poder determinar y clasificar de manera

adecuada el comportamiento de demanda, es necesario disponer de información confiable. Dicho lo

anterior, TAHA (2012) clasifica el patrón de la demanda en cuatro tipos: Determinístico, el cual, puede ser

estático o dinámico; y Probabilístico, donde, puede ser estacionario a lo largo del tiempo o no. Además,

señala que la primera categoría (Determinístico y estático) es la más fácil de analizar pero que es menos

probable que ocurra en la práctica, y la cuarta (probabilístico y no estacionario) es la más compleja pero es

la más prevalente. Autores como CHASE (2009) y HEIZER (2008) comparten la visión de TAHA (2012),

señalando que los modelos básicos de inventarios, como el modelo básico del EOQ (ver sección Modelo

de la cantidad económica de pedido, EOQ), son herramientas más fáciles de implementar.

Además, es posible clasificar la demanda como dependiente e independiente. Cuando se hace referencia

a la primera, significa que la cantidad necesaria de un producto depende de la cantidad que se necesite de

otro producto, por ejemplo; si una unidad del producto A necesita dos unidades del producto B para poder

fabricarse, se necesitarán ocho unidades del producto B para poder fabricar cuatro unidades del producto

Page 30: Evaluación de la utilización de la metaheurística

18

A. Un ejemplo claro de esta situación es en la demanda de automóviles, donde, para poder fabricar uno de

estos, se necesitan otros artículos de nivel inferior, como lo son las llantas, motores, entre otros. Por el

contrario, cuando no existe una relación entre los productos a solicitar, se habla de una demanda

independiente, es decir, la cantidad que pida del producto X no depende de cuantas unidades del producto

Y necesite (CHASE, 2009).

B. Nivel óptimo

Se debe establecer un nivel óptimo de existencias en inventario para poder determinar en su momento

cuántas unidades debo comprar, no solo considerando las unidades necesarias para poder cubrir la

demanda, también, teniendo en cuenta el mantener un inventario de seguridad. Si se define

adecuadamente, permite tener un inventario abastecido durante el transcurso de un determinado tiempo

sin que se presenten problemas por falta de existencias y, por lo tanto, una detención en las actividades

de producción. También, permite establecer un límite superior de las unidades que se almacenarán en

inventario, por ende, disminuir los costos relacionados con la mantención de existencias y los costos por

compras. Por todo lo anteriormente mencionado, definir un nivel óptimo permite un equilibrio entre los

costos asociados con el sobrestock y la falta de stock (CHASE, 2009).

C. Cantidad requerida

Corresponde a la cantidad de unidades que se deben ordenar al momento de realizar el pedido y, así,

poder alcanzar el nivel óptimo establecido previamente. De acuerdo a lo expresado por CHASE (2009) y

HEIZER (2008), una de las herramientas más conocidas para poder determinar esta cantidad es el modelo

EOQ, el cual, fue visto con mayor profundidad en el punto Modelo de la cantidad económica de pedido,

EOQ (economic order quantity).

Es una componente muy importante, ya que, permite responder a una de las preguntas principales en

inventario: ¿Cuánto pedir?

D. Costos

El manejo de inventario involucra diversos costos, por lo que, deben ser considerados al momento de tomar

cualquier decisión que lo afecte. Los autores CHASE (2009), HEIZER (2008) y TAHA (2012) señalan

distintos tipos de costos, pero solo serán definidos los más importantes y los que más influyen en la función

de costos que se utilizará más adelante.

Page 31: Evaluación de la utilización de la metaheurística

19

Costos de mantenimiento: Representan el costo asociado a la posesión y mantenimiento de

existencias de un bien determinado a lo largo del tiempo. En esta categoría no solo se

consideran los costos por almacenar los materiales, sino que también se consideran costos

por manejo, seguros, desperdicios y daños, obsolescencia, el personal extra para la

manutención y control de los bienes, depreciación, impuestos y costo de oportunidad del

capital. Muchas empresas no consideran todos los componentes de los costes de

almacenamiento, por lo cual, a menudo los infravaloran (HEIZER, 2008). Para disminuir este

tipo de costo, suelen favorecer los niveles de inventario bajos y una frecuente reposición.

Costos de pedidos: Representan los costos administrativos y de oficina por preparar una orden

de compra. Es un cargo fijo, al cual, se incurre al momento de realizar un pedido, donde, no

importa cuántas unidades de una existencia se pidan o el tamaño total del mismo. Se incluye

el conteo de las existencias y el cálculo que se debe realizar para determinar la cantidad a

pedir. Cuando se habla de producción, es el coste correspondiente a la preparación de una

máquina o proceso para fabricar un pedido, donde, se incluye el tiempo y el trabajo necesarios

para limpiar y cambiar herramientas o soportes. Generalmente, el coste de preparación está

altamente correlacionado con el tiempo de preparación, por lo que, implementar una adecuada

planificación para reducir dichos tiempos, es una excelente manera de reducir la inversión en

inventario y de mejorar la productividad (HEIZER, 2008).

Costos de faltantes: Es la penalización a la cual se incurre cuando no se disponen de las

existencias necesarias para satisfacer la demanda, por lo que, el pedido debe cancelarse o

esperar a que se produzcan esas unidades faltantes. Es posible manejar existencias para

cubrir la demanda o cubrir los costos que resultan por faltantes. En ciertas ocasiones, es difícil

alcanzar un equilibrio entre ambos, ya que, no es fácil estimar la pérdida potencial de ingresos,

los costos asociados por la pérdida de lealtad de los clientes o los castigos por cubrir dichos

pedidos en una fecha tardía (CHASE, 2009).

Costos por compra: Es el precio por unidad de una existencia. En ciertas ocasiones, este valor

costo puede variar debido a los descuentos que ofrecen los proveedores de acuerdo a la

cantidad de unidades que se solicitan, lo cual, es un factor al momento de tomar la decisión

de cuánto pedir.

En cuanto al costo de mantenimiento, BENÍTEZ (2012) menciona que es prudente utilizar una fórmula

amplia, la cual, considere la parte variable y la parte fija del costo de almacenamiento. Por ende,

recomienda emplear la tasa de almacenamiento (TA), constituida por las siguientes tasas: 𝑇𝐴 = 𝑇𝑎 + 𝑇𝑏 +

𝑇𝑐 + 𝑇𝑑 + 𝑇𝑒; donde, Ta es la tasa de almacenamiento físico, Tb es la tasa de retorno del capital detenido

en existencias, Tc es la tasa de seguros del material almacenado, Td es la tasa de transporte, manipulación

Page 32: Evaluación de la utilización de la metaheurística

20

y distribución del material y Te es la tasa de obsolescencia del material; las cuales, se calculan de la

siguiente manera (BENÍTEZ, 2012):

Tabla N° 2.1: Fórmulas de tasas que constituyen la TA. Fórmulas

Ta 100 ∗ 𝐴 ∗ 𝐶𝑎

𝐶 ∗ 𝑃

Tb 100 ∗ 𝐺𝑎𝑛𝑎𝑛𝑐𝑖𝑎

𝑄 ∗ 𝑃

Tc 100 ∗ 𝐶𝑜𝑠𝑡𝑜 𝑎𝑛𝑢𝑎𝑙 𝑑𝑒𝑙 𝑒𝑞𝑢𝑖𝑝𝑜

𝑄 ∗ 𝑃

Td 100 ∗ 𝐷𝑒𝑣𝑎𝑙𝑢𝑎𝑐𝑖ó𝑛 𝑑𝑒𝑙 𝑒𝑞𝑢𝑖𝑝𝑜

𝑄 ∗ 𝑃

Te 100 ∗ 𝑃𝑒𝑟𝑑𝑖𝑑𝑎𝑠 𝑎𝑛𝑢𝑎𝑙𝑒𝑠 𝑝𝑜𝑟 𝑎𝑛𝑡𝑖𝑔𝑢𝑒𝑑𝑎𝑑

𝑄 ∗ 𝑃

Fuente: Elaboración propia.

Donde, A corresponde al espacio físico ocupado por los materiales expresado en metros cuadrados, Ca es

el costo anual por metro cuadrado de almacenamiento, C es el consumo anual del material, P es el precio

unitario del material y el producto Q*P representa el valor de los insumos almacenados.

Además, HEIZER (2008) expone valores y rangos para los distintos costos que conforman el costo de

almacenamiento. Aunque señala que son aproximaciones, ya que, pueden variar dependiendo de la

naturaleza del negocio, localización y los tipos de interés vigente en el período. También, agrega que los

costos de almacenamiento deberían representar alrededor del 40 por ciento del valor de los bienes en

inventario, por lo tanto, valores inferiores al 15 por cierto son sospechosos.

El intentar manipular uno de estos costos puede provocar el aumento de otro, por ejemplo; reducir el

número de existencias a almacenar, para disminuir el costo de mantenimiento, significa que deberán

realizarse pedidos con mayor frecuencia, por lo que, el costo de pedido aumentaría y, probablemente, no

se podrían aprovechar los descuentos que ofrecen los proveedores cuando se piden grandes cantidades.

Como todos estos costos forman parte de una función de costos de inventario total, se busca balancearlos

con el propósito de minimizar dicha función, por lo que, establecer la cantidad correcta a pedir a los

proveedores o el tamaño de los lotes en las instalaciones productivas de la empresa, es de vital importancia

(HEIZER, 2008).

Page 33: Evaluación de la utilización de la metaheurística

21

Tabla N° 2.2: Rangos de valores para el costo de almacenamiento. Categoría Costo (y rango) como

porcentaje del valor de inventario

Costos de edificio (alquiler o depreciación del edificio, costo de operación, impuestos y seguros)

6 % (3-10%)

Costos de manutención de materiales (leasing o depreciación de los equipos, electricidad y costos operativos)

3 % (1-3,5%)

Costos de mano de obra 3 % (3-5%) Costos de inversión (costos de los préstamos, impuestos y seguros del inventario)

11 % (6-24%)

Hurtos, desechos y obsolescencia 3 % (2-5%) Costo de almacenamiento total 26 %

Fuente: HEIZER, (2008).

E. Punto de Reorden (o de pedido)

Cuando se ha decidido cuántas unidades de deben pedir, es necesario determinar cuándo se tiene que

realizar estos pedidos, es decir, en qué momento o en qué estado de mi inventario debo realizar el pedido

(HEIZER, 2008). Existe una diferencia entre el tiempo en el que se emite la orden y cuando llega dicho

pedido a la empresa, y se le denomina Plazo de aprovisionamiento o período de entrega, el cual, puede

ser de unas pocas horas o de meses. Para ejemplificar esto, cuando uno realiza un pedido a un proveedor

que se encuentra en la misma ciudad, puede que las unidades solicitadas llegan tras el trascurso de unas

pocas horas; pero cuando los proveedores de un determinado artículo que se necesita es de otro país, el

pedido puede demorar en llegar incluso meses después de la emisión de la orden. A este período de

entrega se le denomina L y se expresa en días. Para poder realizar el cálculo, es necesario conocer la

demanda promedio diaria, es decir, cuántas unidades de dicho artículo necesito en un día. Se utiliza el

término promedio, ya que, se calcula dividiendo la demanda total anual por el número de días laborales en

el año, por ende, se expresa en unidades/días y se le denomina �̅� (CHASE, 2009).

Por lo tanto, esta componente permite responder a una de las preguntas principales de inventario: ¿Cuándo

debo pedir?

F. Inventario de Seguridad

Como ya se ha comentado en el punto “Demanda”, existen casos en los cuales ésta será variable con el

paso del tiempo, lo cual, puede causar muchos problemas en la organización, ya que, no se estarán

enfrentando a la demanda que ellos tenían estipulada. Por lo tanto, es necesario mantener un cierto margen

de seguridad, es decir, mantener una cierta cantidad de unidades, como respaldo, en caso de que la

Page 34: Evaluación de la utilización de la metaheurística

22

demanda real sea mayor que la estimada. A esto se le denomina inventario de seguridad o stock de

seguridad, el cual, ofrece un cierto nivel de protección contra el agotamiento de existencias (CHASE, 2009).

2.2. Simulated Annealing

2.2.1. Definición La aplicación de la metaheurística Simulated Annealing (SA), también llamado Recocido Simulado, para

problemas de optimización surgió del trabajo de KIRKPATRICK (1983) y CERNY (1985). En los años 1980,

el SA tuvo un gran impacto en el campo de la búsqueda heurística por su sencillez y eficacia en la resolución

de problemas de optimización combinatoria. Desde entonces, ha sido ampliado para hacer frente a los

problemas de optimización continuos. INOUE (2012) resaltan el hecho de que, recientemente, se están

utilizando distintos tipos de algoritmos, como el Simulated Annealing, Algoritmo Genético o Búsqueda Tabú,

para resolver problemas de inventario. Otros como NAGESH (2013) y DIAZ (2013) utilizan distintos

algoritmos para resolver problemas y los comparan para determinar la efectividad de una y otra

metodología. MAJAZI (2012) aplicaron esta metaheurística para resolver problemas de programación de

multi-proyectos y resaltan la posibilidad de combinar Simulated Annealing con otros métodos de búsqueda

para obtener mejores resultados. YU (2014) destacaron distintas combinaciones de métodos y

desarrollaron un algoritmo híbrido para la optimización de tiempos en flujos de trabajo utilizando algorítmico

Genético y SA.

TALBI (2009) y TAHA (2012) mencionan que Simulated Annealing se inspiró y se basa en el proceso de

recocido en la metalurgia, lo cual, requiere un calentamiento de un material. Posteriormente, se realiza un

enfriamiento lento y controlado para poder obtener una fuerte estructura cristalina. La solidez de la

estructura depende de la tasa de enfriamiento de los materiales, ya que, si la temperatura inicial no es lo

suficientemente alta o se aplica un rápido enfriamiento, se obtienen imperfecciones, donde, el enfriamiento

sólido no alcanzará un equilibrio térmico en cada temperatura. Por lo tanto, los cristales fuertes son

resultado de un enfriamiento lento y cuidadoso. El SA simula el cambio de energía en un sistema sujeto a

un proceso de enfriamiento hasta su convergencia a un estado de equilibrio.

De acuerdo a TALBI (2009), el uso de la jerga metalúrgica en la descripción del Simulated Annealing (SA)

es puramente tradicional, sin ninguna relación técnica con el desarrollo de la heurística, pero de ahí surgió

el uso del término temperatura en el desarrollo de la metaheurística.

En la Tabla N° 2.3, se ilustra la analogía entre el sistema físico y el problema de optimización. La función

objetivo del problema corresponde al estado del sistema. Las variables de decisión asociadas con una

solución del problema son análogas a la posición molecular. El óptimo global corresponde al estado

fundamental del sistema. Encontrar un mínimo local implica que un estado metaestable ha sido alcanzado,

Page 35: Evaluación de la utilización de la metaheurística

23

es decir, se ha alcanzado un estado de equilibrio aparente, pero que puede alcanzar un estado aún más

estable (TALBI, 2009).

El SA es una metaheurística estocástica que permite, bajo algunas condiciones, la degradación de una

solución. El objetivo principal es escapar de un óptimo local y, así, retrasar la convergencia. El SA es un

metaheurística sin memoria en el sentido de que no usa toda la información reunida durante la búsqueda.

Desde la solución inicial, el SA procede en varias iteraciones, donde, en cada iteración, se genera un vecino

al azar. Los movimientos que mejoran la función de costo siempre son aceptados. Por otra parte, el vecino

es seleccionado con una probabilidad dada que depende de la temperatura actual y de la cantidad de

degradación (ΔE) de la función objetivo. ΔE representa la diferencia en el valor de la función objetivo

(energía) entre la solución actual y la solución vecina generada. Mientras la metaheurística progresa, la

probabilidad de que tales movimientos sean aceptados disminuye (TALBI, 2009). Esta probabilidad sigue,

en general, la distribución de Boltzmann:

𝑃(𝛥𝐸, 𝑇) = 𝑒− 𝑓(𝑥′)− 𝑓(𝑥)

𝑇 (2.10)

Se usa un parámetro de control, llamado Temperatura, para determinar la probabilidad de aceptar

soluciones desfavorables (TAHA, 2012). En un nivel de temperatura en particular, se examinan muchas

pruebas. Una vez logrado el estado de equilibrio, la temperatura es gradualmente reducida de acuerdo a

un programa de enfriamiento, tal que, pocas soluciones desfavorables sean aceptadas al final de la

búsqueda (TALBI, 2009).

Tabla N° 2.3: Analogía entre el sistema físico y el problema de optimización

Sistema Físico Problema de Optimización

Estado del sistema Solución

Posición molecular Variables de Decisión

Energía Función Objetivo

Estado Fundamental Solución óptima global

Estado Metaestable Óptimo Local

Templado Rápido Búsqueda local

Temperatura Control del Parámetro T

Recocido cuidadoso Simulated Annealing

Fuente: TALBI, (2009).

Page 36: Evaluación de la utilización de la metaheurística

24

Además de la actual solución, la mejor solución encontrada desde el comienzo de la búsqueda es

almacenada. Pocos parámetros de controlan el progreso de la búsqueda, los cuales son; la temperatura y

el número de iteraciones realizadas en cada temperatura.

Además de los problemas comunes de diseño para metaheurísticas, tales como la definición de vecindario

y la generación de la solución inicial, TALBI (2009) señala que los principales problemas de diseño

específicos de SA son:

La función de probabilidad de aceptación: Es el principal elemento de la metaheurística que

permite vecinos desfavorables para ser seleccionados.

El programa de enfriamiento: Define la temperatura en cada paso de la metaheurística.

Cumple un rol esencial en la eficiencia y la efectividad.

Para explicar el procedimiento de una manera más sencilla, HILLIER (2010) realizó una comparación con

el escalar en medio de una niebla densa, donde, la única pista que se tiene acerca de la dirección que debe

tomarse, es qué tan pronunciada es la pendiente ascendente o descendente del siguiente paso.

El Simulated Annealing se enfoca en concentrarse de manera principal en la búsqueda de la cuesta más

alta. Como la cima más alta puede estar en cualquier sitio dentro de la región factible determinada

previamente, se le da una mayor importancia a los pasos que se realizan en direcciones aleatorias con la

intención de explorar tanto región factible como sea posible. Solo se descartan los pasos que provocan un

descenso en vez de ascender, pero no todos se rechazan, por la probabilidad de aceptación de vecinos

desfavorables. Por lo tanto, como la mayoría de los pasos aceptados son ascendentes, en forma gradual

la búsqueda se fundamentará hacia aquellas partes de la región factible que contienen las cumbres más

altas, es decir, se incrementará el hincapié en el ascenso y, por ende, a rechazar una proporción creciente

de pasos que descienden. Si se otorga un tiempo suficiente, con frecuencia el proceso encontrará y

ascenderá hasta la cuesta más alta (HILLIER, 2010).

2.2.2. Aceptación de Movimientos

El sistema puede escapar del óptimo local debido a la aceptación probabilística de un vecino desfavorable

(TAHA, 2012). Esta probabilidad es proporcional a la temperatura T e inversamente proporcional al cambio

de la función objetivo ΔE (TALBI, 2009).

La ley de la termodinámica establece que a temperatura T, la probabilidad de un incremento en la magnitud

de la energía, ΔE, está dada por P(ΔE,T) = exp (-ΔE/kt) donde k es una constante conocida como la

constante de Boltzmann. Así, la probabilidad de aceptación de un movimiento desfavorable es:

Page 37: Evaluación de la utilización de la metaheurística

25

𝑷(𝛥𝐸 , 𝑇) = 𝑒𝑥𝑝(−𝛥𝐸

𝑘𝑡) > 𝑅 (2.11)

Donde ΔE es el cambio en la evaluación de la función, T es la temperatura actual, y R es un número

aleatorio uniforme entre 0 y 1 (TALBI, 2009)

En altas temperaturas, la probabilidad de aceptar peores movimientos es alta. Si T= ∞ , todos los

movimientos son aceptados, lo cual, corresponde a que un local aleatorio camine en la región factible. En

bajas temperaturas, la probabilidad de aceptar peores movimientos decrece. Si T=0, los mejores

movimientos son aceptados y la búsqueda es equivalente a la búsqueda local (HILLIER, 2010). Por otra

parte, la probabilidad de aceptar un gran deterioro en la calidad de la solución decrece exponencialmente

hacia 0, de acuerdo a la distribución de Boltzmann (TALBI, 2009).

2.2.3. Programación de Enfriamiento

A. Temperatura Inicial

Si es muy alta, la búsqueda será más o menos una búsqueda local aleatoria. Sin embargo, si es muy baja,

la búsqueda será más o menos una primera mejora de la búsqueda local. Por lo tanto, hay que crear un

balance entre ambos extremos (HILLIER, 2010). La temperatura inicial no debe ser demasiado alta como

para conducir una búsqueda aleatoria por un período de tiempo pero lo suficientemente alta como para

permitir movimientos casi a toda la región factible (TALBI, 2009).

Hay tres estrategias principales que pueden ser usadas para tratar con este parámetro:

Aceptar todos: La temperatura inicial se configura lo suficientemente alta como para aceptar

a todos los vecinos durante la fase inicial de la metaheurística. El principal inconveniente de

esta estrategia es el alto costo computacional.

Aceptación desviada: La temperatura inicial es configurada por kθ usando experimentos

preliminares, donde θ representa la desviación estándar de la diferencia entre los valores de

la función objetivo y k=-3 / ln(p) con la probabilidad de aceptación p, la cual, es más grande

que 3θ.

Radio de aceptación: La temperatura inicial es definida a fin de hacer al radio de aceptación

más grande que un valor predeterminado a0

𝑇𝑜 = ∆+

𝑙𝑛(𝑚1(𝑎0−1)

𝑚2+𝑎0) (2.12)

Page 38: Evaluación de la utilización de la metaheurística

26

Donde m1 y m2 son el número de soluciones para ser disminuidos e incrementados en experimentos

preliminares, respectivamente, y ∆ + es el promedio de valores incrementados de la función objetivo

(TALBI, 2009).

B. Estado de Equilibrio

Para llegar a un estado de equilibrio para cada temperatura, un número de transiciones suficientes debe

ser aplicado (TAHA, 2012). La teoría sugiere que el número de iteraciones de cada temperatura debiera

ser exponencial para el tamaño del problema, la cual, es una estrategia difícil de llevar a cabo en la práctica.

El número de iteraciones debe ser configurado de acuerdo al tamaño del problema y particularmente

proporcional al tamaño del vecindario. El número de transiciones puede ser de la siguiente forma: Estático:

donde el número de transiciones es determinada antes de comenzar la búsqueda y, adaptable, donde el

número de vecinos generados dependerá de las características de la búsqueda (TALBI, 2009).

C. Enfriamiento

Existen distintos tipos de estrategias que permiten disminuir progresivamente la temperatura (TAHA, 2012).

Si la temperatura es disminuida lentamente, se obtendrán mejores soluciones pero significará un tiempo

de cálculo más significativo, por ende, siempre hay un compromiso entre la calidad de la solución obtenida

y la velocidad del programa de enfriamiento (TALBI, 2009). La temperatura puede ser actualizada de

distintas maneras:

Lineal: Con una programación lineal, la temperatura se actualiza de la siguiente forma; 𝑇 = 𝑇 − 𝛽, donde β

es un valor constante específico. Por lo tanto, se tiene; 𝑇𝑖 = 𝑇𝑜 − 𝛽, donde Ti representa la temperatura en

la iteración i (TALBI, 2009).

Geométrica: La temperatura se actualiza de la siguiente forma;

𝑇 = 𝛼 ∗ 𝑇 (2.13) Donde α ϵ ] 0,1 [. Es la función de enfriamiento más conocida. Experimentos han demostrado que α debería

estar entre 0.5 y 0.99. YU (2014), utilizaron un α igual 0.98, debido a que designaron una temperatura inicial

muy baja (100), por lo tanto, necesitaban que la temperatura no disminuya rápidamente. Lo mismo que

DÍAZ (2013), utilizaron un α igual a 0.93 para una temperatura inicial baja (15).

Logarítmica: Se utiliza la siguiente fórmula;

𝑇𝑖 =𝑇𝑜

𝑙𝑜𝑔(𝑖) (2.14)

Page 39: Evaluación de la utilización de la metaheurística

27

Este programa es demasiado lento para aplicarlo en la práctica pero tiene la propiedad aprueba de la

convergencia de un óptimo global.

Existen otras más, pero no viene al caso mencionarlas, ya que, no serán utilizadas en la implementación

del metaheurística.

Autores como MARTÍNEZ (2013), indican que los métodos más utilizados en el desarrollo de

investigaciones son la geométrica y la logarítmica.

D. Condición de Detención

La teoría sugiere que la temperatura final debe ser igual a cero. En la práctica, la búsqueda se puede

detener cuando la probabilidad de aceptar un movimiento es despreciable (HILLIER, 2010). Pueden

utilizarse los siguientes criterios de detención: Uno, alcanzar una temperatura final Tf, el cual, es el criterio

de detención más popular. Esta temperatura debe ser baja (Tmin=0,1). Dos, lograr un número

predeterminado de número de iteraciones sin mejoría de la mejor solución encontrada. Y tres, lograr un

número predeterminado de veces en que un porcentaje de vecinos en cada temperatura es aceptado. Esto

es, un contador incrementa en 1 cada vez que una temperatura es completada con el menor porcentaje de

movimientos aceptados que un límite predeterminado y es vuelto a 0 cuando una nueva solución es

encontrada. Si el contador alcanza un límite predeterminado R, la metaheurística es detenida (TALBI,

2009).

TALBI (2009), HILLIER (2010), MICHALEWICZ (2004) y TAHA (2012) destacan la capacidad del Simulated

Annealing de aceptar soluciones vecinas desfavorables para escapar del óptimo local, para poder alcanzar

el óptimo global. Además, VÉLEZ (2007) mencionan en su estudio que las metaheurísticas combinan de

forma diferente dos conceptos clave para el desarrollo de un buen algoritmo de búsqueda: la intensificación

y la diversificación. El primero en referencia a la capacidad de explorar a fondo una región determinada, y

el segundo, en relación a que realiza pruebas en distintas zonas para evitar quedarse atrapado en óptimos

locales. Por estas razones, se ha tomado la decisión de utilizar el Simulated Annealing, ya que, permite

explorar toda la región en busca del óptimo global. Existen otras metaheurísticas como Búsqueda Tabú,

pero como señala HILLIER (2010), presenta la desventaja de que se emplea demasiado tiempo o

iteraciones para poder encontrar el óptimo, por lo tanto, el Simulated Annealing es más eficiente.

Page 40: Evaluación de la utilización de la metaheurística

28

2.2.4. Pseudo-Código

En algunos libros donde se menciona al Simulated Annealing, es posible encontrar una planilla con el

psudo-código de este, el cual da a conocer los pasos a seguir en el desarrollo de la metodología. A

continuación, se presenta el pseudo-código del Simulated Annealing expresado por el autor TALBI (2009).

Figura N° 2.4: Planilla de la metaheurística Simulated Annealing. Fuente: TALBI, (2009).

Este pseudo-código permitirá conocer de manera básica los operadores lógicos a utilizar al momento de

desarrollar el software. Pero esto no significa que la metodología se expresará de la misma forma, sino que

sólo forma parte de la base para comenzar a programar la metodología del Simulated Annealing.

2.2.5. Otros métodos similares

Actualmente, se han propuesto otros métodos similares al Simulated Annealing, los cuales, están

inspirados en esta metaheurística. El principal objetivo en el diseño de estos métodos es aumentar la

velocidad de búsqueda sin sacrificar la calidad de las soluciones (TALBI, 2009).

Input: Programa de enfriamiento

S = So; /* Generar una solución inicial */

T = Tmax; /* Temperatura inicial */

Repeat

Repeat /*Una temperatura actualizada*/

Generar aleatoriamente un vecino a’;

ΔE = f(x’) – f(x);

If ΔE ≤ 0 Then s = s’ /* Aceptar la solución vecina */

Else Aceptar s’ con probabilidad 𝑒−∆𝐸

𝑇 ;

Until Condición de equilibrio

/* Por ejemplo, un número definido de iteraciones ejecutadas para cada temperatura T */

T = g(T); /* Actualización de la temperatura */

Until Criterio de detención satisfecho /* por ejemplo T < Tmin*/

Output: Mejor solución encontrada

Page 41: Evaluación de la utilización de la metaheurística

29

A. Umbral de aceptación

Puede ser apreciado como la variante determinística del Simulated Annealing. Este método escapa del

óptimo local aceptando soluciones que no sean peores que las actuales de acuerdo a un umbral

determinado.

El umbral de aceptación es más rápido que el Simulated Annealing debido a que la generación de un

número aleatorio y las funciones exponenciales consumen una cantidad significativa de tiempo

computacional.

El umbral Q se actualiza de acuerdo a un programa de recocido y debe ser configurado como una función

determinística no incremental con el paso de las iteraciones i. El umbral decrece en cada iteración y alcanza

el valor cero después de un número determinado de iteraciones (TALBI, 2009).

B. Registro de viajes

Este algoritmo, al igual que el anterior, es una optimización determinística inspirada en el Simulated

Annealing, la cual, acepta soluciones vecinas peor que las actuales, con un valor objetivo menor que el

registro menor a una desviación D. El registro representa el mejor valor objetivo de todas las soluciones

analizadas a lo largo de la búsqueda.

El registro de viajes tiene la ventaja de solo depender de un parámetro, el valor de desviación. Una

pequeña cantidad para la desviación producirá resultados pobres con un reducido tiempo de búsqueda. Si

la desviación es alta, se producirán mejores resultados después de un importante tiempo computacional

(TALBI, 2009).

C. Algoritmo Gran Diluvio

La principal diferencia con el Simulated Annealing es la función de aceptación determinística de soluciones

vecinas. La inspiración de este algoritmo surge de la analogía de que la dirección de un escalador tomaría

en un gran diluvio sería la de mantener sus pies secos. Como lo señalo HILLIER (2008) en el Simulated

Annealing, encontrar el óptimo global de un problema de optimización puede ser visto como encontrar el

punto más alto de un paisaje. El algoritmo nunca realiza un movimiento más allá del nivel del agua y

explorará el área desconocida del paisaje hasta alcanzar el óptimo global.

El gran diluvio necesita configurar un solo parámetro, Ascender, que representa la velocidad de la lluvia.

La calidad de los resultados obtenidos y el tiempo de búsqueda dependerán solo de este parámetro. Si el

valor del parámetro Ascender es alto, el algoritmo será rápido pero producirá resultados de pobre calidad.

Page 42: Evaluación de la utilización de la metaheurística

30

En caso contrario, si el valor de Ascender es pequeño, se generarán mejores resultados dentro de un mayor

tiempo computacional (TALBI, 2009).

D. Algoritmos Demon

También es un algoritmo basado en el Simulated Annealing que, computacionalmente, usa funciones más

simples de aceptación, la cual, está basada en el valor de la energía del demon (crédito). El demon es

inicializado con un valor determinado D. Una solución que no sea mejor que la actual es aceptada si el

demon tiene más energía (crédito) que el decrecimiento del valor objetivo. Cuando el algoritmo Demon

acepta una solución que incrementa el valor objetivo, el cambio del valor del objetivo es abonado al demon.

De la misma forma, cuando se acepta una solución peor que la actual, la disminución en el valor del objetivo

es cargado desde el demon (TALBI, 2009).

Tabla N° 2.4: Variantes del Algoritmo Demon Algoritmo Especificación

DL Valor inicial del demon: D0

Actualización del valor demon: Si D > D0,

entonces D = D0

DR Actualización del valor demon: programa de

recocido

DAL y DAR Valor inicial del demon: Dm

Función de aceptación: D = Dm + Ruido

gaussiano

Actualización del valor demon: Dm = Dm - ΔE

Fuente: TALBI, (2009).

ÁLVAREZ (2009) señalaron las modificaciones que incorporan las variantes de Demon con respecto del

modelo básico, las cuales, se presentan a continuación:

Demon Limitado (DL): La modificación que presenta, con respecto al modelo básico de

algoritmo Demon, es el límite superior específico que se impone al valor del Demon, para que

pueda restringir los valores de crédito después de los movimientos que producen una disminución

de la energía. Este límite, previene al Demon de recibir todo el crédito en contra y aceptar

secuencias de peor calidad.

Demon Recocido (DR): La modificación que presenta es la reducción del valor del Demon

de acuerdo a una programación específica, similar a la del algoritmo Simulated Annealing.

Demon Aleatorio Limitado (DAL) y Demon Aleatorio Recocido (DAR): En ambos casos se

han incorporado componentes aleatorias, en los cuales, el valor del Demon se reemplaza por el

Page 43: Evaluación de la utilización de la metaheurística

31

valor medio del Demon (promedio), y a su vez, para que este hiciera el papel de acreedor. El valor

del Demon es una variable aleatoria gaussiana (normal) centrada alrededor del valor medio del

Demon (en este caso Dm) con una desviación estándar específica (DSd).

2.3. Lenguajes de Programación

Para poder expresar toda la información anteriormente mencionada y elaborar el software propuesto, con

la capacidad de realizar todos los cálculos pertinentes, es necesario llevar a cabo la programación de los

sistemas de inventario, criterios de administración de inventario y la metodología del Simulated Annealing;

considerando todas las variables involucradas en ello. Por lo tanto, conocer los distintos tipos de lenguaje

de programación es importante, ya que, se deben conocer las ventajas y desventajas de estos para poder

escoger el que se adapte mejor a lo que se necesita para el desarrollo del software.

2.3.1. Definición

Según lo expuesto por MARZAL (2009), el lenguaje de programación es cualquier sistema de notación que

permite expresar programas, los cuales, a su vez, están compuestos por secuencias de instrucciones.

Estas instrucciones van desde simples cálculos de operación (como suma o resta), lógica de comparación,

operaciones de ingreso de datos y entrega de información, y almacenamiento de datos. En otras palabras,

el usuario a través de un lenguaje de programación puede especificar de forma precisa la operación que

desea realizar, como por ejemplo: Qué datos la computadora debe operar, cómo se deben almacenar los

datos o cómo la computadora debe entregar la información (reporte de resultados).

MARZAL (2009) señalan que existen varios niveles de lenguajes para la programación, donde el código

máquina es considerado como el lenguaje de más bajo nivel. Este código, programa las secuencias de

instrucciones como sucesiones de unos y ceros (valores binarios) que se apegan a ciertas reglas y cada

familia de computadores dispone de su propio repertorio de instrucciones. Programar de esta forma

resultaba una tarea ardua y tediosa, por lo que, se diseñaron notaciones que simplificaban la programación.

Así, surgió el lenguaje ensamblador, en las cual, cada instrucción del código de máquina se representaba

mediante una abreviatura fácil de identificar, con el propósito de la instrucción. El ensamblador es un

programa que interpreta el contenido de las instrucciones y las escribe en otras posiciones de memoria

asociadas al código de máquina. Ambos códigos son considerados de bajo nivel.

De acuerdo a lo expresado por MARZAL (2009), los lenguajes de programación que se conocen

actualmente puede que no sean tan potentes ni expresivos como los lenguajes anteriormente

mencionados, pero eliminan gran parte de la complejidad propia de estos, y están bien adaptados al tipo

de problemáticas que son posibles de resolver mediante el uso de computadores. A estos lenguajes se les

Page 44: Evaluación de la utilización de la metaheurística

32

denomina lenguajes de programación de alto nivel, ya que, son independientes de un computador en

particular. Para cada lenguaje de alto nivel y cada computador, se puede desarrollar un programa que se

encargue de interpretar las instrucciones del lenguaje de alto nivel a instrucciones de código de máquina.

De esta forma, se consigue la independencia de los programas con respecto de las diferentes familias de

computadores, ya que el programa realizará la traducción de manera automática.

El diseño orientado a objetos (DOO) facilita el desarrollo de programas a través del uso de los lenguajes

de programación. DEITEL (2004) señalan que el diseño orientado a objetos modela el software de una

manera muy similar a como las personas describen a los objetos que observa en el mundo real, por lo

tanto, el diseño orientado a objetos ofrece una manera más natural e intuitiva de ver el proceso de diseño.

Este modelo aprovecha las relaciones entre las clases, donde todos los objetos de cierta clase tienen

características similares. También aprovecha las relaciones de herencia, donde las nuevas clases de

objetos se derivan llevando consigo las características de las clases existentes y adicionando sus propias

características únicas.

A continuación, se presentarán distintos lenguajes de programación utilizados frecuentemente para el

desarrollo de software.

2.3.2. C

Este lenguaje de programación es uno de más utilizados en el mundo profesional para el desarrollo de

aplicaciones, tanto comerciales como libres. De acuerdo a los expuesto por MARZAL (2009), es un lenguaje

que permite controlar con gran exactitud los distintos factores que pueden influir en la eficiencia de los

programas a desarrollar, pero que dicha capacidad de control puede dificultar la programación de los

programas, ya que, es necesario estar pendiente de numerosos detalles. Por esto mismo, se afirma que el

lenguaje de programación C no alcanza la categoría de lenguaje de alto nivel, pero tampoco es un lenguaje

de bajo nivel, sino que se posiciona en un nivel intermedio. Según DEITEL (2004), el lenguaje C está

orientado a la acción, ya que, se enfoca en los procedimientos. Los grupos de acciones se agrupan con

otros grupos de acciones que realizan tareas similares para poder formar funciones, y éstas últimas, se

combinan para desarrollar programas.

2.3.3. C++

El lenguaje C++ proporciona un conjunto de características que de cierta forma pulen al lenguaje C y, los

autores DEITEL (2004), resalta que lo más importante es que proporciona la posibilidad de llevar a cabo

una programación orientada a objetos.

Page 45: Evaluación de la utilización de la metaheurística

33

De acuerdo a DÍAZ (2006), el lenguaje de programación C++ es un lenguaje híbrido que no presenta los

conceptos de una manera tan clara, posee un conjunto de instrucciones de programación altamente

redundantes y un sistema de tipos inseguro. Esto se debe a que C++ mantiene compatibilidad en su

totalidad con C, por lo que el lenguaje se ve influenciado por consideraciones de bajo nivel, en comparación

con C# o Java. Además, la programación orientada a objetos y la orientada a procedimientos coexisten, ya

que C++ representa un paradigma híbrido entre ellos. Según DÍAZ (2006), la ausencia de un sistema de

tipos seguro es una de las críticas más fuertes de este lenguaje, ya que, determinadas características

incrementan los riesgos de errores, tales como referencias nulas o basura. Otra de las características

negativas de C++, es que favorece el uso de símbolos sobre el uso de palabras, lo que a veces convierte

a los programas desarrollados en este lenguaje muy poco legibles.

DÍAZ (2006) y SANTOS (2013) señalan que C++ presenta, entre los lenguajes de programación, uno de

los modelos de objetos más complejos, debido a la presencia de variables dinámicas y no dinámicas, lo

cual se ve reflejado en la semántica de algunas instrucciones importantes desarrolladas en el lenguaje.

Como se ha mencionado en párrafos anteriores, C++ mantiene consideraciones de lenguaje de bajo nivel,

lo cual, es un elemento importante a favor para la programación de alto nivel, ya que, provee un chequeo

de los tipos parametrizados al momento de la compilación del programa. SANTOS (2013) señalan que C++

es uno de los lenguajes más potentes debido a las consideraciones de lenguaje de bajo nivel, pero, al

mismo tiempo, es muy difícil de aprender.

Otro de los puntos más rescatables de este lenguaje según DÍAZ (2006), es que C++ presente un ambiente

de trabajo bastante amigable, donde se incluyen herramientas para el desarrollo de programas como Visual

C++ y Borlarnd C++ Builder.

2.3.4. C#

Los principales creadores de este lenguaje de programación son ScottWiltamuth y Anders Hejlsberg. De

acuerdo a lo señalado por MORALES (2012), la sintaxis básica de C# deriva de otros lenguajes de

programación como C y C++, y está diseñado para generar programas sobre la plataforma .NET (NET

framework de microsoft). En este sentido, es muy similar a Java pero incluye mejoras derivadas de los

lenguajes ya mencionados. GONZALEZ (2001) señala que C# ha sido creado específicamente para ser

utilizado en la plataforma .NET, por lo tanto, se requiere de .NET Framework para poder utilizarlo.

GONZÁLEZ (2001) señala algunas de las principales ventajas que presenta en comparación con otros

lenguajes de programación:

Sencillez: Elimina varios de los elementos que otros lenguajes de programación contienen, los

cuales, son innecesarios en .Net. Dentro de los que menciona GONZÁLEZ (2001) es posible

Page 46: Evaluación de la utilización de la metaheurística

34

señalar que no se necesitan ficheros adicionales ya que el código escrito en C# es

autocontenido, y no se incluyen macros ni herencia múltiple.

Modernidad: Incorpora elementos que se han demostrado que son muy útiles para el

desarrollo de programas en el propio lenguaje, los cuales, en otros lenguajes como C++ y

Java hay que simular. Uno de los ejemplos que señala GONZÁLEZ (2001) es la distinción de

tipo bool, el cual, se utiliza para representar valores lógicos, usualmente se utiliza verdadero

o falso.

Orientación a objetos: El enfoque de C# es más puro en este sentido en comparación con

lenguajes como C++, ya que no admite funciones o variables globales, sino que los datos

deben definirse dentro de las definiciones de tipos de datos. Así, se reducen los problemas

por similitud de nombres y el código es más legible.

Orientación a componentes: La sintaxis de C# permite definir propiedades, eventos o atributos,

los cuales, otros lenguajes de programación deben simular.

Gestión automática de memoria: Existe un mecanismo de liberación de recursos determinista

a través de una instrucción denominada using.

Seguridad de tipos: Se incluyen mecanismos que permiten asegurar que los accesos a tipos

de datos siempre se realicen de forma adecuada, tales como: solo admitir conversiones entre

tipos compatibles o no poder usar variables no inicializadas.

Instrucciones seguras: Se han considerado una serie de restricciones que permitan evitar

errores en el uso de las instrucciones.

Sistema de tipos unificado: Todos los tipos de datos que se definan siempre derivarán de una

clase base común llamada System.Object, en pocas palabras, serán objetos.

Eficiente: Se pueden marcar regiones de código como inseguras, lo que puede resultar vital

para situaciones donde se necesite eficiencia y velocidad de procesamiento.

Compatible: Existen los llamados Platform Invocation Services (PInvoke), los cuales, ofrecen

la posibilidad de acceder a código nativo escrito como funciones sueltas, no orientadas a

objetos (tales como las DLL’s de la API Win32), mediante el uso de los código inseguros.

También, es posible acceder a controles ActiveX desde el código. NET y viceversa.

2.3.5. Java

Sun microsystems patrocinó un proyecto para crear un lenguaje para uso doméstico, pero en esos tiempos,

específicamente el año 1993, la popularidad de World Wide Web explotó y la gente de esta empresa se

dio cuenta del potencial de Java para agregar contenidos dinámicos y animaciones a las páginas Web.

Formalmente se anunció a Java el año 1995. En la actualidad, Java es uno de los lenguajes más populares

y se utiliza para desarrollar aplicaciones empresariales a gran escala, mejorar la funcionalidad de los

Page 47: Evaluación de la utilización de la metaheurística

35

servidores de World Wide Web, proporcionar aplicaciones para los distintos dispositivos domésticos

(celulares) y muchos otros más. Permite desarrollar software en una determinada plataforma y ejecutarlas

virtualmente en otra (JAVA, 2014).

Los programas de Java están conformados por varias piezas llamadas clases, las cuales, incluyen otras

piezas denominadas métodos. Estas últimas, realizan las tareas que se designan y devuelven información

cuando las completan. Es posible crear cada una de las piezas que se necesitan para poder desarrollar un

programa en Java, pero según DEITEL (2004), la mayoría de los programadores que utilizan este lenguaje

hacen uso de las vastas colecciones de clases existentes en las bibliotecas de clases que dispone Java,

conocidas como API’s (interfaces de programación de aplicaciones). Es un lenguaje completamente

orientado a objetos.

SANTOS (2013) mencionan la similitud de Java con C y C++ a nivel semántico, aunque el primero posee

un modelo de objetos más simple y aprovecha características de estos evitando sus inconvenientes.

ÁLVAREZ (2013) señalan la similitud que existe entre Java y C#, especialmente, a nivel semántico, lo cual,

permite la presencia de aplicaciones que facilitan la conversión entre ambos lenguajes.

SANTOS (2013) señalan que los programas ejecutables, creados a partir del compilador de Java, son

independientes de la arquitectura, lo cual, lo transforma en una de sus características principales del

lenguaje. Además, dichos programas se pueden ejecutar sin importar los microprocesadores o sistemas

operativos de los equipos.

2.3.6. Python

De acuerdo a lo expuesto por autores como MARZAL (2009) y SANNER (1999), Python ha sido diseñado

por Guido van Rossum y está en un proceso de continuo desarrollo por una gran comunidad de

desarrolladores, el cual, se enriquece manteniendo la compatibilidad con los programas creados con

versiones anteriores. Es un lenguaje de programación orientado a objetos. Posee un alto nivel de

estructuración de datos y tiene una sintaxis simple y elegante.

Según MARZAL (2009), la ventaja fundamental de este lenguaje de programación es la gratuidad de su

intérprete. El entorno de programación se llama PythonG, el cual se utiliza para desarrollar programas en

lenguaje Python. Otras ventajas señaladas por los autores son las siguientes:

Un programa desarrollado en lenguaje Python suele ser bastante más corto a su equivalente

en lenguajes como C, por lo que se consideran más compactos.

La sintaxis de Python es muy elegante y permite el desarrollo de programas cuya lectura sea

más legible en comparación con otros lenguajes.

Ofrece un entorno interactivo, el cual, facilita la ejecución de pruebas y ayuda despejar ciertas

dudas acerca de las características del lenguaje (SANTOS, 2013).

El entorno de ejecución de Python detecta muchos de los errores que surgen durante la

programación y proporciona la información necesaria para poder detectarlos y corregirlos.

Page 48: Evaluación de la utilización de la metaheurística

36

Posee extenso juego de estructuras de datos, los cuales, se pueden manipular de modo

sencillo.

2.4. Software LINDO/LINGO

Ambos software han sido desarrollados por LINDO Systems Inc., quienes, han sido líderes en el desarrollo

de herramientas de optimización para programación lineal y no lineal. La principal diferencia entre ambos

es la forma de expresar los modelos de optimización y la interfaz de trabajo, pero ambos son capaces de

resolver problemas reales con 4 millones de variables y 2 millones de restricciones, por lo que, son

herramientas bastante potentes (LINDO SYSTEMS INC., 2014).

El objetivo principal de LINGO es formular modelos de optimización, resolverlos, evaluar las correcciones

necesarias a la formulación basada en la solución, rápidamente realizar el menor número de modificaciones

y repetir el proceso. LINGO posee una amplia variedad de comandos, los cuales, pueden ser invocados en

cualquier momento, a través de los cuales, por ejemplo, se pueden plantear y resolver problemas de

inventario, producción y cadena de abastecimiento (SCHRAGE, 2007).

HILLIER (2010), señalan que LINGO es uno de los programas de software más populares para resolver

modelos pertenecientes a la investigación de operaciones, el cual, posee dos estilos o sintaxis: sintaxis

LINDO y sintaxis LINGO.

2.4.1. Sintaxis LINDO

HILLIER (2010) indican que las principales ventajas radican en la sencillez en su manejo, la naturalidad

para resolver problemas de programación entera y permite introducir un modelo fácilmente, de la misma

manera como se presentan en los libros relacionados al tema. En problemas de pocas variables, el modelo

se puede ingresar y resolver de manera muy intuitiva, por lo que, su utilización es bastante útil para los

estudiantes.

2.4.2. Sintaxis LINGO

HILLIER (2010) señalan que es mucho más poderosa que la sintaxis LINDO, ya que, dentro de las

principales ventajas se pueden encontrar: la posibilidad de no sólo resolver problemas de programación

lineal, también, permite trabajar con modelos no lineales, y la facilidad de importar datos desde una base

de datos o una hoja de cálculo, entre otras.

Page 49: Evaluación de la utilización de la metaheurística

37

De acuerdo a lo señalado por los autores que conformaron IDEA GROUP INC (2010), los software de

LINDO Systems han demostrado un gran desempeño en muchos tipos de problemas, donde es posible

resaltar la administración de inventarios. Estos autores también señalan que existen 3 estilos básicos para

utilizar este software:

Para problemas de pequeño y medio tamaño, donde su uso es bastante sencillo e interactivo

directamente desde el teclado.

Para documentos creados en otros programas, que contengan secuencias de comandos e

información de entrada, y para producir documentos con el propósito de informar, y

Para creación de subrutinas de manera personalizada, dando lugar a soluciones que

contengan ambos, códigos propuestos por el usuario y códigos de optimización de las

bibliotecas virtuales de LINDO.

2.4.3. Metodología de trabajo de LINGO 11.0

El software de optimización LINGO utiliza tres metodologías para resolver problemas de programación

lineal (SCHRAGE, 2007), las cuales son:

A. Simplex: LINGO utiliza dos métodos avanzados, primal y dual, los cuales, se utilizan para resolver

problemas de programación lineal. Posee un diseño flexible que permite ajustar cada método

mediante la alteración de varios de los parámetros algorítmicos.

B. Barrier: Su aplicación ofrece grandes ventajas de velocidad a gran escala y es posible emplearla

en modelos dispersos. También, se utiliza para resolver problemas de programación cuadrática.

No es necesario especificar el tipo de metodología a aplicar, ya que, LINGO interpreta la formulación del

problema y selecciona de manera automática la más apropiada (SCHRAGE, 2007).

2.5. Análisis estadístico Para determinar cuáles son los parámetros más adecuados en la aplicación del SA y llevar a cabo la

comparación con LINGO, es necesario realizar pruebas comparativas, pero existen distintos tipos y se

aplican de acuerdo a distintas situaciones. En primer lugar, se deben aplicar pruebas para determinar si

los conjuntos de datos poseen una distribución Gaussiana, también, denominada distribución normal, y así,

saber si se realizan pruebas paramétricas o no paramétricas. También, es necesario saber si los datos son

pareados o no. Además, se realizan distintas pruebas si se comparan solo dos conjuntos de datos o si se

comparan tres o más (GRAPHPAD SOFTWARE INC, 2014).

Page 50: Evaluación de la utilización de la metaheurística

38

2.5.1. Pruebas de Distribución Normal

Son pruebas estadísticas que analizan un conjunto de datos. Existen muchos enfoques que permiten

realizarlo, pero, el más común, asume que la población de datos tiene una cierta distribución, donde, la

más utilizada es la Distribución Gaussiana o distribución normal. El conocer el tipo de distribución permite

aplicar distintas pruebas y, por ende, obtener más conclusiones del conjunto de datos (GRAPHPAD

SOFTWARE INC, 2014).

Se plantea una hipótesis nula, la cual, indica que todos los valores poseen una Distribución Normal. Las

pruebas de normalidad entregan un valor de P. Si se obtiene un valor de P mayor a 0,05, los datos pasan

la prueba de normalidad. Si no es así (P < 0,05), significa que los datos no poseen una Distribución Normal

(GRAPHPAD SOFTWARE INC, 2014).

Cuando un conjunto de datos está distribuido normalmente, se forma una curva a partir de la distribución

de frecuencias denominada curva normal, la cual, tiene una única moda, con forma de campana y simétrica

alrededor de la media (asimetría igual a cero) (BHUJEL, 2008).

A. D’Agostino & Pearson

Es una prueba versátil y poderosa. Se calcula la asimetría (distribución alrededor de la media) y curtosis

(forma de campana de la distribución Gaussiana) con el objetivo de cuantificar que tanto difiere cada uno

de los valores del conjunto de datos en comparación al valor esperado para una distribución normal.

Posteriormente, se calcula el valor de P de la suma de estas diferencias, el cual, permite aceptar o rechazar

la hipótesis nula (GRAPHPAD SOFTWARE INC, 2014).

B. Shapiro-Wilk

La prueba Shapiro-Wilk proporciona excelentes resultados si cada uno de los elementos del conjunto de

datos es único, pero esto no sucede si existen demasiados valores similares. Si bien en la mayoría de los

casos funciona adecuadamente, la base de la prueba Shapiro-Wilk es difícil de comprender, por ende, se

prefiere el uso de la prueba D’Agostino-Pearson (GRAPHPAD SOFTWARE INC, 2014).

C. Kolmogorov-Smirnov

El valor de P se calcula desde un valor único, la mayor diferencia entre la distribución acumulativa de los

datos y una distribución Gaussiana acumulativa, la cual, no es una manera sensible de evaluar la

Page 51: Evaluación de la utilización de la metaheurística

39

normalidad. También, asume que la media y la desviación estándar de los datos es conocida, lo cual, es

muy difícil que ocurra (GRAPHPAD SOFTWARE INC, 2014).

De las tres pruebas de normalidad presentadas, es recomendable utilizar la prueba de distribución

D’Agostino & Pearson (GRAPHPAD SOFTWARE INC, 2014).

2.5.2. Análisis paramétrico A. Prueba de t no pareado

Compara los promedios de dos grupos. El resultado más útil es el intervalo de confianza para la diferencia

entre ambos promedios. Si supuestos del análisis son correctos, es posible asegurar en un 95 por ciento

que el intervalo de confianza del 95 por ciento contiene el verdadero valor de la diferencia entre ambos

promedios. Para calcular el valor de P, se calcula el radio de t, el cual, es la diferencia entre los promedios

divididos por el error estándar de la diferencia, calculado a partir de la combinación de los errores estándar

de los promedios de los dos grupos. Si la diferencia es alta comparada con el error estándar, entonces el

radio de t será alto y el valor de P bajo. El valor de P es derivado del valor absoluto de t. Si es mayor a

0,05, significa que no existe diferencia significativa entre los conjuntos de datos. En caso contrario (P <

0,05), sí existe diferencias significativas (GRAPHPAD SOFTWARE INC, 2014).

B. Prueba de t pareado

Se utiliza para comparar dos conjuntos de datos pareados. Calcula la diferencia entre cada conjunto de

pares y analiza las diferencias. El radio de t es el promedio de estas diferencias dividido por el error estándar

de las diferencias. Si se obtiene un valor alto, el valor de P será bajo. Analizando sólo las diferencias, una

prueba pareada corrige fuentes de dispersión que podrían afectar el antes y el después de las mediciones

(GRAPHPAD SOFTWARE INC, 2014).

Se aplica una prueba para comprobar la efectividad del emparejamiento de los datos, en la cual, se calcula

el coeficiente de correlación de Spearman. La Ho plantea que si los dos grupos no están correlacionados,

cuál sería la probabilidad de que al escoger dos datos al azar estos tengan un coeficiente de correlación

tan grande como el observado en el experimento. Si el valor de P es mayor a 0,05, significa que el

emparejamiento de los datos no fue efectivo y se podría cuestionar sí se debía aplicar una prueba para

datos emparejados. En caso contrario (P < 0,05), se concluye que el emparejamiento sí fue efectivo y, por

lo tanto, el coeficiente de correlación obtenido es alto (GRAPHPAD SOFTWARE INC, 2014).

Page 52: Evaluación de la utilización de la metaheurística

40

2.5.3. Análisis no paramétrico A. Mann Whitney

Es una prueba no paramétrica para comparar grupos de datos independientes (BHUJEL, 2008). Primero,

ordena todos los valores de menor a mayor y obtiene un valor de P, el cual, se obtiene a partir de las

diferencias entre el promedio de ambos grupos. Si los promedios de ambos grupos son muy diferentes, el

valor de P será muy bajo (GRAPHPAD SOFTWARE INC, 2014).

Para poder interpretar el valor de P, es necesario conocer la hipótesis nula (Ho) que ha sido propuesta. En

este caso, la Ho propone que la distribución de ambos conjuntos son idénticos, por lo cual, la probabilidad

de que una observación seleccionada aleatoriamente de uno de los dos exceda a una observación

seleccionada al azar del otro, es del 50 por ciento (GRAPHPAD SOFTWARE INC, 2014). Si el valor de P

obtenido es mayor a 0,05, se acepta la Ho, es decir, no existen diferencias entre ambos conjuntos (BHUJEL,

2008). Aunque esto no necesariamente significa que ambos conjuntos de datos son iguales, más bien, se

interpreta que no existe evidencia suficiente para decir que los conjuntos de datos se diferencian

(GRAPHPAD SOFTWARE INC, 2014).

B. Wilcoxon

Es una prueba no paramétrica para comparar grupos de datos pareados. Primero, se obtiene la diferencia

entre cada conjunto de pares y ordena los valores absolutos de las diferencias de menor a mayor. Se

clasifican las diferencias obtenidos en dos grupos: uno donde la columna A fue mayor (rangos positivos) y

otra donde la columna B fue mayor (rangos negativos); y se obtienen ambas suma. Si los promedios de las

filas son muy diferentes en ambos grupos, el valor de P será bajo. Si el valor de P es mayor a 0,05, significa

que no existe evidencia suficiente para decir que existen diferencias entre los promedios. En caso contrario

(P < 0,05), se concluye que los conjuntos poseen promedios diferentes (GRAPHPAD SOFTWARE INC,

2014).

Al igual que con la prueba de t pareado, se comprueba la efectividad del emparejamientos de datos, con la

diferencia de que en Wilcoxon se utiliza el coeficiente de correlación de Spearman no paramétrico

(GRAPHPAD SOFTWARE INC, 2014).

2.5.4. One-way ANOVA

El One-way ANOVA o ANOVA de un factor, compara tres o más conjuntos de datos pareados y no

pareados, donde, se asume que estos poseen una distribución normal. Si se obtiene un valor de P por

sobre 0,05, no existe evidencia suficiente para concluir que los conjuntos de datos son diferentes. En caso

Page 53: Evaluación de la utilización de la metaheurística

41

contrario (P < 0,05), significa que es poco probable que las poblaciones sean iguales, pero, no quiere decir

que todas las poblaciones sean distintas, sólo que al menos una de ellas es diferente del resto, por lo tanto,

es necesario observar las pruebas siguientes para identificar dónde están las diferencias (GRAPHPAD

SOFTWARE INC, 2014). La prueba de múltiples comparaciones (One-way ANOVA) permite contrastar las

medias de cada conjunto con un grupo de control o comparar la media de cada uno de los conjuntos entre

ellos. Las múltiples comparaciones son más significativas que realizar la prueba de t a cada uno, ya que,

reduce el riesgo de ser engañado por las diferencias producidas por el muestreo aleatorio. Esto se debe a

que el nivel de significación no se aplica a cada comparación en particular, sino que a toda la familia de

comparaciones. Se utiliza la información de los otros grupos con tal de obtener una mejor medida de

variación (GRAPHPAD SOFTWARE INC, 2014).

El valor de P anteriormente señalado, se calcula a partir del valor de F, el cual, a su vez, se obtiene desde

la tabla ANOVA. Para ello, se cuantifica la variabilidad que existe entre los conjuntos de datos y la

variabilidad dentro de los conjuntos. En la primera, se obtiene la suma de los cuadrados (SS) de las

diferencias entre las medias de los grupos y la media global (la media de todos los valores de todos los

grupos). Para la variabilidad dentro de los conjuntos, se obtiene la suma de los cuadrados de las diferencias

entre cada uno de los valores y la media de su grupo (GRAPHPAD SOFTWARE INC, 2014).

Cada suma de cuadrados es asociada a un cierto número de grados de libertad (DF, calculado a partir de

la cantidad de elementos y número de grupos). Posteriormente, en ambos casos se calcula una media

cuadrática (MS), la cual, corresponde a la división de las sumas de cuadrados (SS) por el número de grados

de libertad (DF). El valor de F es la relación que existe entre ambas medias cuadráticas, donde, se divide

la media cuadrática de la variabilidad entre los conjuntos por la media cuadrática de la variablidad dentro

de los conjuntos (GRAPHPAD SOFTWARE INC, 2014). Si se obtuvo un valor de P mayor a 0,05, se debe

a que el valor de F es cercano a uno (en la mayoría de los casos), lo cual, significa que la variabilidad

dentro de los conjuntos es más alta de lo que se esperaba y similar a la variabilidad entre los conjuntos. Si

el valor de P es menor a 0,05, se debe a que el valor de F es muy superior a uno, resultado de que la

variabilidad entre los conjuntos era mayor a la variabilidad dentro de los conjuntos (GRAPHPAD

SOFTWARE INC, 2014).

Page 54: Evaluación de la utilización de la metaheurística

42

3. DISEÑO METODOLÓGICO

El diseño metodológico consta de 10 actividades, las cuales, se clasifican en 4 etapas: Especificación de

los límites de trabajo, Desarrollo del software propuesto, Evaluación de resultados y Diseño final del

software. El desarrollo de estas actividades permitió cumplir con los objetivos específicos definidos

anteriormente. En la figura N° 3.1, se presenta un diagrama con las etapas que componen el diseño

metodológico, con sus respectivas actividades.

Figura N° 3.1: Diseño metodológico. Fuente: Elaboración Propia.

Realización del software propuesto utilizando la metaheurística Simulated Annealing aplicado en problema de inventario

Etapa II: Desarrollo del software propuesto

Análisis de los resultados entregados por el software propuesto

Etapa III: Evaluación de resultados del software propuesto y LINGO 11.0

Análisis de los resultados entregados por LINGO 11.0 Comparación del

desempeño de ambos software

Recopilación de datos reales para ser utilizados en la evaluación

Determinación de los parámetros y variables involucrados en la administración de inventario

Elección del lenguaje de programación a utilizar

Etapa I: Especificación de los límites de trabajo

Determinación de los parámetros, variables y conceptos involucrados con la metaheurística Simulated Annealing

Criterios de comparación

Etapa IV: Diseño final del software propuesto

Depuración del software propuesto y elaboración de un manual para el usuario

Objetivos

específicos 1 y

2

Objetivo

específico 3

Objetivo

específico 4

Objetivo

específico 5

Page 55: Evaluación de la utilización de la metaheurística

43

3.1. Especificación de los límites de trabajo

El objetivo de la primera etapa consistió en reconocer y especificar los distintos conceptos necesarios para

la creación de un software, desde los datos con los cuales trabaja para la obtención de resultados, hasta

el lenguaje que se utilizó para aquello. También, se establecieron los criterios necesarios para llevar a cabo

la comparación entre el software propuesto y LINGO 11.0.

3.1.1. Determinación de los parámetros y variables involucrados en la administración de inventario

Los parámetros demanda y costos fueron definidos de acuerdo a lo expuesto en la sección “2.1.3.

Componentes de los Sistemas de Inventario”. Para la demanda (punto “A. Demanda”), se escogió la

demanda de tipo determinística con el objetivo de acotar el desarrollo del presente proyecto de tesis, ya

que, escoger ambos (determinística y probabilística) hubiese significado abarcar varios sistemas de

inventario en el desarrollo del software propuesto. En cuanto a los costos, se utilizaron los 4 mencionados

en el punto “D. Costos”: de mantenimiento, de pedidos, por faltantes y por compra.

La cantidad requerida y el costo total se trabajaron de acuerdo a lo expuesto en la sección “2.1.5. Sistemas

de Inventario”, específicamente, el punto “A. Modelo de la cantidad económica de pedido”, donde, los

modelos EOQ utilizados fueron: básico, con producción y con faltantes. En el primer caso, se utilizó la

Fórmula (2.3) en la obtención de la cantidad a pedir. En el segundo caso, la cantidad a pedir se calculó con

la Fórmula (2.5). Para ambas situaciones, se utilizó la Fórmula (2.2) para obtener el costo total de cada

insumo. Para el modelo EOQ con faltantes, se trabajó con la Fórmula (2.8) para la obtención de la cantidad

a pedir y con la Fórmula (2.7) en el caso del costo total. A partir del modelo EOQ con producción, se

definieron los parámetros tasa de consumo diario y tasa de producción diaria. El parámetro faltantes se

definió en base al modelo EOQ con faltantes. La elección del modelo EOQ como sistema de inventario

para el presente proyecto de título, por sobre los demás sistemas existentes, se realizó con el objetivo de

no extender de sobremanera el trabajo a realizar y, por ende, la complejidad del mismo. Esto no quiere

decir que sea el mejor sistema de inventario existente, solo se escogió uno de muchos para poder aplicar

el Simulated Annealing. Además, cabe mencionar que el modelo EOQ es una de las técnicas más antiguas

para resolver problemas de inventario (Chase, 2009; Heizer, 2008), a partir de la cual se han generado

distintos modelos.

La asignación de categoría utilizando el criterio ABC se trabajó bajo los conceptos presentados en la

sección “2.1.3. Administración de Inventarios”, donde, en el punto “A. Categorización ABC”, se señaló la

ventaja de categorizar los insumos en distintos grupos, de acuerdo a la importancia para la empresa

(CHASE, 2009; HEIZER, 2008).

Determinar estos parámetros permitió comprender los conceptos y fórmulas correspondientes a la

admnistración de inventario, lo cual, fue el primer paso para lograr vincular los resultados de inventario con

la metodología del Simulated Annealing.

Page 56: Evaluación de la utilización de la metaheurística

44

3.1.2. Determinación de los parámetros, variables y conceptos involucrados con la metaheurística

Simulated Annealing

De acuerdo a lo establecido en la sección “2.2.1. Definición”, las variables de decisión, o posibles

soluciones, se definen a partir de la cantidad requerida obtenida en los cálculos de inventario, la cual, se

convierte en la solución inicial. Las nuevas soluciones se obtienen del conjunto de variables de decisión.

La función objetivo con la cual trabaja la metaheurística dependía del modelo EOQ seleccionado para los

cálculos de inventario.

De los conceptos propios de Simulated Annealing (SA), la distribución de Boltzmann se trabajó según lo

planteado en la sección “2.2.2. Aceptación de Movimientos”, y se utilizó la Fórmula (2.11). En cuanto al

estado de equilibrio, de acuerdo a lo señalado en la sección “2.2.3. Programación de Enfriamiento”, se

especificó la iteración de todos los elementos del conjunto de soluciones para alcanzar el equilibrio en cada

temperatura. De los distintos tipos de enfriamiento presentados en dicha sección, se optó por el geométrico,

ya que, es uno de los más utilizados en el desarrollo de investigaciones (MARTÍNEZ, 2013). En cuanto a

la condición de detención, de acuerdo a lo planteado en la sección 2.2.3., se definió que el SA se detenga

cuando alcanza una temperatura igual a 100.

El parámetro temperatura inicial se trabajó de acuerdo a lo presentado en la sección “2.2.3. Programación

de Enfriamiento”, punto “A. Temperatura Inicial”, donde, se optó por la estrategia “Aceptar todos”. Como se

escogió un enfriamiento del tipo geométrico (Fórmula (2.13)), se definió el parámetro alfa, de acuerdo a lo

señalado en el punto “C. Enfriamiento” de la misma sección.

Determinar estos parámetros y variables permitió comprender los conceptos y fórmulas correspondientes

a Simulated Annealing, gracias a lo cual, en conjunto con la actividad anterior, se logró llevar a cabo la

vinculación entre inventario y SA.

3.1.3. Elección del lenguaje de programación a utilizar

En esta actividad se realizó una evaluación de los distintos lenguajes de programación presentados en la

sección, donde, se analizaron las ventajas y desventajas de cada uno, de acuerdo a lo planteado en el

marco teórico, para lo cual, se elaboró una tabla comparativa, resaltando los aspectos más relevantes de

cada lenguaje. Además, se señalaron algunos autores que utilizaron lenguajes de programación para el

desarrollo de sus investigaciones, con el objetico de visualizar los más utilizados en la actualidad.

La elección se llevó a cabo debido a la necesidad de determinar cuál lenguaje era el más adecuado para

el desarrollo del software y para aplicar la metodología de trabajo propuesta en las etapas anteriores de

acuerdo a las funciones del lenguaje mismo.

Page 57: Evaluación de la utilización de la metaheurística

45

Con ello, se determinó cuál era el lenguaje de programación más apropiado para la utilización de la

metaheurística Simulated Annealing.

3.1.4. Criterios de comparación

Se establecieron los siguientes criterios de comparación: costo total y tiempo de ejecución, los cuales, se

definieron en base a la necesidad de evaluar el costo total de inventario obtenido con el software propuesto

y LINGO 11.0, y determinar el tiempo que demora cada uno en obtener dicho resultado. Para ello, se

especificó la manera en que ambos medían los dos criterios planteados y cómo presentaban sus

resultados.

El objetivo de la actividad era determinar criterios que permitieran llevar a cabo una comparación de los

resultados obtenidos mediante el software propuesto con los resultados que entrega LINGO 11.0.

3.2. Desarrollo del software propuesto

Después, se procedió al desarrollo del software propiamente tal, implementando los conceptos y variables

definidas en la etapa anterior. Además, aparte del desarrollo del software, se consideraron ciertos aspectos

visuales para que su utilización sea más intuitiva.

3.2.1. Realización del software propuesto utilizando la metaheurística Simulated Annealing aplicado en problema de inventario

Se diseñó el software en base al lenguaje seleccionado y sus respectivos códigos, de manera que el

software reconozca los parámetros ingresados y los utilice adecuadamente, para lo cual, se desarrollaron

varios esquemas que representan el funcionamiento del software.

El software fue diseñado de manera que los datos que vaya arrojando dependan de las opciones

seleccionadas por el usuario.

Se establecieron todos los parámetros relacionados con inventario (definidas en la actividad 3.1.1.), de

manera que el software pudiese reconocerlos al momento de importar una planilla Excel y trabajar con ellos

adecuadamente para llevar a cabo los cálculos.

Se incorporaron opciones para ordenar los datos de acuerdo a la categorización ABC, de manera que el

usuario pueda visualizar los productos más importantes de acuerdo al criterio seleccionado. La

categorización se llevó a cabo de acuerdo a lo señalado por HEIZER (2008).

Page 58: Evaluación de la utilización de la metaheurística

46

Se establecieron todos los parámetros relacionados con Simulated Annealing (definidas en la actividad

3.1.2.). Se tomó como base la planilla de la metaheurística presentada en el marco teórico, específicamente

en la sección “2.2.4. Pseudo-código”, para poder aplicar la metodología de SA en el software, donde, se

realizaron las distintas modificaciones de acuerdo a las funciones propias del lenguaje de programación.

Para finalizar, se realizaron las operaciones propias del lenguaje para poder generar una planilla Excel con

todos los datos trabajados por el software, de manera que el usuario obtenga los resultados de forma

práctica y fácil de manejar.

Todo lo anteriormente señalado se llevó a cabo para que el software entregue como resultado los costos

totales de cada producto y las cantidades asociadas a ello, optimizados bajo la metodología del Simulated

Annealing.

El diseño del software propuesto, fue un paso crítico para dar cumplimiento al objetivo general del proyecto

de título.

3.3. Evaluación de resultados del software propuesto y LINGO 11.0

Finalmente, se comprobó el desempeño del software generado, utilizando información proporcionada por

la empresa Walbuch S.A., se realizó un análisis comparativo de los resultados con los obtenidos por LINGO

11.0.

3.3.1. Recopilación de datos reales para ser utilizados en la evaluación

Se escogió una empresa en particular con el objetivo de someter al software propuesto a problemas reales

de inventario. Se optó por la empresa Walbusch S.A. servicios marítimos debido a la vinculación de esta

con la escuela de ingeniería civil industrial como la disponibilidad de la directiva para facilitar los datos

asociados a inventario, con la única condición de resguardar los datos más importantes. Por ende, para el

presente proyecto de título, la empresa Walbusch S.A. solo fue suministradora de información.

La información obtenida corresponde a los parámetros definidos en la sección “3.1.1. Determinación de los

parámetros y variables involucrados en la administración de inventario”. En cuanto a la demanda, para el

presente proyecto de título se trabajó con una demanda determinística.

Se utilizaron los distintos conceptos presentados en la sección “2.1.3. Componentes de los Sistemas de

Inventario”, específicamente punto “D. Costos: Costo de pedido”, para determinar el costo de ordenar un

pedido. En cuanto al costo de mantenimiento, se utilizaron las fórmulas propuestas por BENÍTEZ (2012)

para calcular las tasas de almacenamiento, presentadas en la Tabla N° 2.1. Además, se consideraron los

conceptos y rangos presentados en la Tabla N° 2.2, con el objetivo de representar de mejor manera dicho

Page 59: Evaluación de la utilización de la metaheurística

47

costo. Gracias a estos datos, se confeccionaron planillas de datos en Excel, formato “.csv” (Comma-

Separated Values, conocido como archivo separado por comas), para los casos de demanda (anual,

semestral, trimestral y mensual).

La recopilación de datos se realizó mediante visitas a la empresa y con la ayuda de los trabajadores que

colaboraron para la obtención de los costos.

El objetivo de utilizar estos datos es la validación del software, ya que, se somete a problemas reales y

contrastarlos con el software LINGO 11.0, de acuerdo a criterios de comparación establecidos.

3.3.2. Análisis de los resultados entregados por el software propuesto

En primer lugar, se realizó una demostración del aporte de la categorización ABC, con el objetivo de

apreciar la utilidad del mismo para la administración de inventarios. Para ello, se utilizó una planilla de datos

modificada, ya que, los datos obtenidos en la actividad anterior debían ser resguardados.

Después, se efectuaron los cálculos, a partir de los datos de la empresa anteriormente señalados, y se

analizaron los resultados obtenidos en temas de: tiempo de entrega de resultados y minimización de costos.

Para medir el tiempo de ejecución del software propuesto, se agregó una función para registrar los tiempos

en los procesos de: asignación de parámetros, cálculo de inventario, categorización de datos, aplicación

de metodología del Simulated Annealing (SA) y exportar planilla con los resultados.

Posteriormente, se realizaron análisis con el objetivo de determinar qué valores eran más apropiados en

los parámetros: temperatura, alfa y tamaño del conjunto de posibles soluciones; para ello, se establecieron

5 valores para temperatura y alfa, dando como resultado 25 escenarios posibles, los cuales, se analizan

para 3 de los 5 valores propuestos para el tamaño del conjunto. Cabe destacar, que se realizaron 5

iteraciones para cada uno de los escenarios, ya que, en cada iteración se obtuvieron distintos valores (por

el carácter probabilístico de Simulated Annealing), por lo tanto, había que realizar más de una medición.

No se realizaron más iteraciones para cada escenario por temas relacionados al registro de cada una de

ellas y al tiempo involucrado.

Finalmente, se ejecutaron pruebas estadísticas a los resultados obtenidos en cada una de las situaciones,

con el objetivo de establecer si había diferencias significativas entre la utilización de un valor u otro. Se

realizaron 3 pruebas de normalidad, presentadas en el marco teórico (sección “2.5.1. Pruebas de

distribución normal”), debido a que, era necesario conocer si los datos tenían una distribución normal o no

para poder determinar qué prueba comparativa aplicar (paramétrico o no-paramétrico). Los análisis

estadísticos se aplicaron a través del software GraphPad Prisma 6. Además, se creó una nueva clase

denominada “InformeRS”, destinada a almacenar las iteraciones realizadas por el Simulated Annealing,

Page 60: Evaluación de la utilización de la metaheurística

48

con el propósito de facilitar el análisis de los resultados obtenidos, lo cual, ayudó a comprender cómo

afectaban los distintos valores a la metodología del SA.

Todo lo anterior, permitió establecer los parámetros finales del software y supervisar los cálculos realizados

para obtener resultados precisos, evitando errores de programación.

3.3.3. Análisis de los resultados entregados por LINGO 11.0

Se analizó el funcionamiento de LINGO 11.0, desde el ingreso de los datos hasta los resultados obtenidos,

con el objetivo de obtener la información necesaria para llevar a cabo las comparaciones con el software

programado, para lo cual, se desarrolló un modelo EOQ básico de inventario con los métodos propios del

software, basado en los datos obtenidos en la sección 3.3.1. Si bien, de acuerdo a lo señalado por

SCHRAGE (2007), no era necesario escoger entre una de las metodologías de trabajo de LINGO 11.0, se

eligió primal simplex, ya que, era uno de los más utilizados para resolver problemas de programación lineal,

debido a su diseño flexible.

Se escogió LINGO 11.0, ya que, es una de las herramientas, en problemas de operaciones, más populares

y potentes del mercado, por ende, llevar a cabo dicha comparación, fue una prueba de calidad para el

software programado. Cabe destacar, que los desarrolladores recomiendan la utilización de la sintaxis

LINGO por sobre LINDO, ya que, es más completa. Por lo anterior, y por lo mencionado en el marco teórico,

se escogió la sintaxis LINGO.

3.3.4. Comparación del desempeño de ambos software

Por último, se comparó el desempeño del software propuesto con el de LINGO 11.0, mediante el análisis

de los distintos resultados entregados por ambos, en cuanto a: “Tiempo de ejecución” y “Costos totales”,

ya que, era necesario saber acerca de la calidad de las respuestas que entrega el software propuesto. Para

el desarrollo del software propuesto, el análisis del mismo y la evaluación con LINGO 11.0, se utilizó una

computadora que disponía de un procesador Intel Celeron CPU 847 de 1,10 GHz, con 6 GB de memoria

RAM.

Se realizó un análisis comparativo mediante el software GraphPad Prisma, en el cual, al igual que en “3.3.2.

Análisis de los resultados entregados por el software propuesto”, se aplicaron las 3 pruebas de distribución

normal para determinar qué tipo de análisis aplicar (paramétrico o no-paramétrico).

De esta manera, de acuerdo al resultado obtenido con la comparación, se pudo determinar si el software

diseñado en el presente proyecto de título permite mejorar los costos en la administración de inventarios o

no, y, por ende, apoyar la toma de decisiones en la empresa.

Page 61: Evaluación de la utilización de la metaheurística

49

3.4. Diseño final del software propuesto

Finalmente, se definió el aspecto visual final, se mejoró la presentación de los resultados y se desarrolló

un manual de usuario para la utilización apropiada del software

3.4.1. Depuración del software propuesto y elaboración de un manual para el usuario

La depuración del software se llevó a cabo mediante la eliminación de códigos de programación, los cuales,

permitieron crear procedimientos destinados a almacenar los datos del Simulated Annealing y generar la

planilla de datos de la clase “InformeRS”. Dichos procedimientos no formaban parte vital de la estructura

del software, ya que, solo fueron creados para el análisis de datos propios de la investigación.

Se diseñó un manual para el usuario con el objetivo de facilitar el uso del software. En primer lugar, se

desarrolló una introducción para contextualizar al usuario acerca del inventario y el Simulated Annealing,

para tener una noción de lo que significa la metaheurística y cómo funciona. Después, se explicó el

funcionamiento de cada botón que conforma el software, la estructura que debe poseer la planilla Excel

para poder importarla sin problemas y cómo se presenta la información en la planilla resultante.

El objetivo de desarrollar un manual fue entregar una ayuda al usuario para poder utilizar el software

propuesto sin problemas.

Page 62: Evaluación de la utilización de la metaheurística

50

4. PRESENTACIÓN Y ANÁLISIS DE RESULTADOS

4.1. Especificación de los límites de trabajo

Se especificaron parámetros, variables, conceptos y metodologías empleadas en el desarrollo del software,

lo cual, permitió esclarecer los distintos ítems que se incluyeron en su elaboración y facilitó la programación

propiamente tal. Además, se establecieron los criterios con los cuales se llevaron a cabo las comparaciones

de resultados.

4.1.1. Determinación de los parámetros y variables involucrados en la administración de inventario

Se determinaron los parámetros y variables involucrados en la administración de inventario, para lo cual,

se elaboró la Tabla N° 4.1, donde, se destacó la importancia de cada uno de ellos, en base a lo expuesto

en el marco teórico.

Tabla N° 4.1: Importancia de los parámetros y variables de inventario. Inventario Importancia

Demanda Comprender su comportamiento permite determinar la complejidad del modelo

de inventario a utilizar

Costo de pedidos (Co) Permite determinar los costos incurridos para llevar a cabo un pedido

Costo de

mantenimiento (Ch)

Permite establecer los costos relacionados con el almacenamiento y cuidados

necesarios para cada tipo de insumo

Costo de faltantes (Cs) Permite determinar los costos incurridos por la cancelación o la demora en la

entrega de pedidos

Costo por compra

(Precio)

Conocer la variación del precio unitario permite tomar decisiones en cuanto a

la cantidad de insumos a pedir

Faltantes (S) Permite establecer la cantidad de unidades solicitadas que no se pueden

satisfacer por motivos de falta de inventario

Tasas diarias de

producción y consumo

Permiten determinar la cantidad necesaria de insumos a pedir para mantener

un nivel de inventario aceptable en problemas de inventario con producción

Criterio ABC Permite clasificar los insumos en grupos, de acuerdo a criterios previamente

establecidos, lo cual, ayuda a establecer políticas y controles de inventario

Cantidad requerida (Q) Permite determinar la cantidad de insumos a pedir, a partir de los distintos

modelos de inventario existentes, con el objetivo de satisfacer la demanda o

alcanzar un nivel óptimo de unidades

Costo Total Permite determinar el costo total de cada insumo, de acuerdo a la combinación

de los costos asociados a inventario, a partir de los distintos modelos de

inventario existentes

Fuente: Elaboración propia.

Page 63: Evaluación de la utilización de la metaheurística

51

La definición de cada uno de estos datos corresponde a lo expuesto en el marco teórico, pero, la manera

en la que se hayan obtenido los parámetros, depende de los criterios propios cada empresa.

Las fórmulas utilizadas para el cálculo de la cantidad requerida y el costo total dependen del tipo de

problema, por lo tanto, la aplicación de uno u otro modelo EOQ está ligado a los parámetros que se

dispongan. Se confeccionó la Tabla N° 4.2, donde, se presentaron las fórmulas utilizadas para cada tipo

de modelo EOQ.

Tabla N° 4.2: Fórmulas de los modelos EOQ utilizados Modelo EOQ Parámetro/Variable Fórmula

Básico Cantidad a pedir 𝑄∗ = √

2 𝐷 𝐶𝑜

𝐶ℎ

Costo total 𝐶𝑇 = (𝐷 ∗ 𝐶) + (

𝐷

𝑄) ∗ 𝐶𝑜 + (

𝑄

2) ∗ 𝐶ℎ

Con producción Cantidad a pedir 𝑄∗ = √

2 𝐷 𝐶𝑜

𝐶ℎ ∗ [1 − (𝑑𝑝

)]

Costo total 𝐶𝑇 = (𝐷 ∗ 𝐶) + (

𝐷

𝑄) ∗ 𝐶𝑜 + (

𝑄

2) ∗ 𝐶ℎ

Con faltantes Cantidad a pedir 𝑄∗ = 𝑄𝐸𝑂𝑄

∗ √𝐶ℎ + 𝐶𝑠

𝐶𝑠

Costo total 𝐶𝑇 = (𝐷 ∗ 𝐶) ∗ (

𝐷

𝑄) ∗ 𝐶𝑜 + (

𝐶ℎ

2𝑄) ∗ (𝑄 − 𝑆)2 + (

𝐶𝑠

2𝑄) ∗ 𝑆2

Fuente: Elaboración propia.

Tomando en cuenta lo señalado por HEIZER (2008) y presentado en la figura N° 2.1, se consideró que la

categorización de los insumos se lleve a cabo de acuerdo a distintos criterios, con el objetivo de ordenar

los insumos debido a su importancia en la empresa y etiquetarlos apropiadamente. Para ello, la clasificación

de los grupos se definió de la siguiente manera: el 75 por ciento del total de las existencias se asignó como

grupo A. El 20 por ciento siguiente, correspondió al grupo B y, el 5 por ciento restante, al grupo C.

Page 64: Evaluación de la utilización de la metaheurística

52

4.1.2. Determinación de los parámetros, variables y conceptos involucrados con la metaheurística

Simulated Annealing

Se determinaron los parámetros, variables y conceptos involucrados con Simulated Annealing (SA), para

lo cual, se elaboró la Tabla N° 4.3, donde, se destacó la importancia de cada uno de ellos, en base a lo

expuesto en el marco teórico.

Tabla N° 4.3: Importancia de los parámetros y variables de Simulated Annealing Simulated Annealing Importancia

Temperatura Inicial Permite determinar el comportamiento de la búsqueda de la solución

óptima, estableciendo una estrategia de aceptación de movimientos

Alfa Permite establecer el programa de enfriamiento de la metaheurística

Solución Permite determinar el valor que minimiza la función objetivo

Conjunto de soluciones Permite establecer una región factible de posibles soluciones, en la cual,

la metaheurística lleva a cabo la búsqueda

Función Objetivo Permite evaluar las soluciones de la región factible, con el objetivo de

determinar la mejor solución

Distribución de

Boltzmann

Permite evaluar una solución que empeora la función objetivo con un

número aleatorio, con el objetivo de aceptar dicho movimiento

desfavorable o no

Estado de Equilibrio Permite determinar el número de iteraciones a realizar en cada

temperatura, antes de realizar la actualización

Enfriamiento Permite actualizar la temperatura y determinar la velocidad con la que

disminuye dicho valor después de alcanzar un estado de equilibrio

Condición de Detención Permite detener la búsqueda de la metaheurística de acuerdo a un

criterio de detención previamente establecido

Fuente: Elaboración Propia

Existen dos tipos de soluciones: solución inicial y solución nueva. La inicial se definió a partir del resultado

en los cálculos de inventario (Q) y fue la base para establecer el conjunto de posibles soluciones. La nueva

correspondió a la solución escogida del conjunto de posibles soluciones para realizar la evaluación con la

inicial.

La función objetivo corresponde al costo total del producto, por lo tanto, la estructura de la fórmula depende

del tipo de modelo EOQ seleccionado. Se confeccionó la Tabla N° 4.4, donde, se presentaron las fórmulas

utilizadas para la función objetivo según el modelo EOQ.

Page 65: Evaluación de la utilización de la metaheurística

53

Tabla N° 4.4: Función objetivo para cada modelo EOQ Modelo EOQ Función Objetivo

Básico 𝐹𝑂 = (𝐷 ∗ 𝐶) + (

𝐷

𝑄) ∗ 𝐶𝑜 + (

𝑄

2) ∗ 𝐶ℎ

Con producción 𝐹𝑂 = (𝐷 ∗ 𝐶) + (

𝐷

𝑄) ∗ 𝐶𝑜 + (

𝑄

2) ∗ 𝐶ℎ

Con faltantes 𝐹𝑂 = (𝐷 ∗ 𝐶) ∗ (

𝐷

𝑄) ∗ 𝐶𝑜 + (

𝐶ℎ

2𝑄) ∗ (𝑄 − 𝑆)2 + (

𝐶𝑠

2𝑄) ∗ 𝑆2

Fuente: Elaboración propia.

La distribución de Boltzmann se trabajó de acuerdo a la Fórmula 2.11: 𝑷(ΔE , T) = exp(−ΔE

kt) > 𝑅, la cual,

permitió evaluar las variaciones en la función objetivo al momento de comparar las soluciones de la región

factible.

Para el parámetro alfa, se realizaron pruebas con distintos valores antes de establecer uno definitivo para

el software, los cuales, oscilaban entre los 0,5 y 0,95. Los resultados y la elección del valor alfa más

adecuado se presentan en la sección “4.3.2. Análisis de los resultados entregados por el software

propuesto”. La fórmula utilizada para el criterio de enfriamiento fue: 𝑇 = 𝛼 ∗ 𝑇.

La temperatura permitió establecer el valor inicial con el que la metaheurística comienza la búsqueda, la

cual, se fue actualizando hasta alcanzar una condición de detención. Por ende, se establecieron 3 tipos de

temperatura: máxima, de trabajo y mínima. La primera correspondió a la temperatura inicial, la cual,

determina la estrategia de aceptación de movimientos, en este caso, se escogió la estrategia “Aceptar

todos”, por lo tanto, el valor debía ser alto. Se definieron valores para la temperatura que oscilaban desde

los 1.000 hasta los 100.000, los cuales, fueron evaluados en la sección “4.3.2. Análisis de los resultados

entregados por el software propuesto”, donde, se determinó el valor más adecuado en base a los resultados

obtenidos. La temperatura mínima fue la condición de detención establecida, por lo tanto, permitió detener

la búsqueda de la metaheurística al alcanzar el valor 100. La temperatura de trabajo era la temperatura

que se actualizaba tras alcanzar un estado de equilibrio, la cual, comenzaba con un valor igual a la

temperatura máxima y terminaba al alcanzar la temperatura mínima.

4.1.3. Elección del lenguaje de programación a utilizar

Se escogió uno de los 5 lenguajes de programación presentados en el marco teórico para llevar a cabo la

elaboración del software, de acuerdo a las ventajas y desventajas propias de cada uno.

Page 66: Evaluación de la utilización de la metaheurística

54

Tabla N° 4.5: Ventajas y desventajas de los lenguajes de programación Lenguaje Ventajas Desventajas

C Controlar con gran exactitud que

influyen en la eficiencia de los

programas desarrollados

Numerosos detalles

Dificultad de aprendizaje

C++ Chequeo de los tipos parametrizados

al momento de compilar el programa

desarrollado

Lenguaje potente

Ambiente de trabajo amigable

Conjunto de instrucciones de

programación redundantes

Sistema inseguro aumenta el riesgo de

cometer errores

Dificultad de aprendizaje

C# Incluye mejoras de C y C++

Evita errores en el uso de instrucciones

Eficiente

Requiere de plataforma .NET Framework

para trabajar (lenguaje propio de

Microsoft)

Java Posee una vasta colección de clases

en la biblioteca de clases (API´s)

Similar a C y C++ a nivel semántico,

aprovecha sus características evitando

sus inconvenientes

Programas ejecutables independientes

del sistema

Programas ejecutables en cualquier

microprocesador o sistema operativo

La independencia con el sistema dificulta

la utilización de las características del

equipo

Debido a la independencia con el sistema

es necesario un interpretador de Java

Python Alto nivel de estructuración de datos

Sintaxis simple y elegante

Programas más compactos en

comparación con otros lenguajes

Entorno interactivo

Programas interpretados son más lentos

que los compilados

Fuente: Elaboración propia.

Si bien, autores como INOUE (2012) y DIAZ (2013), utilizaron los lenguajes de programación C# y C para

el desarrollo de sus investigaciones, analizando la Tabla N° 4.5, se descartaron C, C++ y C#,

principalmente, por la complejidad de aprendizaje (los dos primeros) y por la necesidad de instalar paquetes

de datos específicos (.NET Framework). Otros autores, como MAJAZI (2012) y YU (2014), utilizaron

software de optimización para sus investigaciones, en ambos casos, desarrollaron su problemático en

MATLAB.

Page 67: Evaluación de la utilización de la metaheurística

55

De los dos lenguajes de programación restantes, se escogió Java, principalmente, por disponer de una

amplia colección en la biblioteca de clases y la portabilidad de los software creados, lo cual, permite

ejecutarlos sin problemas en cualquier sistema operativo y equipos. Si bien, era necesario disponer de un

interpretador para Java, la mayoría de los equipos poseen uno. Una de las principales razones al momento

de escoger Java, fue utilizar un lenguaje distinto a los de otras investigaciones para la utilización de

Simulated Annealing, con el objetivo de analizar su comportamiento.

4.1.4. Criterios de comparación

Para determinar el real aporte del software creado, se llevó a cabo una comparación con uno de los

software más utilizados, para lo cual, se establecieron los siguientes criterios de comparación:

Tiempo de ejecución: Tiempo que le toma al software llevar a cabo determinadas acciones,

expresado en segundos. En el caso de LINGO 11.0, fue el tiempo necesario para resolver el

problema, después de haber modelado las variables, datos y fórmulas. En cuanto al software

propuesto, correspondió a la suma de los tiempos necesarios para: asignar los parámetros de los

insumos, realizar los cálculos de inventario, categorizar los datos, ejecutar la metodología del

Simulated Annealing y exportar planilla con los resultados. En ambos casos, el tiempo de ejecución

se obtuvo mediante los informes de resultados. El objetivo del criterio, era determinar el software

que fue más rápido en realizar los cálculos y generar el informe de resultados.

Costo total: Suma de los costos totales asociados a los insumos iterados, expresado en pesos

chilenos. Cabe señalar, que existe una diferencia entre el costo total definido como variable de

estudio y el costo total asociado a cada producto. El segundo, se obtuvo para cada uno de los

productos iterados, a partir de las fórmulas planteadas en el marco teórico según el modelo EOQ

especificado. El primero correspondió a la suma de todos esos costos totales, tanto para el software

propuesto como LINGO 11.0. En ambos casos, el costo total se obtuvo a través de los informes de

resultados. El objetivo del costo total, era determinar el software que entregaba mejores resultados

y, por ende, permitía minimizar los costos asociados a inventario.

4.2. Desarrollo del software propuesto

Se programó el software desarrollando los métodos propios del lenguaje, basados en los parámetros,

variables y conceptos definidos en la etapa anterior, considerando aspectos visuales que faciliten la

utilización del mismo. Para llevar a cabo la programación del software propuesto, se utilizó el lenguaje Java,

mediante el entorno NetBeans IDE 8.0.1.

Page 68: Evaluación de la utilización de la metaheurística

56

4.2.1. Realización del software propuesto utilizando la metaheurística Simulated Annealing aplicado

en problema de inventario

En primer lugar, se diseñó un esquema del funcionamiento general del software (ver figura N° 4.1), basado

en la interacción del usuario con éste para realizar los cálculos en el orden correspondiente. De esta

manera, fue posible programar cada uno de los procesos por separado, para luego combinarlos en el orden

que indica el esquema de la figura N° 4.1.

El software fue programado para leer los datos desde una planilla Excel, para lo cual, se definieron los

elementos de entrada, los cuales, corresponden a los parámetros de Inventario definidos en la sección

“4.1.1. Determinación de los parámetros involucrados en la administración de inventario” (todo a excepción

del criterio ABC).

Figura N° 4.1: Esquema de funcionamiento del software. Fuente: Elaboración propia.

Se creó una clase llamada Producto, compuesta por los parámetros anteriormente definidos (ver figura N°

4.2), la cual, permite almacenar los datos de cada uno de los productos importados desde Excel. Para ello,

se incorporó un procedimiento que permite al software crear un conjunto de productos, donde, basado en

la estructura de la figura N° 4.2, se ingresan uno a uno los productos con sus respectivos parámetros.

Además, conforme se vayan realizando los cálculos, el software actualiza la información de cada uno de

los productos del conjunto en cuanto a: costo total, cantidad requerida y la categoría correspondiente del

criterio ABC.

Importar Excel

Seleccionar modelo EOQ

Seleccionar criterio de categorización

Inventario

Simulated Annealing

Exportar Excel

Ordenar

Page 69: Evaluación de la utilización de la metaheurística

57

Figura N° 4.2: Entidad Producto. Fuente: Elaboración propia, mediante NetBeans IDE 8.0.1.

Los datos importados desde el Excel se presentan a través de una tabla (Tabla N° 4.6), donde, el software

toma todos los elementos del conjunto de productos y los agrega uno a uno.

Tabla N° 4.6: Tabla de datos del software.

Fuente: Elaboración propia.

Se incorporó un conjunto de opciones con el objetivo de diferenciar las operaciones a realizar por el

software, de acuerdo a los modelos EOQ.

Figura N° 4.3: Selección de modelo EOQ. Fuente: Elaboración propia.

Page 70: Evaluación de la utilización de la metaheurística

58

A continuación, se presenta un esquema de inventario, basado en el funcionamiento del software para

llevar a cabo los cálculos:

Figura N° 4.4: Esquema de inventario. Fuente: Elaboración propia.

Para Inventario, se configuró un procedimiento, el cual, al iniciarlo, se realiza la siguiente consulta: ¿cuál

opción está actualmente seleccionada?. Para dar respuesta a dicha pregunta, el software corrobora que

modelo EOQ se ha seleccionado (ver figura N° 4.3), y obtiene los datos necesarios de la clase Producto

para efectuar el cálculo del costo total y la cantidad requerida correspondiente (ver Tabla N° 4.7).

Tabla N° 4.7: Parámetros necesarios para cada modelo EOQ. Demanda Co Ch Cs S Precio Producción Consumo

Básico Si Si Si No No Si No No

Faltantes Si Si Si Si Si Si No No

Producción Si Si Si No No Si Si Si

Fuente: Elaboración propia.

Los modelos EOQ se programaron a partir de las fórmulas presentadas en el marco teórico, por lo tanto,

los cálculos de la cantidad a pedir (Q) y el costo total tienen la misma estructura que los ya presentados.

La principal diferencia radica en que se determinó que el software solo tome la parte entera del resultado

obtenido y le sume uno, ya que, cuando se realizan pedidos, siempre se piden productos enteros.

En el caso del modelo EOQ con producción, el software se programó para que verificará que productos

poseen una tasa de producción diaria. Si dicho valor es igual a 0, el método para calcular Q es igual al del

modelo EOQ básico; en caso contrario, significa que ese producto en particular sí posee una tasa de

produccion y consumo diario, por lo tanto, el software ejecuta el método correspondiente.

Inventario

Calcular Q y CT con faltantes

Mostrar datos

Calcular Q y CT con producción

Calcular Q y CT básico

¿Modelo EOQ?

Page 71: Evaluación de la utilización de la metaheurística

59

Se incorporó un procedimiento que permite al software categorizar los productos, de acuerdo a 3 criterios

distintos, basado en la categorización ABC presentado en el marco teórico.

Se diseñó un esquema de categorización (ver figura N° 4.5), basado en los distintos pasos que realiza el

software para ordenar los productos y etiquetarlos.

Figura N° 4.5: Aplicación de criterio ABC. Fuente: Elaboración propia.

Ordenar

Datos EOQ con faltantes

Mostrar datos

Datos EOQ con producción Datos EOQ básico

¿EOQ?

Ordenar por Costo Producto

¿Criterio?

Obtener porcentaje acumulado

Sumatoria de valores

Categoría B

Categoría A

Categoría C

¿%< 75?

¿%> 95?

Si

Si

No

No

Ordenar por Q Ordenar por Precio

Page 72: Evaluación de la utilización de la metaheurística

60

Para llevar a cabo la categorización de los productos, se programó un procedimiento, en el cual, el software

verifica cuál de los modelos EOQ ha sido seleccionado y requiere de un criterio para ordenar los datos. Por

ende, se creó un conjunto de opciones, en el cual, se dispusieron distintos criterios posibles (ver figura N°

4.6).

Figura N° 4.6: Selección de criterio para categorización. Fuente: Elaboración propia.

La metodología del Simulated Annealing solo era posible de aplicar al finalizar con los cálculos de inventario

y la categorización.

Pero ello, al igual que con inventario y la clase Producto, fue necesario disponer de una clase que permitiera

almacenar los datos necesarios, por lo tanto, se creó la clase Recocido (ver figura N° 4.7), la cual, posee

una estructura de datos de acuerdo a lo establecido en la sección “4.1.2. Determinación de los parámetros,

variables y conceptos involucrados en Simulated Annealing”.

Figura N° 4.7: Entidad Recocido. Fuente: Elaboración propia, mediante NetBeans IDE 8.0.1.

Se configuró un procedimiento que permite al software crear un conjunto de datos con las características

presentadas en la figura N° 4.7, donde, almacena los datos de cada elemento del conjunto de productos y

genera los parámetros temperatura máxima y alfa. Según se van realizando los cálculos, se agregan o

actualizan ciertos datos. Al igual que con alfa, se realizó un análisis para determinar el valor más apropiados

Page 73: Evaluación de la utilización de la metaheurística

61

para la temperatura máxima (sección “4.3.2. Análisis de los resultados entregados por el software

propuesto”).

Figura N° 4.8: Esquema de Simulated Annealing. Fuente: Elaboración propia.

Simulated Annealing

Asociar variables de inventario

Calcular CT con faltantes

Calcular CT con producción

Calcular CT básico

¿EOQ?

Generar parámetros del algoritmo

Calcular ΔE

Seleccionar solución nueva

Calcular Boltzmann y generar numero aleatorio

Reemplazar solución inicial

Solución óptima

¿T°> 100?

¿Conjunto iterado?

¿ΔE< 0?

¿Boltzmann> R?

Mostrar datos

No

No

No

No

Si

Si

Si

Si

Page 74: Evaluación de la utilización de la metaheurística

62

En cuanto a la aplicación de la metodología del Simulated Annealing, se llevó a cabo de acuerdo al modelo

EOQ seleccionado anteriormente, ya que, de esa manera se determinó la estructura de la función objetivo.

Se diseñó un esquema del funcionamiento del Simulated Annealing (figura N° 4.8), basado en las distintas

acciones que realiza el software para encontrar la solución óptima de cada uno de los elementos del

conjunto de productos.

Posteriormente, se programó un método que permite al software crear un conjunto de posibles soluciones,

el cual, está conformado por: solución inicial, “N” elementos anteriores y los “N” posteriores, donde, “N” es

un valor a determinar desde el 5 al 10, para ello, se realizará un análisis de los resultados obtenidos

(sección “4.3.2. Análisis de los resultados entregados por el software propuesto”).

Tabla N° 4.8: Conjunto de posibles soluciones. Elementos anteriores Solución inicial

Ninguno 1

1 2

1,2 3

1,2,3 4

1,2,3,4 5

Los 5 posteriores 6 o más

Fuente: Elaboración propia.

En la Tabla N° 4.8, se presentaron los elementos a generar en un conjunto, dependiendo de la solución

inicial obtenida en los cálculos de inventario. Por ejemplo: en el caso de que “N” sea igual a 5, si la solución

inicial era 20, el software crea un conjunto de datos desde el 15 al 25; 11 elementos en total. Además, en

este punto, se programó un método que permita revisar el valor ingresado para que, en el caso de datos

menores o iguales a 5, no se generan elementos negativos o cero. Por lo tanto, el menor valor del conjunto

será 1, y el mayor será el quinto valor posterior a la solución inicial. El software corrobora el valor de la

solución inicial y crea los elementos anteriores y posteriores del conjunto.

Para dar inicio a la metodología del Simulated Annealing en sí, y considerando el pseudo-código

presentado en el marco teórico, se estimó necesario programar dos secuencias, las cuales, permitieron al

software actualizar la temperatura hasta alcanzar la condición de detención y realizar la iteración de todos

los elementos del conjunto de soluciones en cada temperatura (ver figura N° 4.9).

Page 75: Evaluación de la utilización de la metaheurística

63

Figura N° 4.9: Planilla de la metodología del Simulated Annealing aplicada en el software.

Fuente: Elaboración propia.

La segunda secuencia (ver figura N° 4.9, Paso 2) corresponde a la iteración de todos los elementos del

conjunto de posibles soluciones. Como se ha mencionado anteriormente, la solución inicial y la temperatura

máxima se generaron al momento de asociar las variables de inventario con las del Simulated Annealing,

por lo tanto, solución inicial (Xo) corresponde al Q del producto y Temperatura (T) a la temperatura máxima.

Iniciar Simulated Annealing

Entrada:

Xo; /* Solución inicial */

T; /* Temperatura inicial */

Paso 1: Iniciar secuencia para temperatura T.

Paso 2: Iniciar secuencia para iterar conjunto de soluciones.

i. Xn; /* Solución nueva*/ ii. ΔE = f(x’) – f(x); /* Calcular variación de energía */ iii. Si ΔE ≤ 0

Xo = Xn /* Se acepta la solución nueva */ Ir al paso vi.

iv. En caso contrario, Calcular Boltzmann para Xn R; /* Generar número aleatorio entre 0 y 1 */

v. Si 𝑒−∆𝐸

𝑇 > R Xo = Xn /* Se acepta la solución nueva */

vi. Hasta Condición de equilibrio; /* Conjunto iterado */

No: Volver al paso i /* Pasar al siguiente elemento del conjunto */ Si: Finalizar Paso 2.

T = α(T); /* Actualización de la temperatura */

Hasta Criterio de detención satisfecho; /* Alcanzar Tmin*/

No: Volver al Paso 1.

Si: Finalizar Paso 1.

Salida: Mejor solución encontrada.

Finalizar Simulated Annealing.

Page 76: Evaluación de la utilización de la metaheurística

64

Se programó la secuencia de manera que el software pueda escoger una solución nueva (Xn) desde el

conjunto de soluciones de “n” elementos: {0,1,2, … , n}, y calcular la variación de energía, donde las

funciones objetivo de cada uno dependen del modelo EOQ seleccionado. Posteriormente, se consideró

necesario incorporar un método, dentro de la secuencia, que verifique si el resultado es menor a 0. Si es

así, que reemplace el Xo por Xn; en caso contrario, que proceda a comprobar la probabilidad de Boltzmann.

Finalmente, se programó la secuencia para que realice el cálculo de la probabilidad, genere un número al

azar entre 0 y 1 y realice la comparación entre ambas. Si Boltzmann es mayor, que reemplace Xo por Xn;

en caso contrario, mantenga el Xo.

Al finalizar con los pasos anteriormente mencionados (i al v), la secuencia fue diseñada para verificar si se

han iterado todos los elementos del conjunto (condición de equilibrio). Si no es así, vuelve al paso i y escoge

el siguiente; en caso contrario, da por finalizado el Paso 2 y se continúa con el Paso 1.

Se designó que temperatura inicial sea igual a la temperatura máxima establecida y se estableció una

condición de detención, donde, la temperatura mínima es igual a 100. Al finalizar con la secuencia anterior

(Paso 2), la primera secuencia (ver figura N° 4.9, Paso 1) se diseñó para que actualice la temperatura, de

acuerdo al alfa especificado y corrobore si se ha alcanzado la condición de detención. Si no es así, actualiza

la temperatura sin problemas; en caso contrario, finaliza la secuencia.

Con la finalización de ambas secuencias, el software obtiene la solución óptima para el producto en

cuestión, por lo tanto, finaliza la metodología del Simulated Annealing (SA), la cual, se aplica tantas veces

como elementos posea el conjunto de productos.

Para finalizar, se creó un procedimiento que permite al usuario exportar una planilla Excel con los datos

obtenidos mediante el software. La estructura definida para la planilla exportada fue la siguiente:

Tabla N° 4.9: Estructura planilla Excel exportada.

Fuente: Elaboración propia.

Donde, “Q” y “Costo Total” son los resultados obtenidos en inventario y “Q’ ” y “Costo Total’ ” son los valores

optimizados mediante SA. “Diferencia” corresponde a la resta entre el costo total optimizado por SA, menos

el costo total obtenido al principio con Inventario. “Variación %” corresponde a la variación entre la

diferencia obtenida y el costo total obtenido en inventario, expresada en porcentaje. Un resultado positivo

en ambas indica que la metaheurística optó por un Q que empeoro el costo total del producto; en cambio,

Page 77: Evaluación de la utilización de la metaheurística

65

un resultado negativo significa que la metodología del SA encontró un Q que permitió disminuir el costo

total del producto.

Figura N° 4.10: Aspecto visual del software. Fuente: Elaboración propia.

Como se pudo apreciar en la figura N° 4.10, se estimó conveniente incorporar botones que permitieran

llevar a cabo los procedimientos anteriormente señalados, los cuales, se distribuyeron en el software por

grupos: los botones relacionados con planillas Excel (importar y exportar), los de cálculos (inventario y SA)

y el botón para ordenar. Además, se incorporó un nuevo botón llamado “Generar informe SA”, el cual, se

explicó en la sección “4.3.2.. Análisis de los resultados entregados por el software propuesto”, ya que, solo

fue utilizado para comprender de mejor manera los resultados entregados por la metodología del SA.

4.3. Evaluación de resultados del software propuesto y LINGO 11.0

Se llevaron a cabo distintos análisis para evaluar el desempeño del software propuesto y se compararon

los resultados, con el objetivo de determinar el real aporte de la metodología desarrollada.

4.3.1. Recopilación de datos reales para ser utilizados en la evaluación

La empresa que proporcionó los datos para evaluar el desempeño del software propuesto fue Walbusch

S.A., ubicada en la ciudad de Puerto Montt, en la décima región de Chile, la cual, se dedica a la prestación

de servicios marítimos en el sur del país. Dentro de las actividades realizadas por la empresa, se

encuentran: la instalación de sistemas de fondeo (centros de cultivo para salmones y choritos), instalación

Page 78: Evaluación de la utilización de la metaheurística

66

de fondeo de obras civiles y todo tipo de artefactos navales, fondeo de muelles flotantes y todo tipo de

plataformas, entre otras. Además, elaboran productos como anclas, boyas, platos de distribución y

pulgueras, las cuales, las utilizan para la prestación de servicios o las venden directamente a sus clientes.

El presente proyecto de título se enfocó en la recopilación de información de los insumos necesarios para

la fabricación de estos productos.

Para comenzar, se realizó una reunión con el encargado de Control Interno de la empresa, Don Orlando

Morales, quien tiene conocimiento de todos los procesos realizados dentro de la organización y ayudó en

la obtención de los datos. Cabe señalar, que no se presentó información alguna de los insumos utilizados,

ya que, los datos han sido resguardados.

La empresa cuenta con un software propio, en el cual, almacenan toda la información relacionada con

inventario, donde, la clasifican por faena realizada. Por lo tanto, para obtener los datos necesarios, se

exportaron todos los productos egresados desde la bodega el año 2013, los cuales, estaban destinados

para faenas de producción de los productos mencionados anteriormente. Los datos obtenidos fueron:

Descripción de los productos, demanda y precios; los cuales, corresponden a 106 insumos distintos

utilizados entre los meses de Enero a Diciembre del 2013. La empresa, al momento de realizar sus pedidos,

asume que la cantidad disponible es 0, para mantener un inventario de seguridad.

En cuanto a los pedidos de los productos, el encargado de llevarlos a cabo se comunica directamente con

las empresas proveedoras, quienes se encargan de transportan los productos hasta Walbusch S.A. Para

establecer el costo de pedido, se creó una matriz de datos en conjunto con la empresa, donde, se fueron

incorporando uno a uno los costos que lo conforman, de acuerdo a lo expuesto en el marco teórico. En

este caso, dependiendo del producto, se consideraron los costos por: suministros (luz e internet/telefonía),

soporte administrativo (mano de obra), recepción descarga (mano de obra y/o maquinaria), transporte y/o

flete. Este último, corresponde al costo por transporte que cobra el proveedor, el cual, solo se aplica para

muy pocos productos. Los 3 primeros, se obtuvieron a partir del gasto/sueldo mensual promedio y el

porcentaje de tiempo involucrado en cada acción, donde, el porcentaje se obtuvo en base al tiempo

involucrado en llevar a cabo la acción dividido por las horas laborables del mes. En el caso de recepción

descarga, algunos productos requieren el uso de maquinaria para llevarlas a la bodega y otros los pueden

transportar el encargado de bodega, otros productos son acomodados por los propios proveedores, por lo

tanto, no poseen un costo por recepción. En cuanto a transporte, en ciertas ocasiones y para ciertos

productos, el encargado de bodega debe dirigirse a la empresa proveedora, para lo cual, utiliza vehículos

destinados precisamente para ello. Para establecer este costo se tomaron en cuenta la cantidad de viajes

que se realizan con tal de definir el costo de combustible y el costo administrativo asociado.

El costo de almacenamiento se obtuvo de acuerdo a las tasas de almacenamiento presentadas en el marco

teórico (Tabla N° 2.1). En este caso, los materiales almacenados no están asegurados y no se les aplica

una tasa de obsolescencia. Esto se debe a que, principalmente, se utilizan insumos relacionados con el

Page 79: Evaluación de la utilización de la metaheurística

67

acero, por lo tanto, en caso de incendio las pérdidas serían mínimas. Además, la rotación de inventario es

rápida, por lo mismo, el tiempo que permanecen los insumos en bodega es mínimo.

Por lo expuesto en el párrafo anterior, la tasa de almacenamiento se confeccionó a partir de: la tasa de

almacenamiento físico, la tasa de retorno del capital y la tasa de transporte, manipulación y distribución del

material. Para la primera, se obtuvieron las dimensiones del galpón utilizado por Walbusch y el espacio

destinado como bodega, de esta manera, con el costo de arriendo del galpón, sacar un costo proporcional

de los metros cuadrados para determinar el costo por metro cuadrado de almacenamiento. Dicha tasa se

repartió en cada uno de los productos, de acuerdo a la importancia de cada uno, para lo cual, se multiplicó

el precio por la demanda de cada producto y se obtuvo una sumatoria, a partir de la cual, se calculó el peso

específico de cada producto. Cabe destacar que algunos productos no presentaron un costo de

almacenamiento físico apreciable (no se disponían en la bodega como los demás productos), por lo tanto,

se les asigno un 1% y no se consideraron en la sumatoria. Para la tasa de retorno se realizó el mismo

procedimiento, con la diferencia de que aquí si se consideraron todos los productos para confeccionar la

sumatoria. En la tercera tasa mencionada se realizó el mismo procedimiento, considerando solo los

productos que requieren de maquinaria para su manipulación. Finalmente, se agregó un porcentaje por

costo administrativo para todos los productos y mano de obra y combustible para la maquinaria en los

productos considerados en la tasa de transporte, manipulación y distribución del material.

Finalmente se generó una planilla, formato “.csv”, con todos los productos y los datos anteriormente

explicados. De acuerdo a estos datos obtenidos de Walbusch S.A., el modelo a aplicar, para resolver el

problema de inventario, era el EOQ básico.

Para llevar a cabo la comparación de ambos software, se utilizaron varias planillas de datos con distintas

situaciones relacionadas con la demanda, las cuales son: demanda anual, demanda semestral, demanda

trimestral y demanda mensual; donde, se tomaron los datos de demanda de acuerdo a los períodos

mencionados y, para el caso del costo de almacenamiento de cada producto, se obtuvieron de acuerdo a

cada situación, ya que, los valores obtenidos varían de mes en mes, por ende, esto también afecta a nivel

trimestral y semestral.

4.3.2. Análisis de los resultados entregados por el software propuesto

En primer lugar, con el objetivo de demostrar el aporte de la categorización ABC, se realizó una simulación

con los datos recopilados, los cuales, fueron modificados hasta cierto punto para cumplir con la petición de

la empresa Walbusch de resguardar información importante.

Page 80: Evaluación de la utilización de la metaheurística

68

Figura N° 4.11: Insumos antes de la categorización ABC. Fuente: Elaboración propia.

En la figura N° 4.11 fue posible apreciar los datos de 22 de los 40 insumos de la planilla Excel modificada,

previos a ser importados al software propuesto, los cuales, se encontraban ordenados “alfabéticamente”.

Para realizar la categorización de los insumos se seleccionó el criterio “Costo Producto”. Cabe destacar

que en todos los escenarios analizados a lo largo del presente proyecto de título se utilizó el criterio “Costo

Producto”, ya que, era el que más reflejaba la importancia de cada insumo. En la figura N° 4.12, se

presentaron los resultados de la categorización ABC, en la cual, los insumos categoría A corresponden al

75% del total, los insumos categoría B al 20% del total y los de categoría C al 5% restante, de acuerdo al

criterio “Costo Producto”.

Page 81: Evaluación de la utilización de la metaheurística

69

Figura N° 4.12: Insumos después de la categorización ABC. Fuente: Elaboración propia.

Como se pudo apreciar en la figura N° 4.12, los insumos se ordenaron de acuerdo a la importancia de cada

uno en la empresa, donde, los de tipo A son los más importantes debido al alto porcentaje equivalente

según el total obtenido con el criterio seleccionado.

La categorización ABC permitió visualizar los insumos más relevantes y, en base a estos resultados,

establecer diferentes políticas y controles para cada grupo, los cuales, de acuerdo a los distintos autores

presentados en el marco teórico, van desde la destinación de recursos para efectuar los pedidos (dinero,

tiempo, personal, vehículos), el nivel de control realizado sobre cada grupo de insumos (en cuanto al

número de controles por período y la rigurosidad de estos), la previsión de los insumos (el nivel de atención

sobre cada insumo para evitar quiebre de stock), hasta la organización en la bodega (por la rotación de

inventario). Continuando con el ejemplo, se deberían establecer políticas de control más estrictas para los

insumos 27 y 38, así como destinar más recursos y un mayor nivel de atención para ambos. En cambio,

para los insumos de tipo C (en especial para los más bajos) las políticas son más flexibles.

Continuando con el análisis del software propuesto, se entiende como resultados obtenidos a los

determinados como variables de investigación, es decir, tiempo de ejecución y costo total. En el primer

caso, se determinó que el tiempo se divida en distintas partes, las cuales son: tiempo de asignación de

parámetros, de cálculo de inventario, de categorización de datos, tiempo de aplicación de metodología

Simulated Annealing y de exportar planilla con los resultados. El primero corresponde al tiempo que le toma

al software asignar los parámetros desde que se seleccionó la planilla a importar hasta que se presentan

los datos en pantalla. Los otros 4 tiempos, se asignaron a los botones: inventario, ordenar, recocido y

Page 82: Evaluación de la utilización de la metaheurística

70

exportar, respectivamente. De esta manera, el software calcula el tiempo que le toma a cada procedimiento

desde que se presiona el botón hasta que aparecen los resultados en pantalla. Para el costo total, el

software suma los costos totales de todos los productos y agrega el resultado al final de la planilla

exportada. Los resultados se obtuvieron a través de la simulación de los datos obtenidos en la sección

4.3.1., correspondientes a un problema real de inventario de 106 insumos con demanda determinística.

Para optimizar el software y obtener los mejores resultados, se realizaron pruebas con distintos valores de:

tamaño del conjunto (N), Alfa y temperatura (T°); por ende, se analizaron los resultados obtenidos mediante

la aplicación de la metodología del SA en cada una de las situaciones, derivadas a partir de las distintas

combinaciones posibles de estos tres datos. Cabe señalar, que se trabajó con los datos anuales de los

productos.

Tabla N° 4.10: Posibles valores para N, Alfa y T°. Dato Posibles valores

N 5 al 10

Alfa 0,5; 0,65; 0,8; 0,9 y 0,95

T° 1.000; 5.000; 10.000; 50.000 y 100.000

Fuente: Elaboración propia.

Como Alfa y T° tienen 5 valores distintas cada uno, se generaron 25 escenarios posibles para cada uno de

los valores de N, donde, por cada escenario se realizaron 5 pruebas para obtener el tiempo y el costo total.

En primer lugar, se analizaron los resultados obtenidos para N = 10, con el objetivo de determinar cuáles

eran los parámetros más adecuados de Alfa y T°. Esto se debe a que 10 es el máximo valor designado

para N, por lo tanto, el software crea conjuntos con más elementos que los demás casos, lo cual, permite

un análisis más amplio.

Se realizó un análisis comparativo de los resultados, con el objetivo de determinar si existe una diferencia

significativa entre los distintos valores de temperatura y los de alfa, para lo cual, se utilizaron los datos

presentados en el Anexo B. Los análisis comparativos se aplicaron en el software GraphPad Prism 6,

donde, para la temperatura se compararon los resultados obtenidos con cada uno de los valores (ver Tabla

N° 4.10) por cada valor de alfa, generando 5 columnas de 25 datos cada una (considerando las 5

iteraciones realizadas en cada situación). En cuanto al alfa, se compararon los resultados de cada uno de

los valores por cada valor de temperatura, generando el mismo número de columnas y datos.

Tomando en cuenta lo planteado en el marco teórico, antes de realizar el análisis comparativo se comprobó

si los datos estaban distribuidos normalmente para saber si era posible aplicar el ANOVA de un factor (para

ver el informe completo de resultados de GraphPad para temperatura y alfa, dirigirse al Anexo D y Anexo

H, respectivamente).

Page 83: Evaluación de la utilización de la metaheurística

71

Tabla N° 4.11: Pruebas de Distribución Normal para los valores de temperatura. Temperatura D’Agostino & Pearson Shapiro-Wilk KS

1.000 0,9988 0,3915 > 0,1000

5.000 0,4121 0,0312 > 0,1000

10.000 0,1771 0,0307 > 0,1000

50.000 0,8727 0,0082 0,0048

100.000 0,2195 < 0,0001 0,0002

Fuente: Elaboración propia.

Tabla N° 4.12: Pruebas de Distribución Normal para los valores de alfa. Alfa D’Agostino & Pearson Shapiro-Wilk KS

0,5 0,8815 0,2054 > 0,1000

0,65 0,9282 0,4020 > 0,1000

0,8 0,9734 0,9754 > 0,1000

0,9 0,9977 0,6632 > 0,1000

0,95 0,7373 0,5968 > 0,1000

Fuente: Elaboración propia.

Como se pudo apreciar en la Tabla N° 4.11 y Tabla N° 4.12, todos los datos obtuvieron un valor de P mayor

a 0,05 en el test de D’Agostino & Pearson, pero no ocurrió lo mismo en los demás test. Teniendo en cuenta

el marco teórico, sección “2.5.1. Pruebas de Distribución Normal”, al obtener resultados sobre 0,05 en la

prueba de D’Agostino & Pearson era suficiente para demostrar que los datos provenían de una distribución

normal debido a la recomendación de la mencionada prueba por sobre las otras dos. Por ende, en ambos

casos se aplicó el análisis ANOVA de un factor, donde, se debe obtener un valor de P menor a 0,05 para

que exista una diferencia significativa (informe completo de resultados de GraphPad para temperatura y

alfa en Anexo E y Anexo I, respectivamente).

Page 84: Evaluación de la utilización de la metaheurística

72

Tabla N° 4.13: ANOVA de un factor para temperatura y alfa. Tabla ANOVA Desviación

estándar (SS)

Grados de

libertad (DF)

Media

cuadrática (MS)

Valor

de F

Valor

de P

Temperatura Entre

columnas

5,893e7 4 1,473e7 1,392 0,2408

Dentro de las

columnas

1,27e9 120 1,058e7

Alfa Entre

columnas

7,675e8 4 1,919e8 41,01 < 0,0001

Dentro de las

columnas

5,615e8 120 4,679e6

Fuente: Elaboración propia.

En la Tabla N° 4.13 (extracto de los Anexos E e I), se presentaron los valores de F y de P obtenidos para

ambos casos. Como se pudo apreciar, el valor de F para la temperatura fue muy bajo (1,392), lo cual, arrojó

un valor de P alto, superior a 0,05, rechazando la hipótesis de que sí existían diferencias significativas para

los valores de la temperatura (para ver las comparaciones múltiples de los datos, dirigirse al Anexo F). Esto

se debió a que la diferencia entre los datos al interior de cada columna (1,058e7) fue muy similar a la

diferencia obtenida entre las columnas (1,473e7) y, como el valor de F se obtiene al dividir el segundo valor

mencionado por el primero, se obtuvo un valor cercano a uno. El hecho de que la diferencia entre los datos

de cada columna fuese tan alta, se debió la dispersión existente entre los resultados obtenidos para un

mismo valor de temperatura.

Para el caso de alfa, la diferencia entre los datos al interior de cada columna (4,679e6) no fue tan alta en

comparación con la diferencia obtenida entre las columnas (1,919e8), por ende, el valor de F fue alto

(41,01). Esto arrojó un valor de P muy inferior a 0,05, aceptando la hipótesis de que sí existían diferencias

significativas para los valores de alfa. Al observar el informe de resultados de GraphPad del Anexo J, se

pudo apreciar que las diferencias significativas se presentan en el valor 0,5, es decir, que con un alfa=0,5

se obtienen los mejores resultados, ya que, al generar la comparación con los demás valores, el promedio

de las diferencias siempre fue negativo (0,5 vs 0,65: -5.660; 0,5 vs 0,8: -5.341; 0,5 vs 0,9: -6.359 y 0,5 vs

0,95: -6.852). A partir de estos análisis, se pudo concluir que el valor más apropiado de alfa era 0,5 y, como

no había diferencias significativas, el valor que tome la temperatura es indiferente. Pero, como era

necesario definir un valor en particular, se observaron los resultados promedios para cada valor con un

alfa=0,5.

A continuación, se presenta un cuadro resumen con los mejores resultados para la temperatura, obtenido

desde las tablas de iteraciones del Anexo A (N=5) y Anexo B (N=10), donde, se seleccionaron los

Page 85: Evaluación de la utilización de la metaheurística

73

resultados obtenidos con alfa=0,5 para N=10 y N=5, éste último, se consideró debido a que es el valor

mínimo para N, por lo tanto, al disponer de los resultados con ambos extremos, fue posible estimar que los

valores intermedios tenían un comportamiento similar.

Tabla N° 4.14: Comparación de resultados obtenidos para N = 10 y N = 5. N 10 5

T° 50.000 100.000 50.000 100.000

Alfa = 0,5 T CT T CT T CT T CT

Promedio 216 278.076.446 204 278.073.565 176 278.080.444 181 278.080.755

Fuente: Elaboración propia.

Como se puede observar en la Tabla N° 4.14, los mejores resultados se obtuvieron en las temperaturas

más elevadas (50.000 y 100.000), donde, T corresponde al tiempo que le toma al software llevar a cabo

los cálculos expresado en milisegundos y CT es el costo total obtenido expresado en pesos. Los resultados

de N = 10 son menores que los N = 5 en $5.594, un -0,0020 por ciento tomando como base el valor de N

= 5.

Para poder comprender dicha situación fue necesario analizar la estructura de la distribución de Boltzmann

( 𝑷(ΔE , T) = exp(−ΔE

t) ) y observar que ocurría conforme se cumple el programa de enfriamiento del

Simulated Annealing (SA).

Para ello, se creó una clase denominada “InformeRS”, la cual, almacena todas las iteraciones realizadas

para cada uno de los productos.

Figura N° 4.13: Clase InformeRS. Fuente: Elaboración propia.

Page 86: Evaluación de la utilización de la metaheurística

74

Donde; “x” es la solución inicial, “fx” es la función objetivo de “x”, “y” es las solución nueva, “fy” es la función

objetivo de “y”, “var” es la variación de energía, “temp” es la temperatura actual, “ite” es el número de

iteración, “boltz” es la distribución de Boltzmann y “rdm” es el número generado al azar. Todos estos

parámetros y variables fueron definidos en la sección “4.1.2. Determinación de los parámetros, variables y

conceptos involucrados con la metaheurística Simulated Annealing”.

El software genera un informe de SA a través del botón “Generar informe SA” (ver figura 4.10.), mediante

el cual, exporta una planilla de datos con todos los datos de todas las iteraciones realizadas por SA. En la

Tabla N° 4.15, se presentó un extracto del informado generado a través de la clase InformeRS, el cual, se

divide en tres secciones, correspondientes a tres insumos distintos (Tabla más completa en el Anexo P).

Tabla N° 4.15: Extracto del informe generado por el software para las iteraciones del Simulated Annealing.

x f(x) x' f(x') Variación T° Iteración Boltzmann Random

1 25.023.196 2 25.336.991 313.795 100.000 2 0,043371 0,604963

26 27.549.760 16 27.696.383 146.623 100.000 1 0,230793 0,149166

23 27.893.573 24 27.484.030 -409.543 100.000 9 600.651.616.247.209 0,275922

17 27.696.383 19 27.762.113 65.730 50.000 25 0,268581 0,626054

24 27.484.030 25 27.484.030 0 50.000 31 1,0 0,703874

25 27.484.030 26 27.549.760 65.730 25.000 53 0,072136 0,228101

25 27.484.030 26 27.549.760 65.730 12.500 74 0,005203 0,748326

25 27.484.030 18 27.762.113 278.083 6.250 87 4,75E-05 0,163964

521 16.984.832 511 16.988.212 3.380 100.000 1 0,966764 0,174318

531 16.986.070 511 16.988.212 2.142 50.000 22 0,958064 0,415931

511 16.988.212 512 16.988.460 248 25.000 44 0,990129 0,966378

531 16.986.070 511 16.988.212 2.142 12.500 64 0,842518 0,762471

531 16.986.070 511 16.988.212 2.142 6.250 85 0,709836 0,426473

531 16.986.070 511 16.988.212 2.142 3.125 106 0,503868 0,085676

531 16.986.070 511 16.988.212 2.142 1.562,5 127 0,253883 0,899663

531 16.986.070 511 16.988.212 2.142 781,25 148 0,064456 0,924475

Fuente: Elaboración propia.

Boltzmann se obtuvo a partir de la división de la variación de energía por la temperatura actual, por lo tanto,

a temperaturas elevadas era muy probable que la solución empeore. Observando la Tabla N° 4.15, una

variación de 313.795 no se ve afectada por la temperatura máxima establecida (100.000), ya que, el

Boltzmann resultante fue muy bajo (0,043371). Variaciones similares a los 146.623, arrojaron Boltzmann

Page 87: Evaluación de la utilización de la metaheurística

75

más altos (0,230793) para temperaturas altas (100.000), por ende, como sucede en el segundo insumo, el

reemplazar la solución actual dependió del número aleatorio generado (0,149166), ya que, en el caso de

la variación igual 2.142 del tercer insumo, se obtuvo un Boltzmann mayor (0,253883), en comparación con

el anterior, pero como el número aleatorio fue muy alto (0,899663), no se pudo llevar a cabo a sustitución.

Continuando con el tercer insumo presentado en la Tabla N° 4.15, como las diferencias fueron muy bajas

(3.380, 2.142 y 248), a temperaturas altas (100.000, 50.000 y 25.000), se obtuvieron valores de Boltzmann

muy altos (0,966764; 0,958064 y 0,990189; respectivamente), lo cual, permitió que la solución se

reemplace casi siempre. A medida que la temperatura fue más baja (3.125), los valores de Boltzmann

arrojados eran más bajos (0,503868), por lo tanto, existían menos posibilidades de reemplazar la solución,

en comparación con temperaturas elevadas. A una temperatura de 1.562,5; las sustituciones dependieron,

en gran medida, del número aleatorio, ya que, los valores de Boltzmann rondaban los 0,253883; por lo

tanto, era más difícil reemplazar la solución actual. Para temperaturas menores a 1.000, era casi imposible

sustituir la solución actual, ya que, Boltzmann arrojaba valores cercanos a 0,064456; por ende, el número

aleatorio debía ser muy bajo para poder llevar a cabo el reemplazo. Retomando el segundo insumo de la

Tabla N° 4.15, a medida que la temperatura iba disminuyendo, fue más difícil reemplazar la solución, ya

que, el valor de Boltzmann obtenido era muy bajo. Para una temperatura igual a 12.500, una variación de

65.730 arroja un Boltzmann de 0,005203; por lo que, era casi imposible que se reemplace la solución actual.

La sustitución de la solución actual solo ocurrió cuando se dispuso de una variación favorable (-409.543) o

igual a cero. El primer caso fue porque así lo establece la metaheurística y, si fuese necesario calcular

Boltzmann, se obtendrían valores muy elevados (600.651.616.247.209). Al no haber variación (igual a

cero), realmente no importa si se reemplaza la solución actual o no, ya que, la función objetivo permanece

igual, no mejora ni empeora. Además, si se calcula Boltzmann, se obtendría como resultado el valor 1,0;

por ende, el software generado llevaría a cabo la sustitución de la solución actual.

Gracias a la información obtenida de la clase InformeRS, mediante la planilla de datos de las iteraciones

generadas, fue posible apreciar que a variaciones muy grandes, con temperaturas elevadas, es muy

improbable que la solución empeore y, si llegase a ocurrir aquello, al ir disminuyendo la temperatura solo

se modifica la solución al existir una variación favorable o cero. Para diferencias más bajas, con altas

temperaturas casi siempre se modifica la solución sea favorable o desfavorable, pero, al ir disminuyendo

la temperatura, es menos probable que la solución empeore, por lo tanto, casi siempre se termina

obteniendo una mejor solución que la inicial.

Las variaciones obtenidas fueron muy distintas para cada uno de los insumos, por lo tanto, el designar una

temperatura máxima elevada permitió al software “jugar” con cada uno de los elementos de los conjuntos

de posibles soluciones de cada producto y ajustar el resultado conforme disminuía la temperatura.

Page 88: Evaluación de la utilización de la metaheurística

76

En el caso del alfa (0,5), produjo que el Simulated Annealing se enfríe con mayor velocidad que en otros

casos, lo cual, provocó que la temperatura disminuya drásticamente para evitar que el software realice una

gran cantidad de iteraciones.

Para N=10 (tabla completa de iteraciones en Anexo B), cuando se utilizaron valores más altos para alfa, el

enfriamiento fue más lento, por lo tanto, se realizaron más iteraciones, lo cual, generó peores resultados

debido a que el software reemplazó demasiadas veces las soluciones. Por ejemplo: con alfa = 0,5 un

conjunto de 21 elementos se itera 10 veces hasta alcanzar la temperatura mínima (100.000; 50.000,

25.000, 12.500; y así sucesivamente). Pero con un alfa = 0,95, para un conjunto de la misma cantidad de

elementos, el software itera 135 veces (100.000; 95.000; 90.250; 85.737,5; y así sucesivamente). En el

último caso, es posible observar que se realizaron demasiadas iteraciones a altas temperaturas, por lo

tanto, la probabilidad de empeorar las soluciones fue mayor y eso provocó que el software quedara

atrapado en un óptimo local.

Analizando los datos obtenidos para N=10 y N=5, se pudo apreciar que de acuerdo aumenta el tamaño del

conjunto, se obtienen mejores soluciones, por lo tanto, con los valores 6,7,8 y 9 de N solo fue necesario

realizar el análisis para uno de ellos y de manera menos extensa. El valor seleccionado fue el N=8 (tabla

de iteraciones en el Anexo K).

Tabla N° 4.16: Comparación de resultados obtenidos para N = 10 y N = 8. N 10 8

T° 50.000 100.000 50.000 100.000

Alfa = 0,5 T CT T CT T CT T CT

Promedio 216 278.076.446 204 278.073.565 172 278.075.156 216 278.076.748

Fuente: Elaboración propia.

Como se pudo apreciar en la Tabla N° 4.16, los resultados obtenidos con N = 8 aumentaron los costos en

$3.183, un 0,0011 por ciento tomando como base los resultados de N = 10, pero disminuyeron en $4.007,

un -0,0014 por ciento con respecto a los obtenidos con N = 5.

Para completar los análisis anteriormente realizados, se realizó un análisis comparativo en el software

GraphPad Prisma, con el objetivo de determinar si existe una diferencia significativa entre los valores de

N: 5, 8 y10. Por ende, se realizó el análisis de Distribución Normal (informe completo de resultados en el

Anexo M).

Page 89: Evaluación de la utilización de la metaheurística

77

Tabla N° 4.17: Pruebas de Distribución Normal para los valores de N. Alfa D’Agostino & Pearson Shapiro-Wilk KS

5 0,2045 0,1960 > 0,1000

8 0,9211 0,9917 > 0,1000

10 0,6911 0,1538 > 0,1000

Fuente: Elaboración propia.

Como se pudo observar en la Tabla N° 4.17, se obtuvieron valores de P mayores a 0,05, entonces, fue

posible afirmar que sí estaban distribuidos normalmente. Por ende, se aplicó el ANOVA de un factor

(informe completo de resultados en Anexo N), y el valor de P obtenido en la comparación (< 0,0001) fue

menor a 0,05, por lo tanto, sí existen diferencias significativas entre los valores de N. Observando las

comparaciones múltiples del Anexo O, las principales diferencias se obtuvieron en la comparaciones 5 vs

10 (5.597) y 5 vs 8 (4.659), con lo cual, se desechó la opción N=5, ya que, en ambos casos entregó un

promedio de diferencias alto y el análisis determinó que sí eran diferencias significativas. Para escoger

entre ambos valores, se observó la comparación 8 vs 10, donde, el análisis arrojó que no habían diferencias

significativas, ya que, se obtuvo un promedio de diferencias de 937,6, un valor no muy alto en comparación

con los otros dos (5.597 y 4.659), aun así, es un resultado a favor de N=10.

Por lo tanto, se concluyó que la apreciación anteriormente expresada era correcta, que los resultados

mejoran mientras el conjunto posea más elementos. Esto se debió a que el software tuvo más opciones

para evaluar, por lo que, si bien no es posible aplicarlo para todos los casos, era más probable mejorar la

solución, en comparación con un conjunto de menos elementos.

Por todo lo anteriormente expuesto, se escogieron los siguientes valores:

N = 10; tamaño del conjunto = 21 elementos.

Temperatura = 100.000.

Alfa = 0,5.

Cabe recordar, que estos análisis se realizaron considerando la demanda anual de los productos, por lo

cual, se llevaron a cabo pruebas para cada una de las situaciones de la demanda, con el objetivo de

observar el comportamiento del tiempo (T: expresado en segundos) y del costo total (CT: expresado en

pesos), donde, se ejecutaron 5 iteraciones en cada caso. A continuación, se presenta una tabla resumen

con los promedios de éstas iteraciones para cada tipo de demanda (tablas completas de iteraciones en el

Anexo Q).

Page 90: Evaluación de la utilización de la metaheurística

78

Tabla N° 4.18: Resultados entregados por el software para las distintas situaciones de demanda. ANUAL SEMESTRAL TRIMESTRAL MENSUAL

T CT T CT T CT T CT

0,2034 278.073.565 0,3624 282.973.073 0,559 288.522.670 1,276 308.468.903

Fuente: Elaboración propia.

Como se pudo apreciar en la Tabla N° 4.18, al analizar la demanda mes a mes se obtuvo un mayor tiempo

de ejecución para la obtención de los resultados (1,276 segundos), lo cual, se debió a que fue necesario

analizar 12 planillas de datos, correspondientes a cada mes, en comparación al anual (1 planilla), semestral

(2 planillas) y trimestral (4 planillas), lo cual, aumentó el número de iteraciones a realizar.

En cuanto al costo total, al trabajar con una demanda anual, el modelo EOQ fue capaz de reducir al mínimo

(1) la cantidad de unidades a pedir para productos de costo elevado, lo cual, la metodología del SA fue

incapaz de modificar debido a las grandes diferencias entre una unidad y otra. Al desglosar la demanda en

semestres, ocurre lo misma situación, pero para cada uno de los semestres, por lo tanto, se pedirá el

mínimo (1 unidad) en el primer semestre y lo mismo para el segundo, dando un total anual de 2 unidades.

Continuando con la misma idea, el modelo EOQ arrojó el mínimo para cada uno de los trimestres, dando

un total anual de 4 unidades, y para los meses, un total de 12 unidades. Además, hay que considerar que

la cantidad de pedidos fue mayor conforme la demanda se fue desglosando, lo cual, aumentó los costos

incurridos por llevar a cabo pedidos.

Lo anterior, en cierta manera, se apega más a la realidad, ya que, es muy improbable que se pueda realizar

solo un pedido a lo largo de un año y mantener unidades en inventario durante todo ese tiempo. Esto se

debe no solo por la necesidad de espacio físico de almacenamiento enorme, sino que, también, entran en

juego conceptos de obsolescencia y seguros, los cuales, si bien no se consideran en el caso de ésta

empresa, en otras empresas si se consideran al momento de estimar los costos asociados a éste tema.

4.3.3. Análisis de los resultados entregados por LINGO 11.0

Al igual que en la sección 4.3.2., los datos utilizados para la simulación correspondían a un problema real

de 106 insumos con demanda determinística.

En esta sección, se desarrolló el modelo EOQ básico en el software LINGO, para lo cual, fue necesario

crear las variables de trabajo e ingresar los datos desde la planilla Excel generada en la sección “4.1.5.

Recopilación de datos reales”. El modelo desarrollado en LINGO se presentó en Anexo R.

Page 91: Evaluación de la utilización de la metaheurística

79

En primer lugar, se definieron los parámetros y variables en la sección “SETS”, donde, se definió un

conjunto de productos con sus respectivos parámetros y las variables a calcular (Q: Cantidad a pedir y CT:

Costo Total).

En la sección “DATA”, se asignaron los valores a los parámetros anteriormente definidos desde la planilla

Excel y, también, que las variables calculadas, Q y CT, se guarden en dicha planilla. Después, se aplicó el

modelo EOQ básico para todo el conjunto de productos.

Finalmente, se resolvió el modelo y el software arrojó dos reportes: uno con el tiempo de ejecución del

software y otra con los resultados obtenidos; también, copió los valores de Q y CT en el Excel.

El reporte siempre arrojó un tiempo de ejecución igual a cero (reporte de resultados en Anexo R), esto se

debe a que LINGO mide el tiempo en horas, minutos y segundos, lo cual, y teniendo en cuenta los tiempos

arrojados por el software de la sección anterior, indica que los resultados se obtuevieron en milisegundos.

Por ende, fue imposible medir el tiempo de ejecución de LINGO.

Al igual que con el software programado, en LINGO se realizaron 5 iteraciones, en las cuales, como se

puede apreciar en el Anexo S, el costo total siempre fue el mismo.

Tabla N° 4.19: Resultados entregados por LINGO para las distintas situaciones de demanda. ANUAL SEMESTRAL TRIMESTRAL MENSUAL

T CT T CT T CT T CT

278.964.813,2 284.182.936 289.868.373,5 310.646.448,5

Fuente: Elaboración propia.

La explicación del aumento del costo total sigue la misma lógica que lo ya planteado en la sección anterior.

4.3.4. Comparación del desempeño de ambos software

En la Tabla N° 4.20, se presentaron los promedios de los resultados obtenidos por ambos software (tablas

completas en Anexo Q y Anexo S), donde, se pudo apreciar diferencias a favor del software programado.

Para llevar a cabo la comparación de desempeño de ambos software, se realizaron análisis comparativos

en GraphPad Prisma 6, con el objetivo de determinar si habían diferencias significativas entre uno y otro,

según el costo total obtenido.

Page 92: Evaluación de la utilización de la metaheurística

80

Tabla N° 4.20: Resultados obtenidos en ambos software. SOFTWARE LINGO

DEMANDA T CT T CT

ANUAL 0,2034 278.073.565 278.964.813,2

SEMESTRAL 0,3624 282.973.073 284.182.936

TRIMESTRAL 0,559 288.522.670 289.868.373,5

MENSUAL 1,276 308.468.903 310.646.448,5

Fuente: Elaboración propia.

En primer lugar, se aplicaron las pruebas para comprobar la distribución de los datos (informe completo de

resultados en Anexo U).

Tabla N° 4.21: Pruebas de Distribución Normal para ambos software según costo total. D’Agostino & Pearson Shapiro-Wilk KS

Software 0,1464 0,0004 0,0008

LINGO 0,1468 0,0004 0,0002

Fuente: Elaboración propia.

Como se pudo observar en la Tabla N° 4.21, solo el test D’Agostino & Pearson arrojó valores de P por

sobre 0,05, los otros dos, arrojaron valores muy por debajo. Considerando lo señalado en el marco teórico,

sección “2.5.1. Pruebas de Distribución Normal”, fue suficiente con el test D’Agostino & Pearson para

considerar que los datos sí estaban distribuidos normalmente.

Por lo tanto, se aplicó la prueba de t pareado para realizar un análisis pareado de los resultados obtenidos

(informe completo de resultados en Anexo V). Se obtuvo un valor de P (< 0,0001) menor a 0,05, lo cual,

significa que sí existen diferencias significativas entre ambos software. Además, el análisis arrojó un

coeficiente de correlación de 99% para demostrar la efectividad del pareo de datos.

La Tabla N° 4.22 presenta los resultados del test aplicado, donde, fue posible apreciar qué tan grande era

la diferencia entre ambos software.

Tabla N° 4.22: Prueba de t pareado para ambos software según costo total. Diferencias Prueba de t pareado

Promedio 1.456.090

Desviación estándar 588.968

Error estándar 131.697

Fuente: Elaboración propia.

Page 93: Evaluación de la utilización de la metaheurística

81

El promedio de las diferencias obtenido fue igual a $1.456.090, el cual, representa la disminución en el

costo total que entrega el software propuesto, en comparación con LINGO 11.0. Dicho valor, se obtuvo

mediante la comparación de los costos totales obtenidos por el software generado, dato a dato, con los

obtenidos por LINGO 11.0, donde, se obtuvieron distintas diferencias, las cuales, al momento promediarlas,

arrojaron un valor igual $1.456.090.

Con respecto al tiempo, lamentablemente, no se pudo realizar un análisis comparativo, pero se concluyó

que no existían diferencias significativas, ya que, se consideró que diferencias de milisegundos o de un

segundo no tienen gran importancia, en especial, cuando uno de los software entregó resultados de

mejores en cuanto al costo total.

De acuerdo a los resultados obtenidos, fue posible afirmar que el costo total entregado por el software

propuesto es mejor que el arrojado por LINGO 11.0. En cuanto al tiempo de ejecución, no existen

diferencias significativas entre uno y otro.

4.4. Diseño final del software propuesto

Finalmente, se realizaron las últimas modificaciones al software, en cuanto al aspecto visual y a la manera

en cómo entrega los resultados. También, se elaboró un manual de usuario para la apropiada utilización

del software y para la interpretación de los resultados obtenidos.

4.4.1. Depuración del software propuesto y elaboración de un manual para el usuario

Se eliminaron todos los procedimientos que permitieron crear la clase “InformeRS” y se depuró el

procedimiento del Simulated Annealing, los cuales, almacenaban los datos de todas las iteraciones

realizadas mediante la metodología del Simulated Annealing. Para ello, se borraron los códigos de

programación que permitían al software propuesto asignar valores a los parámetros de la clase

“InformeRS”. Además, se eliminó el botón incorporado en el software y el código que contenía, el cual,

generaba la planilla Excel con todos los datos. En este caso, se eliminaron los códigos que permitían

generar la planilla, crear las columnas de datos y asignar los parámetros a cada una de ellas.

Estos procedimientos fueron creados para facilitar el análisis de resultados, por lo tanto, en cuanto a los

cálculos realizados por el Simulated Annealing, no afectaban el funcionamiento del software.

Page 94: Evaluación de la utilización de la metaheurística

82

Figura N° 4.14: Diseño final del software.

Fuente: Elaboración propia.

Se elaboró un manual para el usuario enfocado a la utilización del software y la interpretación de los

resultados, el cual, se dispuso de manera completa en el Anexo X.

Primero, se realizó una introducción con el objetivo de contextualizar al usuario de lo que significa inventario

en la actualidad y la utilización de distintas metodologías para la optimización de resultados. Por el mismo

motivo, se incorporó una sección de conceptos, en la cual, se presentó cómo el software trabaja con

inventario y cómo aplica la metodología del Simulated Annealing a grandes rasgos, ya que, la intención es

que el usuario tenga una idea básica de lo que hace el software.

Después, se describió el funcionamiento del software, mediante una explicación paso a paso, desde cómo

importar una planilla de datos hasta cómo generar una planilla con los resultados obtenidos. Por ende, se

dividió la explicación en 5 partes:

Importar datos.

Inventario.

Categorización.

Simulated Annealing.

Generar planilla con los resultados.

En la primera, se especificó en detalle cómo debe ser la estructura de la planilla de datos para el que el

software pueda importarlos, desde el formato del documento (.csv) hasta los formatos correspondientes a

Page 95: Evaluación de la utilización de la metaheurística

83

cada columna de datos. Se explicaron los principales motivos, por el cual, el software no puede leer los

datos.

En “Inventario”, se señaló la importancia de escoger uno de los modelos EOQ y cómo se presentan los

resultados obtenidos en el software.

En “Categorización”, se realizaron algunas recomendaciones para el usuario con el objetivo de hacer un

buen uso de las opciones que entrega el software. La primera recomendación: “No es obligatorio

categorizar los productos, pero se recomienda hacerlo, ya que, permite saber cuáles son los productos que

tienen mayor peso en la empresa y, por lo tanto, requieren mayor atención”; se incorporó para señalar la

importancia de llevar a cabo una categorización de los productos. La segunda recomendación: “De los 3

criterios propuestos, se recomienda aplicar el de “Costo total”, ya que, considera todos los parámetros del

producto y refleja de mejor manera el peso específico que tiene el producto”; se introdujo para señalar cuál

de los criterios permite al usuario determinar el verdadero peso que tiene un producto dentro de su

organización. También, se señaló la importancia de los otros criterios a nivel individual, con el objetivo de

informar al usuario para qué se pueden utilizar los 3 criterios.

En “Simulated Annealing”, se explicó cómo interpretar los resultados obtenidos.

Por último, se explicó cómo exportar una planilla de datos con los parámetros utilizados para efectuar los

cálculos y los resultados obtenidos por el software. Se señaló el nombre del archivo

(ResultadosSOFTWARE), el formato (.csv), la estructura de la planilla y el significado de las columnas de

datos.

Cabe señalar, que se utilizó una planilla de datos a modo de ejemplo, con datos ficticios, con el objetivo de

presentar la estructura que debe tener la planilla, ir mostrando paso a paso los resultados que se van

obteniendo y cómo interpretar los distintos casos.

Page 96: Evaluación de la utilización de la metaheurística

84

5. CONCLUSIONES Y RECOMENDACIONES

5.1. Conclusiones

Gracias al conocimiento adquirido en relación a inventario, a través del estudio bibliográfico existente, se

logra comprender el comportamiento de los distintos parámetros involucrados y los modelos de inventarios

existentes para resolver problemas, lo cual, sumado a la metodología del Simulated Annealing, permite

establecer los límites de trabajo y vincular ambos conceptos exitosamente.

Al combinar lo anterior con el lenguaje de programación Java, se logra desarrollar un software, basado en

la metaheurística de Simulated Annealing, el cual, permite importar planillas con los datos de los insumos

y escoger entre los modelos EOQ básico, con faltantes o con producción, para llevar a cabo los cálculos

de la cantidad a pedir y costo total. También, es posible categorizar los insumos de acuerdo a la importancia

que tenga cada uno en la empresa, dependiendo del criterio seleccionado (costo total, cantidad o precio).

Después, al aplicar la metodología del Simulated Annealing, el software generado es capaz de crear y

recorrer un conjunto de posibles soluciones para cada insumo, creado a partir de la cantidad a pedir

obtenida, con el objetivo de encontrar la mejor solución de todas, la cual, permita disminuir el costo total de

todos los insumos. Finalmente, es posible exportar una planilla de datos con los resultados obtenidos para

poder hacer uso de ellos cuando sea necesario.

Mediante las pruebas realizadas, se comprueba la capacidad para resolver problemas reales asociados a

inventario. Además, se evalúa el desempeño del software generado en comparación con LINGO, uno de

las herramientas más utilizadas por las empresas para resolver éste tipo de problemas. A través de los

distintos análisis realizados, se obtiene que el software propuesto entrega mejores resultados que LINGO

11.0 en cuanto a costo total, ya que, en promedio, el software generado entregó un costo total de

$289.459.553, en comparación de LINGO 11.0, que arrojó $290.915.643, dando como diferencia promedio

$1.456.090, una variación de -0,5 por ciento tomando como base el resultado de LINGO 11.0. Gracias a

GraphPad, se determina que sí existen diferencias significativas para el costo total. En cuanto al tiempo de

ejecución, lamentablemente, no se logra realizar una comparación tan profunda como con el costo total,

pero, para el escenario analizado en el presente proyecto de título (106 insumos), se determina que no

existen diferencias debido a que ambos software obtienen los resultados en milisegundos o segundos.

Posteriormente, el manual del usuario permite conocer acerca del funcionamiento del software creado y

comprender en líneas generales los conceptos de inventario y Simulated Annealing, para utilizarlo sin

problemas y poder interpretar los resultados de manera correcta.

Los alcances del presente proyecto se establecen bajo los estudios y análisis realizados para la aplicación

del Simulated Annealing en modelos de inventario existentes relacionados con demanda determinística y

de cantidad fija, donde, mediante los análisis estadísticos, es posible determinar la ventaja de desarrollar

un software en base al vínculo generado entre ambos conceptos, en comparación con los software ya

Page 97: Evaluación de la utilización de la metaheurística

85

existentes en el mercado como LINGO. Además, es posible comprobar los supuestos de distintos autores

señalados en el transcurso del presente estudio, los cuales, indican la posibilidad de aplicar éste tipo de

metaheurísticas a los problemas de inventario. Aportando de esta manera, con nuevo conocimiento para

el área de la investigación de operaciones, ya que, permite ver desde otro punto de vista los problemas de

inventario y obtener resultados más óptimos.

5.2. Recomendaciones

Para futuros estudios, se recomienda incluir conceptos como el punto de reorden o restricciones de espacio

físico o de dinero para complementar los resultados, incluso, considerar conceptos de cadena de

abastecimientos para observar los parámetros de inventario de manera más completa, o aplicar Simulated

Annealing en otros sistemas de inventario, como por ejemplo: demanda probabilística. Utilizar otros

lenguajes de programación, ya que, como todos tienen sus ventajas y desventajas, es posible encontrar

una manera más fácil de desarrollar un nuevo software. También, utilizar los distintos métodos similares a

Simulated Annealing, presentados en el marco teórico, u otras metaheurísticas, como Tabu Search, para

resolver los problemas de abastecimiento de inventario y evaluar los resultados obtenidos, con el objetivo

de determinar cuál de todas es la que permite minimizar los costos de inventario, teniendo en consideración

el tiempo de ejecución.

Cabe señalar, que no todas las personas piensan de la misma forma, por lo cual, analizan los problemas

desde otros punto de vista. Dicho esto, se recomienda aplicar el Simulated Annealing estudiando la

problemática desde otra perspectiva, generando sus propias consideraciones al momento de relacionar los

parámetros de inventario con la metodología.

Por otro lado, se recomienda implementar este tipo de metaheurísticas en distintos problemas de las

diversas áreas del conocimiento existente, ya que, al observar los estudios existentes hoy en día, es

evidente el beneficio que traen consigo, como la minimización de costos u optimización de tiempos, entre

otro tipo de aplicaciones.

Page 98: Evaluación de la utilización de la metaheurística

86

6. BIBLIOGRAFÍA

ÁLVAREZ, D., Gallego, R. y Toro, E. 2009. Estudio computacional con técnicas heurísticas basadas en

recocidos para resolver el problema de secuenciación de tareas. Ingeniería & Desarrollo. Universidad del

Norte 25: 154-179.

ÁLVAREZ, V., Feliciano, S. y Hernández J. 2013. Desarrollo de aplicaciones, utilizando software libre y

propietario. Vínculos 9 (1): 102-121.

BHUJEL, R. 2008. Statistics for Aquaculture. Estados Unidos: Wiley-Blackwell.

CHASE, R., Jacobs, F. y Aquilano, N. 2009. Administración de la producción y operaciones. México:

McGraw Hill.

DEITEL, H. y Deitel, P. 2004. Cómo programar en Java. México: Pearson Education.

DÍAZ, H., Cuenca, S., Sepúlveda, R., Fajardo, J. y Rosete A. 2013. An aplication of Fuzzy logic for

Hardware/Software partitioning in embedded systems. Computación y sistemas 17 (1): 25-39.

DÍAZ, J. 2006. Enseñando programación con C++: una propuesta didáctica. Revista de Informática

Educativa y Medios Audiovisuales 3(7): 12-21.

GAITHER, N. y Frazier, G. 2000. Administración de producción y operaciones. México: International

Thomsom Editores.

HEIZER, J., y Render, B. 2008. Dirección de la producción y de operaciones. Madrid, España: Pearson

Education.

HILLIER, F. y Liebermann, G. 2010. Introducción a la investigación de operaciones. México: McGraw Hill.

IDEA GROUP INC 2010. Networking and Telecommunications: Concepts, Methodologies, Tools, and

Applications. Estados Unidos: Yurchak Printing Inc.

INOUE, H. y Gen, M. 2012. A multistage logistics system design problema with inventory considering

demand change by hybrid genetic algorithm. Electronics and Communications in Japan 95 (5): 56-65.

KIRKPATRICK, S., Gellat, C. y Vecchi, M. 1983. Optimization by Simulated Annealing. Science, New Series

220 (4598): 671-680.

KRAJEWSKI, L. 2008. Administración de operaciones: procesos y cadena de valor. México: Editorial

Prentice Hall.

Page 99: Evaluación de la utilización de la metaheurística

87

MAJAZI, V. y Ranjbar, V. 2012. Multi-projects scheduling with resource constraints & priority rules by the

use of Simulated Annealing Algorithm. Tehnički vjesnik 19 (3): 493-499.

MARTINEZ, A., Menin, O. y Rolnik, V. 2013. Boundary element method and Simulated Annealing algorithm

applied to electrical impedance tomography image reconstruction. Revista Brasileira de Ensino de Física

35 (2): 1-7.

MARTÍNEZ GUILLEN, M. 2012. Administración y Planificación del tiempo. Madrid, España: Editorial Díaz

de Santos.

MARZAL, A. y Gracia, I. 2009. Introducción a la programación con Python. Castellón, España: Publicacions

de la Universitat Jaume.

MASSO, W. 2012. Utilizando bibliotecas de Código C en aplicaciones C#. Telem@tica 11 (2).

MICHALEWICZ, Z. y Fogel, D. 2004. How to solve it: Modern Heuristics. Estados Unidos: Springer-Verlag.

MORALES, F. 2012, Desarrollo de una herramienta matemática como apoyo a la educación básica en el

estado de Guerrero (México) utilizando Monodevelop con C#. Revista Vínculos 9 (2): 95-113.

NAGESH, E., Rengajanardhana, G. y Shakeel, S. 2013. Development of supply chain tools using Genetic

Algorithm and comparison with Particle Swarm Optimization and Simulated Annealing optimization

algorithms. The IUP Journal of Supply Chain Management 10 (2): 33-43.

PEREZ, M. y Boubeta A. 2010. Introducción a la gestión de stocks: El proceso de control, valoración y

gestión de stocks. España: Editorial Vigo.

SANNER, M. 1999. Python: A programming lenguaje for software integration and development. J. Mol.

Graphics Mod 17: 57-61.

SANTOS, V., Varas, V. y Gramajo, S. 2013. Lenguajes orientados a objetos. UNLaR Ciencia 12 (1): 32-

39.

SCHRAGE, L. 2007. Optimization modeling with LINGO. Estados Unidos: LINDO Systems Inc.

TAHA, H. 2012. Investigación de operaciones. México: Pearson Education.

TALBI, E. 2009. Metaheuristics from design to implementation. Estados Unidos: John Wiley and Sons, Inc.

VÉLEZ, M. y Montoya, J. 2007. Metaheurísticos: Una alternativa para la solución de problemas

combinatorios en administración de operaciones. Revista EIA, Escuela de Ingeniería de Antioquia.8: 99-

115.

Page 100: Evaluación de la utilización de la metaheurística

88

YU, G., Yu, Y., Xing, Q. y Li F. 2014. Research on the time optimization model algorithm of Customer

Collaborative product innovation. Journal of Industrial Engineering and Management 7 (1): 137-152.

Page 101: Evaluación de la utilización de la metaheurística

89

7. LINKOGRAFÍA

BENÍTEZ, R. 2012. Influencia de los costos de mantenimiento en la toma de decisiones. [En línea] <

http://www.mantenimientomundial.com/sites/mm/notas/Influencia-costos-mantenimiento.pdf>.

GRAPHPAD SOFTWARE INC. 2014. GraphPad Statistics Guide. [En línea]

<http://www.graphpad.com/guides/prism/6/statistics/index.htm?stat_view_the_other_guides.htm>.

GONZÁLEZ, J. 2001. El lenguaje de Programación C#. [En línea] <http//:

http://dis.um.es/~bmoros/privado/bibliografia/LibroCsharp.pdf>.

JAVA. 2014. Conozca más sobre la tecnología Java. [En línea] <https://www.java.com/es/about/>.

LINDO SYSTEMS INC. 2014. Optimization modeling software for linear, nonlinear and integer

programming. [En línea]

<http://www.lindo.com/index.php?option=com_content&view=article&id=2&Itemid=10>.

REVISTA LOGISTEC. 2014. ¿Qué considerar para administrar correctamente el inventario?. [En línea] <

http://www.revistalogistec.com/index.php/supply-chain-management/106-administracioninventarios/1446-

que-considerar-para-administrar-correctamente-el-inventario>.

MURILLO, M., Moran, I. y Márquez, A. 2013. Análisis de Optimización y propuesta de mejora a los procesos

relacionados con la gestión del inventario para una compañía que se dedica a la venta de materiales de

construcción en la ciudad de Samborondon. [En línea]

<http://www.dspace.espol.edu.ec/bitstream/123456789/24128/1/Análisis de Optimización y propuesta de

mejora a los procesos relacionados con la gestión del inventario para una compañía que se dedica a la

venta de materiales de construcción en la ciudad de Samborondon.pdf>.

Page 102: Evaluación de la utilización de la metaheurística

90

ANEXO A: Iteraciones realizadas para N = 5; donde T es tiempo y CT el costo total.

Alfa

Temperatura

1.000 5.000 10.000 50.000 100.000

T CT T CT T CT T CT T CT

0,5

169 278.085.860 123 278.084.476 187 278.084.327 157 278.077.499 187 278.079.504

141 278.084.453 173 278.082.948 156 278.082.619 157 278.081.297 203 278.082.418

140 278.085.827 157 278.084.787 170 278.081.699 219 278.081.520 173 278.080.249

143 278.085.865 157 278.083.862 189 278.082.279 173 278.081.292 155 278.080.849

142 278.085.702 204 278.082.876 185 278.079.734 172 278.080.614 187 278.080.756

Ite. 44(4.252) 66(6.378) 77(7.441) 99(9.568) 110(10.631)

0,65

141 278.085.492 189 278.086.619 203 278.084.041 203 278.085.270 203 278.086.213

156 278.086.169 205 278.085.620 219 278.085.088 189 278.086.289 187 278.086.861

124 278.086.608 188 278.086.017 188 278.083.776 187 278.085.213 172 278.086.993

185 278.086.715 188 278.08.248 156 278.084.879 156 278.085.512 219 278.086.598

141 278.085.997 188 278.087.032 141 278.084.052 173 278.084.812 217 278.087.578

Ite. 66(6.378) 110(10.631) 121(11.695) 165(15.945) 187(18.071)

0,8

157 278.087.099 172 278.085.661 220 278.087.190 296 278.086.670 233 278.086.460

162 278.087.502 203 278.085.910 250 278.085.300 219 278.086.087 266 278.084.310

155 278.086.599 235 278.086.161 219 278.085.099 236 278.085.316 250 278.084.862

187 278.086.175 234 278.085.832 188 278.086.463 233 278.086.455 266 278.084.848

218 278.086.715 204 278.085.846 204 278.085.810 251 278.086.099 266 278.087.688

Ite. 121(11.693) 198(19.134) 231(22.324) 308(29.764) 341(32.953)

0,9

233 278.086.242 267 278.087.357 297 278.086.908 376 278.086.096 406 278.087.654

251 278.086.439 266 278.087.154 295 278.086.122 484 278.087.522 438 278.086.025

202 278.087.028 265 278.089.042 312 278.087.222 376 278.088.244 406 278.084.810

220 278.086.906 265 278.088.321 296 278.086.657 454 278.086.152 422 278.086.246

203 278.086.656 267 278.086.731 297 278.086.633 376 278.085.650 421 278.085.891

Ite. 242(23.386) 418(40.394) 484(46.772) 649(62.717) 726(70.158)

0,95

343 278.087.968 453 278.088.189 500 278.086.885 578 278.088.686 535 278.087.412

297 278.087.332 468 278.086.058 455 278.087.525 501 278.086.244 618 278.087.121

296 278.087.048 468 278.087.033 468 278.086.395 530 278.087.761 610 278.086.328

298 278.085.889 437 278.087.134 468 278.086.777 500 278.087.623 578 278.085.865

297 278.086.345 499 278.085.871 548 278.086.703 546 278.087.361 693 278.086.580

Ite. 495(47.835) 847(81.851) 990(95.670) 1.342(129.686) 1.485(143.505)

Fuente: Elaboración propia.

Page 103: Evaluación de la utilización de la metaheurística

91

ANEXO B: Iteraciones realizadas para N = 10.

Alfa

Temperatura

1.000 5.000 10.000 50.000 100.000

T CT T CT T CT T CT T CT

0,5

156 278.083.359 188 278.077.266 202 278.080.158 235 278.075.761 204 278.075.729

141 278.080.957 186 278.078.704 158 278.073.958 204 278.076.104 235 278.074.618

206 278.082.685 156 278.080.333 203 278.078.518 248 278.074.471 173 278.068.790

188 278.083.093 173 278.082.144 203 278.081.292 203 278.078.378 218 278.077.524

126 278.081.516 188 278.081.084 156 278.080.551 188 278.077.515 187 278.071.164

Ite. 84(7.589) 126(11.382) 147(13.279) 189(17.073) 210(18.970)

0,65

187 278.082.751 187 278.083.440 250 278.079.366 251 278.084.440 249 278.084.993

171 278.084.887 219 278.086.037 218 278.080.143 268 278.082.921 234 278.086.449

203 278.083.826 218 278.085.134 218 278.081.592 250 278.083.430 235 278.086.189

187 278.083.736 189 278.083.010 188 278.081.633 249 278.082.954 264 278.085.504

187 278.084.943 234 278.085.447 251 278.082.657 219 278.084.876 262 278.086.881

Ite. 126(11.382) 210(18.970) 231(20.867) 315(28.455) 357(32.249)

0,8

203 278.084.117 283 278.084.400 280 278.086.110 329 278.081.322 344 278.082.474

250 278.082.753 265 278.084.016 280 278.082.025 343 278.083.711 454 278.081.882

202 278.084.847 296 278.085.154 266 278.085.922 344 278.084.397 392 278.083.287

157 278.083.430 267 278.083.653 314 278.082.604 328 278.082.744 375 278.083.620

251 278.085.576 251 278.084.313 277 278.083.418 344 278.080.754 375 278.082.719

Ite. 231(20.867) 378(34.146) 441(39.837) 588(53.117) 651(58.807)

0,9

282 278.082.578 516 278.085.897 567 278.085.386 570 278.083.458 499 278.085.930

297 278.083.142 502 278.086.656 516 278.084.757 485 278.081.993 516 278.083.628

348 278.084.277 475 278.088.240 468 278.083.486 468 278.084.539 531 278.082.825

313 278.082.757 483 278.086.258 422 278.083.820 501 278.084.863 516 278.085.847

312 278.084.176 485 278.085.843 501 278.084.092 515 278.084.065 578 278.086.181

Ite. 462(41.735) 798(72.087) 924(83.469) 1.239(111.924) 1.386(125.203)

0,95

438 278.084.842 711 278.085.470 579 278.085.899 688 278.084.833 750 278.086.019

546 278.084.321 500 278.083.816 593 278.085.300 660 278.087.193 837 278.085.096

468 278.082.965 626 278.086.831 663 278.085.761 659 278.085.969 746 278.083.214

485 278.082.781 499 278.086.427 578 278.083.466 621 278.083.813 747 278.085.453

437 278.084.815 547 278.085.002 688 278.084.742 689 278.087.024 754 278.086.030

Ite. 945(85.365) 1.617(146.069) 1.890(170.730) 2.562(231.434) 2.835(256.096)

Fuente: Elaboración propia.

Page 104: Evaluación de la utilización de la metaheurística

92

ANEXO C: Datos de Temperatura para N=10.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 105: Evaluación de la utilización de la metaheurística

93

ANEXO D: Pruebas de Distribución Normal para los valores de temperatura.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 106: Evaluación de la utilización de la metaheurística

94

ANEXO E: Prueba ANOVA para los valores de temperatura.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 107: Evaluación de la utilización de la metaheurística

95

ANEXO F: Comparaciones múltiples para los valores de temperatura.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 108: Evaluación de la utilización de la metaheurística

96

ANEXO G: Datos de Alfa para N=10.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 109: Evaluación de la utilización de la metaheurística

97

ANEXO H: Pruebas de Distribución Normal para los valores de alfa.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 110: Evaluación de la utilización de la metaheurística

98

ANEXO I: Prueba ANOVA para los valores de alfa.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 111: Evaluación de la utilización de la metaheurística

99

ANEXO J: Comparaciones múltiples para los valores de alfa.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 112: Evaluación de la utilización de la metaheurística

100

ANEXO K: Iteraciones realizadas para N=8.

Alfa

Temperatura

1.000 5.000 10.000 50.000 100.000

T CT T CT T CT T CT T CT

0,5

- 278.085.332 156 278.082.294 170 278.082.800 204 278.075.203 203 278.073.603

- - - - - - 173 278.072.934 203 278.075.716

- - - - - - 187 278.076.079 218 278.078.013

- - - - - - 155 278.076.841 172 278.077.359

- - - - - - 140 278.074.726 282 278.079.050

Ite. 68(6.292) 102(9.438) 119(11.011) 153(14.157) 170(15.730)

0,65 124 278.086.713 204 278.085.836 187 278.081.163 235 278.085.938 233 278.085.936

Ite. 102(9.438) 170(15.730) 187(17.303) 255(23.595) 289(26.741)

0,8 173 278.085.405 282 278.085.475 251 278.084.857 312 278.084.827 329 278.084.863

Ite. 187(17.303) 306(28.315) 357(33.033) 476(44.044) 527(48.763)

0,9 280 278.084.070 375 278.086.373 407 278.086.016 468 278.085.449 641 278.085.849

Ite. 374(34.607) 646(59.774) 748(69.212) 1.003(92.807) 1.122(103.818)

0,95 437 278.087.400 500 278.087.094 582 278.085.279 701 278.087.587 608 278.088.024

Ite. 765(70.785) 1.309(121.121) 1.530(141.570) 2.074(191.906) 2.295(212.355)

Fuente: Elaboración propia.

Page 113: Evaluación de la utilización de la metaheurística

101

ANEXO L: Datos de los distintos valores de N.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 114: Evaluación de la utilización de la metaheurística

102

ANEXO M: Pruebas de Distribución Normal para los valores de N.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 115: Evaluación de la utilización de la metaheurística

103

ANEXO N: Prueba ANOVA para los valores de N.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 116: Evaluación de la utilización de la metaheurística

104

ANEXO O: Comparaciones múltiples para los valores de N.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 117: Evaluación de la utilización de la metaheurística

105

ANEXO P: Informe de iteraciones realizadas por SA para N=10, alfa=0,5 y temperatura=100.000.

x f(x) x' f(x') Variación T° Iteración Boltzmann Random

1 25023196 2 25336991 313795 100000 2 0.043371 0,604963

1 25023196 2 25336991 313795 100000 2 0.043371 0,604963

1 25023196 3 25336472 313276 100000 3 0.043597 0,353025

26 27549760 16 27696383 146623 100000 1 0.230793 0,149166

16 27696383 17 27696383 0 100000 2 1.0 0,177421

17 27696383 18 27762113 65730 100000 3 0.518248 0,766799

17 27696383 19 27762113 65730 100000 4 0.518248 0,157813

23 27893573 24 27484030 -409543 100000 9 600651616247209 0,275922

17 27696383 19 27762113 65730 50000 25 0.268581 0,626054

24 27484030 25 27484030 0 50000 31 1.0 0,703874

25 27484030 26 27549760 65730 25000 53 0.072136 0,228101

25 27484030 26 27549760 65730 12500 74 0.005203 0,748326

25 27484030 18 27762113 278083 6250 87 4,75 E-05 0,163964

25 27484030 16 27696383 212353 3125 106 3,08 E-14 0,581012

25 27484030 17 27696383 212353 3125 107 3,08 E-14 0,581049

25 27484030 17 27696383 212353 1562,5 128 9,48 E-45 0,85316

25 27484030 18 27762113 278083 1562,5 129 5,10 E-63 0,96024

521 16984832 511 16988212 3380 100000 1 0.966764 0,174318

511 16988212 512 16988460 248 100000 2 0.997523 0,097784

512 16988460 513 16988460 0 100000 3 1.0 0,321551

513 16988460 514 16988708 248 100000 4 0.997523 0,831784

531 16986070 511 16988212 2142 50000 22 0.958064 0,415931

511 16988212 512 16988460 248 25000 44 0.990129 0,966378

531 16986070 511 16988212 2142 12500 64 0.842518 0,762471

531 16986070 511 16988212 2142 6250 85 0.709836 0,426473

531 16986070 511 16988212 2142 3125 106 0.503868 0,085676

531 16986070 511 16988212 2142 1562,5 127 0.253883 0,899663

531 16986070 511 16988212 2142 781,25 148 0.064456 0,924475

Page 118: Evaluación de la utilización de la metaheurística

106

ANEXO Q: Iteraciones realizadas en el software para los distintos tipos de demanda.

ANUAL SEMESTRAL TRIMESTRAL MENSUAL

T CT T CT T CT T CT

0,204 278.075.729 0,374 282.970.747 0,592 288.387.340 1,312 308.264.088

0,235 278.074.618 0,373 282.973.338 0,563 288.383.680 1,286 308.269.983

0,173 278.068.790 0,361 282.975.057 0,533 289.078.188 1,251 308.271.158

0,218 278.077.524 0,360 282.974.581 0,517 288.383.733 1,286 308.272.821

0,187 278.071.164 0,344 282.971.643 0,590 288.380.410 1,246 308.266.466

0,2034 278.073.565 0,3624 282.973.073 0,559 288.522.670 1,276 308.468.903

Fuente: Elaboración propia.

Demanda Semestral.

SEMESTRE 1 SEMESTRE 2 TOTAL

T CT T CT T CT

202 156.694.789 172 126.275.958 374 282.970.747

202 156.692.578 171 126.280.760 373 282.973.338

188 156.692.082 173 126.282.975 361 282.975.057

171 156.692.970 189 126.281.611 360 282.974.581

186 156.692.891 158 126.278.752 344 282.971.643

189,8 156.693.062 172,6 126.280.011 362,4 282.973.073

Fuente: Elaboración propia.

Demanda Trimestral.

TRIMESTRE 1 TRIMESTRE 2 TRIMESTRE 3 TRIMESTRE 4 TOTAL

T CT T CT T CT T CT T CT

157 72.098.969 171 88.074.111 155 61.433.317 109 66.780.943 592 288.387.340

156 72.098.607 165 88.076.993 140 61.429.785 102 66.778.295 563 288.383.680

131 72.096.831 172 88.772.001 120 61.428.486 110 66.780.870 533 289.078.188

140 72.101.085 135 88.075.266 132 61.427.464 110 66.779.918 517 288.383.733

172 72.099.129 140 88.071.450 152 61.431.199 126 66.778.632 590 288.380.410

151,2 72.098.924,2 156,6 88.213.964,2 139,8 61.430.050,2 111,4 66.779.731,6 559 288.522.670

Fuente: Elaboración propia.

Page 119: Evaluación de la utilización de la metaheurística

107

Demanda Mensual.

Mes 1 Mes 2 Mes 3 Mes 4 Mes 5

T CT T CT T CT T CT T CT

124 15.356.903 110 45.845.434 93 17.948.181 109 15.891.603 110 21.370.811

110 15.356.304 111 45.845.421 80 17.948.757 125 15.889.971 94 21.373.279

109 15.356.632 110 45.846.083 77 17.946.011 124 15.890.000 110 21.374.443

105 15.357.160 105 45.844.390 88 17.946.963 110 15.890.424 125 21.373.198

115 15.356.694 98 45.848.252 90 17.946.623 100 15.889.878 115 21.371.650

112,6 15356738,6 106,8 45.846.036,5 85,6 17947307 113,6 15890375,2 110,8 21372676,2

Mes 6 Mes 7 Mes 8 Mes 9 Mes 10

T CT T CT T CT T CT T CT

124 51.912.707 125 20.592.217 93 29.559.125 94 15.791.092 108 26.252.325

110 51.911.773 93 20.591.654 110 29.559.233 110 15.791.935 109 26.255.165

105 51.909.666 100 20.593.045 96 29.560.816 125 15.790.421 96 26.255.444

120 51.911.338 116 20.593.812 100 29.560.659 94 15.790.450 107 26.257.696

118 51.910.884 107 20.591.647 102 29.558.530 90 15.790.514 101 26.257.412

115,4 51911273,6 108,2 20592475 100,2 29559672,6 102,6 15790882,4 104,2 26255608,4

Mes 11 Mes 12 Total

T CT T CT T CT

108 24.799.384 114 22.944.306 1.312 308.264.088

108 25.801.234 126 22.945.257 1.286 308.269.983

95 24.802.732 104 22.945.865 1.251 308.271.158

98 24.801.381 118 22.945.350 1.286 308.272.821

103 24.801.353 107 22.943.029 1.246 308.266.466

102,4 25001216,8 113,8 22944761,4 1.276 308.468.903

Fuente: Elaboración propia.

Page 120: Evaluación de la utilización de la metaheurística

108

ANEXO R: Modelo EOQ básico desarrollado en LINGO.

Fuente: Elaboración propia, mediante LINGO 11.0.

Fuente: Elaboración propia, mediante LINGO 11.0.

Page 121: Evaluación de la utilización de la metaheurística

109

ANEXO S: Iteraciones realizadas en LINGO para los distintos tipos de demanda.

ANUAL SEMESTRAL TRIMESTRAL MENSUAL

T CT T CT T CT T CT

278.964.813,2 284.182.936 289.868.373,5 310.646.448,5

278.964.813,2 284.182.936 289.868.373,5 310.646.448,5

278.964.813,2 284.182.936 289.868.373,5 310.646.448,5

278.964.813,2 284.182.936 289.868.373,5 310.646.448,5

278.964.813,2 284.182.936 289.868.373,5 310.646.448,5

278.964.813,2 284.182.936 289.868.373,5 310.646.448,5

Fuente: Elaboración propia.

Demanda Semestral.

SEMESTRE 1 SEMESTRE 2 TOTAL

T CT T CT T CT

157.207.343 126.975.593 284.182.936

157.207.343 126.975.593 284.182.936

157.207.343 126.975.593 284.182.936

157.207.343 126.975.593 284.182.936

157.207.343 126.975.593 284.182.936

Fuente: Elaboración propia.

Demanda Trimestral.

TRIMESTRE 1 TRIMESTRE 2 TRIMESTRE 3 TRIMESTRE 4 TOTAL

T CT T CT T CT T CT T CT

72.280.977,1 88.624.381,1 61.724.484,7 67.238.530,6 289.868.373,5

72.280.977,1 88.624.381,1 61.724.484,7 67.238.530,6 289.868.373,5

72.280.977,1 88.624.381,1 61.724.484,7 67.238.530,6 289.868.373,5

72.280.977,1 88.624.381,1 61.724.484,7 67.238.530,6 289.868.373,5

72.280.977,1 88.624.381,1 61.724.484,7 67.238.530,6 289.868.373,5

Fuente: Elaboración propia.

Page 122: Evaluación de la utilización de la metaheurística

110

Demanda Mensual.

Mes 1 Mes 2 Mes 3 Mes 4 Mes 5

T CT T CT T CT T CT T CT

15.411.349,8 45.989.580,9 18.053.706 15.980.284,7 21.490.578,2

15.411.349,8 45.989.580,9 18.053.706 15.980.284,7 21.490.578,2

15.411.349,8 45.989.580,9 18.053.706 15.980.284,7 21.490.578,2

15.411.349,8 45.989.580,9 18.053.706 15.980.284,7 21.490.578,2

15.411.349,8 45.989.580,9 18.053.706 15.980.284,7 21.490.578,2

Mes 6 Mes 7 Mes 8 Mes 9 Mes 10

T CT T CT T CT T CT T CT

52.524.186,7 20.690.652,3 29.900.851,3 15.871.257,1 26.363.282,6

52.524.186,7 20.690.652,3 29.900.851,3 15.871.257,1 26.363.282,6

52.524.186,7 20.690.652,3 29.900.851,3 15.871.257,1 26.363.282,6

52.524.186,7 20.690.652,3 29.900.851,3 15.871.257,1 26.363.282,6

52.524.186,7 20.690.652,3 29.900.851,3 15.871.257,1 26.363.282,6

Mes 11 Mes 12 Total

T CT T CT T CT

25.325.461 23.045.257,9 310.646.448,5

25.325.461 23.045.257,9 310.646.448,5

25.325.461 23.045.257,9 310.646.448,5

25.325.461 23.045.257,9 310.646.448,5

25.325.461 23.045.257,9 310.646.448,5

Fuente: Elaboración propia.

Page 123: Evaluación de la utilización de la metaheurística

111

ANEXO T: Datos de ambos software según costo total.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 124: Evaluación de la utilización de la metaheurística

112

ANEXO U: Prueba de Distribución Normal para ambos software según costo total.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 125: Evaluación de la utilización de la metaheurística

113

ANEXO V: Prueba de t para ambos software según costo total.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 126: Evaluación de la utilización de la metaheurística

114

ANEXO W: Gráficos Bloxpot para ambos software según costo total.

Fuente: Elaboración propia, a través de GraphPad Prisma 6.

Page 127: Evaluación de la utilización de la metaheurística

115

ANEXO X: Manual para el usuario.

Manual para el usuario.

Introducción

El control de inventarios permite supervisar el movimiento de los insumos al interior de las empresas y

obtener información acerca de ellos, además, involucra una variedad de costos, los cuales, se pueden

minimizar mediante un correcto control. Mediante distintas herramientas de cálculo, es posible determinar

las cantidades a solicitar y obtener los costos involucrados en ello.

En estos últimos años, con tal de mejorar este tipo de cálculos y hacerlos aún más precisos y económicos,

se han llevado a cabo investigaciones que han determinado que los problemas de inventario pueden ser

resueltos gracias al uso de distintas metodologías existentes, las cuales, permiten disminuir los costos

asociados. Un ejemplo claro de ello, es el Simulated Annealing, el cual, se ha utilizado en varios tipos de

investigaciones con el objetivo de optimizar costos, tiempos, procedimientos, etc; por lo tanto, ha sido

desarrollado y adaptado para la solucionar problemas en varios ámbitos del conocimiento.

Conceptos

Inventario:

El software trabaja con el sistema de inventario “Modelo de cantidad de pedido fija”, mejor conocido como

“modelo de cantidad de pedido económico” o “modelo EOQ”, donde, se calcula la cantidad de unidades

que se deben ordenar al momento de realizar el pedido (Q) y el costo total que aquello significa.

El modelo EOQ varía según la problemática, por lo cual, las fórmulas son distintas dependiendo del

problema a trabajar. El software puede realizar los cálculos para los siguientes modelos:

Modelo EOQ básico.

Modelo EOQ con faltantes.

Modelo EOQ con producción.

Page 128: Evaluación de la utilización de la metaheurística

116

Simulated Annealing:

El Simulated Annealing (SA) es una metaheurística estocástica que permite, bajo algunas condiciones, la

degradación de una solución. El objetivo principal es escapar de un óptimo local y recorrer un amplio

conjunto de soluciones, con tal de alcanzar la mejor solución de todas.

La metodología del SA se inicia a partir de una solución inicial, en éste caso, del valor Q obtenido con el

modelo EOQ. El software genera una solución vecina (valor cercano a Q, puede ser mayor o menor) y las

compara mediante una función objetivo, la cual, corresponde a la fórmula del costo total de inventario. Las

nuevas soluciones que disminuyen el costo total obtenido siempre son aceptadas. En el caso de que el

costo total aumente, la metodología del SA permite escoger esa nueva solución mediante una probabilidad,

la cual, es conocida como la “Distribución de Boltzmann”. Si Boltzmann es mayor que un número generado

aleatoriamente entre 0 y 1, se acepta la nueva solución. En caso contrario, se rechaza y se mantiene la

solución inicial.

La metodología utiliza un parámetro de control, llamado Temperatura, el cual, determina la probabilidad de

aceptar soluciones desfavorables y se utiliza como criterio para detener el SA y obtener el mejor resultado.

Por ende, el software detiene la metaheurística cuando se han iterado todas las soluciones, de todos los

productos, hasta alcanzar una Temperatura determinada.

Funcionamiento del software

El software posee un interfaz de uso bastante simple, mediante la cual, es posible importar los datos de

inventario, realizar los cálculos propios del software (inventario y Simulated Annealing) y exportar los

resultados para poder utilizarlos posteriormente.

Page 129: Evaluación de la utilización de la metaheurística

117

A continuación, se explican los pasos a seguir, desde principio a fin, para poder utilizar el software sin

inconvenientes.

1. Importar datos:

Para poder trabajar con el software, es necesario importar una planilla Excel con los datos necesarios, para

lo cual, se deben seguir los siguientes pasos:

i. Presionar el botón “Importar”.

ii. Buscar la planilla de datos en el computador.

iii. Presionar el botón “Abrir”.

La planilla Excel debe estar en formato “.csv” (archivo separado por comas) y debe tener la siguiente

estructura:

Donde; Descripción corresponde al nombre del producto, Precio es el valor por compra del producto (valor

unitario), Cantidad es la cantidad de productos disponibles en inventario, Demanda es la cantidad necesaria

de cada producto en el período a evaluar, Co es el costo por realizar una orden de compra (costo de

pedido), Ch es el costo de almacenamiento de cada producto, S es la cantidad de unidades faltantes

permitidas, Cs es el costo por unidades faltantes, Consumo es la tasa de consumo diario del producto y

Producción es la tasa de producción diaria del producto.

Page 130: Evaluación de la utilización de la metaheurística

118

Como se puede apreciar en la estructura de la planilla, las etiquetas de las columnas de datos deben tener

los mismos nombres (sin acentos), ya que, si no es así, el software no podrá reconocer y asignar los datos

correspondientes a cada parámetro. Además, el software solo acepta valores enteros para la “Demanda”,

los demás, a excepción de “Descripcion”, aceptan valores con decimales.

Los modelos EOQ con los que trabaja el software no necesitan de los mismos parámetros, ya que,

necesitan de ciertos datos al momento de efectuar los cálculos. A continuación, se indican los parámetros

para cada modelo:

Demanda Co Ch Cs S Precio Producción Consumo

Básico Si Si Si No No Si No No

Faltantes Si Si Si Si Si Si No No

Producción Si Si Si No No Si Si Si

Independientemente del modelo EOQ a trabajar, se deben mantener todas las columnas de datos, si no se

va utiliza alguna, se debe rellenar con ceros, ya que, el software no acepta celdas de datos vacías. Si se

observa con cuidado el ejemplo de la estructura de la planilla, se puede apreciar que corresponde a

problema de modelo EOQ básico, donde, las celdas de las columnas: “Cs”, “S”, “Produccion” y “Consumo”;

se rellenaron con ceros.

El parámetro “Cantidad” no es obligatorio, ya que, es posible que se quieran mantener las unidades

disponibles en bodega como inventario de seguridad y cubrir la demanda con los unidades a pedir. En éste

caso, es necesario colocar el valor cero a cada una de las celdas de la columna “Cantidad”.

El software reconocerá los datos, los asignará a los parámetros respectivos y los mostrará de la siguiente

manera:

NOTA: Si no aparecen los datos en el software, significa que la planilla Excel tienen algún error, por lo

tanto, se recomienda revisar todos los aspectos anteriormente mencionados.

Page 131: Evaluación de la utilización de la metaheurística

119

2. Inventario:

Para poder llevar a cabo los cálculos de inventario, es necesario seguir los siguientes pasos:

i. Seleccionar el modelo EOQ a trabajar.

ii. Presionar el botón “Inventario”.

Si no se elige uno de los modelos, no se podrá realizar ningún cálculo, ya que, es necesario indicar el

modelo EOQ para que el software pueda seleccionar los parámetros adecuados de las fórmulas

correspondientes. Cabe señalar, que el modelo a trabajar se debe mantener seleccionado hasta el final, ya

que, el software lleva a cabo todos los procedimientos posteriores en base a ésta elección.

Para continuar con el ejemplo de la planilla Excel, se escogió el modelo EOQ básico y se realizaron los

cálculos de inventario.

Si se hubiese escogido otro de los modelos, el software no realizaría ningún cálculo, ya que, no dispondría

de los parámetros necesarios para realizar los cálculos.

Como se puede apreciar, la cantidad a pedir (Q*) y del costo total (Costo Producto) se obtienen con

números enteros. Esto se debe a que el software aproxima ambos resultados al entero mayor, ya que,

generalmente, se piden productos enteros y los costos totales se manejan en pesos.

3. Categorización:

Para categorizar y ordenar los productos, es necesario seguir los siguientes pasos:

i. Seleccionar el criterio.

Page 132: Evaluación de la utilización de la metaheurística

120

ii. Presionar el botón “Ordenar”.

No es obligatorio categorizar los productos, pero se recomienda hacerlo, ya que, permite saber cuáles son

los productos que tienen mayor peso en la empresa y, por lo tanto, requieren mayor atención. El software

ordena de mayor a menor los productos de acuerdo al criterio seleccionado (costo total, cantidad requerida

(Q) o precio del producto) y los categoriza como: A, B o C.

La categorización de los productos se realiza de acuerdo a la “Categorización ABC”, el cual, es una

herramienta de administración de inventarios que permite categorizar los productos de acuerdo al peso

específico que posean en la empresa.

En el caso del ejemplo presentado, se realizó la categorización según el costo total obtenido. El software

suma los costos de todos los productos y obtiene porcentajes acumulativos de acuerdo al orden

establecido. Si el porcentaje acumulado es menor a 75%, el producto es tipo A. En caso contrario, si es

mayor a 95%, es tipo C. Si el porcentaje se encuentra entre el 75% y el 95%, el producto es del tipo B.

Productos del tipo A requieren mayor atención, ya que, son los que tienen mayor peso específico, mientras

los del tipo B requieren una atención más normal y los C de una menor atención.

De los 3 criterios propuestos, se recomienda aplicar el de “Costo total”, ya que, considera todos los

parámetros del producto y refleja de mejor manera el peso específico que tiene el producto. “Precio” y

“Cantidad” solo reflejan la importancia a niveles individuales, aun así, sirven para conocer los productos de

mayor valor unitario y los que requieren de mayor espacio al momento de almacenarlos, respectivamente.

Tener éste tipo de información, facilita las decisiones al momento de aplicar políticas de inventario y permite

gestionar de mejor manera los procesos de recuento físico de los productos.

4. Simulated Annealing:

Para aplicar la metodología del Simulated Annealing, es necesario dirigirse al botón “Simulated Annealing”.

Page 133: Evaluación de la utilización de la metaheurística

121

Un resultado positivo en “Variación Energía” indica que la metaheurística optó por un Q que empeoro el

costo total del producto en ese valor; en cambio, un resultado negativo significa que la metodología del SA

encontró un Q que permitió disminuir el costo total del producto en ese valor.

Observando el ejemplo, se puede apreciar que para el Producto 2, el Simulated Annealing encontró una

nueva solución (Q*’) que genera un costo total menor (Costo Producto‘), por lo tanto, se mejoró el resultado

(-3.325). El caso contrario, es lo que sucedió con el Producto 3, en el cual, se empeoro el resultado (+210).

5. Generar planilla con los resultados:

Finalmente, es posible generar una planilla Excel con los datos obtenidos mediante el software, para lo

cual, es necesario presionar el botón “Exportar” y se creará una planilla en el escritorio del computador con

el nombre “ResultadosSOFTWARE”.

NOTA: Si ya existe un archivo con el mismo nombre, el software lo borrará y generará uno nuevo.

La planilla tendrá el formato “.csv” y tendrá la siguiente estructura:

Como se puede apreciar, el software crea una planilla con los parámetros utilizados para los cálculos (en

éste caso, los del modelo EOQ básico) y agrega los resultados obtenidos por el software.

Donde, “ Q ” y “ Costo Total ” son los resultados obtenidos en inventario y “ Q’ ” y “ Costo Total’ ” son los

valores optimizados mediante SA. “ Diferencia ” corresponde a la resta entre el costo total optimizado por

SA, menos el costo total obtenido al principio con Inventario. “ Variación % ” corresponde a la variación

entre la diferencia obtenida y el costo total obtenido en inventario, expresada en porcentaje.

En la fila posterior al último producto, el software incluye las sumas totales del “costo total” y del “costo

total’ “ (optimizado), la diferencia entre ambas sumatorias y la variación en porcentaje.

Page 134: Evaluación de la utilización de la metaheurística

122

ANEXO Y: Códigos utilizados para la programación del software.

A continuación, se presentan los códigos más importantes utilizados en la programación del software:

Códigos para clase Producto (Java Class):

public int CalcularQ(){ cantidadAPedir=

(int)Math.sqrt((2*(demanda-cantidadDisponible)*costoPedido)/costoAlmacenamiento)+1;

return cantidadAPedir;}

public int CalcularQFaltantes(){ cantidadAPedirFaltantes=

cantidadAPedir * (int)Math.sqrt((costoAlmacenamiento+costoFaltantes)/costoFaltantes);

return cantidadAPedirFaltantes;}

public int CalcularQProduccion(){ if(produccionDiaria == 0){ cantidadAPedirProduccion=

(int)Math.sqrt((2*(demanda-cantidadDisponible)*costoPedido)/costoAlmacenamiento)+1;} else

cantidadAPedirProduccion = (int)Math.sqrt((2*(demanda-

cantidadDisponible)*costoPedido)/(costoAlmacenamiento*((produccionDiaria-

consumoDiario)/produccionDiaria)))+1; return cantidadAPedirProduccion;}

public int CalcularCostoTotalProducto(){ costoTotalProducto=

(int)(demanda*precio+(demanda/cantidadAPedir)*costoPedido+(cantidadAPedir/2)*costoAlmacenamiento

)+1; return costoTotalProducto;}

public int CalcularCostoTotalProductoFaltantes(){ costoTotalProductoFaltantes=

(int)(demanda*precio + (demanda/cantidadAPedirFaltantes)*costoPedido +

((cantidadAPedirFaltantes/2)*costoAlmacenamiento)*(int)Math.pow(cantidadAPedirFaltantes - faltantes,

2) + (int)Math.pow(costoFaltantes*faltantes,2)/(demanda*2))+1;

return costoTotalProductoFaltantes;}

public int CalcularCostoTotalProductoProduccion(){ costoTotalProductoProduccion=

(int)(demanda*precio+(demanda/cantidadAPedirProduccion)*costoPedido+(cantidadAPedirProduccion/2)*

costoAlmacenamiento)+1; return costoTotalProductoProduccion;}

public void setCategoria(double cat){ if(cat <= 75.0){categoria = "A";}

else if(cat <= 95.0){categoria = "B";}

Page 135: Evaluación de la utilización de la metaheurística

123

else categoria = "C";}

Códigos para clase Recocido (Java Class):

public int CostoTotalInicial(){ costoTotalInicial =

(int)(prod.getDemanda()*prod.getPrecio()+(prod.getDemanda()/solucionInicial)*prod.getCostoPedido()+(s

olucionInicial/2)*prod.getCostoAlmacenamiento())+1; return costoTotalInicial;}

public int CostoTotalNuevo(){ costoTotalNuevo =

(int)(prod.getDemanda()*prod.getPrecio()+(prod.getDemanda()/solucionNueva)*prod.getCostoPedido()+(s

olucionNueva/2)*prod.getCostoAlmacenamiento())+1; return costoTotalNuevo;}

public int CostoTotalInicialFaltantes(){ costoTotalInicialFaltantes =

(int)(prod.getDemanda()*prod.getPrecio() + (prod.getDemanda()/solucionInicial)*prod.getCostoPedido() +

((solucionInicial/2)*prod.getCostoAlmacenamiento())*(int)Math.pow(solucionInicial - prod.getFaltantes(), 2)

+ (int)Math.pow(prod.getCostoFaltantes()*prod.getFaltantes(),2)/(2*prod.getDemanda()))+1;

return costoTotalInicialFaltantes;}

public int CostoTotalNuevoFaltantes(){ costoTotalNuevoFaltantes =

(int)(prod.getDemanda()*prod.getPrecio() + (prod.getDemanda()/solucionNueva)*prod.getCostoPedido() +

((solucionNueva/2)*prod.getCostoAlmacenamiento())*(int)Math.pow(solucionNueva - prod.getFaltantes(),

2) + (int)Math.pow(prod.getCostoFaltantes()*prod.getFaltantes(),2)/(2*prod.getDemanda()))+1;

return costoTotalNuevoFaltantes;}

Códigos para clase ventana (JPanel Form):

Botón inventario;

//Cálculo de Q y costo total para modelo EOQ básico

if(basico.isSelected()){

for(int i=dtm.getRowCount()-1;i>=0;i--){

datos[10]= prod_importado.get(i).CalcularQ();

dtm.setValueAt(datos[10], i, 10);

Page 136: Evaluación de la utilización de la metaheurística

124

datos[11]= prod_importado.get(i).CalcularCostoTotalProducto();

dtm.setValueAt(datos[11], i, 11);} }

Botón ordenar;

//Ordenar de mayor a menor para modelo EOQ básico según criterio costo producto (costo total)

//Se aplica cada criterio para los 3 tipos de modelo EOQ

if(opcion1.isSelected()){Collections.sort(prod_importado, new Comparator<Producto>() {

@Override

public int compare(Producto p1, Producto p2) {

return new Integer(p2.getCostoProducto()).compareTo(p1.getCostoProducto());} });

//Categorización para modelo EOQ básico según costo total

//Se aplica cada criterio para los 3 tipos de modelo EOQ

for(int i= 0;i < dtm.getRowCount();i++){

double porcentaje;

porcentaje = (prod_importado.get(i).getCostoProducto()/costoTotal)*100;

cat+=porcentaje;

prod_importado.get(i).setCategoria(cat);

datos[12]= prod_importado.get(i).getCategoria();

dtm.setValueAt(datos[12], i, 12); }

Botón Simulated Annealing;

//Creación de conjunto de posibles soluciones para modelo EOQ básico para el caso de productos Q=1

//Se aplica para los 3 tipos de modelo EOQ y los casos (switch) son 10 más el default

if(basico.isSelected()){

Page 137: Evaluación de la utilización de la metaheurística

125

for(int i= 0;i < dtm.getRowCount();i++){

int solucion = prod_importado.get(i).getCantidadQ();

int [] soluciones;

switch(solucion){

case 1:

soluciones= new int[11];

for(int j=1; j<=10; j++) { soluciones[0]= solucion; soluciones[j]= solucion+j; }

algoritmo = new Recocido();

algoritmo.setSolucionInicial(soluciones[0]);

algoritmo.setSolucionNueva(soluciones[1]);

algoritmo.setProducto(prod_importado.get(i));

algoritmo.setTemperatura(algoritmo.TemperaturaMaxima());

if(rs.equals(algoritmo) == false){

rs.add(algoritmo);} break;

//Aplicación Simulated Annealing para modelo EOQ básico

//Se aplica la metodología para los 3 tipos de modelo EOQ

double temp = rs.get(i).TemperaturaMaxima();

rs.get(i).Alfa(); int iteraciones = 0; int contador = 0;

for(double t = temp; t>=100; t = rs.get(i).getTemperatura()*rs.get(i).getAlfa()){

rs.get(i).setTemperatura(t);

int xo; int xn; int variacion;

double boltzmann; double r;

for(int k=0; k<soluciones.length; k++){

Page 138: Evaluación de la utilización de la metaheurística

126

xo = rs.get(i).getSolucionInicial(); xn = soluciones[k];

rs.get(i).setSolucionNueva(xn);

variacion = rs.get(i).CostoTotalNuevo() - rs.get(i).CostoTotalInicial();

boltzmann = Math.exp(-(rs.get(i).CostoTotalNuevo() - rs.get(i).CostoTotalInicial())/t);

r = Math.random(); iteraciones++;

if(variacion < 0){

xo = xn; rs.get(i).setSolucionInicial(xn);

contador++;}

else if(variacion < 0 || boltzmann > r){

xo = xn; rs.get(i).setSolucionInicial(xn);

contador++; } } }