Simulation von Routing-Strategien in Callcentern: Code und Metriken
Ein diskret-zeitliches Modell ermöglicht den Vergleich von Strategien zur Verteilung eingehender Anrufe an Agenten: Sequential (sequenzielle Abfrage), Round Robin (Round-Robin) und Longest Idle (Auswahl nach maximaler Leerlaufzeit). Die Analyse konzentriert sich auf KPIs (SLA, Wartezeit, Warteschlangenlänge) und Fairness-Metriken (Gini-Index, Variationskoeffizient).
Das Modell erzeugt einen Poisson-Anrufstrom, simuliert Agentenzustände (idle, busy, offline) und sammelt Daten zur Visualisierung der Lastverteilung. Alle Parameter sind zentral in config.py mit Typisierung via dataclass und JSON-Serialisierung für Reproduzierbarkeit.
Anwendung des Modells in Entwicklung und Test
Für Entwickler dient das Modell als Sandkasten: Das Prototyping von Strategien deckt Probleme früh auf, ohne reale Last.
Tester nutzen es für:
- Validierung von Simulationen gegen Produktionsdaten als digitaler Zwilling.
- Belastungstests: Anrufspitzen, Agentenausfälle, Engpasserkennung.
Kunden (Callcenter-Manager) führen What-if-Analysen durch:
- SLA-Bewertung bei Strategieänderungen.
- Lastprognose bei Agenteneinstellungen.
- Fairnessvergleich bei unterschiedlichen Traffic-Intensitäten.
Projektarchitektur
Modulare Struktur mit src-Layout, kompatibel mit Colab und lokalen Umgebungen. Editierbare Installation via pyproject.toml mit Auto-Paketentdeckung und pytest.
Wichtige Module:
src/ccsim/config.py:SimulationConfigmit seed, lambda_rate, num_agents usw.src/ccsim/agents.py:Agent-Klasse mit Zuständen und Poisson-Ereignissen.src/ccsim/strategies.py:RoutingStrategy-Unterklassen für Erweiterbarkeit.src/ccsim/simulation.py: Diskrete Ereignisschleife und Verarbeitung.src/ccsim/metrics.py: Gini und CV für Anrufe und Busy-Time.src/ccsim/visualization.py: KDE-Verteilungen und Warteschlangendynamik.main.py: Orchestrierung und Speichern inruns/<timestamp>.tests/test_strategies.py: Überprüfung von Randfällen.
Colab-Ausführung: Aus Notebook generieren, editierbare Installation, main.py ausführen. Tests via pytest mit HTML/JUnit-Berichten.
Simulationsparameter
SimulationConfig definiert:
| Parameter | Beschreibung |
|------------------------|------------------------------|
| seed | Initialisierung des Zufallszahlengenerators |
| lambda_rate | Anrufintensität (Anrufe/Sek.) |
| num_agents | Anzahl der Agenten |
| num_calls | Gesamtzahl der Anrufe |
| min_call_duration, max_call_duration | Dauerbereich |
| agent_logout_prob, agent_login_prob | Stochastische Verfügbarkeit der Agenten |
| max_queue_size | Limit der Warteschlange |
| service_level_threshold| SLA-Schwelle (Sek.) |
| max_simulation_steps | Limit der Simulationsschritte|
Beispiel: lambda_rate [0,65, 0,75, 0,85] modelliert niedrige/Schwellen-/hohe Last. Der Variationskoeffizient hebt Fairness-Unterschiede am besten hervor.
Ergebnisse des Strategievergleichs
Bei lambda_rate=0,70 zeigt Sequential ungleichmäßige Auslastung (KDE-Plots). Round Robin und Longest Idle sind einheitlicher. Bei niedriger Last (0,65) sind Unterschiede in der Anrufverteilung maximal; bei Überlast konvergieren sie.
Plots: combined_busy_times_kde.png für Auslastungszeiten, Anrufverteilungen pro Agent.
Wichtige Punkte
- Modell vergleicht Sequential, Round Robin, Longest Idle hinsichtlich KPIs und Fairness (Gini, CV).
- Flexibles
config.pymit JSON für What-if-Szenarien. - Modular: Neue Strategien via Vererbung von
RoutingStrategy. - Visualisierung von Warteschlangendynamik und KDE-Lastverteilungen.
- Tests decken Randfälle ab: Leere Warteschlange, keine Agenten.
Erweiterungen des Modells
Ergänzen:
- Heterogene Agenten (Fähigkeitsstufen, Schichtpläne).
- Fähigkeitsbasiertes und prädiktives Routing.
- Zyklizität des Traffics, Wiederholungsanrufe.
- Roboteragenten, Ermüdungsfaktoren.
— Editorial Team
Noch keine Kommentare.