Formule du taux de service optimal (Supply Chain)

learn menu
Par Joannès Vermorel, dernière révision en janvier 2012

Le taux de service (stocks) représente la probabilité attendue de ne pas être en rupture de stock. Ce pourcentage est nécessaire pour calculer les stocks 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 la frustration des clients, entre autres). 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 produits alimentaires périssables.

Cet article a été rédigé d’un point de vue de la prévision classique en 2011. Cependant, quelques années plus tard, nous réalisons maintenant qu’il existe de bien meilleures options disponibles du point de vue de la supply chain quantitative qui éliminent entièrement la nécessité d’optimiser les taux de service lorsque la technologie est alimentée par des prévisions probabilistes.

Modèle et formule

La littérature classique sur la supply chain est quelque peu floue en ce qui concerne les valeurs numériques qui devraient être adoptées 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}$$ soit le taux de service, c’est-à-dire la probabilité de ne pas avoir de rupture de stock.
  • $${H}$$ soit le coût de possession par unité pour la durée du délai de livraison (1).
  • $${M}$$ soit le coût marginal unitaire de la rupture de stock (2).

Télécharger la feuille Excel : service-level-formula.xlsx (calcul illustré)

(1) La période de temps considérée ici est le délai de livraison. Par conséquent, au lieu de considérer le coût de possession annuel plus courant $${H_y}$$, nous considérons $${H = \frac{d}{365}H_y}$$ en supposant que $$d$$ est le délai de livraison exprimé en jours.

(2) Le coût de rupture de stock comprend a minima 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 du client et la perte de fidélité du client doivent également être pris en compte. En règle générale, nous avons observé que de nombreux détaillants alimentaires considèrent que $${M}$$ est égal à 3 fois la marge brute.

Le taux de service optimal est donné par (le raisonnement est détaillé ci-dessous) :

$${p=\Phi\left(\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}\right)}$$

Où $${\Phi}$$ est la fonction de distribution cumulative associée à la distribution normale. Cette valeur peut être facilement calculée dans Excel, $${\Phi}$$ est la fonction NORMSDIST. De plus, pour faciliter les calculs numériques : $${\sqrt{2 \pi} \approx 2.50}$$

Fonction de coût

Afin de modéliser la fonction de coût, introduisons deux variables supplémentaires :

  • $${Q}$$ la quantité d’inventaire amortie (3), une fonction qui dépend de $${p}$$.
  • $${O}$$ la demande excédentaire moyenne lorsqu’une rupture de stock survient.

(3) Nous adoptons ici un point de vue d’Analyse Amortie. Le niveau d’inventaire varie tout le temps, mais notre objectif ici, afin de rendre l’analyse pratique, est d’obtenir une valeur de taux de service qui est dissociée de la prévision de la demande elle-même. Par conséquent, nous supposerons que $${Q}$$ est égal au point de commande (consultez notre guide sur les stocks 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 possession de l’inventaire et les coûts de rupture de stock peut être écrit :

$${C(p) = Q(p)H + (1-p)MO}$$

Où $${Q(p)H}$$ est le coût de l’inventaire et $${MO}$$ le coût de la rupture de stock, qui se produit uniquement avec une probabilité $${1-p}$$. En utilisant la formule introduite dans notre tutoriel sur les stocks 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 en tête, $${\sigma}$$ l’erreur de prévision attendue et $${\Phi(p)^{-1}}$$ l’inverse de la fonction de distribution cumulative associée à la distribution normale standard (moyenne nulle et variance de un).

Analyse des ventes moyennes manquées

L’analyse de $${O}$$, les ventes moyennes manquées, est subtile. En considérant que la distribution de la demande est la distribution normale $${\mathcal{N}}$$ et que $${q}$$ est l’inventaire disponible, $${O(q)}$$ est la moyenne conditionnelle de la demande $${x}$$ lorsque $${x > q}$$ (moins l’inventaire disponible $${q}$$), c’est-à-dire :

$${O(q)=\frac{\int_q^\infty{x\mathcal{N}(x)dx}}{\int_q^\infty{\mathcal{N}(x)dx}}-q=\frac{1}{q}+\mathcal{o}\left(\frac{1}{q}\right)}$$

Parcourez la fonction sur (1).

Ce résultat peut être interprété comme suit : si la demande suit rigoureusement la distribution normale, alors la quantité moyenne de ventes manquées dans le cas d’une rupture de stock converge rapidement vers zéro à mesure que le niveau des stocks augmente.

Cependant, dans notre expérience, l’erreur de prévision n’a pas une convergence aussi bonne que celle que prédirait la distribution normale. Par conséquent, ci-dessous, nous supposerons 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 plus 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 :

$${C(p) = \left(Z + \sigma \Phi^{-1}(p)\right)H + (1-p)M\sigma}$$

Ensuite, l’expression de $${C(p)}$$ peut être différenciée par rapport à $${p}$$ avec :

$${\frac{\partial C}{\partial p} = \sigma H \partial \Phi^{-1}(p) - \sigma M}$$

Puisque nous recherchons la valeur minimale, nous essayons de résoudre $${\frac{\partial C}{\partial p} = 0}$$, ce qui donne :

$${\sigma H \partial \Phi^{-1}(p) - \sigma M = 0}$$

Ce qui peut être simplifié en $${\sigma}$$, avec :

$${H \partial \Phi^{-1}(p) - M = 0}$$

Et enfin :

$${\partial \Phi^{-1}(p) = \frac{M}{H}}$$

Ensuite, nous utiliserons la relation entre $${\partial \Phi^{-1}}$$ et $${\Phi^{-1}}$$ :

$${\partial \Phi^{-1}(p)=\sqrt{2\pi}e^{\frac{1}{2}\Phi^{-1}(p)^2}}$$

Pour une preuve visuelle de l’égalité, vous pouvez comparer (1) et (2).

Cette relation nous permet d’obtenir :

$${\sqrt{2\pi}e^{\frac{1}{2}\Phi^{-1}(p)^2}=\frac{M}{H}}$$

$${\frac{1}{2}\Phi^{-1}(p)^2=\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}$$

Nous prenons la solution racine positive de l’équation (la racine négative correspond à un maximum local de la fonction) avec :

$${\Phi^{-1}(p)=\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}}$$

Et enfin, en appliquant $${\Phi}$$ des deux côtés, nous obtenons le niveau de service optimal avec :

$${p=\Phi\left(\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}\right)}$$

Discussion de la formule

Le premier aspect intéressant de la formule est que le niveau de service optimal dépend uniquement de $${H}$$ (coût des stocks) et de $${M}$$ (coût de rupture de stock). Cependant, il existe une dépendance implicite sur le délai de livraison, car $${H}$$ a été défini comme le coût de possession pendant la durée du délai de livraison.

Deuxièmement, un coût de stockage plus élevé diminue le niveau de service optimal ; de même, un coût de rupture de stock plus élevé augmente le niveau de service. Ce comportement est assez intuitif car le niveau de service est un compromis entre plus de stocks et plus de ruptures de stock.

Ensuite, la formule n’est pas valable pour toutes les valeurs de $${M}$$ et $${H}$$. Nous avons besoin de $${\sqrt{2\pi}\frac{M}{H} > 1}$$ sinon le logarithme produira une valeur négative qui n’est pas gérable compte tenu de la racine carrée extérieure. Cela donne $${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’a 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 un stock nul (c’est-à-dire 100% de ruptures de stock).

Exemple pratique

Prenons l’exemple d’un pack de lait d'1L vendu au prix de 1,50€ avec une marge de 10% (soit 0,15€ de marge brute). Supposons que le délai de livraison soit de 4 jours. Le coût de possession 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, soit 0,45€. Cela donne $${M=0,45}$$ et $${H=\frac{4}{365} 1,5\approx 0,0055}$$.

Sur la base de ces valeurs et de la formule du niveau de service optimal obtenue ci-dessus, nous obtenons $$ p \approx 98,5 \text{%} $$, ce qui est une valeur typique pour les produits frais indispensables stockés dans les entrepôts alimentant les réseaux de supermarchés.

Produits périssables

Question posée par Vyacheslav Grinkevych, expert en supply chain, le 13 février 2012 :

Je travaille sur la prévision et la planification des approvisionnements pour les produits laitiers à courte durée de vie, où le niveau de service optimal est un sujet très important. Le composant le plus intéressant et délicat ici est H - le coût de possession et la question de sa valeur appropriée en pratique.

Par exemple, pour les produits laitiers à courte durée de vie, une partie importante de H ne devrait pas seulement être le coût financier pur de l’argent immobilisé dans les stocks et le coût opérationnel de stockage logistique, mais aussi le coût des pertes potentielles dues à l’élimination des produits périmés ou aux ventes avec des remises lorsque nous essayons de vendre plus juste avant l’expiration. Cela se produit lorsque vos ventes sont nettement inférieures aux prévisions.

Ce compromis peut être décrit comme le risque de surstocks potentiel par rapport au risque de rupture de stock potentiel - deux risques qui fonctionnent dans des directions opposées tout en ayant la même origine par nature - c’est-à-dire interconnectés avec le stock de sécurité. En cas de surprévision importante, ce qui entraîne généralement des problèmes de péremption, les erreurs de prévision ne sont pas normalement distribuées. Je me demande donc comment mieux exprimer de tels risques de surstocks potentiels.

Revenons à votre formule, son développement ultérieur pourrait consister à essayer de trouver une relation entre H et p ou à faire de H une fonction de p, c’est-à-dire H(p), avant de passer à la minimisation du coût total C(p). Qu’en pensez-vous ?

La formule du niveau de service donnée ci-dessus est en effet basée sur une hypothèse simpliste selon laquelle les coûts, tant de stockage que de rupture de stock, sont strictement linéaires. Cependant, en pratique, des non-linéarités brutales peuvent être trouvées, telles que :

  • L’entrepôt est plein, et il y a un point où 1 unité supplémentaire de stock implique en réalité les frais généraux massifs d’un emplacement d’entreposage supplémentaire.
  • Les ruptures de stock entraînent des ventes perdues supplémentaires jusqu’à atteindre le 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 particularité : si la couverture des stocks, c’est-à-dire les stocks exprimés en jours plutôt qu’en unité de stock, se rapproche de la durée de vie du produit, alors $${H}$$, le coût de possession, augmente vers une valeur infinie.

En effet, $${H}$$ représente la friction associée à la détention de stocks en premier lieu. Une couverture de stock supérieure à la durée de vie d’expiration du produit représente une situation absurde où, en supposant un inventaire FIFO (Premier Entré, Premier Sorti), aucun produit ne sortirait de l’emplacement de stockage sans atteindre d’abord 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 possession initial du produit en raison de la perte de sa valeur marchande.
  • $${\lambda_c(p)}$$, la couverture de stock, c’est-à-dire les stocks exprimés en jours plutôt qu’en unités de produit. Cette durée dépend du facteur de stock de sécurité, donc de $${p}$$.

Avec ces durées, nous pouvons modéliser le coût de possession comme suit :

$${ H(p) = H \left(1 - \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda} + \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda_c(p)} \right) }$$

Expliquons ici l’hypothèse implicite, car nous déformons quelque peu la notion habituelle du coût de possession afin de prendre en compte le risque d’annulation.

Tout d’abord, nous avons $${H(0.5)=H}$$. Cela est obtenu à partir de la définition même ci-dessus. En effet, $${\lambda_c(0.5)=\lambda}$$, avec un niveau de service de 50%, la couverture de stock équivaut au délai d’approvisionnement. Ainsi, nous déclarons ici que, dans ce modèle, $$H$$ représente le coût de possession où les coûts d’annulation associés à un niveau de service de 50% ont déjà été pris en compte dans le coût $${H}$$. Il est à noter que des stocks de sécurité nuls n’impliquent pas des annulations nulles, seulement des annulations peu fréquentes.

Deuxièmement, pour le niveau de service $${p_½}$$ tel que $${\lambda_c(p_½) = \lambda_½}$$, alors nous avons $${H(p_½)=2H}$$. Encore une fois, cela n’est qu’une conséquence de la définition adoptée pour $${H(p)}$$. Intuitivement, $${\lambda_½}$$ représente la durée qui double la combinaison des coûts de possession plus les coûts d’annulation, par rapport à la situation de zéro stock de sécurité. Il est clair qu’en pratique, les surcoûts liés aux remises en fin de vie et aux annulations se feront par paliers discrets. Cependant, nous pensons que tenter d’exprimer ces surcoûts par le biais d’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 beaucoup plus résiliente aux diverses approximations qui sous-tendent toute l’approche, par rapport à un modèle plus fin qui repose 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, là encore par définition de la fonction adoptée pour $${H(p)}$$. À première vue, il semble étrange d’avoir un coût de possession 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 d’annulations massives, pour expédier 1 unité au client final, l’entrepôt reçoit en moyenne 3 unités (2 unités expirant avant d’être livrées), alors les coûts de friction seront beaucoup plus élevés que le prix unitaire initial du produit.

En résumé, $${\lambda_½}$$ n’est qu’une variable incertaine qui est introduite. $${\lambda}$$ et $${\lambda_\infty}$$ peuvent être considérés comme connus. Nous pensons que ce modèle pour $${H(p)}$$ est le plus simple possible qui puisse être réalisé en introduisant seulement 1 variable supplémentaire. Ensuite, pour $${\lambda_c(p)}$$, avec une approximation modeste, nous avons:

$${\lambda_c(p) = \lambda \left(1 +\frac{\sigma}{Z}\Phi^{-1}(p)\right)}$$

En effet, $${\lambda_c}$$, la couverture de stock, peut être vue comme un rapport sur le délai d’approvisionnement qui inclut la demande pendant le délai plus un facteur de stock de sécurité normalisé. Cela donne la fonction de coût alternative:

$${C^*(p) = \left(Z + \sigma \Phi^{-1}(p)\right)H\left(1 - \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda} + \frac{ \lambda_\infty - \lambda_½}{\lambda_\infty - \lambda \left(1 +\frac{\sigma}{Z}\Phi^{-1}(p)\right)} \right) + (1-p)M\sigma}$$

Contrairement à la fonction de coût précédente, cette fonction ne semble pas avoir un minimum algébrique simple. Cependant, en adoptant une approche similaire à celle utilisée pour le calcul de la quantité économique de commande, il est relativement facile 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 est accompagnée de quelques approximations, de sorte que les valeurs numériques peuvent ne pas être utilisables telles quelles : elles nécessiteront généralement un ajustement. En particulier, le facteur $${\frac{1}{\sqrt(2\pi)}\approx0.4}$$ peut être ajusté en fonction des besoins. Cependant, nous pensons que cette formule donne un bon aperçu 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 respectifs de 95% (pour A) et 90% (pour B), alors pour la configuration finale de production, on s’attendrait à ce que le taux de service pour A soit supérieur au taux de service pour B.

Ensuite, compte tenu de la nature de l’analyse qui a été réalisée ci-dessus, nous pensons que cette formule n’est pas pertinente pour les produits associés à une demande faible ou intermittente. En effet, de tels produits à faible volume sont généralement associés à un point de commande réapprovisionnement à 0 ou 1 unité ; et une modélisation linéaire du coût de stockage du produit ne fait pas nécessairement sens, car la complexité de stocker une référence supplémentaire devrait également être prise en compte.