El caos del personal

Service 1

Un poco de contexto es importante para demostrar el problema, el reto y la complejidad. Imagínenlo, estar en una de las industrias más complejas y caóticas: la moda, por decir lo menos: los productos terminados, BOM's y materia prima cambia cada 3 meses, cada 3 meses (por la nueva temporada) una nueva cantidad de materiales, BOM's, productos terminados y operaciones necesarias para realizar cada producto cambian, se renuevan.

El problema al que se enfrentaba esta empresa de moda es a planear correctamente el personal necesario en meses futuros para cubrir la demanda planeada. El problema constaba de las siguientes variantes y restricciones a considerar:

  1. La planeación de producción se define en cantidad de piezas o productos a construir por semana de diferentes lineas y estilos. Esta planeación tiene una proyección de 25 semanas.
  2. La planeación final de producto terminado no estaba digitalizada, se tomaba de una transacción en SAP una planeación borrador por semana, pero el planeador de producción debía afinar algunos numeros antes de liberar la version final que aún se hacía en Excel y luego en PDF para su firma como un acuerdo con producción
  3. No habia digitalización entre la planeación oficial liberada y el input de producción.
  4. Los productos terminados constan de una lista de operaciones a realizar, las cuales de identifican con un codigo de operación. Esta información si esta estructurada y digitalizada en SAP.
  5. La asignación de un operador a una o más operaciones tiene las siguientes restricciones:
    1. Los codigos de operacion estan asociadas a un nombre de puesto.
    2. Los operadores tienen asignado un nombre de puesto al ser contratados. Como se habrán dado cuenta, el vínculo  para asignar a un operador a una operación es el nombre del puesto, el cual debe coincidir.
    3. Un operador puede realizar una o más operaciones que tengan su mismo nombre de puesto
    4. Cada operador está limitado por supuesto por los minutos disponibles que tiene al día.
    5. Los minutos efectivos que se tomen para completar las operaciones dependera del porcentaje de experiencia que tenga el operador en el puesto. Por ejemplo si de cierta operación deben de completarse 80 minutos, y un operador lleva poco tiempo en el puesto y esta al 90%, el tiempo efectivo será de 72 minutos.  El porcentaje de experiencia va incrementando con los meses que lleva el operador en el puesto. Una nueva contratación inicia al 85%, luego de 1 mes llega al 90%, al més siguiente llega al 95%, y finalmente al tercer mes llega al 100%.
    6. Cada operador dependiendo de su desarrollo en la compañía puede tener a su vez una categoría distinta, y también se les paga distinto:
      • A0 $1.0925 por minuto
      • A1  $1.0925 por minuto
      • A2  $0.9756 por minuto
      • A3  $0.8586 por minuto
      • A4  $0.7417 por minuto
      • B1   $0.6833 por minuto
      • B2  $0.6248 por minuto
      • B3  $0.6248 por minuto
    7. Los operadores de nuevas contrataciones inician con la categoría mas baja (B3).
  6. Como cualquier planta de manufactura, hay restricciones de horarios y turnos, y tiempo disponible de cada turno (los turnos de la mañana tienen mas minutos disponibles que los de la tarde)
  7. El cálculo del personal requerido se hacía aún de forma manual en hojas de excel.

Con todas esta variables hay 3 objetivos ó enfoques a lograr:

  • Optimizar el personal actual a fin de cubrir la mayor cantidad de operaciones necesarias y minimizar las nuevas contrataciones.
  • Optimizar el personal actual para producción a fin de minimizar la cantidad de dinero desembolsado para el pago de mano de obra.
  • Planear con RH y entrenamiento el personal y puestos necesario en los meses futuros.

Es importante mencionar que la empresa sufre de mucha rotación de personal, por lo cual es importante realizar este análisis adecuadamente, además de que muchas fuentes de información y variables de este problema esta dispersa y no esta digitalizada ni estructurada en bases de datos.


La solución

Para resolver este problema se tenia que fragmentar la solución a realizar en varias partes, y atacar por separado sus causas. Hay varias areas y clientes involucrados: planeación, producción y costos. 

  • Primeramente estructuré la base de datos que se encargaría de almacenar la información. Para esto diseñé la base de datos en Oracle, la cual era el estandard en esta compañía.
  • Luego se tuvo que digitalizar mucha información que no estaba estructurada y dispersa en muchas fuentes de información en muchos subsistemas como Sharepoint, SAP y archivos de Excel.

Digitalización de la planeación:

  1. Automaticé el proceso de extracción de la planeación de SAP a BD Oracle. Para esto se desarrollé una aplicación de consola que se ejecuta 3 veces por semana para tener una foto actual de la demanda.
    A partir de aqui empecé con el desarrollo de una aplicación Web en Blazor WebAssembly en .Net con varios módulos para ir solucionando cada requerimiento:
  2. Primero desarrollé una interfaz amigable para el usuario de planeación para trabajar la información previamente extraída, modificar, editar ó agregar la cantidad de piezas o productos a realizar por semana, basado en la extracción previa. 
  3. Liberar la información previamente definida para crear un reporte en Excel e impresión en PDF's de esta planeación proyectada y firma digital. 

Planeación del personal

Esta fué la parte más complicada y divertida al mismo tiempo. Se tenía que desarrollar un módulo completo para producción que le facilitara el cálculo de la planeación del personal con todas las variables involucradas descritas anteriormente, para esto se hicieron 2 submódulos: Planeación a largo plazo y Planeación customizada, la diferencia entre ambas  para realizar los cálculos es que la planeación a largo plazo toma directamente la cantidad de piezas a producir por semana definidas previamente por planeación, y en la planeación customizada ellos pueden definir manualmente la cantidad de piezas  a producir, los minutos y personal disponible total.

  1. El primer paso fue construir información que no estaba estructurada en bases de datos como el porcentaje de experiencia por operador, centros de trabajo, rinks, bandas y modulos para que los mismos dueños de la información pudieran hacer sus cambios.
  2. Modelo matemático. Este es el corazón del proyecto. Desarrollé un modelo matemático usando algoritmos de programación lineal para optimizar ambos enfoques necesarios, uno a fin de optimizar la cantidad de personas necesarias, y otro para distribuir los operadores de forma que minimizara la cantidad de pago total, considerando ecuaciones de restriccion y funciones objetivo. Monté el modelo final en el framework de Google Operations Research Tools, el cual soluciona el modelo en poco tiempo. Implementé todas estas características en la misma aplicación Blazor en un modulo nuevo en el Backend para realizar estas operaciones a peticion desde un serie de API's que yo mismo diseñé.
  3. Construí interfaces amigables para ambos submodulos con opciones diferentes para cada uno. Con diferentes reportes y graficos por modulo, reportes por operación, por operador, por operador-operación, por puesto, por departamento etc. 

Por supuesto como toda solución Web se incluyó un Login, validando los usuarios contra el directorio activo de windows, y una página de administrador para diferentes roles: Producción, Planeación y Costos.

Para las interfaces / front end utilicé los controles modernos de Syncfusion. Desarrolle API's desde cero para las operaciones de lectura y escritura con la base de datos.

 

Adicionalmente desarrollé una consola extra para ir actualizando la experiencia (%) de cada operador dependiendo del tiempo que lleva en la compañía y una tarea que construye y envia ciertos reportes específicos en excel y los envía por correo a usuarios clave.

 

Beneficios para planeación:

  • Planeación oficial digitalizado, vinculado a SAP, visible para todos los centros productivos.
  • Módulo de administración de piezas por semana
  • Alineación de piezas oficiales a cumplir por planta.

Beneficios para producción:

  • Cálculo automatizado de personal requerido por semana, aplicando modelo matemático enfocado en reducción de costos ú optimización de operadores.
  • Optimización de recursos. Posibilidad de generar ahorros muy significativos simplemente distribuyendo los operadores de forma diferente

Ahorros:

  • Se logró un ahorro significativo cercano al 10% en la plantilla de personal siguiendo una metodología matemática, formal y estudiada.
  • Con el enfoque de optimización financiera se ahorró 5.4% del prespuestos teórico necesario para las plantillas de operadores.
  • Se pudo predecir con meses de anticipación la cantidad de personal necesario a fin de cubrir la demanda.

Conclusión:

Es crucial para poder entregar la mejor solución a la medida, analizar a detalle todo el panorama y armonizar el flujo de información del proceso completo, evitar pasos innecesarios, agregar el mayor valor posibe en cada característica que se agrega a una solución de software, y más importante que la solución que se construya sea capaz de pagarse por si misma ó generar ahorros significativos para la empresa.

Tengo una vasta experiencia desarrollando y mejorando soluciones de software y estaré mas que gustoso de poder colaborar en algún proyecto interesante.


Beneficios

Tamen a proposito, inquam, aberramus. Non igitur potestis voluptate omnia dirigentes aut tueri aut retinere virtutem.