呼叫中心路由策略模拟:代码与指标
离散时间模型可用于比较将来电分配给座席的策略:Sequential(顺序轮询)、Round Robin(轮询)和 Longest Idle(按最大空闲时间选择)。分析重点关注关键绩效指标(服务水平协议、等待时间、队列长度)和公平性指标(基尼指数、变异系数)。
模型生成泊松呼叫流,模拟座席状态(空闲、忙碌、离线),并收集数据以可视化负载分布。所有参数集中于 config.py,使用 dataclass 进行类型提示,并支持 JSON 序列化以确保可重现性。
模型在开发与测试中的应用
对于开发者,该模型作为一个沙盒:原型化策略可在无真实负载的情况下及早发现问题。
测试人员用于:
- 将模拟与生产数据验证,作为数字孪生。
- 压力测试:呼叫峰值、座席故障、瓶颈检测。
客户(呼叫中心经理)运行假设情景分析:
- 策略变更下的服务水平协议评估。
- 座席招聘下的负载预测。
- 不同流量强度下的公平性比较。
项目架构
采用 src-layout 的模块化结构,兼容 Colab 和本地环境。通过 pyproject.toml 进行可编辑安装,支持自动包发现和 pytest。
关键模块:
src/ccsim/config.py:SimulationConfig,包含 seed、lambda_rate、num_agents 等。src/ccsim/agents.py:Agent类,包含状态和泊松事件。src/ccsim/strategies.py:RoutingStrategy子类,便于扩展。src/ccsim/simulation.py:离散事件循环和处理。src/ccsim/metrics.py:用于呼叫和忙碌时间的基尼指数和变异系数。src/ccsim/visualization.py:KDE 分布和队列动态。main.py:编排并保存至runs/<timestamp>。tests/test_strategies.py:边界情况检查。
Colab 运行:从笔记本生成,可编辑安装,运行 main.py。通过 pytest 运行测试,支持 HTML/JUnit 报告。
模拟参数
SimulationConfig 定义:
| Parameter | Description |
|------------------------|------------------------------|
| seed | 随机数生成器初始化 |
| lambda_rate | 呼叫强度(呼叫/秒) |
| num_agents | 座席数量 |
| num_calls | 总呼叫数 |
| min_call_duration, max_call_duration | 通话时长范围 |
| agent_logout_prob, agent_login_prob | 座席可用性随机性 |
| max_queue_size | 队列上限 |
| service_level_threshold| 服务水平协议阈值(秒) |
| max_simulation_steps | 步数上限 |
示例:lambda_rate [0.65, 0.75, 0.85] 模拟低/阈值/高负载。变异系数最能突出公平性差异。
策略比较结果
在 lambda_rate=0.70 时,Sequential 显示不均匀利用率(KDE 图)。Round Robin 和 Longest Idle 更接近均匀。在低负载(0.65)时,呼叫分布差异最大;在过载下,它们趋于收敛。
图表:combined_busy_times_kde.png 显示忙碌时间,按座席的呼叫分布。
关键要点
- 模型比较 Sequential、Round Robin、Longest Idle 在关键绩效指标和公平性(基尼指数、变异系数)上的表现。
- 灵活的
config.py,支持 JSON 用于假设情景。 - 模块化:通过
RoutingStrategy继承实现新策略。 - 队列动态和 KDE 负载分布的可视化。
- 测试覆盖边界情况:空队列、无座席。
模型扩展
添加:
- 异构座席(技能水平、班次安排)。
- 基于技能和预测的路由。
- 流量周期性、重复呼叫。
- 机器人座席、疲劳因素。
— Editorial Team
暂无评论。