Optimale Servicegrad-Formel (Supply Chain)

learn menu
Von Joannès Vermorel, zuletzt überarbeitet im Januar 2012

Der Servicegrad (Bestand) repräsentiert die erwartete Wahrscheinlichkeit, keinen Lagerausfall zu erleiden. Dieser Prozentsatz ist erforderlich, um den Sicherheitsbestand zu berechnen. Intuitiv stellt der Servicegrad einen Kompromiss zwischen den Kosten des Bestands und den Kosten von Lagerausfällen (die verpasste Verkäufe, verlorene Möglichkeiten und Kundenfrustration unter anderem verursachen) dar. In diesem Artikel erläutern wir, wie der Wert des Servicegrads optimiert werden kann. Anschließend wird die Analyse für den speziellen Fall von verderblichen Lebensmitteln verfeinert.

Der Artikel wurde 2011 aus einer klassischen Prognoseperspektive geschrieben. Einige Jahre später erkennen wir jedoch, dass es aus der Perspektive der quantitativen Supply Chain viel bessere Optionen gibt, die die Notwendigkeit, die Servicegrade zu optimieren, vollständig beseitigen, wenn die Technologie von probabilistischen Prognosen angetrieben wird.

Modell und Formel

Die klassische Supply-Chain-Literatur ist etwas unscharf in Bezug auf die numerischen Werte, die für den Servicegrad angenommen werden sollten. Im Folgenden schlagen wir vor, einen optimalen Servicegrad zu berechnen, indem wir die jeweiligen Kosten für Bestand und Lagerausfälle modellieren.

Lassen Sie uns die folgenden Variablen einführen:

  • $${p}$$ sei der Servicegrad, d.h. die Wahrscheinlichkeit, keinen Lagerausfall zu haben.
  • $${H}$$ sei die Lagerhaltungskosten pro Einheit für die Dauer der Lieferzeit (1).
  • $${M}$$ sei die marginale Einheitskosten eines Lagerausfalls (2).

Excel-Tabelle herunterladen: service-level-formula.xlsx (illustrierte Berechnung)

(1) Der hier betrachtete Zeitraum ist die Lieferzeit. Daher betrachten wir anstelle der üblicheren jährlichen Lagerhaltungskosten $${H_y}$$, $${H = \frac{d}{365}H_y}$$, wobei $$d$$ die Lieferzeit in Tagen ist.

(2) Die Kosten eines Lagerausfalls beinhalten mindestens die Bruttomarge, d.h. den sofortigen Gewinn, der erzielt worden wäre, wenn kein Lagerausfall aufgetreten wäre. Der Verlust der Bruttomarge ist jedoch nicht der einzige Kostenfaktor: Zum Beispiel sollten auch die Kundenfrustration und der Verlust der Kundenloyalität berücksichtigt werden. Als Faustregel haben wir beobachtet, dass viele Lebensmittelhändler $${M}$$ als das Dreifache der Bruttomarge ansehen.

Der optimale Servicegrad ergibt sich aus (die Begründung wird unten detailliert):

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

Wo $${\Phi}$$ die kumulative Verteilungsfunktion ist, die mit der Normalverteilung verbunden ist. Dieser Wert kann leicht in Excel berechnet werden, $${\Phi}$$ ist die NORMSDIST Funktion. Auch für numerische Berechnungen: $${\sqrt{2 \pi} \approx 2.50}$$

Kostenfunktion

Um die Kostenfunktion zu modellieren, führen wir zwei weitere Variablen ein:

  • $${Q}$$ die amortisierte Bestandsmenge (3), eine Funktion, die von $${p}$$ abhängt.
  • $${O}$$ die durchschnittliche Überlaufnachfrage, wenn ein Ausverkauf getroffen wird.

(3) Wir übernehmen hier einen Amortisierten Analyse Standpunkt. Der Bestandslevel variiert ständig, aber unser Ziel hier, um die Analyse praktisch zu machen, ist es, einen Servicegrad zu erhalten, der von der Nachfrageprognose selbst entkoppelt ist. Daher werden wir annehmen, dass $${Q}$$ gleich dem Nachbestellpunkt ist (siehe unseren Leitfaden über Sicherheitsbestand für die Details).

Für einen gegebenen Servicegrad kann die Gesamtkosten $${C(p)}$$, die sowohl Bestandshaltungskosten als auch Ausverkaufskosten kombiniert, geschrieben werden:

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

Wo $${Q(p)H}$$ die Bestandskosten und $${MO}$$ die Ausverkaufskosten sind, die nur mit einer Wahrscheinlichkeit $${1-p}$$ auftreten. Mit der Formel, die in unserem Sicherheitsbestand Tutorial eingeführt wurde, und da $$Q(q)$$ gleich dem Nachbestellpunkt ist, haben wir $${Q(p) = Z + \sigma \Phi^{-1}(p)}$$, wo $${Z}$$ die Leitnachfrage ist, $${\sigma}$$ erwarteter Prognosefehler und $${\Phi(p)^{-1}}$$ das Inverse der kumulativen Verteilungsfunktion, die mit der Standard-Normalverteilung (Nullmittelwert und Varianz von eins) verbunden ist.

Analyse der durchschnittlichen verpassten Verkäufe

Die Analyse von $${O}$$, den durchschnittlichen verpassten Verkäufen, ist subtil. Angenommen, dass die Verteilung der Nachfrage die Normalverteilung $${\mathcal{N}}$$ ist und dass $${q}$$ der verfügbare Bestand ist, ist $${O(q)}$$ der bedingte Mittelwert der Nachfrage $${x}$$, wenn $${x > q}$$ (minus dem verfügbaren Bestand $${q}$$), das heißt:

$${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)}$$

Durchsuchen Sie die Funktion unter (1).

Dieses Ergebnis kann so interpretiert werden: Wenn die Nachfrage streng der Normalverteilung folgt, dann konvergiert die durchschnittliche Menge an verpassten Verkäufen im (bedingten) Fall eines Ausverkaufs schnell gegen Null, wenn der Bestand wächst.

Doch nach unserer Erfahrung hat der Prognosefehler nicht eine so gute Konvergenz wie die Normalverteilung vorhersagen würde. Daher werden wir im Folgenden annehmen, dass $${O=\sigma}$$, das heißt, dass die durchschnittliche Menge an verpassten Verkäufen gleich dem durchschnittlichen Prognosefehler ist. Offensichtlich handelt es sich hierbei eher um eine Faustregel als um eine tiefgehende Analyse; aber wir haben festgestellt, dass diese Annäherung in der Praxis sinnvolle Ergebnisse liefert.

Minimierung der Kostenfunktion

Durch Anwendung der hier oben definierten Ersetzungen auf den Ausdruck von $${C(p)}$$ erhalten wir:

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

Dann kann der Ausdruck $${C(p)}$$ in $${p}$$ differenziert werden mit:

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

Da wir nach dem minimalen Wert suchen, versuchen wir $${\frac{\partial C}{\partial p} = 0}$$ zu lösen, was ergibt:

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

Dies kann in $${\sigma}$$ vereinfacht werden, mit:

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

Und schließlich:

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

Dann werden wir die Beziehung zwischen $${\partial \Phi^{-1}}$$ und $${\Phi^{-1}}$$ verwenden:

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

Für einen visuellen Beweis der Gleichheit können Sie (1) und (2) vergleichen.

Diese Beziehung lässt uns folgendes erhalten:

$${\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)}$$

Wir nehmen die positive Wurzellösung der Gleichung (die negative Wurzel entspricht einem lokalen Maximum der Funktion) mit:

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

Und schließlich durch Anwendung von $${\Phi}$$ auf beide Seiten erhalten wir das optimale Servicelevel mit:

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

Diskussion der Formel

Der erste interessante Aspekt der Formel ist, dass das optimale Servicelevel nur von $${H}$$ (Lagerkosten) und $${M}$$ (Ausfallkosten) abhängt. Es gibt jedoch eine implizite Abhängigkeit von der Lieferzeit, da $${H}$$ als Tragekosten für die Dauer der Lieferzeit definiert wurde.

Zweitens senkt eine höhere Lagerkosten das optimale Servicelevel; und ähnlich erhöht eine höhere Ausfallkosten das Servicelevel. Dieses Verhalten ist eher intuitiv, da das Servicelevel ein Kompromiss zwischen mehr Lagerbestand und mehr Ausfällen ist.

Dann ist die Formel nicht für alle Werte von $${M}$$ und $${H}$$ gültig. Wir benötigen $${\sqrt{2\pi}\frac{M}{H} > 1}$$ oder der Logarithmus wird einen negativen Wert erzeugen, der angesichts der äußeren Quadratwurzel nicht handhabbar ist. Dies ergibt $${M > \sqrt{2 \pi} H}$$, was als $${M > 2.5 H}$$ approximiert werden kann. Wenn diese Bedingung nicht erfüllt ist, bedeutet dies, dass die ursprüngliche Kostenfunktion $${C(p)}$$ kein Minimum hat, oder besser gesagt, dass das Minimum $${-\infty}$$ für $${p=0}$$ ist. Aus praktischer Sicht könnte $${M < 2.5 H}$$ als eine pathologische Situation interpretiert werden, in der der profitabelste Lagerbestand kein Lagerbestand ist (d.h. 100% Ausfälle).

Praktisches Beispiel

Betrachten wir eine 1L Milchpackung zum Verkaufspreis von 1,50€ mit einer Marge von 10% (d.h. 0,15€ Bruttomarge). Nehmen wir an, dass die Lieferzeit 4 Tage beträgt. Die jährlichen Lagerkosten betragen 1,50€ (der Wert ist hoch, weil Milch ein stark verderbliches Produkt ist). Wir gehen davon aus, dass die Ausfallkosten das Dreifache der Bruttomarge betragen, also 0,45€. Dies ergibt $${M=0.45}$$ und $${H=\frac{4}{365} 1.5\approx 0.0055}$$.

Basierend auf diesen Werten und auf der Formel für das optimale Servicelevel, die wir hier oben erhalten haben, erhalten wir $$ p \approx 98.5 \text{%} $$, was ein typischer Wert für must-have Frischprodukte ist, die in Lagern gelagert werden, die Lebensmittelgeschäftsnetze versorgen.

Verderbliche Lebensmittel

Frage gestellt von Vyacheslav Grinkevych, Supply Chain Experte, 2012-02-13:

Ich arbeite an Prognosen und Supply Planning für kurzlebige Milchprodukte, bei denen das optimale Servicelevel ein sehr wichtiges Thema ist. Die interessanteste und kniffligste Komponente hier ist H – die Lagerkosten und die Frage nach ihrem richtigen Wert in der Praxis.

Zum Beispiel sollte bei kurzlebigen Milchprodukten ein wichtiger Teil von H nicht nur die reinen finanziellen Kosten des in Lagerbeständen gebundenen Kapitals und der operativen Logistikkosten sein, sondern auch die Kosten für potenzielle Verluste durch Abschreibungen abgelaufener Produkte oder Verkäufe mit Rabatten, wenn wir versuchen, kurz vor dem Verfallsdatum mehr zu verkaufen. Dies geschieht, wenn Ihre Verkäufe weit unter der Prognose liegen.

Dieser Kompromiss kann als das Risiko potenzieller Überbestände gegen das Risiko potenzieller Ausfälle beschrieben werden – zwei Risiken, die in entgegengesetzte Richtungen wirken, während sie denselben Ursprung haben – d.h. sie hängen mit dem Sicherheitsbestand zusammen. Im Falle einer großen Überprognose, die normalerweise ein Ablaufproblem verursacht, sind Prognosefehler nicht normal verteilt. Daher frage ich mich, wie man solche potenziellen Überbestandsrisiken besser ausdrücken kann.

Zurück zu Ihrer Formel, könnte eine weitere Entwicklung darin bestehen, eine Beziehung zwischen H und p zu finden oder H zu einer Funktion von p, d.h. H(p), zu machen, bevor man versucht, die Gesamtkosten C(p) zu minimieren. Was sind Ihre Gedanken zu diesem Thema?

Die hier oben gegebene Servicelevel-Formel basiert tatsächlich auf einer vereinfachenden Annahme, bei der die Kosten, sowohl für die Lagerung als auch für Ausfälle, strikt linear sind. In der Praxis können jedoch brutale Nichtlinearitäten auftreten, wie zum Beispiel:

  • Das Lager ist voll, und es gibt einen Punkt, an dem 1 zusätzliche Einheit Lagerbestand tatsächlich den massiven Overhead verursacht, einen zusätzlichen Lagerort zu bekommen.
  • Ausfälle verursachen inkrementelle Verkaufsverluste bis zu dem Punkt, an dem ein zusätzlicher Ausfall den Verlust des gesamten wiederkehrenden Kunden verursacht.

Verderbliche Produkte stellen eine weitere Herausforderung dar: Wenn die Lagerabdeckung, d.h. der Lagerbestand in Tagen statt in Einheiten ausgedrückt, nahe an die Haltbarkeitsdauer des Produkts heranreicht, dann steigt $${H}$$, die Lagerhaltungskosten, gegen einen unendlichen Wert.

Tatsächlich repräsentiert $${H}$$ die Reibung, die mit dem Vorhandensein von Lagerbeständen verbunden ist. Eine Lagerabdeckung, die größer ist als die Haltbarkeitsdauer des Produkts, stellt eine absurde Situation dar, in der, unter der Annahme eines FIFO (First In, First Out) Bestands, kein Produkt aus dem Lagerort herauskommen würde, ohne zuerst sein Verfallsdatum zu erreichen.

Um den Effekt der Verderblichkeit des Bestands zu modellieren, führen wir ein paar Schlüsseldauern ein:

  • $${\lambda}$$, die Lieferzeit.
  • $${\lambda_\infty}$$, die Lebensdauer des Produkts vor dem Erreichen des endgültigen Verfalls (d.h. null Marktwert).
  • $${\lambda_½}$$, die Dauer, die die ursprünglichen Lagerhaltungskosten des Produkts aufgrund des Verlusts seines Marktwerts verdoppelt.
  • $${\lambda_c(p)}$$, die Lagerabdeckung, d.h. der Lagerbestand ausgedrückt in Tagen statt in Produkteinheiten. Diese Dauer hängt vom Sicherheitsbestandsfaktor ab, daher hängt sie von $${p}$$ ab.

Mit diesen Dauern können wir die Lagerhaltungskosten modellieren als:

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

Lassen Sie uns die implizite Annahme hier im Detail erläutern, denn wir beugen etwas die übliche Vorstellung von den Lagerhaltungskosten, um das Risiko von Abschreibungen zu berücksichtigen.

Zuerst haben wir $${H(0.5)=H}$$. Dies ergibt sich aus der hier oben gegebenen Definition. Tatsächlich ist $${\lambda_c(0.5)=\lambda}$$, mit einem Servicelevel von 50%, entspricht die Lagerabdeckung der Lieferzeit. Daher sagen wir hier, dass in diesem Modell $$H$$ die Lagerhaltungskosten darstellt, in die die Abschreibungskosten, die mit einem Servicelevel von 50% verbunden sind, bereits in die Kosten $${H}$$ eingerechnet wurden. Es ist bemerkenswert, dass null Sicherheitsbestände nicht null Abschreibungen bedeuten, nur seltene Abschreibungen.

Zweitens, für den Servicelevel $${p_½}$$, so dass $${\lambda_c(p_½) = \lambda_½}$$, dann haben wir $${H(p_½)=2H}$$. Auch dies ist nur eine Folge der für $${H(p)}$$ angenommenen Definition. Intuitiv stellt $${\lambda_½}$$ die Dauer dar, die die Kombination aus Lagerhaltungskosten und Abschreibungskosten verdoppelt, im Vergleich zur Situation ohne Sicherheitsbestand. Es ist klar, dass in der Praxis die Kostenüberdeckung, die mit End-of-Life-Rabatten und Abschreibungen verbunden ist, diskrete Schritte durchlaufen wird. Wir glauben jedoch, dass der Versuch, diesen Overhead durch eine typische Dauer auszudrücken, die in der Praxis als ein bestimmter Bruchteil der Lebensdauer des Produkts definiert würde, wahrscheinlich viel resilienter gegenüber den verschiedenen Annäherungen ist, die den gesamten Ansatz mit sich bringen, im Vergleich zu einem feiner abgestimmten Modell, das auf noch unsichereren Variablen basiert.

Schließlich, wenn $${p}$$ sich $${p_\infty}$$ nähert, mit $${\lambda_c(p_\infty)=\lambda_\infty}$$, dann tendiert $${H(p)}$$ gegen Unendlich, wieder durch die Definition der angenommenen Funktion für $${H(p)}$$. Auf den ersten Blick scheint es seltsam, dass eine Lagerhaltungskosten über die Produktstückkosten hinausgehen, aber hier gibt es keinen Widerspruch. Der Wert $$H(p)$$ stellt die Reibungskosten dar, um eine Einheit an den Kunden zu versenden. Wenn aufgrund massiver Abschreibungen im Durchschnitt 3 Einheiten ins Lager geliefert werden, um 1 Einheit an den Endkunden zu versenden (2 Einheiten verfallen, bevor sie ausgeliefert werden), dann werden die Reibungskosten viel höher sein als der ursprüngliche Stückpreis des Produkts.

Zusammenfassend ist $${\lambda_½}$$ nur eine unsichere Variable, die eingeführt wird. $${\lambda}$$ und $${\lambda_\infty}$$ können sicher als bekannt angenommen werden. Wir glauben, dass dieses Modell für $${H(p)}$$ das einfachste ist, das durch die Einführung nur einer zusätzlichen Variable erreicht werden kann. Dann haben wir für $${\lambda_c(p)}$$, mit einer bescheidenen Annäherung:

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

Tatsächlich kann $${\lambda_c}$$, die Lagerabdeckung, als ein Verhältnis über die Lieferzeit gesehen werden, das die Nachfrage während der Lieferzeit plus einen normalisierten Sicherheitsbestandsfaktor beinhaltet. Dies ergibt die alternative Kostenfunktion:

$${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}$$

Im Gegensatz zur vorherigen Kostenfunktion scheint diese Funktion kein einfaches algebraisches Minimum zu haben. Durch die Anwendung eines ähnlichen Ansatzes wie bei der Berechnung der wirtschaftlichen Bestellmenge ist es jedoch relativ einfach, eine annähernde Lösung zu finden, indem man in 0,1% Schritten von 80% bis 99,9% iteriert. Dies entspricht 200 Iterationen, um eine Genauigkeit von 0,1% zu erreichen, die für praktische Zwecke weitgehend ausreichend wäre.

Beabsichtigte praktische Anwendung

Die Servicelevel-Formel kommt mit ein paar Annäherungen, so dass die numerischen Werte möglicherweise nicht out of the box verwendbar sind: es wird typischerweise ein bisschen Feinabstimmung erfordern. Insbesondere kann der Faktor $${\frac{1}{\sqrt(2\pi)}\approx0.4}$$ bei Bedarf angepasst werden. Wir glauben jedoch, dass diese Formel einen guten Einblick gibt, wie die jeweiligen Servicelevels Ihrer Artikel verglichen werden sollten. Wenn Sie zum Beispiel für zwei Produkte A und B Servicelevels von jeweils 95% (für A) und 90% (für B) erhalten, dann wäre es für die endgültige Produktionsaufstellung zu erwarten, dass der Servicelevel für A größer ist als der Servicelevel für B.

Unter Berücksichtigung der Art der Analyse, die hier oben gemacht wurde, glauben wir, dass diese Formel nicht relevant für Produkte mit geringer oder intermittierender Nachfrage ist. Tatsächlich sind solche Produkte mit geringem Volumen typischerweise mit einem niedrigen Nachbestellpunkt bei 0 oder 1 Einheit verbunden; und eine lineare Modellierung der Lagerkosten für das Produkt macht nicht unbedingt Sinn, da auch die Komplexität der Lagerung einer zusätzlichen Referenz berücksichtigt werden sollte.