La Técnica Enumerativa de Programación Dinámica en los Problemas de Producción e Inventario y los Algoritmos Genéticos AUTOR ING. MIGUEL JIMÉNEZ CARRIÓN M.Sc. Profesor Principal a DE, adscrito al Departamento Académico de Investigación de Operaciones de la Facultad de Ingeniería Industrial de la UNP Piura Perú mjimenezc@gmail.com mjimenezc@unp.edu.pe RESUMEN En este trabajo se ha implementado un algoritmo genético simple para dar respuesta al problema de cuánto y cuándo ordenar la producción de un determinado bien durante un horizonte de planeamiento, de tal manera que se minimicen los costos totales de producción e inventario teniendo en cuenta satisfacer la demanda en cada período, la capacidad de almacenamiento y la capacidad de producción. Así mismo el AG implementado permite obtener respuestas sobre la conveniencia de asumir costos por rentar almacenamiento extra. Los resultados del algoritmo son coincidentes con los proporcionados con la metodología tradicional de la programación dinámica en todas las pruebas efectuadas con la ventaja de obtener menores tiempos de respuesta y mejores resultados cuando se renta almacén extra. Palabras clave: Algoritmos genéticos, Producción e Inventario, Programación Dinámica. ABSTRACT In this work a genetic algorithm simple has been implemented to give answer to the problem of how much and when to order the production of a certain good during a planning horizon, in such a way that the total costs of production and inventory are diminished considering to satisfy the demand in every period, the capacity of storage and the capacity of production. Also the implemented AG allows to obtain answers on the convenience of assuming costs of renting extra storage. The results of the algorithm are coincident with the provided ones with the traditional methodology of the dynamic programming in all the tests conducted with the advantage to obtain minors response times and better results when extra rent warehouse. Key words: Genetic algorithms, Production and Inventory, Dynamic Programming. LA TÉCNICA ENUMERATIVA DE PROGRAMACIÓN DINÁMICA EN LOS PROBLEMAS DE PRODUCCIÓN E INVENTARIO Y LOS ALGORITMOS GENÉTICOS La técnica enumerativa de la programación dinámica permite resolver el problema de producción e inventario en un horizonte de planeamiento que pueden ser días, semanas, meses o años conocidos como períodos. Este problema consiste en determinar en que período y cuánto se debe producir para satisfacer una demanda conocida en cada uno de los períodos, sobre la base de los recursos disponibles como capacidad de producción y capacidad de almacenes; de manera que el costo total de producción y de mantener inventarios durante todo el horizonte de planeamiento sea mínimo. Sobre el particular el modelo que representa este problema asume una restricción muy fuerte y es que la solución no debe permitir pedidos pendientes y de hecho el software de corte académico que existe como QBS, WINQSB así está construido. 1
Sin embargo en la realidad podría darse el caso que una empresa teniendo claro que debe satisfacer las demandas, se permita producir de tal modo que se atienda la demanda del período y la cantidad a almacenar en el mismo período sea superior a la capacidad existente asumiendo costos adicionales por rentar almacenamiento extra; por otro lado la atención de pedidos durante un horizonte de planeamiento puede estar contractualmente especificados en la suscripción de un contrato de manera que la no atención de una unidad en un pedido de un período determinado sea penalizado con algún costo, pues bien, hasta qué punto el costo de penalización puede ser tolerado por la empresa que produce los bienes. Estas variantes del modelo de inventarios no han sido previstos en el software por lo tanto no se puede hacer seguimiento del comportamiento del costo total frente a diferentes cambios en los parámetros de estas dos variantes. Los algoritmos genéticos son una técnica inspirada en la evolución de la naturaleza y utilizada como un método efectivo en la búsqueda de soluciones con el agregado que permiten la incorporación de variables a ser consideradas en un problema, particularidad de los algoritmos genéticos que los hacen un método robusto, pues mediante los algoritmos genéticos se pueden controlar las variantes especificadas anteriormente en los problemas de producción e inventario. 1. SISTEMAS DE INVENTARIOS Según (Hax, 1984), un sistema de inventarios se puede definir como un conjunto coordinado de reglas y procedimientos que permiten tomar decisiones rutinarias acerca de cuándo y cuánto ordenar de cada ítem que se necesita en el proceso de manufactura o para satisfacer la demanda de los clientes, y que provee a los ejecutivos de la información necesaria para tomar esas decisiones efectivamente. El objetivo de la modelación de un problema de este tipo debería ser la minimización de los costos incurridos en el sistema de inventario, cumpliendo al mismo tiempo los niveles de servicio a clientes especificados por las políticas de la empresa. De acuerdo a sus funciones, los distintos tipos de inventario se pueden distinguir como inventarios de proceso, de ciclos, estacionales, por factores productivos, e inventarios de seguridad. Por otra parte, de acuerdo a los elementos presentes en la estructura de producción de una empresa y a la complejidad en la toma de decisiones relacionadas con la logística, (Hax, 1984), identifica los sistemas de inventario puro, sistemas de producción, inventario, y los sistemas de distribución inventario y producción, distribución e inventario. La Investigación Operativa ha desarrollado una gran variedad de modelos y algoritmos de optimización para enfrentar estos problemas de toma de decisiones. Una de la múltiples aplicaciones de la Programación Entera se tiene en los modelos de optimización en producción e inventario (modelos EOQ, EPQ, modelos dinámicos de producción e inventario, y otros). Para estos problemas son de interés tanto las metodologías de Programación Entera como las de Programación No Lineal como la Programación Dinámica. 2. PLANIFICACIÓN DE LAS POLÍTICAS DE INVENTARIOS En la mayoría de los negocios, los inventarios representan una inversión relativamente alta y producen efectos importantes sobre todas las funciones principales de la empresa. Cada función tiende a generar demandas de inventario diferentes y a menudo incongruentes: Ventas: Se necesitan inventarios elevados para hacer frente con rapidez a las exigencias del mercado. Producción: Se necesitan elevados inventarios de materias primas para garantizar la disponibilidad en las actividades de fabricación. Compras: las compras elevadas minimizan los costos por unidad y los gastos de compras en general. Financiación: los inventarios reducidos minimizan las necesidades de inversión y disminuyen los costos de mantener inventario. 2
Los propósitos de las políticas de inventarios deben ser: Planificar el nivel óptimo de inversión en inventarios. A través de control, mantener los niveles óptimos tan cerca como sea posible de lo planificado. Los niveles de inventario tienen que mantenerse entre dos extremos: un nivel excesivo que causa costos de operación, riesgos e inversión insostenibles, y un nivel inadecuado que tiene como resultado la imposibilidad de hacer frente rápidamente a las demandas tanto de ventas como de producción. 3. COSTOS DE LOS INVENTARIOS. A la hora de tomar cualquier decisión respecto al diseño del sistema de inventarios, es importante tener en cuenta que repercutirá en los costos de la empresa, estos costos que se desprenden son: a) Costos de almacenamiento Es una categoría amplia que incluye todos los costos que se derivan de la posesión por parte de la compañía de ciertos niveles de existencias. Los costos de las instalaciones de almacenamiento, el transporte, los seguros, los robos, las roturas, la obsolescencia o depreciación son algunos ejemplos en los cuales se encierra el costo general de almacenamiento. b) Costos de producción Se incurre en estos costos cada vez que se decide producir una unidad de producto, representa el costo unitario de producción. c) Costos de ordenar Se refiere a los costos de dirección y administrativos para preparar la orden de producción y es independiente de la cantidad producida (se incurre en este costo cada ves que la cantidad producida es mayor que cero.) d) Costos de escasez o penalización Son los costos que se incurren por no tener stock y se debe esperar hasta que estén los productos terminados. Se debe alcanzar una solución que equilibre los costos derivados de mantener niveles elevados de existencias en el almacén y los costos derivados de la falta de ellas. Ocurre penalización cuando no se atiende un pedido o la atención es parcial. e) Costo de sobrestock Se evalúa cuánto la cantidad producida menos la demanda vale tener un pedido por encima de la capacidad de almacenamiento, es decir inventario perdido por sobre sobreproducción. 4. LA PROGRAMACIÓN DINÁMICA La programación dinámica es un método para resolver ciertos problemas de programación matemática, cuya característica de estos problemas es que los modelos matemáticos que los representan son complejos y por tanto requieren mucho procesamiento de cómputo para encontrar su solución, por lo que esta metodología en su proceso de solución divide el problema en problemas más pequeños. Esta característica del problema en que es factible de dividirse en subproblemas es aprovechada por la programación dinámica para encontrar la solución. La forma de operar de la programación dinámica es tratar cada subproblema como una etapa e inicia el proceso de solución por etapas, en donde cada etapa del proceso resuelve un subproblema y al finalizar con todas las etapas, el problema es completamente resuelto. Entre una etapa y la siguiente existe una liga que permite el nexo entre etapas, esta liga se llama función recursiva. 5. IMPLEMENTACIÓN DEL ALGORITMO GENÉTICO El primer paso en el diseño de un algoritmo genético es el diseño del cromosoma que representa una posible solución del problema y para ello debe tenerse claro cuál es el problema a resolver, cuáles son las variables, las restricciones y las salidas esperadas. Como en este trabajo se debe minimizar los costos de producción e inventario, la función de calidad de cada individuo, debe estar en función de los diferentes costos que se incurren en producir y guardar en inventario, de manera que un individuo con buena calidad representará una solución con costos totales de producción e inventario bajos, por el contrario un individuo con costos totales altos será de mala calidad. Los parámetros de entrada al algoritmo genético son los costos descritos anteriormente y son conocidos, y la salida del algoritmo 3
debe ser la cantidad a producir en cada período, lo cual es una cantidad variable; por consiguiente la cadena cromosómica estará compuesto por genes que representan la cantidad a producir en cada período y el tamaño de cada gene en número de bits, será proporcional a la capacidad máxima de producción en cada período. La notación de los parámetros de entrada del problema son: H: Costos de mantener una unidad en inventario en un período determinado en unidades monetarias. Cf: Costo de ordenar en unidades monetarias CUP: Costo unitario de producción en unidades monetarias F: Costos de falta de stock o costo de penalización por unidad en unidades monetarias E: Costos de sobre stock por rentar almacén extra por unidad en unidades monetarias D: Demanda del producto en unidades CA: Capacidad de almacenamiento en unidades CP: Capacidad de Producción en unidades I : Inventario al inicio de cada período en unidades La notación de los parámetros de salida del problema Fitness: Calidad de cada individuo P: Nivel de producción en cada período en unidades, a partir de aquí se calcula la Calidad de cada individuo 6. FUNCIÓN DE CALIDAD (FITNESS) Ocurre que no siempre es posible obtener una función de calidad que incorpore todas las restricciones del problema tales como no exceder la capacidad de producción, capacidad de almacenamiento; por otro lado la cantidad de inventario que queda al final de cada período después de atender la demanda es variable pues depende del valor que tome cada gene (de cuánto se produce). Por esta razón para evaluar a cada individuo se ha implementado el siguiente segmento de seudocódigo el cual inicia el proceso de evaluación de los costos comenzando con el primer período y continúa hasta terminar con el último, en cada período se evalúa el costo incurrido y se actualiza el inventario al final del período, luego se suman todos los costos de los períodos para obtener el costo total luego calcula el Fitness obtenido a partir de la inversa del costo total Fitness = 1/(costo total de todos los períodos), conforme se muestra en seguida: En cada Período se calcula el Costo Si (I + P D) >= 0 Si (I + P D) <= CA Si P > 0 Costo = P x CUP + Cf + (P D + I) x H Si P = 0 Costo = (I D) x H Si (I + P D) > CA Si P > 0 Si P = 0 Costo = P x CUP + Cf + CA x H + (I + P D CA) x E Costo =CA x H + (I + P D CA) x E Si (I + P D) < 0 Si P > 0 Si P = 0 Costo = P x CUP + Cf + (D I P) x F Costo = (D I P) x F Si (I + P) >= 0 I = I + P D Si (I + P) < 0 I = 0 Repetir hasta terminar con todos los períodos Costo total = Suma de todos los costos de cada Período Calidad o Fitness = 1 / (Costo total) 4
La figura No 1, es un ejemplo de un individuo cuyo cromosoma representa el nivel de producción durante los meses de enero a junio, en el cual se puede observar por el tamaño de los genes, que la capacidad máxima disponible de producción en los meses indicados es variable tales como: 6, 9, 7, 6, 8 y 5 unidades, para los meses de enero a junio respectivamente. enero febrero marzo abril mayo junio 101 1111 111 111 1101 111 Figura No 1: Cromosoma Esta cadena cromosómica cuyo tamaño es de 20 bits contiene, después de decodificarla, la siguiente solución: Producir en enero 4 unidades, en febrero 9 unidades, en marzo 7 unidades, abril 6 unidades, mayo 5 unidades y en el mes de junio 5 unidades, si un gene tiene todos los bits cero 0, significa que en ese período no se produce ninguna unidad. Estos niveles de producción permiten evaluar la calidad del individuo puesto que a partir de ellos se determina el costo total de todos los períodos. 7. PROCESO DE OPERACIÓN DEL ALGORITMO Después de definir la estructura del cromosoma como se explicó anteriormente, el siguiente paso es la generación de una población inicial de individuos en forma aleatoria calculándose la calidad de cada uno. A partir de esta población inicial se introduce el mecanismo de selección por ruleta mediante el cual se selecciona un conjunto de individuos que tienen buenas características genéticas y por ende buena calidad. El mecanismo de cruza se inicia a partir de los individuos seleccionados apareándolos según una probabilidad que oscila entre el 80% y 90%, y utilizando para tal efecto dos puntos de cruce, obteniéndose una población de individuos de igual tamaño, los cuales antes de constituir la nueva generación cada individuo es analizado para determinar si algún bit de sus estructura genética va a cambiar; esto es lo que se conoce como mecanismo de mutación; la probabilidad de que un bit se cambie es muy pequeña y se encuentra entre 1 y 10%. Este proceso de selección cruza y mutación se repite tantas veces según el tamaño de iteraciones definidas por el usuario, esto es lo que se conoce como el número de generaciones para que el algoritmo converja a una solución. Finalmente en este algoritmo entre una generación y la siguiente se ha implementado elitismo y lo que hace es elegir en la generación actual al mejor individuo (el que tiene mejor calidad) y guardarlo temporalmente, y luego de encontrar la nueva generación buscar allí el peor individuo para cambiarlo por el mejor de la generación anterior. Este mecanismo permite que las soluciones mejoren en cada generación. 8. RESULTADOS El algoritmo tiene soluciones óptimas coincidentes con la metodología tradicional de la programación dinámica en todas las pruebas efectuadas cuando opera bajo las siguientes condiciones: Porcentaje de cruza: 90%. Porcentaje de mutación: 5% Tamaño de población: 50 individuos Numero de generaciones: 120 Por otro lado la utilización de este algoritmo ayuda ha determinar cuáles son los costos máximos que se podrían asumir por rentar almacenamiento extra, logrando incluso menores costos totales si las condiciones del problema lo permiten. Con relación a los costos de penalización por pedidos parciales el comportamiento del algoritmo es trivial, no muestra resultados favorables pues si el costo de penalización es muy pequeño o tiende a cero la solución es no producir lo cual contrasta con la naturaleza del negocio. Se ha demostrado que los algoritmos genéticos son una técnica robusta cuando se aplica a modelos de producción e inventarios y no tiene nada que envidiarle a la técnica enumerativa de la Programación Dinámica, más aún cuando el AG tiene un tiempo de respuesta es menor. 5
Se debe continuar probando el algoritmo con otros casos y contrastarlos con otras técnicas para confirmar su efectividad y de obtener resultados positivos se debe seguir trabajando para mejorarlo adicionando nuevos parámetros como costos de distribución de los almacenes a los clientes, intercambio de inventarios entre almacenes de una misma empresa, etc. 9. REFERENCIAS BIBLIOGRÁFICAS Bernal, José Luis. Aplicación de algoritmos genéticos al diseño óptimo de sistemas de distribución de energía eléctrica. Zaragoza, España. Tesis Doctoral. Universidad de Zaragoza, 1998. Goldber, D. (1989), Genetic algorithms in search, optimization and machine learning. Addison- Wesley,. Hax, Arnoldo C.; Candea Dan.(1984), Production and Inventory Management. Cap. 4 : Inventory Methods (pag. 125-152). Hillier Lieberman. (1992), «Introducción a la Investigación de Operaciones». México: Mc. Graw Hill, Quinta Edición. Jiménez, M. (2004), El arte en la construcción de los Algoritmos Genéticos caso: La maldición de la Programación Dinámica, paper presentado en el III Congreso Colombiano y I conferencia andina Internacional de Investigación de Operaciones. Romero, J. (1988), Aplicación de un algoritmo genético al problema de Job-Shop Scheduling. Tesis Maestría Ingeniería Industrial. Universidad de los Andes Bogotá D. E. Winston, Wayne L. (1994). «Investigación de Operaciones, Aplicaciones y Algoritmos», México: Iberoamericana. 6