Simulación de Estrategias de Enrutamiento en Centros de Llamadas: Código y Métricas
Un modelo en tiempo discreto permite comparar estrategias para distribuir las llamadas entrantes entre los agentes: Secuencial (sondeo secuencial), Round Robin (round-robin) y Longest Idle (selección por tiempo ocioso máximo). El análisis se centra en los indicadores clave de rendimiento (nivel de servicio, tiempo de espera, longitud de cola) y métricas de equidad (índice de Gini, coeficiente de variación).
El modelo genera un flujo de llamadas Poisson, simula estados de los agentes (ocioso, ocupado, desconectado) y recopila datos para visualizar la distribución de carga. Todos los parámetros están centralizados en config.py con tipado mediante dataclass y serialización JSON para reproducibilidad.
Aplicación del Modelo en Desarrollo y Pruebas
Para los desarrolladores, el modelo actúa como un entorno de pruebas: prototipar estrategias permite detectar problemas a tiempo sin carga del mundo real.
Los probadores lo usan para:
- Validar simulaciones contra datos de producción como un gemelo digital.
- Pruebas de estrés: picos de llamadas, caídas de agentes, detección de cuellos de botella.
Los clientes (gerentes de centros de llamadas) ejecutan análisis de escenarios "qué pasaría si":
- Evaluación del nivel de servicio ante cambios de estrategia.
- Pronóstico de carga con contratación de agentes.
- Comparación de equidad a distintas intensidades de tráfico.
Arquitectura del Proyecto
Estructura modular con src-layout, compatible con Colab y entornos locales. Instalación editable mediante pyproject.toml con descubrimiento automático de paquetes y pytest.
Módulos clave:
src/ccsim/config.py:SimulationConfigcon seed, lambda_rate, num_agents, etc.src/ccsim/agents.py: ClaseAgentcon estados y eventos Poisson.src/ccsim/strategies.py: Subclases deRoutingStrategypara extensibilidad.src/ccsim/simulation.py: Bucle de eventos discretos y procesamiento.src/ccsim/metrics.py: Gini y CV para llamadas y tiempo ocupado.src/ccsim/visualization.py: Distribuciones KDE y dinámicas de cola.main.py: Orquestación y guardado enruns/<timestamp>.tests/test_strategies.py: Comprobaciones de casos límite.
Ejecución en Colab: Generar desde notebook, instalación editable, ejecutar main.py. Pruebas con pytest e informes HTML/JUnit.
Parámetros de Simulación
SimulationConfig define:
| Parameter | Description |
|------------------------|------------------------------|
| seed | Inicialización del generador de números aleatorios |
| lambda_rate | Intensidad de llamadas (llamadas/seg) |
| num_agents | Número de agentes |
| num_calls | Número total de llamadas |
| min_call_duration, max_call_duration | Rango de duración |
| agent_logout_prob, agent_login_prob | Estocasticidad de disponibilidad de agentes |
| max_queue_size | Límite de cola |
| service_level_threshold| Umbral de nivel de servicio (seg) |
| max_simulation_steps | Límite de pasos |
Ejemplo: lambda_rate [0.65, 0.75, 0.85] modela carga baja/umbral/alta. El coeficiente de variación resalta mejor las diferencias de equidad.
Resultados de Comparación de Estrategias
A lambda_rate=0.70, Secuencial muestra utilización desigual (gráficos KDE). Round Robin y Longest Idle están más cerca de lo uniforme. A baja carga (0.65), las diferencias en distribución de llamadas son máximas; en sobrecarga, convergen.
Gráficos: combined_busy_times_kde.png para tiempo ocupado, distribuciones de llamadas por agente.
Puntos Clave
- El modelo compara Secuencial, Round Robin, Longest Idle en indicadores clave de rendimiento y equidad (Gini, CV).
config.pyflexible con JSON para escenarios "qué pasaría si".- Modular: nuevas estrategias mediante herencia de
RoutingStrategy. - Visualización de dinámicas de cola y distribuciones KDE de carga.
- Pruebas cubren casos límite: cola vacía, sin agentes.
Extensiones del Modelo
Agregar:
- Agentes heterogéneos (niveles de habilidad, horarios de turnos).
- Enrutamiento basado en habilidades y predictivo.
- Ciclicidad del tráfico, llamadas repetidas.
- Agentes robot, factores de fatiga.
— Editorial Team
Aún no hay comentarios.