返回首页

Python 中的呼叫中心路由模拟

离散时间模型模拟呼叫中心中的呼叫路由,通过 KPI 和公平性指标比较 Sequential、Round Robin 和 Longest Idle。该 Colab 项目具有模块化架构,包括配置、策略、指标和可视化。适用于原型设计、测试和假设分析。

呼叫中心策略建模:代码和指标
Advertisement 728x90

呼叫中心路由策略模拟:代码与指标

离散时间模型可用于比较将来电分配给座席的策略:Sequential(顺序轮询)、Round Robin(轮询)和 Longest Idle(按最大空闲时间选择)。分析重点关注关键绩效指标(服务水平协议、等待时间、队列长度)和公平性指标(基尼指数、变异系数)。

模型生成泊松呼叫流,模拟座席状态(空闲、忙碌、离线),并收集数据以可视化负载分布。所有参数集中于 config.py,使用 dataclass 进行类型提示,并支持 JSON 序列化以确保可重现性。

模型在开发与测试中的应用

对于开发者,该模型作为一个沙盒:原型化策略可在无真实负载的情况下及早发现问题。

Google AdInline article slot

测试人员用于:

  • 将模拟与生产数据验证,作为数字孪生。
  • 压力测试:呼叫峰值、座席故障、瓶颈检测。

客户(呼叫中心经理)运行假设情景分析:

  • 策略变更下的服务水平协议评估。
  • 座席招聘下的负载预测。
  • 不同流量强度下的公平性比较。

项目架构

采用 src-layout 的模块化结构,兼容 Colab 和本地环境。通过 pyproject.toml 进行可编辑安装,支持自动包发现和 pytest。

Google AdInline article slot

关键模块:

  • src/ccsim/config.pySimulationConfig,包含 seed、lambda_rate、num_agents 等。
  • src/ccsim/agents.pyAgent 类,包含状态和泊松事件。
  • src/ccsim/strategies.pyRoutingStrategy 子类,便于扩展。
  • 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 定义:

Google AdInline article slot

| 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

Advertisement 728x90

继续阅读