Formule optimale du taux de service (Supply Chain)
Taux de service (stocks) représente la probabilité attendue de ne pas subir de rupture de stock. Ce pourcentage est requis pour calculer le stock de sécurité. Intuitivement, le taux de service représente un compromis entre le coût des stocks et le coût des ruptures de stock (qui entraînent des ventes manquées, des opportunités perdues et, entre autres, la frustration des clients). Dans cet article, nous détaillons comment optimiser la valeur du taux de service. Ensuite, l’analyse est affinée pour le cas particulier des aliments périssables.
Modèle et formule
La littérature classique sur la supply chain est quelque peu floue quant aux valeurs numériques à adopter pour le taux de service. Ci-dessous, nous proposons de calculer un taux de service optimal en modélisant le coût respectif des stocks et des ruptures de stock.
Introduisons les variables suivantes :
- $${p}$$ est le taux de service, c’est-à-dire la probabilité de ne pas subir une rupture de stock.
- $${H}$$ est le coût de détention par unité pendant la durée du délai d’approvisionnement (1).
- $${M}$$ est le coût unitaire marginal de rupture de stock (2).
Télécharger la feuille Excel : service-level-formula.xlsx (calcul illustré)
(1) L’échéance temporelle considérée ici est le délai d’approvisionnement. Par conséquent, au lieu de considérer le coût de détention annuel habituel $${H_y}$$, nous considérons $${H = \frac{d}{365}H_y}$$ en supposant que $$d$$ est le délai exprimé en jours.
(2) Le coût de rupture de stock inclut au minimum la marge brute, c’est-à-dire le profit instantané qui aurait été généré en l’absence de rupture de stock. Cependant, la perte de marge brute n’est pas le seul coût : par exemple, la frustration des clients et la perte de fidélité doivent également être prises en compte. En règle générale, nous avons constaté que de nombreux distributeurs alimentaires considèrent $${M}$$ comme égal à 3 fois la marge brute.
Le taux de service optimal est donné par (le raisonnement est détaillé ci-dessous) :
Où $${\Phi}$$ est la fonction de répartition associée à la distribution normale. Cette valeur peut être calculée facilement dans Excel, $${\Phi}$$ correspond à la fonction NORMSDIST. De plus, pour les besoins du calcul numérique : $${\sqrt{2 \pi} \approx 2,50}$$
Fonction de coût
Pour modéliser la fonction de coût, introduisons deux autres variables :
- $${Q}$$ représente la quantité de stock amortie (3), une fonction qui dépend de $${p}$$.
- $${O}$$ est la demande moyenne excédentaire en cas de rupture de stock.
(3) Nous adoptons ici un point de vue d’analyse amortie. Le niveau de stocks variant constamment, notre objectif ici, afin de rendre l’analyse pratique, est d’obtenir une valeur de taux de service découplée de la prévision de la demande elle-même. Ainsi, nous supposerons que $${Q}$$ est égal au point de commande (reportez-vous à notre guide sur le stock de sécurité pour plus de détails).
Pour un taux de service donné, le coût total $${C(p)}$$ qui combine à la fois le coût de détention des stocks et les coûts de rupture de stock peut s’écrire :
Où $${Q(p)H}$$ représente le coût des stocks et $${MO}$$ le coût de rupture de stock, qui n’intervient qu’avec une probabilité de $${1-p}$$. En utilisant la formule présentée dans notre tutoriel sur le stock de sécurité, et puisque $$Q(q)$$ est égal au point de commande, nous avons $${Q(p) = Z + \sigma \Phi^{-1}(p)}$$ où $${Z}$$ est la demande principale, $${\sigma}$$ l’erreur de prévision attendue et $${\Phi(p)^{-1}}$$ l’inverse de la fonction de répartition associée à la distribution normale standard (moyenne nulle et variance unitaire).
Analyse des ventes manquées moyennes
L’analyse de $${O}$$, les ventes manquées moyennes, est subtile. En considérant que la distribution de la demande suit la distribution normale $${\mathcal{N}}$$ et que $${q}$$ représente les stocks disponibles, $${O(q)}$$ est la moyenne conditionnelle de la demande $${x}$$ lorsque $${x > q}$$ (moins le stock disponible $${q}$$), c’est-à-dire :
Consultez la fonction à (1).
Ce résultat peut être interprété de la manière suivante : si la demande suit rigoureusement la distribution normale, alors la quantité moyenne de ventes manquées lors d’un événement (conditionnel) de rupture de stock converge rapidement vers zéro à mesure que le niveau de stocks augmente.
Cependant, d’après notre expérience, l’erreur de prévision ne converge pas aussi bien que le prévoirait la distribution normale. Ainsi, nous supposerons ci-dessous que $${O=\sigma}$$, c’est-à-dire que la quantité moyenne de ventes manquées est égale à l’erreur de prévision moyenne. Évidemment, il s’agit plutôt d’une règle empirique que d’une analyse approfondie ; mais nous avons constaté que, dans la pratique, cette approximation donne des résultats sensés.
Minimisation de la fonction de coût
En appliquant les remplacements définis ci-dessus à l’expression de $${C(p)}$$, nous obtenons :
Ensuite, l’expression $${C(p)}$$ peut être différentiée par rapport à $${p}$$ de la manière suivante :
Puisque nous recherchons la valeur minimale, nous tentons de résoudre $${\frac{\partial C}{\partial p} = 0}$$, ce qui donne :
Ce qui peut se simplifier en $${\sigma}$$, avec :
Et enfin :
Nous utiliserons ensuite la relation entre $${\partial \Phi^{-1}}$$ et $${\Phi^{-1}}$$ :
Pour une démonstration visuelle de cette égalité, vous pouvez comparer (1) et (2).
Cette relation nous permet d’obtenir :
Nous retenons la solution à racine positive de l’équation (la racine négative correspondant à un maximum local de la fonction) avec :
Et enfin, en appliquant $${\Phi}$$ des deux côtés, nous obtenons le taux de service optimal avec :
Discussion de la formule
Le premier aspect intéressant de la formule est que le taux de service optimal ne dépend que de $${H}$$ (coût des stocks) et de $${M}$$ (coût de rupture de stock). Cependant, il existe une dépendance implicite par rapport au délai d’approvisionnement puisque $${H}$$ a été défini comme le coût de détention pendant la durée du délai d’approvisionnement.
Deuxièmement, un coût des stocks plus élevé réduit le taux de service optimal ; de même, un coût de rupture de stock plus important augmente le taux de service. Ce comportement est assez intuitif puisque le taux de service représente un compromis entre un stock plus important et davantage de ruptures de stock.
Ensuite, la formule n’est pas valable pour toutes les valeurs de $${M}$$ et $${H}$$. Il faut que $${\sqrt{2\pi}\frac{M}{H} > 1}$$, sinon le logarithme produira une valeur négative, ce qui n’est pas exploitable compte tenu de la racine carrée extérieure. Cela se traduit par $${M > \sqrt{2 \pi} H}$$, ce qui peut être approximé par $${M > 2,5 H}$$. Si cette condition n’est pas vérifiée, cela signifie que la fonction de coût initiale $${C(p)}$$ n’admet pas de minimum, ou plutôt que le minimum est $${-\infty}$$ pour $${p=0}$$. D’un point de vue pratique, $${M < 2,5 H}$$ pourrait être interprété comme une situation pathologique où le niveau de stock le plus rentable est zéro stock (c’est-à-dire 100% de ruptures de stock).
Exemple pratique
Prenons, par exemple, un pack de 1L de lait au prix de vente de 1,50€ avec une marge de 10% (soit 0,15€ de marge brute). Supposons que le délai d’approvisionnement est de 4 jours. Le coût de détention annuel est de 1,50€ (la valeur est élevée car le lait est un produit très périssable). Nous supposons que le coût de rupture de stock est 3 fois la marge brute, c’est-à-dire 0,45€. Cela donne $${M=0.45}$$ et $${H=\frac{4}{365}\times 1.5\approx 0.0055}$$.
En se basant sur ces valeurs et sur la formule du taux de service optimal obtenue ci-dessus, nous obtenons $$ p \approx 98,5 \text{%} $$, ce qui est une valeur typique pour des produits frais indispensables stockés dans des entrepôts alimentant des réseaux de magasins d’alimentation.
Aliments périssables
Question posée par Vyacheslav Grinkevych, expert en supply chain, le 13/02/2012 :
Je travaille sur la prévision et la planification de la Supply chain pour des produits laitiers à courte durée de vie, où le taux de service optimal est un sujet très important. La composante la plus intéressante et casse-tête ici est H – le coût de détention et la question de sa valeur appropriée en pratique.
Par exemple, pour les produits laitiers à courte durée de vie, une des parties importantes de H ne devrait pas seulement être le coût financier pur de la trésorerie immobilisée dans les stocks et le coût logistique opérationnel de stockage, mais également le coût des pertes potentielles dues aux radiations de produits périmés ou aux ventes à rabais lorsque nous tentons de liquider davantage juste avant l’expiration. Cela se produit lorsque vos ventes sont bien inférieures aux prévisions.
Ce compromis peut être décrit comme le risque de surstocks potentiels vs. le risque de ruptures de stock potentielles – deux risques qui s’opposent tout en ayant la même origine par nature – c’est-à-dire interconnectés avec le stock de sécurité. En cas de sur-prévision importante, qui cause généralement des problèmes d’expiration, les erreurs de prévision ne sont pas normalement distribuées. Je me demande donc comment mieux exprimer ces risques de surstocks potentiels.
Revenant à votre formule, son développement ultérieur pourrait consister à essayer de trouver une relation entre H et p ou de rendre H fonction de p, c’est-à-dire H(p), avant d’entreprendre la minimisation du coût total C(p). Qu’en pensez-vous ?
La formule du taux de service présentée ci-dessus est en effet fondée sur une hypothèse simpliste selon laquelle les coûts, tant de stockage que de ruptures de stock, sont strictement linéaires. Cependant, en pratique, des non-linéarités brutales peuvent être constatées, telles que :
- L’entrepôt est plein, et il arrive un moment où une unité de stock supplémentaire entraîne réellement le surcoût massif lié à l’obtention d’un emplacement d’entreposage supplémentaire.
- Les ruptures de stock entraînent une perte incrémentale de ventes jusqu’au point où une rupture de stock supplémentaire entraîne la perte de l’ensemble du client récurrent.
Les produits périssables présentent une autre subtilité : si la couverture de stock, c’est-à-dire le stock exprimé en jours plutôt qu’en unités de stock, se rapproche de la durée de vie du produit avant expiration, alors $${H}$$, le coût de détention, augmente vers une valeur infinie.
En effet, $${H}$$ représente la friction associée au fait de détenir des stocks. Une couverture de stock supérieure à la durée de vie du produit avant expiration représente une situation absurde où, en supposant une gestion FIFO (First In, First Out), aucun produit ne quitterait l’emplacement de stockage sans d’abord atteindre sa date d’expiration.
Afin de modéliser l’effet de la périssabilité des stocks, introduisons quelques durées clés :
- $${\lambda}$$, le délai d’approvisionnement.
- $${\lambda_\infty}$$, la durée de vie du produit avant d’atteindre l’expiration terminale (c’est-à-dire une valeur marchande nulle).
- $${\lambda_{½}}$$, la durée qui double le coût de détention initial du produit en raison de la perte de sa valeur marchande.
- $${\lambda_c(p)}$$, la couverture de stock, c’est-à-dire le stock exprimé en jours plutôt qu’en unités de stock. Cette durée dépend du facteur de stock de sécurité, donc dépend de $${p}$$.
Avec ces durées, nous pouvons modéliser le coût de détention comme :
Détaillons l’hypothèse implicite ici, car nous modifions quelque peu la notion habituelle du coût de détention afin d’intégrer le risque de radiation.
Premièrement, nous avons $${H(0.5)=H}$$. Ceci est obtenu à partir de la définition donnée ci-dessus. En effet $${\lambda_c(0.5)=\lambda}$$, avec un taux de service de 50%, la couverture de stocks est égale au délai de livraison. Ainsi, nous affirmons ici que, dans ce modèle, $$H$$ représente le coût de détention, où les coûts de dépréciation associés à un taux de service de 50% ont déjà été intégrés dans le coût $${H}$$. Il est à noter que l’absence de stocks de sécurité n’implique pas l’absence de dépréciations, seulement des dépréciations peu fréquentes.
Deuxièmement, pour le taux de service $${p_½}$$ tel que $${\lambda_c(p_½) = \lambda_½}$$, nous avons alors $${H(p_½)=2H}$$. Encore une fois, cela découle uniquement de la définition adoptée pour $${H(p)}$$. Intuitivement, $${\lambda_½}$$ représente la durée qui double la combinaison des coûts de détention plus les coûts de dépréciation, par rapport à la situation sans stock de sécurité. Il est évident que, dans la pratique, les surcoûts liés aux remises en fin de vie et aux dépréciations s’effectueront par marches discrètes. Cependant, nous estimons que tenter d’exprimer ce surcoût par une durée typique qui, en pratique, serait définie comme une certaine fraction de la durée de vie du produit est susceptible d’être bien plus résilient face aux diverses approximations inhérentes à l’approche globale, contrairement à un modèle plus fin reposant sur des variables encore plus incertaines.
Enfin, lorsque $${p}$$ se rapproche de $${p_\infty}$$ avec $${\lambda_c(p_\infty)=\lambda_\infty}$$, alors $${H(p)}$$ tend vers l’infini, toujours par définition de la fonction adoptée pour $${H(p)}$$. À première vue, il peut sembler étrange d’avoir un coût de détention qui dépasse le coût unitaire du produit, mais il n’y a pas de paradoxe ici. La valeur $$H(p)$$ représente le coût de friction pour expédier une unité au client. Si, en raison de dépréciations massives, pour expédier 1 unité au client final, l’entrepôt reçoit en moyenne 3 unités (2 unités périmées avant d’être livrées), alors les coûts de friction seront bien supérieurs au prix unitaire initial du produit.
En résumé, $${\lambda_½}$$ n’est qu’une variable incertaine introduite. On peut raisonnablement supposer que $${\lambda}$$ et $${\lambda_\infty}$$ sont connus. Nous estimons que ce modèle pour $${H(p)}$$ est à peu près le plus simple qu’on puisse obtenir en introduisant une seule variable supplémentaire. Ensuite, pour $${\lambda_c(p)}$$, avec une approximation modeste, nous avons:
En effet, $${\lambda_c}$$, la couverture de stocks, peut être vue comme un ratio sur le délai de livraison qui inclut la demande pendant ce délai plus un facteur de stock de sécurité normalisé. Cela donne la fonction de coût alternative:
Contrairement à la fonction de coût précédente, cette fonction ne semble pas posséder un minimum algébrique simple. Cependant, en adoptant une approche similaire à celle utilisée pour le calcul du quantité économique de commande, il est relativement aisé de trouver une solution approximative en itérant par incréments de 0,1% de 80% à 99,9%. Cela représente 200 itérations pour atteindre une précision de 0,1% qui serait largement suffisante à des fins pratiques.
Utilisation pratique prévue
La formule du taux de service repose sur plusieurs approximations, de sorte que les valeurs numériques peuvent ne pas être utilisables telles quelles : un ajustement sera typiquement nécessaire. En particulier, le facteur $${\frac{1}{\sqrt(2\pi)}\approx0.4}$$ peut être ajusté en fonction des besoins. Cependant, nous pensons que cette formule offre une bonne compréhension de la manière dont les taux de service respectifs de vos articles devraient se comparer. Par exemple, si pour deux produits A et B, vous obtenez des taux de service de 95% (pour A) et 90% (pour B), alors, pour la configuration de production finale, il serait attendu que le taux de service pour A soit supérieur à celui de B.
Ensuite, compte tenu de la nature de l’analyse présentée ci-dessus, nous estimons que cette formule est non pertinente pour les produits associés à une demande faible ou intermittente. En effet, ces produits à faible volume sont généralement associés à un point de commande faible, à 0 ou 1 unité ; et une modélisation linéaire du coût de stockage pour le produit n’a pas nécessairement de sens, car la complexité liée au stockage d’une référence supplémentaire doit également être prise en compte.