Trabajando con futuros inciertos
El futuro es incierto. Sin embargo, casi todas las soluciones predictivas supply chain hacen la suposición contraria: asumen que sus forecast son correctos y, por lo tanto, implementan sus simulaciones basándose en esos forecast. Implícitamente, se asume que el futuro es cierto y surgen complicaciones.
Desde una perspectiva histórica, los ingenieros de software no hacían esas suposiciones sin motivo: un futuro determinista era la única opción que las primeras -y no tan primeras- computadoras podían procesar a lo sumo. Así, mientras tratar un futuro incierto se sabía que era el mejor enfoque en teoría, en la práctica, ni siquiera era una opción.
Además, se encontraron algunos trucos matemáticos a principios del siglo XX para sortear este problema. Por ejemplo, el clásico análisis de stock de seguridad asume que tanto los tiempos de entrega como la demanda siguen un patrón de distribución normal. La suposición de la distribución normal es conveniente desde el punto de vista computacional, ya que solo se requieren dos variables para modelar el futuro: la media y la varianza.
Una vez más, la suposición de la distribución normal, tanto para los tiempos de entrega como para la demanda, resultó ser incorrecta en casi todas las situaciones, salvo en unas pocas, y surgieron complicaciones.
En 2012, en Lokad, nos dimos cuenta de que el enfoque clásico de forecast de inventario simplemente no funcionaba: los forecast de media o mediana no abordaban el problema correcto. Por mucho que viéramos tecnología en el caso, no iba a funcionar de forma satisfactoria.
Así, nos trasladamos a quantile forecasts, lo que se puede interpretar como forecasting the future with an intended bias. Pronto nos dimos cuenta de que los cuantiles eran invariablemente superiores al clásico análisis de stock de seguridad, al menos porque los cuantiles se concentraban en lo que realmente importaba desde una perspectiva de supply chain.
Sin embargo, al acercarnos a los cuantiles, nos dimos cuenta de que habíamos perdido bastantes cosas en el proceso. En efecto, a diferencia de los forecast de media clásicos, los quantile forecasts no son aditivos, por lo que, por ejemplo, no era posible dar sentido a la suma de esos cuantiles. En la práctica, la pérdida no fue demasiado grande, ya que, dado que los forecast clásicos no tenían mucho sentido en primer lugar, sumarlos no era una opción razonable de todas formas.
Con el paso de los años, mientras trabajábamos con cuantiles, nos dimos cuenta de que tantas de las cosas que dábamos por sentadas se habían complicado muchísimo: las cantidades de demanda ya no podían sumarse, restarse ni ajustarse linealmente. En resumen, al avanzar hacia un futuro incierto, habíamos perdido las herramientas para operar en ese futuro incierto.
En 2015, introdujimos las cuadrículas cuantiles. Aunque las cuadrículas cuantiles no eran exactamente lo mismo que nuestros forecast probabilísticos completos, nuestro forecasting engine ya comenzaba a entregar probabilidades en lugar de estimaciones de cuantiles. Las distribuciones de probabilidades son mucho más expresivas que las simples estimaciones de cuantiles y, resulta que es posible definir un álgebra sobre distribuciones.
Aunque el término álgebra pueda sonar técnico, no es tan complicado; esto significa que una operación simple como la suma, el producto, la diferencia, …, puede definirse de maneras que no solo son matemáticamente consistentes, sino también altamente relevantes desde la perspectiva de supply chain.
Como resultado, hace apenas unas semanas, integramos un álgebra de distribuciones directamente en Envision, nuestro lenguaje específico de dominio dedicado a la optimización del comercio. Gracias a este álgebra de distribuciones, se vuelve sencillo realizar operaciones aparentemente simples, como la suma de dos tiempos de entrega inciertos (por ejemplo, un tiempo de entrega de producción incierto más un tiempo de entrega de transporte incierto). La suma de esos dos tiempos de entrega se lleva a cabo mediante una operación conocida como convolución. Aunque el cálculo en sí es bastante técnico, en Envision, lo único que se necesita es escribir A = B +* C
, donde +*
es el operador de convolución utilizado para sumar variables aleatorias independientes (*).
A través de este álgebra de distribuciones, la mayoría de las operaciones “intuitivas” que eran posibles con los forecast clásicos han vuelto: las variables aleatorias pueden sumarse, multiplicarse, estirarse, exponenciarse, etc. Y, aunque se realizan cálculos relativamente complejos tras bastidores, las fórmulas probabilísticas no son más complicadas que las fórmulas sencillas de Excel desde la perspectiva de Envision.
En lugar de desear que los forecast sean perfectamente precisos, este álgebra de distribuciones nos permite abrazar futuros inciertos: los tiempos de entrega de los proveedores tienden a variar, las cantidades entregadas pueden diferir de las cantidades ordenadas, la demanda de los clientes cambia, los productos son devueltos, el inventario puede perderse o dañarse … Gracias a este álgebra de distribuciones, resulta mucho más sencillo modelar la mayoría de esos eventos inciertos con un esfuerzo mínimo de codificación.
Bajo el capó, el procesamiento de distribuciones es bastante intensivo; y, una vez más, nunca nos habríamos aventurado en esos territorios sin una plataforma de computación en la nube que maneje este tipo de carga de trabajo - Microsoft Azure en nuestro caso. No obstante, los recursos computacionales nunca han sido tan baratos, y es probable que la siguiente orden de compra de $100k de su empresa valga la pena dedicar unas pocas horas de CPU - que cuestan menos de $1 y se ejecutan en tan solo unos minutos - para asegurarse de que las cantidades ordenadas sean sólidas.
(*) Una variable aleatoria es una distribución que tiene una masa de 1. Es un tipo especial de distribución. Envision puede procesar distribuciones de probabilidades (también conocidas como variables aleatorias), pero también distribuciones más generales.