Control y optimización de personal en tiendas mediante algoritmos

Control y optimización de personal en tiendas mediante algoritmos

Autor: Kraz Team
septiembre 15, 2021
Desarrollo de algoritmos propios para el control y optimización de personal en tiendas

Una importante empresa de retail de gran consumo, con más de 120 tiendas en el país, tenía descentralizado el proceso de decisión de horarios y turnos de cada una de sus tiendas, dejando en manos del responsable de tienda esta asignación de personal. En Kraz, elaboramos para ellos un sistema de control y optimización de personal en tiendas mediante algoritmos con el que poder hacer frente al problema que presentaban.

La descentralización del proceso de decisión de horarios y turnos tenía varios inconvenientes:

  • Se desconocía el grado de encaje entre la asignación de personas y las necesidades reales horarias de la tienda en cuestión (¿había los empleados necesarios en cada momento de demanda concreto? ¿podría ser que esta asignación fuera objetivamente mejorable?)
  • Este proceso era una carga más de trabajo para el responsable de tienda (una más de sus muchas obligaciones).
  • La asignación de personas y horarios era una fuente de problemas en la tienda, ya que era un proceso que se percibía con poca dosis de objetividad.

Por ello, esta empresa decidió encargar a parte de nuestro equipo un modelo de asignación del personal de tienda a partir de la previsión de demanda horaria en cada uno de sus establecimientos.

Así, se sugería una óptima asignación de recursos en cada tienda y se daba un recurso a cada responsable para agilizar este proceso y objetivizar esta asignación.

Desarrollo de algoritmos propios para el control y optimización de personal en tiendas

Nuestra solución

Para solucionar estos problemas implementamos una solución basada en Inteligencia Artificial que cumplía dos objetivos:

  • Gestionar de forma óptima los RRHH en tiendas para ahorrar el mayor coste posible
  • Cumplir con todas las condiciones del proyecto:
  1. Máximo número de horas trabajadas al día por persona
  2. Mínimo número de horas trabajadas al día por persona
  3. Mínimo número de trabajadores por hora en tienda
  4. Condición de continuidad: No podía haber “intermitencias” excesivas (más que los descansos acordados por trabajador)

Para ello se desarrolló un algoritmo basado en Algoritmos Genéticos (que a su vez están clasificados dentro de los Algoritmos Evolutivos) Un ejemplo de este proceso es:

  • Tenemos una tienda con 16 trabajadores, cada uno con una capacidad de trabajo semanal, constraints por requisitos legales, contractuales, horarios de apertura, etc
  • Tenemos también unas ventas por hora previstas
  • Tenemos un objetivo de horas semanales por el plan de carga anual
  • Podemos calcular la mejor distribución de horarios, de acuerdo con los hard constraints (requisitos legales, tc) y con la función objetivo a optimizar (número personas / hora óptimo)

Fases del proyecto

El proyecto se planteó a partir de las siguientes fases

  • Investigación previa de algoritmos para scheduling disponibles en la comunidad profesional de data science.
  • Testeo de algoritmos, con análisis de sus resultados de cara a su aplicación para nuestro caso:
  1. MILP: Buen algoritmo para problemas lineales. En nuestro caso, la función a optimizar no era lineal, de manera que se descartó.
  2. ROI (R Opimization Infrastructure Package): Se testearon distintos tipos de modelos de optimización para problemas NLP (non-linear problems), con la conclusión que no habían “solvers” en las que la función Objetivo fuera no-lineal y las variables fueran binarias. Se descartó esta solución.
  • Genomic Algorithm (GA): permitía establecer una función no lineal como objetivo y unos constraints también no lineales, a la vez que permitía variables binarias. Fue el algoritmo elegido.
  • Creación de un proof-of-concept (POC) con el Algoritmo Genético para una tienda
  • Fine tuning: Iteración sobre los hiperparámetros del modelo para hallar el algoritmo más óptimo.
  • Escalado de la solución, para pasar del POC a una solución global. Los principales problemas fueron que los GA no escalan bien, así que hubo que volver a hacer Fine Tuning, iterar sobre las soluciones y encontrar soluciones creativas para simplificar el modelo y decrecer el tiempo de cálculo. La solución final se basó en un algoritmo mixto:
  1. Creación de un algoritmo de optimización con los constrains (que eran lineales y enteros) para crear los candidatos iniciales.
  2. Los candidatos iniciales eran pasados como primera solución al algoritmo de GA, lo que permitía un reducir drásticamente el tiempo de convergencia hasta la solución óptima.
  • Integración de la solución en una arquitectura cloud y creación del framework de gestión para el cliente.

Estos fueron los resultados

Aquí podemos ver un ejemplo de distribución horaria de personal (en rojo) basándonos en la demanda (Ventas por hora) para una tienda de 12 personas.

resultados

Está claro que la automatización del proceso de asignación de personal en las tiendas mediante AI permitió dos objetivos:

  • Crear Scheduling de personal en segundos, cuando antes cada Gestor de Tienda tardaba horas en crear los Schedules semanales
  • Crear Scheduling mucho más eficientes: la nueva asignación de personal no se basó solo en los constraints, sino que se optimizó la asignación de forma que se ajustara exactamente a la necesidad horaria en cada tiempo, reduciendo drásticamente los costes de personal.

‍Si te ha gustado este proyecto, y crees que uno similar podría ayudar a tu empresa, no lo dudes: contacta con nuestro equipo. Desde Kraz, como consultora analítica, estaremos encantados de darte asesoramiento personalizado.

Y por si te has quedado con ganas de más, aquí te dejamos otro proyecto dónde desarrollamos un mecanismo de conteo para gestionar el control de aforo de las playas con inteligencia artificial.

Si te gusta lo que estás leyendo…

Nuestros últimos posts

No te pierdas ninguna de nuestras novedades del blog y suscríbete a nuestra newsletter