Optimale Service-Level Formel (Supply Chain)

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

Servicelevel (Bestandsverwaltung) stellt die erwartete Wahrscheinlichkeit dar, keinen Fehlbestand zu erleiden. Dieser Prozentsatz wird benötigt, um den Sicherheitsbestand zu berechnen. Intuitiv stellt das Servicelevel einen Kompromiss zwischen den Kosten der Bestandsverwaltung und den Kosten von Fehlbeständen dar (welche verpasste Verkäufe, verlorene Chancen und unter anderem Kundenfrustration zur Folge haben). In diesem Artikel erläutern wir, wie das Servicelevel optimiert werden kann. Anschließend wird die Analyse für den Sonderfall von leicht verderblichen Lebensmitteln verfeinert.

Der Artikel wurde bereits 2011 aus der Perspektive der klassischen Prognose verfasst. Einige Jahre später wird jedoch deutlich, dass es aus der die Quantitative Supply Chain‑Perspektive wesentlich bessere Optionen gibt, die die Notwendigkeit der Optimierung des Servicelevels vollständig überflüssig machen, wenn die Technologie durch probabilistische Vorhersagen unterstützt wird.

Modell und Formel

Die klassische Supply Chain-Literatur ist hinsichtlich der numerischen Werte, die für das Servicelevel angenommen werden sollten, etwas unscharf. Im Folgenden schlagen wir vor, ein optimales Servicelevel zu berechnen, indem die jeweiligen Kosten der Bestandsverwaltung und Fehlbestände modelliert werden.

Führen wir die folgenden Variablen ein:

  • $${p}$$ ist das Servicelevel, d.h. die Wahrscheinlichkeit, keinen Fehlbestand zu haben.
  • $${H}$$ sind die Lagerhaltungskosten pro Einheit für die Dauer der Lieferzeit (1).
  • $${M}$$ sind die Grenzkosten pro Einheit eines Fehlbestandes (2).

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

(1) Der hier betrachtete Zeitraum ist die Lieferzeit. Anstatt der üblichen jährlichen Lagerhaltungskosten $${H_y}$$ betrachten wir daher $${H = \frac{d}{365}H_y}$$ unter der Annahme, dass $$d$$ die in Tagen ausgedrückte Lieferzeit ist.

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

Das optimale Servicelevel wird (die Herleitung ist unten ausführlich dargelegt) wie folgt angegeben:

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

Dabei ist $${\Phi}$$ die kumulative Verteilungsfunktion der Normalverteilung. Dieser Wert kann in Excel leicht berechnet werden; $${\Phi}$$ entspricht der NORMSDIST-Funktion. Zudem gilt zur Vereinfachung der numerischen Berechnung: $${\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 überfließende Nachfrage, wenn ein Fehlbestand eintritt.

(3) Hier verwenden wir eine Amortisierte Analyse. Der Lagerbestand variiert ständig, aber unser Ziel ist es, einen Servicelevel zu ermitteln, der vom eigentlichen Nachfrageprognosewert entkoppelt ist. Daher nehmen wir an, dass $${Q}$$ dem Nachbestellpunkt entspricht (siehe unseren Leitfaden zum Sicherheitsbestand für Details).

Für einen gegebenen Servicelevel können die Gesamtkosten $${C(p)}$$, die sowohl die Lagerhaltungskosten als auch die Kosten von Fehlbeständen kombinieren, wie folgt geschrieben werden:

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

Dabei sind $${Q(p)H}$$ die Lagerkosten und $${MO}$$ die Kosten eines Fehlbestandes, die nur mit einer Wahrscheinlichkeit von $${1-p}$$ auftreten. Mithilfe der in unserem Sicherheitsbestand-Tutorial eingeführten Formel und da $$Q(q)$$ dem Nachbestellpunkt entspricht, gilt $${Q(p) = Z + \sigma \Phi^{-1}(p)}$$, wobei $${Z}$$ der Leitnachfrage entspricht, $${\sigma}$$ der erwartete Prognosefehler und $${\Phi(p)^{-1}}$$ das Inverse der kumulativen Verteilungsfunktion der standard Normalverteilung (Nullerwartungswert und Varianz eins).

Analyse der durchschnittlichen verpassten Verkäufe

Die Analyse von $${O}$$, den durchschnittlich verpassten Verkäufen, ist subtil. Betrachtet man, dass die Nachfrageverteilung der normalen Verteilung $${\mathcal{N}}$$ folgt und $${q}$$ der verfügbare Bestand ist, so ist $${O(q)}$$ der bedingte Mittelwert der Nachfrage $${x}$$, wenn $${x > q}$$ gilt (abzüglich des verfügbaren Bestands $${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)}$$

Schauen Sie sich die Funktion an unter (1).

Dieses Ergebnis kann folgendermaßen interpretiert werden: Wenn die Nachfrage strikt der Normalverteilung folgt, dann konvergiert die durchschnittliche Menge der verpassten Verkäufe im (bedingten) Fall eines Fehlbestandes schnell gegen Null, sobald der Lagerbestand ansteigt.

Allerdings zeigt unsere Erfahrung, dass der Prognosefehler nicht so gut konvergiert, wie es die Normalverteilung vorhersagen würde. Daher nehmen wir im Folgenden an, dass $${O=\sigma}$$, das heißt, dass die durchschnittlichen verpassten Verkäufe gleich dem durchschnittlichen Prognosefehler sind. Offensichtlich handelt es sich hierbei eher um eine Faustregel als um eine tiefgehende Analyse; jedoch haben wir festgestellt, dass diese Näherung in der Praxis sinnvolle Ergebnisse liefert.

Minimierung der Kostenfunktion

Durch Anwenden der 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}$$

Anschließend kann der Ausdruck $${C(p)}$$ nach $${p}$$ abgeleitet werden:

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

Da wir den 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 durch Kürzen von $${\sigma}$$ vereinfacht werden zu:

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

Und schließlich:

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

Anschließend verwenden wir die Beziehung zwischen $${\partial \Phi^{-1}}$$ und $${\Phi^{-1}}$$:

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

Als visuellen Beweis für diese Gleichheit können Sie (1) und (2) vergleichen.

Diese Beziehung ermöglicht es uns, zu 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 Wurzel 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 Anwenden 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}$$ (Lagerhaltungskosten) und $${M}$$ (Kosten eines Fehlbestandes) abhängt. Allerdings besteht eine implizite Abhängigkeit von der Lieferzeit, da $${H}$$ als die Lagerkosten für die Dauer der Lieferzeit definiert wurde.

Zweitens senkt ein höherer Lagerhaltungskostenfaktor das optimale Servicelevel, während ein höherer Fehlbestandkostenfaktor das Servicelevel erhöht. Dieses Verhalten ist sehr intuitiv, da das Servicelevel einen Kompromiss zwischen mehr Inventar und mehr Fehlbeständen darstellt.

Die Formel ist also nicht für alle Werte von $${M}$$ und $${H}$$ gültig. Es muss $${\sqrt{2\pi}\frac{M}{H} > 1}$$ gelten, da sonst der Logarithmus einen negativen Wert liefert, der aufgrund der äußeren Quadratwurzel nicht verwertbar ist. Dies führt zu $${M > \sqrt{2 \pi} H}$$, was ungefähr als $${M > 2.5 H}$$ abzuschätzen ist. Sollte diese Bedingung nicht erfüllt sein, bedeutet dies, dass die ursprüngliche Kostenfunktion $${C(p)}$$ kein Minimum besitzt, bzw. dass das Minimum bei $${p=0}$$ liegt (bzw. $${C(p) = -\infty}$$). Praktisch könnte $${M < 2.5 H}$$ als eine pathologische Situation interpretiert werden, in der der profitabelste Lagerbestand ein Nullbestand ist (d.h. 100% Fehlbestände).

Praktisches Beispiel

Betrachten wir einen 1L Milchkarton mit einem Verkaufspreis von 1,50€ und einer Marge von 10% (d.h. 0,15€ Bruttomarge). Nehmen wir an, dass die Lieferzeit 4 Tage beträgt. Die jährlichen Lagerhaltungskosten betragen 1,50€ (der Wert ist hoch, da Milch ein stark verderbliches Produkt ist). Wir nehmen an, dass die Kosten für einen Fehlbestand das Dreifache der Bruttomarge betragen, also 0,45€. Dies ergibt $${M=0.45}$$ und $${H=\frac{4}{365} 1.5\approx 0.0055}$$.

Auf Grundlage dieser Werte und der oben hergeleiteten Formel für das optimale Servicelevel erhalten wir $$ p \approx 98.5 \text{%} $$, was ein typischer Wert für unverzichtbare frische Produkte ist, die in Lagerhäusern gelagert werden und Netzwerke von Lebensmittelgeschäften beliefern.

Verderbliche Lebensmittel

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

Ich arbeite an der Prognose und der Bedarfsplanung für kurzlebige Milchprodukte, bei denen das optimale Servicelevel ein sehr wichtiges Thema ist. Der interessanteste und kniffligste Aspekt hierbei ist H – die Lagerhaltungskosten und die Frage nach ihrem korrekten praktischen Wert.

Beispielsweise sollte bei kurzlebigen Milchprodukten ein wichtiger Bestandteil von H nicht nur die rein finanziellen Kosten des in Beständen eingefrorenen Kapitals und die operativen Logistikkosten umfassen, sondern auch die Kosten potenzieller Verluste durch Abschreibungen abgelaufener Produkte oder durch rabattierte Verkäufe, wenn versucht wird, den Bestand kurz vor dem Ablauf zu verkaufen. Dies tritt ein, wenn die tatsächlichen Verkäufe deutlich unter der Prognose liegen.

Dieser Kompromiss kann als das Risiko potenzieller Überbestände vs. das Risiko potenzieller Fehlbestände beschrieben werden – zwei Risiken, die in entgegengesetzte Richtungen wirken, aber naturgemäß denselben Ursprung haben, d.h. mit dem Sicherheitsbestand verknüpft sind. Bei starker Überprognose, die üblicherweise zu einem Ablaufproblem führt, sind die Prognosefehler nicht normalverteilt. Daher frage ich mich, wie man solche Risiken potenzieller Überbestände besser ausdrücken kann.

Zurück zu Ihrer Formel: Eine weiterführende Entwicklung könnte darin bestehen, eine Beziehung zwischen H und p zu finden oder H zu einer Funktion von p zu machen, also H(p), bevor die Minimierung der Gesamtkosten C(p) in Angriff genommen wird. Was halten Sie davon?

Die hier gegebene Servicelevel-Formel basiert tatsächlich auf der vereinfachten Annahme, dass die Kosten, sowohl für die Lagerung als auch für Fehlbestände, strikt linear sind. In der Praxis können jedoch extreme Nichtlinearitäten beobachtet werden, wie zum Beispiel:

  • Das Lager ist voll, und es gibt einen Punkt, an dem eine zusätzliche Lagereinheit tatsächlich mit einem enormen Mehraufwand verbunden ist, um einen zusätzlichen Lagerstandort zu erhalten.
  • Fehlbestände verursachen zusätzliche verlorene Verkäufe, bis ein weiterer Fehlbestand dazu führt, dass der gesamte wiederkehrende Kunde verloren geht.

Weiterhin weisen verderbliche Produkte noch eine zusätzliche Besonderheit auf: Wenn die Bestandsdeckung – also der Bestand, ausgedrückt in Tagen statt in Stück – der Haltbarkeitsdauer des Produkts nahekommt, steigen $${H}$$, die Lagerhaltungskosten, gegen unendlich.

In der Tat repräsentiert $${H}$$ die Reibung, die mit der Lagerhaltung verbunden ist. Eine Bestandsdeckung, die größer ist als die Haltbarkeitsdauer des Produkts, stellt eine absurde Situation dar, in der – bei Anwendung des FIFO-Prinzips (First In, First Out) – kein Produkt das Lager verlassen würde, ohne zuerst sein Verfallsdatum zu erreichen.

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

  • $${\lambda}$$, die Lieferzeit.
  • $${\lambda_\infty}$$, die Lebensdauer des Produkts, bevor es terminal verfällt (d.h. null Marktwert erreicht).
  • $${\lambda_½}$$, die Dauer, die aufgrund des Wertverlusts den ursprünglichen Lagerhaltungskostenfaktor verdoppelt.
  • $${\lambda_c(p)}$$, die Bestandsdeckung, also der Bestand, ausgedrückt in Tagen statt in Stück. Diese Dauer hängt vom Sicherheitsbestandfaktor ab, also von $${p}$$.

Mit diesen Zeitdauern 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 damit verbundene implizite Annahme genauer erläutern, da wir in gewissem Maße die übliche Auffassung der Lagerhaltungskosten abgewandelt haben, um das Risiko von Abschreibungen zu berücksichtigen.

Zuerst haben wir $${H(0.5)=H}$$. Dies wird aus der ganz oben stehenden Definition gewonnen. Tatsächlich gilt $${\lambda_c(0.5)=\lambda}$$, bei einem Servicelevel von 50% entspricht die Lagerabdeckung der Lieferzeit. Damit stellen wir hier fest, dass in diesem Modell $$H$$ die Lagerhaltungskosten repräsentiert, wobei die Abschreibungskosten, die mit einem Servicelevel von 50% verbunden sind, bereits in die Kosten $$H$$ einkalkuliert wurden. Es sei angemerkt, dass null Sicherheitsbestände nicht null Abschreibungen bedeuten, sondern nur seltene Abschreibungen.

Zweitens, für den Servicelevel $${p_½}$$, sodass $${\lambda_c(p_½) = \lambda_½}$$, haben wir $${H(p_½)=2H}$$. Auch dies ist lediglich eine Konsequenz der für $${H(p)}$$ angenommenen Definition. Intuitiv repräsentiert $${\lambda_½}$$ die Dauer, die die Kombination aus Lagerhaltungskosten plus Abschreibungskosten im Vergleich zur null Sicherheitsbestand-Situation verdoppelt. Es ist klar, dass in der Praxis der Kostenaufschlag, der mit Auslaufdiscounts und Abschreibungen einhergeht, diskrete Schritte durchläuft. Wir sind jedoch der Meinung, dass der Versuch, diesen Aufschlag durch eine typische Dauer auszudrücken, die in der Praxis als ein bestimmter Bruchteil der Lebensdauer des Produkts definiert würde, wesentlich robuster gegenüber den verschiedenen Näherungen ist, die den gesamten Ansatz mit sich bringen, als ein noch feinkörnigeres Modell, das auf noch unsichereren Variablen beruht.

Schließlich, wenn $${p}$$ sich $${p_\infty}$$ nähert mit $${\lambda_c(p_\infty)=\lambda_\infty}$$, dann strebt $${H(p)}$$, gemäß der Definition der angenommenen Funktion für $${H(p)}$$, gegen unendlich. Auf den ersten Blick mag es merkwürdig erscheinen, Lagerhaltungskosten zu haben, die über die Stückkosten des Produkts hinausgehen, aber hier liegt kein Paradoxon vor. Der Wert $$H(p)$$ repräsentiert die Reibungskosten, um eine Einheit an den Kunden zu liefern. Wenn infolge massiver Abschreibungen, um 1 Einheit an den Endkunden zu verschicken, im Durchschnitt 3 Einheiten im Lager eintreffen (wobei 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 sind der Meinung, dass dieses Modell für $${H(p)}$$ zu den einfachstmöglichen zählt, die durch die Einführung nur einer zusätzlichen Variable erreicht werden können. Dann haben wir für $${\lambda_c(p)}$$, mit einer bescheidenen Näherung, folgendes:

$${\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 den Bedarf während der Lieferzeit plus einen normalisierten Sicherheitsbestandfaktor 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 besitzen. Allerdings ist es, indem man einen Ansatz wählt, der dem für die Berechnung der economic order quantity ähnelt, relativ einfach, eine approximative Lösung zu finden, indem man in 0.1%-Schritten von 80% bis 99.9% iteriert. Dies entspricht 200 Iterationen, um eine Präzision von 0.1% zu erreichen, was für praktische Zwecke mehr als ausreichend ist.

Geplante praktische Anwendung

Die Servicelevel-Formel basiert auf einigen Näherungen, sodass die numerischen Werte out of the box möglicherweise nicht sofort verwendbar sind – in der Regel ist ein wenig Feintuning erforderlich. Insbesondere der Faktor $${\frac{1}{\sqrt(2\pi)}\approx0.4}$$ kann je nach Bedarf angepasst werden. Wir sind jedoch der Ansicht, dass diese Formel einen guten Einblick liefert, wie die jeweiligen Servicelevels Ihrer Artikel vergleichbar sein sollten. Zum Beispiel, wenn Sie für zwei Produkte A und B Servicelevels von jeweils 95% (für A) und 90% (für B) erhalten, wäre für die endgültige Produktionskonfiguration zu erwarten, dass das Servicelevel von A größer ist als das von B.

Betrachtet man die Art der oben vorgenommenen Analyse, sind wir der Meinung, dass diese Formel für Produkte, die mit einer geringen oder unregelmäßigen Nachfrage assoziiert sind, nicht relevant ist. Tatsächlich werden solche Produkte mit geringem Volumen typischerweise mit einem niedrigen Nachbestellpunkt verbunden, meist bei 0 oder 1 Einheit; und eine lineare Modellierung der Lagerkosten für das Produkt ist nicht unbedingt sinnvoll, da auch die Komplexität berücksichtigt werden muss, eine zusätzliche Referenz zu lagern.