Algoritmo Genético para solucionar problemas de Inventarios en Pymes

Genetic Algorithm to solve Inventory problems in SMEs

Steven Castillo-Ponce

María Lino-Cevallos

Clelia Sánchez-Suango  


Algoritmo Genético para solucionar problemas de Inventarios en Pymes

 

Genetic Algorithm to solve Inventory problems in SMEs

 

Steven Castillo-Ponce[1], María Lino-Cevallos[2], y Clelia Sánchez-Suango[3]

 

Como citar:  Castillo-Ponce, S., Lino Cevallos, M., & Sánchez Suango, C. (2019). Algoritmo Genético para solucionar problemas de Inventarios en Pymes. Investigación, Tecnología e Innovación, 11(11), 12–24.

https://doi.org/10.53591/iti.v11i11.87

RESUMEN

Este estudio tiene como objetivo minimizar los costos de las ventas de la tienda “Candies” debido a la acumulación de los productos en stock. Esta problemática se da a partir de la realización de pedidos quincenales constantes por cantidades fijas, sin tomar en cuenta la variabilidad de la demanda. Se plantea entonces la alternativa de implementar un Algoritmo Genético (GA) en Microsoft Excel mediante Visual Basic para Aplicaciones y Macros para realizar una proyección correspondiente al inventario del año 2020, en el que se determine la cantidad de unidades por las que debe hacerse cada reabastecimiento. Para la aplicación del algoritmo se toman los datos históricos de la demanda de los tres años anteriores: 2017, 2018 y 2019; cabe mencionar que se aplica simulación de Montecarlo para generar los datos del segundo semestre del año 2019. Como resultado se obtuvo una reducción de aproximadamente 100 productos y más menos $70 dólares con respecto a los años anteriores, lo que significa un aumento del 18% en los beneficios anuales de los productos. En conclusión, la proyección generada con el algoritmo genético provee una reducción significativa de los costos de ventas, ya que reduce la cantidad de productos que usualmente se desperdician dada su caducidad antes de ser despachados. Automatizar la implantación del AG mediante Macros y Visual Basic reduce los tiempos de ejecución y el esfuerzo computacional.

Palabras clave: Simulación de Montecarlo, Algoritmo Genético, Optimización de inventarios, Proyección de inventario.

ABSTRACT

The objective of this study is to minimize the costs of the sales of the “Candies” store due to the accumulation of products in stock. This problem arises from the realization of constant fortnightly orders for fixed quantities, without taking into account the variability of demand. The alternative is then proposed to implement a Genetic Algorithm (GA) in Microsoft Excel using Visual Basic for Applications and Macros to carry out a projection corresponding to the inventory of the year 2020, in which the number of units for which each replenishment must be made is determined. . For the application of the algorithm, the historical data of the demand of the previous three years are taken: 2017, 2018 and 2019; It is worth mentioning that Monte Carlo simulation is applied to generate the data for the second semester of 2019. As a result, a reduction of approximately 100 products and more than $ 70 dollars was obtained with respect to previous years, which means an increase of 18% in the annual benefits of the products. In conclusion, the projection generated with the genetic algorithm provides a significant reduction in sales costs, since it reduces the amount of products that are usually wasted given their expiration before being dispatched. Automating AG deployment using Macros and Visual Basic reduces execution times and computational effort.

Keywords: Monte Carlo Simulation, Genetic Algorithm, Inventory Optimization, Inventory Projection.

Fecha de recepción: Septiembre 3, 2019.

Fecha de aceptación: Octubre 21, 2019.

INTRODUCCIÓN

En la actualidad, en el sector empresarial existe la necesidad de ser cada día más competitivos, lo que obliga a las organizaciones a analizar sus procesos para obtener una mejor calidad en sus productos, lo que le permite cumplir con las necesidades y expectativas de los clientes (Sánchez, Ceballos, & Sánchez, 2015). La importancia de este proyecto radica en reducir los costos de la tienda “Candies” y de esa manera aumentar los beneficios económicos. El problema surge porque cierta cantidad de productos se caducan por la acumulación en stock, esto debido a que la tienda realiza pedidos constantes cada 15 días por cantidades fijas sin tomar en cuenta la variabilidad de la demanda. Con la intención de solventar estas pérdidas, con la aplicación de métodos de optimización para el inventario se  prevén mayores beneficios, ya que se espera todos los productos sean despachados antes de superar su tiempo máximos de consumo.

Trabajos Relacionados

Soria y Mamani (2014) presentaron una investigación con el objetivo desarrollar un modelo analítico de abastecimiento de medicamentos basado en redes neuronales artificiales que optimiza el inventario de la Clínica Ricardo Palma. La unidad de análisis fue el volumen de venta semanal de medicamentos de los años 2005 al 2009. Los resultados afirman que el modelo de red neuronal artificial concurrente tiene mayor precisión en el pronóstico frente a los modelos estadísticos, series de tiempo y regresión lineal, lo cual permite planificar las compras de medicamentos y reducir el costo total. Sin embargo, el alto volumen de medicamentos que manejan estos inventarios implica una gran cantidad de variables asociadas a costos de almacenaje, transporte, distribución entre otras; volviendo el análisis demasiado complejo. En contraste, este trabajo enfoca su análisis únicamente a determinar la cantidad optima de cada reabastecimiento, alcanzado de eso modo mayor precisión en esta variable.

Ramírez (2010) aplica la técnica de simulación Montecarlo para la toma de decisiones en un sistema dinámico de inventarios para una Refaccionaria. En la metodología se analizaron los valores del punto de pedido y la cantidad pedida para la predicción de la demanda semanal. Los resultados recomiendan disminuir el punto de pedido R a cuatro y la cantidad pedida Q a siete juegos completos de amortiguadores semanalmente. Sin embargo, al no tomarse en cuenta los costos de los amortiguadores no se puede prever los beneficios monetarios alcanzados con la optimización, que generalmente es uno de los principales objetivos de la gestión de inventarios. A diferencia de lo anterior, este proyecto toma en cuenta los precios de cada producto al momento de hacer el pedido, así como al realizar las ventas, proveyendo el margen de utilidad que se alcanza con la optimización.

Chamorro et al. (2018) abordan la evaluación de la política de inventarios máximos y mínimos en una empresa de distribución farmacéutica. Se utiliza el producto con mayor nivel de ventas de la empresa para evaluar la política mediante las técnicas búsqueda tabú y búsqueda dispersa, bajo los indicadores de nivel de servicio y rotación de inventarios. Los resultados indican que la política puede ser utilizada en un sistema de una bodega y N puntos de venta, lo que garantiza un alto nivel de servicio, pero presenta oportunidades de mejora en términos de la rotación de inventarios. En adición, con la aplicación del Algoritmo Genético es posible pronosticar la demanda y de acuerdo a ello ajustar las cantidades compradas, de modo que las existencias de seguridad puedan disminuirse sin aumentar las situaciones de faltas de existencias.

Valencia y Cáceres (2011) presentan un modelo basado en un Algoritmo Genético (AG) para optimizar la gestión de inventarios en las cadenas de suministros y minimizar el Efecto Bullwhip. Para esto, fueron considerados los costos de depósito, distribución y costo individual de los elementos que serán pedidos. Adicionalmente, fue utilizado el modelo de coeficientes BMN para generar la función de evaluación de los cromosomas escogidos por el AG. No obstante, la mezcla con coeficientes BMN para inventarios no presento ningún resultado. Debido a ello este estudio utiliza la distribución de probabilidad normal para determinar la función de evaluación de los cromosomas para el algoritmo, misma que es determinada mediante Stat-Fit en base a los datos históricos de inventario de los años 2017, 2018 y 2019.

Guerrero et al. (2016) presentaron la comparación de tres Metaheurísticas: Colonia de Hormigas, Algoritmo Genético, y Programación Evolutiva. Los tres algoritmos fueron implementados en el software R, para una empresa de confecciones, evaluando el comportamiento de los parámetros, tiempo de cálculo y la calidad en las soluciones. Los resultados experimentales muestran que cada algoritmo obtiene adecuadas soluciones y tiene más rapidez computacional de acuerdo al problema analizado. Lo anterior demuestra la viabilidad del software R como leguaje enfocado a los análisis estadísticos. Sin embargo, manejar R con cierta soltura significará muchas horas de estudio y de programación, al contrario, Excel requiere menos tiempo para llegar a manejar gran parte de sus funcionalidades, por consiguiente, resulta más fácil la implementación del AG.

Escobar et al. (2017) propusieron una política de inventario con stock de seguridad para un modelo probabilístico que maximizó la utilidad diaria esperada en compañías comercializadoras de pescado. Se propone una metodología basada en Simulación Montecarlo para evaluar la aplicabilidad y efectividad de un modelo considerando la variabilidad de la demanda y del tiempo total de ciclo.  Se logró determinar la demanda en kg de producto, la venta real en kg de producto y la utilidad promedio diaria, respectivamente. Sin embargo, este procedimiento se tornó tedioso y extenso debido a que la simulación se hizo de forma manual. Por ello el presente trabajo propone la utilización de Macros y Visual Basic para automatizar y por ende agilizar la simulación de Montecarlo, así como para la implementación del Algoritmo Genético.

MATERIALES Y MÉTODOS

En la metodología del presente trabajo se incluyen conceptos de los materiales y métodos necesarios para comprender la implementación de un Algoritmo Genético (AG) para proyectar la demanda esperada del año 2020 en base a los datos históricos de los años: 2017, 2018 y 2019 del inventario de la tienda Candies, con respecto a tres productos: leche, yogurt y huevos. Dado que la investigación se lleva a cabo en el mes de julio del último año, es necesario simular el segundo semestre del inventario de dicho año. Para este fin se emplea la simulación de Montecarlo, basado en la función de distribución de probabilidad que es definida mediante Stat-Fit.

Inventario

El inventario hace referencia a las mercancías (materiales y suministros) existentes que una empresa o institución, ya sea para vender o para abastecer al proceso productivo (Mendoza Torres, Guerra Quintero, & Sanchez Garcia, 2015) (Grass Guaqueta, 2016) (Cevallos Torres, Guijarro Rodríguez, García Arias, Chávez, & Cisneros, 2017). Se han formulado muchos modelos cuantitativos para inventarios distinguiéndose dos grandes tipos: los determinísticos, donde se conoce la demanda del artículo que se almacena con certeza; y los estocásticos, que incorporan la incertidumbre y la demanda se describe mediante alguna distribución de probabilidad (García , 2018). Se considera el inventario probabilístico ya que las ventas en la tienda Candies no son fijas.

Modelo matemático del inventario EOQ

La teoría de la Cantidad Económica de Pedido (EOQ) determina la cantidad optima de artículos que se debe adquirir con el objetivo de minimizar los costes por tenencia de inventario y por efectuar pedidos (Soria Quijaite & Mamani Apaza, 2014). El comportamiento de este modelo se indica en la Fig. 1.

Modelo matemático del inventario

La determinación de la cantidad de pedido óptima (1) y el número de periodos (2), se detalla en las ecuaciones indicadas, así también se indican los parámetros para cada una a continuación:

(1)

 

(2)

Parámetros:

·       D: Demanda

·       Co: Costo de pedido

·       Cc: Costo de Mantenimiento

·       N: Número de pedidos

·       Q: Cantidad de pedido optimo

 

Herramientas Software

Excel

Se trata de un software que permite realizar tareas contables y financieras gracias a las funciones que implementa, desarrolladas específicamente para ayudar a crear y trabajar con hojas de cálculo (Office 365, 2019). Esta herramienta es seleccionada por su versatilidad y debido a que sus funcionalidades proveen el soporte que requiere el manejo de inventarios, así como implementaciones de métodos estadísticos y metaherísticos.

Macros

Una macro es una serie de instrucciones que se almacena en Excel para que se puedan ejecutar de forma secuencial mediante una sola llamada u orden de ejecución (Acosta Vargas & Acosta Hurtado, 2015). Con la macro los que se pretende es automatizar varias tareas y fusionarlas en un botón, y que al pulsar sobre él realice todas esas tareas.

En el contexto de Excel, constituye una herramienta de programación que nos permite usar código Visual Basic adaptado para interactuar con las múltiples facetas de Excel y personalizar las aplicaciones que hagamos en esta hoja electrónica (Mora & Espinoza, 2005). Mediante formularios se crean los menús, los módulos en conjunto con las macros ejecutan el AG implementado.

 

Visual Basic para Aplicaciones (VBA)

La herramienta Stat-Fit de Promodel, que toma datos sin procesar de hojas de cálculo, archivos de texto o entrada manual y con esa información determina la distribución de probabilidad adecuada para la entrada (Promodel, 2019). Directamente desde Stat-Fit se importan los datos de los tres productos en cuestión, es importante mencionar que el mínimo de datos que se deben ingresar para que este software genere un resultado son 11.

Stat-Fit de Promodel

Una vez cargados los datos se selecciona la opción de autofit y el programa presenta las posibles distribuciones a las que se ajusta el comportamiento de los datos y la representación gráfica de cada una, para este caso la que mejor se ajusta es la distribución de probabilidad normal. Además, provee datos adicionales, de los cuales se toman la media y la desviación estándar de acuerdo  Cevallos y Botto (2019), ya que se son parámetros que se requieren para la función de la distribución ya mencionada. En la figura 2 se evidencia la ejecución de Stat-Fit y los resultados arrojados.

Distribución de Probabilidad Normal

Una vez cargados los datos se selecciona la opción de autofit y el programa presenta las posibles distribuciones a las que se ajusta el comportamiento de los datos y la representación gráfica de cada una, para este caso la que mejor se ajusta es la distribución de probabilidad normal. Además, provee datos adicionales, de los cuales se toman la media y la desviación estándar de acuerdo  Cevallos y Botto (2019), ya que se son parámetros que se requieren para la función de la distribución ya mencionada. En la figura 2 se evidencia la ejecución de Stat-Fit y los resultados arrojados.

 

Figura. 3. Distribución de Probabilidad y Gráfica de densidad de la distribución normal generada por Stat-Fit.

Simulación de Montecarlo

La Simulación Montecarlo agrupa una serie de procedimientos que analizan distribuciones de variables aleatorias usando simulación de números aleatorios (Cevallos Torres & Botto Tobar, 2019) (UNBA, 2005). Este método da solución a una gran variedad de problemas matemáticos haciendo experimentos con muestreos estadísticos en una computadora basados en la aleatoriedad (Cevallos Torres & Botto Tobar, 2019) y es aplicable a cualquier tipo de problema, ya sea estocástico o determinístico.

Modelo matemático de Montecarlo de la Distribución Normal

La distribución de normal es un tipo de probabilidad del tipo de variable cuantitativa de acuerdo a Cevallos (2019). Por ejemplo, se aplica a una distribución del nivel de colesterol en una muestra de 100 personas (Romero Saldaña, 2016).  La importancia de la distribución normal radica en que es la distribución límite de numerosas variables aleatorias, discretas y continuas (Epidat, 2014). Debido a que esta distribución es un caso especial no es posible calcular la función acumulada F(x), por lo tanto, se aplica la fórmula del Teorema limite central para n valores, descrita en la ecuación (3).

(3)

Así mismo se definen las fórmulas para la media, la desviación estándar y el nivel de confianza se indican en las ecuaciones (4), (5) y (6).

(4)

(5)

(6)

Parámetros:

Los autores se apoyan en los datos histórico reales de los años 2017, 2018 y primer semestre del 2019; ya las formulas presentada en las ecuaciones (3-6) para desarrollar el Algoritmo 1, que se implementa mediante Excel, Visual Basic y Macros para la simulación del segundo semestre del año en cuestión.

Algoritmo 1. Simulación por Montecarlo del segundo semestre del año 2019.

Algoritmo de Simulación de Montecarlo

Start

Initialize mean = 0, deviation = 0;

Read media;

Read deviation;

For i = 1 to 550 with increment of 1

Prodem = Prodem + <element>;

End for;

Prodem = Prodem / 30;

If initial_ inventory <40 then

Initial_Inventory = initial_Inventory + 100;

End yes

Fin

Algoritmo Genético

Los Algoritmos Genéticos trabajan con una población de individuos, cada uno de los cuales representa una solución factible a un problema dado. A cada individuo se le asigna un valor o puntuación, relacionado con la bondad de dicha solución (Fernández Henao & Soto Mejía, 2011). Se aprovecha la característica del algoritmo de que mientras mayor sea la adaptación de un individuo al problema, mayor será la probabilidad de que el mismo sea seleccionado para reproducirse, cruzando su material genético con otro individuo seleccionado de igual forma. En el Algoritmo 2 se presenta el pseudocódigo planteado para la proyección de la demanda del inventario.

 

Algoritmo 2. Pseudocódigo del Algoritmo Genético que realiza la proyección de inventario para las compras del año 2020.

Algoritmo Genético

Algorithm algorithm_genetic

Define product_ demand as integer

Product_ demand dimension [360]

For i ← 1 to 360

                  product_ demand [i] ← Range (“Cell” and (i + 2))

end

for i ← 2 to 361

                  Range("Cell1" and (i)). Value ← i-1

                  Range("Cell2" and (i)). Value ← product_ demand [i-1]

                  Range("Cell3" and (i)). Value ← decimal_to_binary (Range ("Cell2" and (i)). Value)

End

Run_function

define tfin, limite, switch

                  define tpermt cas variant

                  Define nombre  as a integer

                  nombre dimension [360]

                  tFin ← 360 \ 2

                  While tFin > 0 Do

                                    Limite ← 360 - tFin

                                    Do

                                                      Switch ←False

                                                      For i = 1 To Limite

                                                      If Nombre[i] < Nombre[i + tFin] Then

                                                                                          tPermt ← Nombre[i]

                                                                                          Nombre[i] ←Nombre[i + tFin]

                                                                                          Nombre[i + tFin] ← tPermt

                                                                                          Switch ← i

                                                                        End If

                                                      end

                                                      Limite ← Switch

                                    Loop While Switch

                                    tFin ←tFin \ 2

                  Loop

Crossovers

define i, corte As Integer

   defineTemp1, Temp2, Padre1, Padre2, PrePadre1, PrePadre2 As String

   define Cadena1, Cadena2 As String

      For i ←2 To 360 Step 2

         corte ← Int(Rnd() * (8 - 1) + 1)

         Range(“Cell12”&i) ←corte        

         Cadena1 ←"00000000"

         Cadena2 ← "00000000”

         Temp1 ← .Range(“Cell10”&i).value

         Temp2 ←Range(“Cell10”&(i+1)).value            

         Mid(Cadena1, 9 - Len(Temp1)) ← Temp1

         Mid(Cadena2, 9 - Len(Temp2)) ← Temp2        

         Padre1 ← Cadena1 

         Padre2 ← Cadena2 

         PrePadre1 ←Cadena1  'Padre Temporal 1

         PrePadre2 ← Cadena2        

         Mid(Padre1, 9 - corte) ← Mid(PrePadre2, 9 - corte, corte)

         Mid(Padre2, 9 - corte) ← Mid(PrePadre1, 9 - corte, corte)        

         Range(“Cell11”&i).value ← Padre1

         Range(“Cell11”&(i+1)).value ← Padre2        

      end

Mutations

For j = 2 to 361

                  Sheet.Range ("Cell" & (j + 7)) .value = Sheet.Range ("Cell" & j) .value

end

End algorithm

 

Algoritmo 2. Pseudocódigo del Algoritmo Genético que realiza la proyección de inventario para las compras del año 2020.

Algoritmo Genético

Algorithm algorithm_genetic

Define product_ demand as integer

Product_ demand dimension [360]

For i ← 1 to 360

                  product_ demand [i] ← Range (“Cell” and (i + 2))

end

for i ← 2 to 361

                  Range("Cell1" and (i)). Value ← i-1

                  Range("Cell2" and (i)). Value ← product_ demand [i-1]

                  Range("Cell3" and (i)). Value ← decimal_to_binary (Range ("Cell2" and (i)). Value)

End

Run_function

define tfin, limite, switch

                  define tpermt cas variant

                  Define nombre  as a integer

                  nombre dimension [360]

                  tFin ← 360 \ 2

                  While tFin > 0 Do

                                    Limite ← 360 - tFin

                                    Do

                                                      Switch ←False

                                                      For i = 1 To Limite

                                                      If Nombre[i] < Nombre[i + tFin] Then

                                                                                          tPermt ← Nombre[i]

                                                                                          Nombre[i] ←Nombre[i + tFin]

                                                                                          Nombre[i + tFin] ← tPermt

                                                                                          Switch ← i

                                                                        End If

                                                      end

                                                      Limite ← Switch

                                    Loop While Switch

                                    tFin ←tFin \ 2

                  Loop

Crossovers

define i, corte As Integer

   defineTemp1, Temp2, Padre1, Padre2, PrePadre1, PrePadre2 As String

   define Cadena1, Cadena2 As String

      For i ←2 To 360 Step 2

         corte ← Int(Rnd() * (8 - 1) + 1)

         Range(“Cell12”&i) ←corte       

         Cadena1 ←"00000000"

         Cadena2 ← "00000000”

         Temp1 ← .Range(“Cell10”&i).value

         Temp2 ←Range(“Cell10”&(i+1)).value            

         Mid(Cadena1, 9 - Len(Temp1)) ← Temp1

         Mid(Cadena2, 9 - Len(Temp2)) ← Temp2       

         Padre1 ← Cadena1 

         Padre2 ← Cadena2 

         PrePadre1 ←Cadena1  'Padre Temporal 1

         PrePadre2 ← Cadena2        

         Mid(Padre1, 9 - corte) ← Mid(PrePadre2, 9 - corte, corte)

         Mid(Padre2, 9 - corte) ← Mid(PrePadre1, 9 - corte, corte)        

         Range(“Cell11”&i).value ← Padre1

         Range(“Cell11”&(i+1)).value ← Padre2        

      end

Mutations

For j = 2 to 361

                  Sheet.Range ("Cell" & (j + 7)) .value = Sheet.Range ("Cell" & j) .value

end

End algorithm

 

Caso de Estudio

Antecedentes

La administración actual del inventario de la tienda “Candies”, lleva un manejo empírico, donde los pedidos se hacen manteniendo una dinámica que consiste en pedidos constantes realizados cada 15 días por una cantidad fija de unidades, aun cuando la mercancía se quede acumulada. Sin embargo, la demanda es variable, lo que genera gastos por los productos que excedan su tiempo de consumo antes de ser despachados generando pérdidas económicas.

Recopilación de datos:  de Variables del Estudio

Este caso de estudio toma como referencia el inventario de tres productos para el análisis, tratamiento y posterior optimización. Los precios unitarios de compra y venta de cada uno de los productos, así como la ganancia se indican en la Tabla 1.

Tabla 1. Relación costo-beneficio de los productos evaluados de la tienda "Candies".

Producto

Leche

Yogourt

Huevos

Precio compra

$0,75

$1,00

$0,8

Precio venta

$1,00

$1,25

$1

Ganancia por unidad

$0,25

$0,25

$0,2

Se hace un análisis de los datos históricos reales de la tienda, respecto a la cantidad de unidades de inventario, unidades despachadas y unidades sobrantes; y los valores monetarios de las ventas, las pérdidas de los productos desperdiciados y la ganancia. En las Tablas 2, 3 y 4 se muestra un resumen anual del 2017 al 2019 de cada uno de los productos, permitiendo revisar y contrastar la variación de las pérdidas de un año a otro.

Tabla 2. Resumen anual del inventario del producto Leche con cantidad de unidades y valores monetarios.

Producto: Leche (litro)

Año

Cantidad

Valor en $

Inventario

Demanda

Sobrante

Costo

Ventas

Perdida

Ganancia

2017

3750

3584

166

 $    2.812,50

 $    3.584,00

 $       124,50

 $       771,50

2018

3766

3575

191

 $    2.824,50

 $    3.575,00

 $       143,25

 $       750,50

2019

3791

3609

182

 $    2.843,25

 $    3.609,00

 $       136,50

 $       765,75

Tabla 3. Resumen anual del inventario del producto Yogurt con cantidad de unidades y valores monetarios.

Producto: Yogurt (litro)

Año

Cantidad

Valor en $

Inventario

Demanda

Sobrante

Costo

Ventas

Perdida

Ganancia

2017

3750

3585

165

 $    3.750,00

 $    4.481,25

 $       165,00

 $       731,25

2018

3765

3597

168

 $    3.765,00

 $    4.496,25

 $       168,00

 $       731,25

2019

3768

3594

174

 $    3.768,00

 $    4.492,50

 $       174,00

 $       724,50

Tabla 4. Resumen anual del inventario del producto Huevos con cantidad de unidades y valores monetarios.

Producto: Huevos (unidad)

Año

Cantidad

Valor en $

Inventario

Demanda

Sobrante

Costo

Ventas

Perdida

Ganancia

2017

3750

3567

183

 $    3.000,00

 $    3.567,00

 $       146,40

 $       567,00

2018

3783

3596

187

 $    3.026,40

 $    3.596,00

 $       149,60

 $       569,60

2019

3787

3628

159

 $    3.029,60

 $    3.628,00

 $       127,20

 $       598,40

 

Función Objetivo

La función objetivo que se emplea para el Algoritmo Genético corresponde a la siguiente ecuación:

(7)

 

 

Variables de decisión:

La demanda esperada para el año 2020 de cada uno de los productos representa una variable de decisión, están son las que varían hacia valores más óptimos. Cada una está multiplicado por su respectivo precio de venta, mismos que se detallan en la Tabla 1

·       : leche

·       : yogurt

·       : huevos

 

Restricciones

Las restricciones para cada producto definen un intervalo, donde el máximo es la demanda anual proyecta por el algoritmo y el mínimo se obtiene restando los sobrantes de cada año a esa cantidad. Además, una restricción general indicando que ninguna demanda puede ser negativa y la suma de las demandas no debe superar la demanda definida por el algoritmo.

 

RESULTADOS Y DISCUSIÓN

Algoritmo Genético implementado en Excel

El algoritmo genético se implementa en Microsoft Excel mediante Visual Basic y Macros.  Se definen varias macros para reducir la complejidad del proceso, cada una destinada a cubrir una sección del algoritmo en cuestión.

La primera Macros es la encargada de generar la población inicial a partir de la mejor población seleccionada entre los tres años históricos, así se obtienen 360 individuos o cromosomas; es necesario llevar cada uno de los cromosomas de la población a binario, ya que el algoritmo trabaja bajo ese concepto.

Se define la función de evaluación para garantizar la convergencia del algoritmo y de acuerdo al tamaño de la población (número de cromosomas) se crea un ciclo reproductivo que consta de los siguientes pasos:

·       Se seleccionan dos individuos de la población anterior para realizar el cruce, los dos cromosomas se cruzan con cierta probabilidad y de ese modo se obtienen dos descendientes.

·       Se mutan los descendientes manejando también un grado de probabilidad para cada uno. Los individuos, resultado de la mutación, son expuestos a la función de evaluación donde se seleccionan a los mejores, y estos pasan a ser la población inicial de la siguiente generación.

·       Finalmente, cuando se hayan generado y evaluado la generación, el algoritmo se detendrá considerando que ha obtenido el resultado óptimo posible.

 

Demanda proyectada para el año 2020

Luego de la aplicación del Algoritmo Genético se determina la demanda diaria esperada para el año 2020, misma que permite inferir la cantidad que se requiere en cada pedido para satisfacer a los consumidores, reduciendo las perdidas por de los sobrantes caducados. En las Tablas 3 se muestra la simulación del producto Leche, donde se indica: la demanda, el valor de venta por dicha demanda, la cantidad de unidades compradas, el valor de la compra y finalmente se determina la ganancia esperada. Es importante mencionar que el mismo proceso se emplea para los otros dos productos.

 

Tabla 5. Proyección de inventario del producto Leche para el 2020.

Mes

Demanda

Valor ventas

Unidades pedidas

Valor compras

Ganancias

Enero

356

$356.00

200

$150.00

$206.00

Febrero

354

$354.00

400

$300.00

$54.00

Marzo

326

$326.00

300

$225.00

$101.00

Abril

336

$336.00

400

$300.00

$36.00

Mayo

328

$328.00

300

$225.00

$103.00

Junio

339

$339.00

300

$225.00

$114.00

Julio

360

$360.00

400

$300.00

$60.00

Agosto

358

$358.00

300

$225.00

$133.00

Septiembre

340

$340.00

400

$300.00

$40.00

Octubre

345

$345.00

300

$225.00

$120.00

Noviembre

329

$329.00

400

$300.00

$29.00

Diciembre

329

$329.00

300

$225.00

$104.00

Total

4100

4100

4000

$3,000.00            

$1,100.00

 

Comparación de los datos históricos con la proyección

Se puede indicar que el algoritmo genético es sumamente eficaz para optimización de inventarios, debido la cantidad de productos sobrantes se reduce considerablemente, en un aproximado de 100 unidades con respecto a los años anteriores, y por consiguiente disminuyen los costos, como se indica en la Tabla 4.

Tabla 6. Comparación de los sobrantes y costo al final de cada año para el producto Leche.

Año

sobrante

Costo

2020

82

$61,50

2019

182

$136,50

2018

191

$143,25

2017

166

$124,50

 

Si se contrasta el año 2019 por ejemplo con los resultados obtenidos para la proyección, se obtiene un aumento del 18 % en las ganancias anuales por el producto Leche, como se indica en la Tabla 7.

Tabla 7. Porcentaje de ganancias entre el año 2019 y el año 2020 del producto Leche.

2020

2019

% Beneficio

Venta

$4.100,00

 $    3.602,75

12%

Costo

$3.000,00

 $    2.700,00

10%

Ganancia

$1.100,00

 $       902,75

18%

Minimización de Costos con Solver

El inventario fue tratado mediante Solver para optimizar las cantidades de la demanda, consiguiendo de esa forma un resultado más óptimo.

Resumen del inventario de los tres productos para el 2020

Se toman en cuenta los totales de la demanda, el precio de venta, el valor monetario de la compra y las unidades sobrantes anules de los inventarios proyectados de los tres productos; dicha información se presenta en la Tabla 8.

Tabla 8. Resumen del inventario de los tres productos para el año 2020.

Demanda del año 2020

Producto

Demanda Anual

Precio Unidad

Valor Compra

Sobrantes

Leche

4100

0.75

$    3075

56

Yogourt

4016

1

$    4016

40

Huevo

4085

0.8

$    3268

-19

Total

12201

 

$    10359

 

 

Demanda optimizada con Solver

A través de Excel, activando el complemento Solver, se elabora una tabla que contendrá tanto los parámetros a optimizar: Cantidad del pedido, variables de decisión; así como los valores asociados que influyen sobre este, como el costo unitario, número de pedidos realizados en el año (cada 15 días). En la Tabla 9 se presentan los resultados de Solver en base a las restricciones que se especifican en el caso se estudio y los parámetros antes descritos. Se evidencia una reducción de $82 dólares anuales en los gastos mediante esta alternativa.

Tabla 9. Cantidad de pedido optimizada con Solver.

Producto

Costo

Cantidad en  pedido

Número de pedidos anuales

Total

X1

0.75

4044

24

 $    3,033.00

X2

1

3976

24

 $    3,976.00

X3

0.8

4085

24

 $    3,268.00

Totales

12105

72

 $ 10,277.00

 

CONCLUSIONES Y TRABAJOS FUTUROS

La proyección generada con el algoritmo genético provee una reducción significativa de los costos de ventas, ya que reduce la cantidad de productos que usualmente se desperdiciaban dada su caducidad antes de ser despachados. Es también importante mencionar que al ser los datos históricos la base del algoritmo, estos no deben estar sesgados si se quiere obtener una proyección realista.

Montecarlo, es un método muy potente para simular datos reales en base a una función de probabilidad, ya que al estar basada en aleatoriedad no sesga los datos. Es útil cuando los datos recolectados en las investigaciones resultan insuficientes o se quiere alcanzar un nivel más alto de precisión en el análisis realizado sobre los mismos.

Excel es una herramienta potente para realizar análisis estadísticos y simulación de Montecarlo dirigida a la optimización de inventarios, cuando se automatiza dichos procedimientos mediante Visual Basic y Macros se reducen los tiempos de espera y el esfuerzo computacional. Además, los resultados obtenidos son alcanza un mayor grado de optimización, lo que brinda mayores beneficios económicos para el negocio que lo aplica.

En trabajos futuros, el tema de investigación podría enfocarse en la búsqueda de escenarios alternativos de producción y la consideración de otros aspectos que se presentan en ambientes reales de mayor tamaño o para una mayor cantidad y/o variedad de productos. Así también, se pueden abordar la variabilidad en las etapas de producción y la dinámica de la demanda con el propósito de aumentar el campo de aplicación de este tipo de herramientas de optimización, generando un impacto en los ambientes que manejan inventarios y desarrollar propuestas de mejora en la productividad de los negocios.

De igual manera este mismo proyecto podría extender sus funcionalidades haciendo que el algoritmo no genere una única proyección, sino que se generen proyecciones de inventarios para varios años consecutivos.

 

 

 

REFERENCIAS BIBLIOGRÁFICAS

Barrera, V. Á. R., & Nieve, Á. E. R. (2010). Aplicación de simulación Monte Carlo en un sistema de Inventarios Dinámico. Administración y Organizaciones, 13(25), 53-64.

Batanero, C., Cañadas, G. R., Contreras, J. M., & Gea, M. M. (2015). La comprensión de las tablas de contingencia: una síntesis de la investigación didáctica. Boletín de Estadística e Investigación Operativa, 31(3), 299-315.

Cevallos-Torres, L., & Botto-Tobar, M. (2019). Case study: Probabilistic estimates in the application of inventory models for perishable products in SMEs. En Problem-Based Learning: A Didactic Strategy in the Teaching of System Simulation (pp. 123-132). Springer.

Corea, J. L. C., Camejo, J. E. D., Espinoza, O. D. F., & Gutiérrez, H. Y. L. (2018). Política de inventarios máximos y mínimos en cadenas de suministro multinivel. Caso de estudio: una empresa de distribución farmacéutica (Artículo Profesional). Nexo Revista Científica, 31(2), 144-156.

Escobar, J. W., Linfati, R., & Adarme Jaimes, W. (2017). Gestión de Inventarios para distribuidores de productos perecederos. Ingeniería y desarrollo, 35(1), 219-239.

Fernández Regalado, R. (2009). El teorema de Bayes y su utilización en la interpretación de las pruebas diagnósticas en el laboratorio clínico. Revista cubana de investigaciones biomédicas, 28(3), 158-165.

Gómez, P. S., & Soria, D. S. (2016). Concentración, dispersión y características sociodemográficas en la incorporación espacial de la migración peruana en la Ciudad de Córdoba, Argentina. Población y Salud en Mesoamérica, 14(1), 108-131.

Guerrero, M., Gómez, D., Zapata, D., & Cárdenas, M. V. (2016). Comparación de tres metaheurísticas para la optimización de inventarios con estimación de demanda. Revista Ingeniería Industrial, 15(1), 51-68.

Keck, M. E., & Sikkink, K. (2014). Activists beyond borders. Cornell University Press.

Mora, M. S. W., & Espinoza, M. S. J. L. (2005). Programación Visual Basic (VBA) para Excel y Análisis Numérico. Escuela de Matemática. Instituto Tecnológico de Costa Rica.

Niño, C. H. V., & others. (2011). Modelo de optimización en la gestión de inventarios mediante algoritmos genéticos. ITECKNE: Innovación e Investigación en Ingeniería, 8(2), 156-162.

Sanchez, P., Ceballos, Y. F., & Torres, G. S. (2015). Análisis del proceso productivo de una empresa de confecciones: modelación y simulación. Ciencia e Ingeniería Neogranadina, 25(2), 6.

Torres, L. C., Rodríguez, A. G., & Rivas, L. L. D. (2016). Factores que inciden en el mal uso de la información en trabajos de investigación cient{\’\i}fica. Didasc@ lia: Didáctica y Educación ISSN 2224-2643, 7(4), 57-74.

Valencia-Nunez, E. R., Melendez-Tamano, C. F., Valle-Alvarez, A. T., Paredes-Salinas, J. G., Salinas, C. F. P., & Cevallos-Torres, L. J. (2018). Virtual classrooms and their use, measured with a statistical technique: The case of the Technical University of Ambato—Ecuador. 2018 13th Iberian Conference on Information Systems and Technologies (CISTI), 1-6.

 



[1] Estudiante de la Carrera de Ingeniería en Sistemas Computacionales de la Universidad de Guayaquil, Ecuador. E-mail: steven.castillop@ug.edu.ec

[2] Consultora Independiente. E-mail: maria.linoc@gmail.com

[3] Investigador Asociado. E-mail: clelia.sanchezs@gmail.com

 

Creative Commons License

Esta obra está bajo una licencia internacional Creative Commons Atribución-NoComercial 4.0. Los autores mantienen los derechos sobre los artículos y por tanto son libres de compartir, copiar, distribuir, ejecutar y comunicar públicamente la obra.