El problema de programación de la producción (scheduling)

El problema de programación de la producción o de las operaciones, en inglés scheduling, es un problema de carácter operativo que se debe atender con mucha frecuencia. Por eso, es necesario garantizar que se hace de forma eficaz y eficiente de manera continuada. Una decisión equivocada puede no tener impacto grave, pero si de forma recurrente los programas de producción no son adecuados, esto acabará deteriorando la rentabilidad de la empresa.

El problema

En general, cuando hablamos de scheduling nos referimos a la información detallada relativa a cómo se llevará a cabo la producción. En función del contexto del que se trate, obtener un programa consiste en dar respuestas a preguntas como las siguientes para el horizonte de programación. ¿Qué órdenes de producción lanzar? ¿Cuándo comienza a procesarse cada orden en cada centro de producción? ¿En particular, en qué equipo dentro de ese centro? ¿Qué recursos humanos asociaré a cada una de las operaciones? ¿Cuándo tendrán lugar las operaciones de preparación y limpieza?

La respuesta a las preguntas anteriores debe respetar todas las restricciones técnicas y de negocio de la planta: capacidad de almacenamiento de producto intermedio, disponibilidad de materia prima, fechas de entrega, disponibilidad de personal…

El problema es extremadamente complejo. Si tuviéramos 100 órdenes de producción y 5 centros de trabajo, habría que decidir para cada dos órdenes de producción, cuál se programaría primero en cada centro. Es decir, de forma explícita o implícita, habría que decidir 22750 “conflictos”.

Existen características que pueden hacer que el problema sea aún más complejo. Los tiempos de cambio que dependen de la secuencia son un buen ejemplo de ello. En un proceso de pintura, cuando pasamos de un color claro a un color oscuro necesitamos un tiempo de limpieza de la pistola mucho menor que si pasamos de oscuro a claro. Igualmente, si mantenemos durante más tiempo el color con el que pintamos tendremos menos tiempo improductivo dedicado a limpiezas pero, a cambio, como las series de producción son más largas podremos tener mucho producto terminado de un color y poco de otros.

En lo que respecta a cómo evaluar la calidad de un programa, existen diferentes aspectos que pueden ser relevantes y estar en conflicto. Por ejemplo, en la medida en la que abra más centros de producción y disponga de más capacidad, obtendré el producto terminado antes y podré responder a los compromisos de entrega pero, a cambio, el coste será más alto. Idealmente, nos gustaría traducir todo esto a un único KPI, preferiblemente euros, pero esto no es siempre posible.

El enfoque tradicional

En muchas más ocasiones de lo que sería deseable la forma de abordar este problema es mediante un experto conocedor del sistema que, mediante hojas de cálculo, la aplicación de reglas que simplifican el problema y su profundo conocimiento del sistema es capaz de poner encima de la mesa un schedule. Esto exige una fracción no pequeña de su tiempo, tanto para obtener un schedule inicial como para introducir los cambios necesarios cuando algún tipo de incidencia así lo requiere.

Las implicaciones de este enfoque son varias y no deseables. Por un lado, a pesar de la experiencia del experto, es frecuente que los programas que se obtengan estén lejos de ser óptimos. Esto, día tras día, es una gotera de dinero que puede pasar desapercibida o camuflada (un nivel excesivamente alto de inventarios puede permitir cumplir con los clientes y no dar lugar a ninguna luz roja, pero a un coste innecesariamente alto).

Debido al carácter intensivo en tiempo, el margen de reacción frente a incidencias como pedidos urgentes o averías tiende a reducirse y, según la incidencia, el impacto puede ser mucho más que el de una gotera. Además, esta lentitud del proceso hace difícil explorar las implicaciones de diferentes programas en relación con los KPI relevantes.

Por último, hay una desventaja más sutil pero no menos importante, y es el hecho de que uno de los mejores conocedores del sistema está dedicado a componer lenta y tediosamente el programa de la semana que viene. Es decir, tenemos al experto “haciendo sudokus” en lugar de explorando cómo poder introducir mejoras en el sistema.

Imaginemos que existe un equipo que requiere de un perfil de operario específico con el que cumplen pocos trabajadores y ese equipo solo se puede usar un turno al día. El programador tendrá en cuenta esta regla al confeccionar un programa. Sin embargo, ¿cuál sería el impacto de contratar a más operarios con ese perfil para operar el equipo en cualquier turno? Es más, ¿cuántos operarios habría que contratar? ¿Sería rentable? El tiempo que requiere este análisis excede el tiempo del que dispone un programador con lo que las preguntas quedan sin atender o quedan mal atendidas. Esto supone más oportunidades de ahorro perdidas.

La solución: la analítica prescriptiva

Como se puede ver, el problema de scheduling puede ser demasiado complejo para llegar a una solución óptima mediante el uso de técnicas tradicionales o el conocimiento de un humano experto. La alternativa es la analítica prescriptiva. Los problemas combinatorios como el de scheduling son campo de aplicación natural para esta rama de las matemáticas.

La analítica prescriptiva se basa en la construcción de modelos matemáticos que, mediante ecuaciones, permiten representar las soluciones al problema. Por ejemplo, si tenemos dos órdenes i y j, o se programa primero una o la otra. Se puede definir una variable xij que vale uno si se programa antes la i que la j. Como no se puede programar la i antes que la j y, a la vez, la j antes que la i y, a la vez, una va antes que la otra, se debe cumplir que xij + xji = 1.

De igual manera, todas las reglas que hay que respetar se pueden formular matemáticamente y delegar en un software específico la resolución de todas las ecuaciones para buscar el óptimo.

Existen enfoques alternativos y más elaborados, que combinan modelos matemáticos, heurísticos, metaheurísticas, machine learning… El campo es amplísimo y ha sido profusamente estudiado. Prueba de ello es una búsqueda sencilla en Google Scholar por el término “scheduling” que arroja 3.8 millones de entradas en el momento de publicación de este post.

Cada empresa tiene su sudoku. El scheduling se puede referir a sistemas job-shop o a sistemas flow-shop; para sistemas que trabajan bajo pedido o para stock; con posibilidad de interrumpir la producción de una orden de un día para el siguiente o no; con rutas alternativas para los productos o no; con diferentes equipos que pudiendo hacer la misma operación pueden hacerlo con diferentes costes y tiempos o no; puede ser que exista capacidad de almacenamiento de producto intermedio limitado o, en la práctica, infinito.

En este contexto y con tantas fuentes de complejidad la analítica ofrece ventajas enormes. Para empezar, ofrece la solución óptima o casi-óptima en un plazo de tiempo muy breve. Es decir, tarda mucho menos que el analista experto y, además, ofrece mejores soluciones. Esto es así porque explora de forma “inteligente” el espacio de soluciones y, además, con visión global. Siguiendo la analogía del sudoku, tiene visión sobre todas las celdas al mismo tiempo.

Esto elimina el sesgo del analista o, al menos, lo hace explícito porque se pueden desarrollar herramientas que tengan en cuenta diferentes objetivos, cada uno con un peso diferente. Así es posible apostar por programas con menor coste aún con poca holgura en términos de personal o, al revés, se puede apostar por programas que permitan un reparto más homogéneo del trabajo de los operarios aún cuando esto pueda ser más costoso o pueda dejar mejor holgura para el cumplimiento de las fechas de entrega.

El analista puede comparar alternativas, pre-fijar parte del schedule, hacer modificaciones sobre lo que propone la herramienta… En definitiva, dispone de una “calculadora muy potente” al servicio de una mejor toma de decisiones.

Por último, y muy importante, el usuario puede explorar configuraciones alternativas del sistema, como aumentar el número de puestos en paralelo para un job determinado o adquirir una segunda máquina, logrando evaluar su impacto sobre la producción, los ingresos y, finalmente, el ROI de dichas inversiones.

Para poder sacar el máximo partido a la analítica prescriptiva en el caso del scheduling cada caso necesita su tratamiento específico, que permite adaptarse a las singularidades del problema de forma eficaz y eficiente. Solo en casos muy elementales es posible hacer la adaptación de alguna herramienta genérica al caso específico en cuestión.

Conclusión

Cada vez que se genera un programa de producción mediocre y no recurrimos a la analítica prescriptiva renunciamos a la posibilidad de obtener ahorros y la acumulación de esas renuncias puede ser tan cara como difícil de identificar.

La buena noticia: las matemáticas que hay detrás son las mismas. “Solo” hace falta el arte y el rigor para desarrollar los modelos analíticos que den respuesta a las particularidades de cada caso.

Deja una respuesta