Servicegrad über den Tag verständlich erklärt
Eine Hotline verspricht, dass vier von fünf Anrufen innerhalb von 20 Sekunden angenommen werden, gerechnet über den ganzen Tag. Diese Seite zeigt, warum es teuer ist, dieses Versprechen in jeder Stunde einzeln zu halten, und warum der scheinbar billigere Ausweg die Anrufer in die Schlange schickt.
Zuletzt aktualisiert:
Ein Wort unbekannt? Das Begriffsverzeichnis erklärt es in wenigen Sätzen.
Eine Hotline und ihr Versprechen
Stellen Sie sich die Telefonhotline eines Stromanbieters vor. Sie verspricht: Von 100 Anrufen nimmt sie 80 innerhalb von 20 Sekunden an. Dieser Anteil gilt für den ganzen Tag, nicht für jede einzelne Stunde (Fachwort: Servicegrad).
Die Chefin plant, wie viele Leute in jeder Stunde des Tages am Telefon sitzen. Nachts rufen wenige an, tagsüber mehr. Mehr Leute kosten mehr Lohn. Weniger Leute lassen Anrufer länger warten.
Die Planung hat zwei Schritte. Erst fragt man, wie viele Leute jede Stunde braucht. Dann legt man Schichten darüber, das sind Dienste am Stück, etwa sechs, acht oder zehn Stunden lang. Die Kosten sind die Arbeitsstunden aller Leute zusammen (Fachwort: Personenstunden).
Alle Zahlen dieser Seite stammen aus einem vereinfachten Rechenbild (Fachwort: Modell). Es spielt erfundene Tagesverläufe durch. Ein Tagesverlauf sagt, wie viele Anrufe in welcher Stunde kommen. Gerechnet wird für eine mittelgroße Hotline mit Schichten von sechs, acht oder zehn Stunden. Das ist der Grundfall.
Zwei naheliegende Pläne
Beide Pläne sollen den Tag auf mindestens 80 von 100 bringen. Sie unterscheiden sich darin, was für jede einzelne Stunde verlangt wird.
Beim strengen Plan muss jede Stunde für sich 80 von 100 erreichen. Beim freien Tagesplan zählt nur der Tag. Einzelne Stunden dürfen schlecht sein, auch ganz ohne Besetzung. Ein dritter Plan folgt weiter unten als Ausweg.
Fallstrick 1: Der strenge Plan liefert zu viel
Der strenge Plan wirkt sicher. Erreicht jede Stunde das Ziel, erreicht es auch der Tag. Im Rechenbild liefert er aber im Mittel 89 von 100 statt 80. Die Hotline bezahlt diese Übererfüllung jeden Tag.
Dafür gibt es zwei Gründe. Erstens gibt es nur ganze Leute. Braucht eine Stunde rechnerisch gut drei Leute, plant man vier ein. Zweitens lässt sich eine Schicht nicht für eine einzelne Stunde buchen. Der Frühdienst, der den Ansturm am Morgen abdeckt, hat auch danach noch Leute da. Die Schichtlänge rundet also noch einmal auf.
Fallstrick 2: Der freie Tagesplan spart durch leere Stunden
Der freie Tagesplan sieht billiger aus. Er braucht im Mittel 13 % weniger Personenstunden als der strenge Plan. Die Ersparnis entsteht, weil er Stunden aufgibt: Im Mittel bleibt rund ein Viertel der Stunden ganz ohne Besetzung.
Warum gerade diese Stunden? Das Ziel erlaubt, dass 20 von 100 Anrufen zu lange warten. Das ist ein Vorrat an erlaubten Verspätungen. Der freie Tagesplan verbraucht ihn dort, wo er am meisten Personal spart: in den ruhigen Stunden. Dort müssten Leute am Telefon sitzen und lange auf den nächsten Anruf warten. Pro Anruf ist das teuer, wie die Kasse eines kleinen Ladens: Sie muss auch bei drei Kunden besetzt sein, obwohl sie wenig zu tun hat. Eine ruhige Stunde hat wenige Anrufe und wiegt im Tagesschnitt wenig.
Je höher das Tagesziel, desto kleiner ist dieser Vorrat. Dann gibt es weniger aufzugeben, und es entstehen weniger leere Stunden und weniger Schlangen.
Fallstrick 3: Die Schlange nach der leeren Stunde
Was geschieht in einer Stunde ohne Besetzung? Im Rechenbild legen die Anrufer nicht auf. Sie warten, bis jemand kommt. Sobald die nächste Schicht beginnt, hängen viele in der Leitung. Das ist wie am Postschalter nach der Mittagspause: Die Schlange steht schon, bevor der erste Kunde bedient wird.
Die Schlange schrumpft nur langsam, denn während die Leute sie abarbeiten, rufen weitere an. Die Rechnung je Stunde sieht das nicht. Sie zählt die Anrufe der leeren Stunde als nicht rechtzeitig und beginnt danach wieder von vorn.
Spielt man den Tag durch (Fachwort: Simulation), sieht man den Unterschied. Dabei wandert die Schlange von Stunde zu Stunde mit. Die Rechnung je Stunde versprach dem freien Tagesplan gut 80 von 100. Beim Durchspielen werden im Mittel gut zehn von 100 Anrufen weniger rechtzeitig angenommen. Das Ziel hält er nur in einem von zehn durchgespielten Tagesverläufen. Der strenge Plan hält es in allen 100.
Der Ausweg: ein etwas niedrigeres Ziel für jede Stunde
Der abgesenkte Plan verlangt in jeder Stunde dasselbe Ziel, aber etwas weniger als 80. Man senkt es so weit, dass der Tag gerade noch 80 erreicht. Im Mittel genügt dafür ein Stundenziel von 65 von 100.
Das klappt, weil derselbe Aufrundungseffekt wirkt wie beim strengen Plan: ganze Leute, ganze Schichten. Er füllt die Lücke zwischen dem Stundenziel und den 80 für den Tag wieder auf.
Der abgesenkte Plan spart im Mittel 8 % der Personenstunden gegenüber dem strengen Plan und hält das Tagesziel in 98 von 100 Tagesverläufen. Jede Stunde hat ein eigenes Ziel, also sind in jeder Stunde genug Leute da, um es zu erreichen. Deshalb entsteht keine Schlange aus einer leeren Stunde.
Ein zusätzliches Mindestmaß je Stunde spart im Grundfall im Mittel weniger als 1 % mehr. Das steht im zweiten Teil.
Das Programm zum Ausprobieren
Zu dieser Seite gehört ein Programm zum Ausprobieren im Browser, kurz die Demo. Unten gibt es zwei Knöpfe: Der erste öffnet die Demo, der zweite führt zum zweiten Teil für Fachleute. Zum Verstehen brauchen Sie die Demo nicht.
Sie rechnet einen erfundenen Tagesverlauf und zeigt die Pläne nebeneinander. Daneben stehen Ergebnisse, die vorab für viele erfundene Tagesverläufe gerechnet wurden. Die Zahlen dieser Seite stammen aus ihnen.
Häufige Missverständnisse
- „80 von 100 heißt: Die übrigen 20 kommen nie durch.“ Nein. Im Rechenbild nimmt die Hotline auch sie an, nur später als nach 20 Sekunden. In der Wirklichkeit legen manche vorher auf. Das bildet das Rechenbild nicht ab.
- „Hauptsache, in jeder Stunde sitzt jemand am Telefon.“ Nein. Es kommt darauf an, dass genug Leute da sind, nicht auf bloße Anwesenheit. Ein Plan, der nur eine Person je Stunde sichert und sonst den Tag zählt, hält das Ziel in gut jedem dritten Tagesverlauf, der freie Tagesplan nur in einem von zehn. Eine einzelne Person ist in einer lauten Stunde schnell überlastet. Darum hat im abgesenkten Plan jede Stunde ein eigenes Ziel.
Woran Sie das im Alltag erkennen
Anzeichen, die jeder kennt:
- Ein Anbieter nennt nur einen Durchschnitt über den Tag. Fragen Sie nach der Tageszeit, zu der Sie anrufen.
- Wer kurz nach einer Störung oder Schließzeit anruft, wartet länger als später am Tag. In der Zwischenzeit haben sich Anrufe gesammelt.
Wie ernst ist das Rechenbild zu nehmen?
Alle Tagesverläufe sind erfunden. Im Rechenbild warten Anrufer geduldig, und es gibt keine Pausen und keine Wochentage. Die Aussagen gelten für den Grundfall, nicht für eine bestimmte Hotline.
Was Sie mitnehmen:
- Fragen Sie bei jedem Zeitversprechen, ob es für jede Stunde oder nur im Tagesschnitt gilt. Das sind zwei verschiedene Pläne.
- Prüfen Sie bei einem guten Durchschnitt auch den schlechtesten Zeitabschnitt.
- Sparen Sie lieber gleichmäßig an allen Stunden als radikal an einzelnen.
Hinweis: Alle Demos rechnen mit synthetischen oder frei verfügbaren Beispieldaten und laufen auf einem externen Anbieter (Datenschutz). Bitte geben Sie darin keine vertraulichen oder personenbezogenen Daten ein. Die Ergebnisse gelten für die jeweilige Demo-Instanz und lassen sich nicht ungeprüft auf reale Fälle übertragen; für darauf gestützte Entscheidungen übernehme ich keine Gewähr.
Modell und Annahmen
Dieser Teil ist eigenständig lesbar. Er beschreibt, wie ein Kontaktcenter aus einem Servicegrad-Ziel den Stundenbedarf nach Erlang C ableitet, Schichten darüberlegt und was es kostet, das Tagesziel als Stundenziel zu rechnen.
Ergebnis in drei Sätzen: Rechnet man das Tagesziel in jeder Stunde einzeln (Plan Z), liefert der Tag im Grundfall 88,6 % statt 80 %; ein einheitlich abgesenktes Stundenziel (Plan K) holt 7,8 % der Personenstunden zurück. Die scheinbar größere Ersparnis der gemeinsamen Planung ohne Mindestwert (Plan O, 13,0 %) entsteht durch leere Stunden und bricht in der Simulation um 10,6 Punkte ein; O hält das Ziel nur in 10 % der Instanzen. Was an echter Kopplung bleibt, ist im Mittel 0,5 % der Kosten von K.
Alle Zahlen stammen aus erfundenen Instanzen (Tagesverläufen), die eine vorgerechnete Messreihe zusammenfasst: 13 Zellen (Messpunkte mit festem Ziel, Schichtkatalog, Bediendauer und Größe) mit zusammen 5.400 Instanzen. Der Grundfall ist die Zelle mit Ziel 80 %, Bediendauer 240 s und Schichten von 6, 8, 10 h bei mittlerer Größe. Drei Fallstricke gliedern die Befunde: (1) Z übererfüllt das Tagesziel, (2) O spart scheinbar durch leere Stunden (Stunden mit \(n_t = 0\)), (3) der Rückstau einer leeren Stunde verdirbt die Folgestunden, den die Stundenrechnung nicht sieht.
- Tag und Last: 24 Stundenintervalle, zyklisch. Die Last der Stunde \(t\) ist das Angebot \(a_t\) in Erlang (Anrufrate mal mittlere Bediendauer AHT); der Generator erzeugt die Last ganzzahlig in Hundertsteln Erlang bei 240 s und skaliert sie danach mit der Bediendauer. Die Bediendauer ist exponentiell, die Geduld unendlich, die Reihenfolge FIFO; Abwanderung und Wiederanruf gibt es nicht. Die Bediendauer beträgt im Grundfall 240 s, zwei weitere Zellen haben 120 s und 480 s.
- Servicegrad: je Stunde stationär nach Erlang C (Formel unten) mit fester Servicezeit \(s\) = 20 s. Der Tages-Servicegrad ist ankunftsgewichtet, \(\sum_t a_t\,SL_t(n_t) / \sum_t a_t\); das Ziel ist 70, 80, 90 oder 95 % (Grundfall 80 %). Für \(n \le a_t\) setzt das Modell \(SL_t = 0\).
- Schichten: zusammenhängende Dienste mit einer Länge aus einem Katalog (nur 8 h; 6, 8, 10 h im Grundfall; 4, 6, 8 h; 3, 4, 5 h; 3 bis 12 h; 3, 4 h), Start in jeder Stunde, zyklisch über Mitternacht. Die Kosten sind die Länge in Personenstunden. Die Besetzung \(n_t\) ist die Zahl der Schichten, die Stunde \(t\) abdecken.
- Z (strenger Stundenplan): \(n_t \ge c_t\), wobei \(c_t(z)\) die kleinste Besetzung mit \(SL_t \ge z\) bezeichnet und \(c_t = c_t(\text{Ziel})\) gilt; die Schichten sind kostenminimal darüber.
- K (abgesenktes Stundenziel): ein einheitliches Stundenziel \(z \le\) Ziel, gesucht wird abwärts von Ziel im Raster 0,01 bis zur Untergrenze 0,30. Ein z ist zulässig, wenn der Tages-Servicegrad der kostenminimalen Überdeckung mindestens das Ziel erreicht; sonst ist es ein Fehlschlag, und nach drei Fehlschlägen in Folge bricht die Suche ab. Gewählt wird das zulässige z mit den kleinsten Kosten, bei Gleichstand das kleinere. Das ist eine Rastersuche und nicht in jeder Instanz das kleinste zulässige \(z\).
- G (gemeinsam mit Mindestwert): nur der Tag zählt, aber jede Stunde erreicht mindestens 50 %, und der Tages-Servicegrad ist mindestens der von K. Der Gewinn von G gegenüber K heißt Kopplung: Er entsteht, weil Servicegrad zwischen Stunden verrechnet wird. Hat K ein \(z\) unter 0,5, erfüllt K den Mindestwert von G nicht, und G kann teurer sein als K (11 der 500 Instanzen des Grundfalls, alle mit \(z\) unter 0,5; Rechnung dieser Seite aus den gespeicherten Ergebnissen).
- O (gemeinsam ohne Mindestwert): nur der Tages-Servicegrad muss das Ziel erreichen. O ohne Schichtstruktur ist dieselbe Aufgabe mit beliebigem Besetzungsmuster (exakte Rucksack-Rechnung) und damit die Untergrenze der Kosten von O.
- Nur in der Messreihe vorgerechnet (gemeinsame Planungen, im Folgenden mit den Namen der Messreihe; dort heißen Z, K, G, O auch A, Az, BFz, B): Beq (Tages-Servicegrad mindestens der von Z, kein Mindestwert), BF (jede Stunde mindestens 50 %, Tages-Servicegrad mindestens das Ziel), B1 (mindestens eine Person je Stunde) und Bz (Tages-Servicegrad mindestens der von K, kein Mindestwert).
- Rückstau-Simulation: Ereignissimulation \(M_t/M/n_t\) mit stündlich konstanter Rate und zyklischem Plan, drei Tage Einschwingzeit, Tage nach Anrufbudget (40.000 Anrufe je Plan, 5 bis 40 Tage; die Messreihe rechnet 40 Tage fest). Jede Ankunft zählt, auch unbediente; sie gelten als nicht rechtzeitig. Sinkt \(n_t\), beenden laufende Anrufe ihre Bedienung.
- Instanzen: erfunden, mit einem ganzzahligen Generator erzeugt. Fünf Profile (flach, zwei Spitzen, steile Morgenspitze, Nachtgrundlast, schmaler Gipfel); Spitzenlast klein 3 bis 6, mittel 8 bis 15, groß 25 bis 40 Erlang.
- Rechenweg: Die Demo rechnet im Browser (Live-Rechnung). Z, K und G löst HiGHS (über
scipy.optimize.milp) als Überdeckung mit kontinuierlichen Zuwachsvariablen ab \(c_t(z)\); die Untergrenze ohne Schichtstruktur ist eine exakte Rucksack-Rechnung (numpy). Der Median dieser Stufe liegt je Einstellung bei 0,11 bis 0,30 s. O mit Schichten löst HiGHS mit unärer Binärkette und einem Schnitt aus der Rucksack-Rechnung, Zeitlimit 5 s (8 s ab 20 Erlang Spitzenlast), Median 0,10 bis 2,33 s, Maximum 8,1 s; der Status ist „bewiesen optimal“ oder „bestes Ergebnis“ (Zeitlimit erreicht). Findet der Löser nichts Besseres, gilt als Rückfall der beste bekannte zulässige Plan (K, G, die billigste Überdeckung des Rucksack-Musters); er wird nie unterschritten.
Die Formeln
Der Servicegrad der Stunde \(t\) bei \(n\) Bedienern (Anteil der Anrufe, die höchstens \(s\) warten) folgt für \(n > a_t\) aus Erlang C, sonst ist er 0:
\[SL_t(n) = 1 - C(n, a_t)\, e^{-(n - a_t)\, s/\mathrm{AHT}}\]
Dabei ist \(C(n, a)\) die Wahrscheinlichkeit, dass ein ankommender Anruf warten muss: \(C(n, a) = \dfrac{\frac{a^n}{n!}\frac{n}{n-a}}{\sum_{k=0}^{n-1} \frac{a^k}{k!} + \frac{a^n}{n!}\frac{n}{n-a}}\). Die Überdeckung wählt Schichtzahlen \(x_j \in \mathbb{N}_0\) zur Schichtart \(j\) mit Länge \(L_j\) und minimiert \(\sum_j L_j x_j\) unter
\[n_t = \sum_{j \ni t} x_j \ge lb_t\]
mit der unteren Grenze \(lb_t\) der Besetzung. Bei Z ist \(lb_t = c_t(\text{Ziel})\). Bei K ist \(lb_t = c_t(z)\) für das nach obiger Suche gewählte \(z\); unter kostengleichen Überdeckungen zählt die mit dem höchsten Tages-Servicegrad. G setzt \(lb_t = c_t(0{,}5)\) und verlangt zusätzlich, dass der Tages-Servicegrad nicht unter den von K fällt. O setzt \(lb_t = 0\) und verlangt nur den Tag:
\[\sum_t a_t SL_t(n_t) \ge \text{Ziel}\cdot\sum_t a_t\]
Die Untergrenze ohne Schichtstruktur ist ein Rucksack über die Besetzungen: Mit \(\mathrm{best}_t[m] = \max \sum_{u \le t} a_u SL_u(n_u)\) bei \(\sum n_u = m\) kostet O ohne Schichtstruktur das kleinste \(m\) mit \(\mathrm{best}_{24}[m] \ge \text{Ziel}\cdot\sum a\). Das ist zugleich die untere Schranke der Kosten von O mit Schichten und ein Schnitt \(\sum_j L_j x_j \ge m^*\) im Modell von O.
Zur Konkavität: Für \(n \ge c_t(z)\) mit \(z \ge 0{,}5\) sind die Zuwächse \(SL_t(n+1) - SL_t(n)\) nichtsteigend (gemessen, kein Beweis). Dann ist \(\sum_t a_t SL_t(n_t) = \text{const} + \sum_t \sum_{k > lb_t} a_t \Delta_{tk}\, l_{tk}\), wobei \(\Delta_{tk}\) der Zuwachs des Servicegrads durch die \(k\)-te Person ist, \(l_{tk} \in [0, 1]\) kontinuierlich und \(\sum_k l_{tk} \le n_t - lb_t\). Die Tagesbedingung wird damit linear. Für O ist die Kurve ab 0 S-förmig; dort braucht das Modell die unäre Binärkette \(l_{t,k+1} \le l_{tk}\).
Herleitungen Schritt für Schritt
Die folgenden Herleitungen sind Rechnungen dieser Seite, keine Messungen. Wo die Messreihe dieselbe Aussage stützt, steht es dabei.
Warum Z mehr liefert als verlangt.
- Schritt 1: Nach Definition gilt \(SL_t(c_t) \ge\) Ziel in jeder Stunde. Der Tages-Servicegrad ist ein Mittel mit positiven Gewichten \(a_t\) und liegt daher mindestens beim Ziel.
- Schritt 2: Der Überschuss hat zwei Quellen. Erstens ist \(n_t\) ganzzahlig: \(c_t\) ist die erste Besetzung über dem Ziel, und der Servicegrad springt je Person. Zweitens decken Schichten mehrere Stunden zugleich ab, sodass \(n_t \ge c_t\) in vielen Stunden strikt gilt.
- Schritt 3 (durchgerechnet): Eine Stunde mit \(a = 1\) Erlang, \(s = 20\) s und \(\mathrm{AHT} = 240\) s, also \(s/\mathrm{AHT} = 1/12\). Mit \(n = 1\) ist \(SL = 0\), weil \(n \le a\). Mit \(n = 2\) ist \(C(2, 1) = 1/3\) und \(SL = 1 - e^{-1/12}/3\), knapp sieben Zehntel. Mit \(n = 3\) ist \(C(3, 1) = 1/11\) und \(SL = 1 - e^{-1/6}/11\), gut neun Zehntel. Die erste Person über der Last bringt also knapp sieben Zehntel, die nächste gut zwei Zehntel.
Warum O gerade die kleinen Stunden aufgibt.
- Schritt 1: Die Nebenbedingung von O ist gleichwertig zu \(\sum_t a_t\,(1 - SL_t(n_t)) \le (1 - \text{Ziel})\,\sum_t a_t\): Der Tag darf höchstens den Anteil \(1 - \text{Ziel}\) der Anrufe als nicht rechtzeitig verbuchen. Das ist ein Budget.
- Schritt 2: Eine Stunde ohne Besetzung hat \(SL_t = 0\) und verbraucht ihren ganzen Anteil \(a_t / \sum_u a_u\) dieses Budgets. Dafür spart sie die Besetzung, die sie sonst bräuchte, ungefähr \(c_t\) Personen. Das gilt ohne Schichtstruktur; mit Schichten sparen leere Stunden weniger, weil benachbarte Schichten sie teilweise ohnehin besetzen.
- Schritt 3 (Heuristik): Die Ersparnis je verbrauchtem Budget ist dann ungefähr \(c_t / a_t\). Die Wurzelregel nähert \(c_t \approx a_t + \beta\sqrt{a_t}\) mit einem Gütefaktor \(\beta > 0\) (größeres \(\beta\), höherer Servicegrad); sie ist eine Faustregel, \(\beta\) hängt in Wahrheit von \(a_t\) und \(s/\mathrm{AHT}\) ab, und für kleine \(a_t\) ist sie grob. Mit ihr ist \(c_t / a_t \approx 1 + \beta/\sqrt{a_t}\), am größten dort, wo \(a_t\) klein ist.
- Schritt 4: Die Kurve \(SL_t(n)\) ist 0 für \(n \le a_t\) und steigt danach zunächst steil (im Beispiel oben bei ganzzahligem \(a\) bringt die erste Person darüber den größten Zuwachs; bei nichtganzzahligem \(a\) kann der zweite größer sein). Deshalb ist sie auf \([0, c_t(0{,}5)]\) nicht konkav. Bei nicht konkaven Kurven liegt das Optimum eher an den Rändern (Stunde ganz besetzt oder ganz leer) als bei gleichmäßiger Verteilung.
- Schritt 5: Das Budget \(1 - \text{Ziel}\) schrumpft mit steigendem Ziel. Das passt zur Messreihe: Die scheinbare Ersparnis von O sinkt mit dem Ziel, und bei 90 und 95 % liegt O nahe bei BF (7,8 gegen 7,5 bei 90 %, 6,8 gegen 6,8 bei 95 %, Tabelle der Zellen).
Rückstau nach einer leeren Stunde (Fluidnäherung). Annahme: Stunde \(t-1\) ist leer, Stunde \(t\) hat \(n\) Bediener, beide haben das Angebot \(a\), die Stundenlänge ist \(T\). Die Raten sind konstant, der Zufall bleibt außer Acht.
- Schritt 1: Die Anrufrate ist \(\lambda = a/\mathrm{AHT}\). Am Ende der leeren Stunde warten \(Q = \lambda T\) Anrufe.
- Schritt 2: In Stunde \(t\) bedienen \(n\) Bediener mit der Rate \(n/\mathrm{AHT}\), und es kommen \(\lambda\) neue Anrufe. Der Rückstau sinkt mit der Rate \((n - a)/\mathrm{AHT}\).
- Schritt 3: Die Abbauzeit ist \(T_{\mathrm{ab}} = Q\,\mathrm{AHT}/(n - a) = T\,a/(n - a)\). Bei \(n = a + \beta\sqrt{a}\) wird daraus \(T_{\mathrm{ab}} = T\sqrt{a}/\beta\). Bei \(n = 2a\) dauert der Abbau so lang wie die leere Stunde.
- Schritt 4: Ein Anruf wartet etwa so lange, wie die Schlange vor ihm noch zu bedienen ist: zu Beginn \(T\,a/n\), danach linear fallend bis null. Er überschreitet die Servicezeit \(s\) für den größten Teil der Abbauzeit, weil \(s\) (20 Sekunden) gegen \(T\) (eine Stunde) klein ist.
- Schritt 5: Die Stundenrechnung bewertet jede Stunde einzeln im stationären Gleichgewicht und kennt keinen Rückstau aus der Vorstunde. Dieser Rückstau ist der Unterschied zur Simulation; sie misst ihn für O als Einbruch.
Befunde
Grundfall, wenn nichts anderes steht: fünf Profile, 8 bis 15 Erlang, 500 Instanzen (100 je Profil). Ersparnisse sind Prozent der Personenstunden gegenüber Z, je Instanz berechnet und gemittelt (± Standardfehler). Die Simulation läuft im Grundfall auf 100 Instanzen (20 je Profil) mit 40 Tagen. Jede Zelle hat 400 oder 500 Instanzen; die Messreihe wurde mit CP-SAT vorgerechnet.
| Frage | Befund |
|---|---|
| Fallstrick 1: Was liefert Z? | Tages-Servicegrad 88,6 % statt 80 % (Spanne 81,8 bis 94,9 %). |
| Was holt K zurück? | 7,8 ± 0,2 % der Personenstunden (14,0 von 207,6 im Mittel); K liefert 81,5 %, das Stundenziel z liegt im Mittel bei 0,65 (Spanne 0,30 bis 0,79). Das sind 57,6 % der Ersparnis von O in Personenstunden (14,0 von 24,3). Beq spart nur 1,4 ± 0,1 % (2,7 Personenstunden), 10,9 % der Ersparnis von O in Personenstunden. |
| Fallstrick 2: Was „spart“ O? | 13,0 ± 0,2 % (24,3 Personenstunden; als Quotient der Mittel sind es 11,7 %, weil kleine Instanzen in Prozent mehr sparen); im Modell 80,5 %. Im Mittel bleiben 5,8 von 24 Stunden leer. |
| Wie viele Instanzen haben schwache Stunden? | Bei O haben 98,8 % mindestens eine Stunde unter 50 % Servicegrad, 9,4 % der Anrufe liegen in solchen Stunden. Bei B1 sind es 90,2 % der Instanzen; der kleinste Stunden-Servicegrad liegt im Mittel bei 0,11 (O: 0,01). |
| Fallstrick 3: Was bleibt in der Simulation? | Modell → Simulation (Tages-Servicegrad in %): Z 88,6 → 88,8; K 81,6 → 82,0; BF 81,0 → 81,4; Beq 88,9 → 86,7; B1 80,6 → 75,7; O 80,5 → 69,9. O liegt 10,6 Punkte (± 0,6) unter dem Modell, je Profil zwischen 16,4 und 1,8 Punkte. |
| Wie oft hält die Simulation das Ziel (mindestens 79,5 %)? | Z in 100 %, K in 98 %, BF in 95 %, Beq in 90 %, B1 in 38 %, O in 10 % der Instanzen. |
| Was bleibt an echter Kopplung? | G gegenüber K (in Prozent der Kosten von K): 0,5 ± 0,1 % (0,8 Personenstunden), in 68,8 % der Instanzen genau 0, höchstens 8 Personenstunden bzw. 5,5 %. Ohne Mindestwert (Bz): 3,8 % (7,0 Personenstunden), simuliert aber 73,2 statt 82,0 %; das Ziel hält Bz in 23 von 100 Instanzen, K in 98. |
| Was spart BF ohne Kalibrierung? | 8,9 ± 0,2 % (16,2 Personenstunden) bei gehaltener Qualität. |
Die zwölf übrigen Zellen (alle Profile gemittelt; Ersparnis gegenüber Z in Prozent). K steht im Raster 0,01 wie in der Live-Rechnung; die Messreihe selbst rechnete in den Zellen mit Stern mit dem gröberen Raster 0,05, die Werte wurden mit der Live-Rechnung nachgerechnet. Die Zellen „Katalog 3/4/5 h“ und „3 bis 12 h“ sind bis auf 8 von 400 Instanzen kostengleich. K spart in der Zelle „Katalog nur 8 h“ mehr als BF (13,2 gegen 11,9), obwohl BF freier plant: BF verlangt in jeder Stunde mindestens 50 %, K darf ein z unter 0,5 wählen, was in den gespeicherten Ergebnissen dieser Zelle bei gut der Hälfte der Instanzen der Fall ist (Erklärung dieser Seite).
| Zelle | Instanzen | Z liefert (%) | O | BF | K | Beq | O bewiesen (%) |
|---|---|---|---|---|---|---|---|
| Ziel 70 %* | 400 | 81,6 | 18,5 | 7,6 | 7,6 | 3,9 | 88,0 |
| Ziel 90 % | 400 | 94,2 | 7,8 | 7,5 | 5,9 | 0,7 | 100,0 |
| Ziel 95 % | 400 | 97,2 | 6,8 | 6,8 | 5,0 | 0,6 | 100,0 |
| Katalog nur 8 h* | 400 | 92,8 | 17,8 | 11,9 | 13,2 | 0,1 | 80,5 |
| Katalog 4/6/8 h* | 400 | 87,5 | 12,1 | 8,0 | 6,5 | 1,7 | 88,5 |
| Katalog 3/4/5 h* | 400 | 85,5 | 11,0 | 6,6 | 4,4 | 3,3 | 99,8 |
| Katalog 3 bis 12 h* | 400 | 85,5 | 11,0 | 6,6 | 4,4 | 3,3 | 99,8 |
| Bediendauer 120 s* | 400 | 88,7 | 14,0 | 10,4 | 8,7 | 1,4 | 100,0 |
| Bediendauer 480 s* | 400 | 87,6 | 11,4 | 6,1 | 5,2 | 1,9 | 74,8 |
| Größe klein* | 400 | 88,5 | 13,9 | 11,7 | 9,8 | 1,1 | 99,2 |
| Größe groß* | 400 | 88,0 | 12,3 | 5,3 | 4,6 | 2,4 | 75,2 |
| Stresszelle (Katalog 3, 4 h, Ziel 95 %) | 500 | 96,7 | 7,0 | 6,9 | 3,6 | 1,6 | 100,0 |
In der Stresszelle gibt es bei hohem Ziel nichts mehr aufzugeben: O, B1 und BF liegen bei 7,0, 7,0 und 6,9 %.
Die Messreihe deckt nur einen Teil der 216 Kombinationen von Ziel, Katalog, Bediendauer und Größe ab. Die Abdeckung rechnet alle 216 Kombinationen mit der Live-Rechnung für alle fünf Profile je 20 Instanzen (1.080 Zeilen, 21.600 Läufe). Eine Aussage „gilt“ in einer Zeile bei Übererfüllung über Ziel plus 1 Punkt, im Mittel mindestens einer leeren Stunde, einem Einbruch von mehr als 3 Punkten und mehr als 2 Standardfehlern bzw. mindestens 1 Personenstunde Kopplung; „gilt nicht“ unterhalb von 0,5 Punkten, 0,5 Stunden, 1 Punkt Einbruch bzw. 0,5 Personenstunden, dazwischen „unklar“.
| Aussage (von 1.080 Zeilen) | gilt | unklar | gilt nicht | gilt bei Ziel 70 / 80 / 90 / 95 % (von je 270 Zeilen) |
|---|---|---|---|---|
| Übererfüllung von Z | 1.068 | 12 | 0 | nicht getrennt ausgewiesen |
| Leere Stunden von O | 648 | 46 | 386 | 261 / 256 / 109 / 22 |
| Einbruch von O in der Simulation | 539 | 119 | 422 | 255 / 212 / 71 / 1 |
| Echte Kopplung (G gegen K) | 579 | 39 | 462 | nicht getrennt ausgewiesen |
Stimmt die Live-Rechnung mit der Messreihe? Alle 5.400 Instanzen wurden nachgerechnet: Z ist gleich in 5.400. K kostet in 5.397 Instanzen höchstens so viel wie der Wert der Messreihe (in 1.751 weniger) und in 3 mehr. O mit Schichten ist gleich in 5.046, besser in 55 und schlechter in 299, davon um mehr als 2 Personenstunden in 189 (Lauf mit 14 parallelen Prozessen und fremder Last, also wenig Rechenzeit je Zeitlimit); O wurde nie fälschlich als „bewiesen“ gemeldet. Die Rechenmodule sind gegen unabhängige Rechnungen geprüft (unter anderem HiGHS gegen CP-SAT); von 85 eingebauten Fehlern fanden die Prüfungen 83, 2 sind begründet gleichwertig.
Grenzen und was die Messung zeigt
Was sie belegt:
- Den Strenge-Plan-Fallstrick über alle 216 Kombinationen: Die Übererfüllung von Z gilt in 1.068 von 1.080 Zeilen und in keiner „gilt nicht“.
- Die Kosten der Überdeckung von Z, K (für das gefundene \(z\)) und BF: In allen Zellen der Messreihe sind sie bewiesen optimal. Die \(z\)-Suche von K ist dagegen eine Rastersuche.
- Den Unterschied zwischen Modell und Simulation für O im Grundfall (100 Instanzen, 40 Tage) und die Live-Rechnung gegen die Messreihe (Tabellen oben).
- Den Schluss, dass die Kopplung ohne Mindestwert eine Scheinersparnis ist: Bz spart im Modell 3,8 % gegenüber K und hält das Ziel in der Simulation in 23 statt 98 von 100 Instanzen.
Was sie nicht belegt:
- Aussagen über echte Kontaktcenter. Alle Instanzen sind erfunden und nicht an Daten kalibriert; die Spitzenlast liegt zwischen 3 und 40 Erlang.
- Die Fallstricke 2 und 3 außerhalb der 13 Zellen. Die Abdeckung zeigt, dass leere Stunden und der Einbruch von O mit dem Ziel stark abnehmen und nicht überall gelten (Tabelle oben). Die Abdeckung simuliert nur 20 Instanzen je Profil und Kombination und gibt Richtwerte, keinen Beweis. In der Live-Rechnung ist eine Instanz ein Zufallsfall von 100 und trägt ± 2 Standardfehler.
- Die Wahl des Mindestwerts. 50 % ist eine einzige Wahl; 30 und 70 % wurden nicht gemessen.
- Die Kosten von O mit Schichten. Sie sind teils obere Schranken, denn bewiesen sind sie nicht überall (Spalte „O bewiesen“). O ist dort eher zu teuer als zu billig angegeben; ein besserer Fund würde die Scheinersparnis vergrößern.
- Die stationäre Näherung. Die Scheinersparnis von O ist eine Folge der stationären Stundenrechnung, also eine Schwäche dieses Planungsmodells und keine Eigenschaft des Problems: \(n \le a\) bekommt den Servicegrad 0, pessimistisch für eine Stunde knapp unter der Last, optimistisch für die Folgestunden ohne Rückstau. Den Nettoeffekt zeigt die Simulation. Korrekturen der Näherung oder eine simulationsbasierte gemeinsame Planung würden O vermutlich verbessern; das ist nicht gemessen und nicht Teil der Demo.
- Die Konkavität. Die nichtsteigenden Zuwächse ab \(c_t(z)\) sind gemessen, kein Beweis. Die lineare Fassung setzt sie ab \(z \ge 0{,}5\) voraus; eine Nachmessung an 400 Instanzen (Größe klein und mittel, Bediendauer 120 bis 480 s) fand bei \(z\) = 0,3, 0,4, 0,5 und 0,7 keine Verletzung. Zur Laufzeit wird sie je Stunde geprüft, sonst gilt die binäre Fassung.
Erweiterungen und Verweise
Nicht umgesetzt sind mehrere Qualifikationen, Abwanderung und Wiederanruf, nichtexponentielle Bedienzeiten, Pausen und Ruhezeiten, Wochenmuster, Schichtfixkosten, Prognosefehler (die Prognose gilt als bekannt) und Kalibrierung an echten Daten. Verwandte Demos dieser Website zeigen Teile davon:
- Bedarf gegeben: Die Schichtplanung deckt einen gegebenen Stundenbedarf, auch mit Wochenmuster; verständlich erklärt. Hier ist der Bedarf das Ergebnis einer Warteschlangenrechnung.
- Bedarf aus der Last: Die Wurzelregel rechnet die Bedienerzahl für ein Ziel bei konstanter Last, die zeitvariable Last mit einem Planungsraster, das aufrundet; hier tun es die Schichtlängen.
- Warteschlange und Abwanderung: M/M/c liefert Erlang C, Erlang A ergänzt die Abwanderung bei konstanter Rate; dasselbe Modell steckt im Terminal-Gate der Warteschlangen-Linie (Lkw statt Anrufe, Minutenziele).
- Qualifikation: Die Kreuzschulung zeigt die Verteilung von Zusatzqualifikationen als Tagesbilanz ohne Warteschlange und Stundenlage; Skill-based Routing mit Warteschlange ist hier offen.
Quellen
- Bhulai, Koole, Pot (2008): Simple Methods for Shift Scheduling in Multiskill Call Centers. Manufacturing & Service Operations Management 10(3), 411 bis 420: zweistufiges Vorgehen (erst Besetzung je Periode, dann Schichten per LP).
- Avramidis, Chan, Gendreau, L'Ecuyer, Pisacane (2010): Optimizing daily agent scheduling in a multiskill call center. European Journal of Operational Research 200(3), 822 bis 832: Servicegrad je Anruftyp und Periode sowie aggregiert; das übliche zweistufige Vorgehen kann weit vom Optimum liegen (Inhaltsangabe aus dem Gedächtnis, nicht geprüft).
- Zur Wurzelregel und zu Kontaktcentern: Halfin, Whitt (1981): Heavy-traffic limits for queues with many exponential servers. Operations Research 29(3), 567 bis 588; Gans, Koole, Mandelbaum (2003): Telephone call centers: tutorial, review, and research prospects. Manufacturing & Service Operations Management 5(2), 79 bis 141.
- Quelltext, Messreihen und Tests der Demo: github.com/sebastian-hanisch/servicegrad-tag-demo.
Die ersten beiden Arbeiten wurden laut den Angaben der Demo per Suche bestätigt (Treffer 2026-10-10), die Volltexte nicht gelesen. Halfin und Whitt sowie Gans, Koole und Mandelbaum stehen nicht in den Angaben der Demo und sind ebenfalls aus dem Gedächtnis, nicht geprüft. Die Herleitungen, das durchgerechnete Beispiel und die Fluidnäherung sind Rechnungen dieser Seite und keine Messungen.