Erlang C
The Erlang C formula is a mathematical model from queueing theory that calculates the probability that an arriving customer must wait in queue before being served. Developed by Danish mathematician and engineer A.K. Erlang in the early twentieth century, it has become the standard staffing model in contact center workforce management, used to determine the number of agents required to meet a service level target.
Erlang C models a system with multiple parallel servers (agents), a single queue with infinite capacity, and callers who wait indefinitely for service (infinite patience). Despite assumptions that are frequently violated in real-world contact centers, the formula remains the most widely used staffing tool due to its simplicity, transparency, and conservative behavior.
History
Agner Krarup Erlang (1878-1929) was a Danish mathematician employed by the Copenhagen Telephone Company. Working on the problem of determining how many telephone circuits (trunk lines) were needed to handle call traffic, Erlang published his foundational paper "Solution of some Problems in the Theory of Probabilities of Significance in Automatic Telephone Exchanges" in 1917.[1]
Erlang developed two key formulas:
- Erlang B — for calculating the probability that all circuits are busy (call blocking in a loss system)
- Erlang C — for calculating the probability that a caller must wait (call delay in a queueing system)
The unit of telecommunications traffic — the Erlang — is named in his honor. One Erlang represents one hour of continuous use of a single circuit or server.
Erlang's work was refined and extended throughout the twentieth century within the field of queueing theory. The application to contact center staffing became widespread in the 1980s and 1990s as WFM software incorporated Erlang C as the default staffing engine.
The Formula
Inputs
The Erlang C formula requires three inputs:
| Symbol | Name | Description |
|---|---|---|
| λ (lambda) | Arrival rate | Average number of contacts arriving per unit time |
| μ (mu) | Service rate | Average number of contacts one agent can handle per unit time (1/AHT) |
| N | Number of agents | Number of agents available to handle contacts |
The traffic intensity (or offered load) in Erlangs is:
where AHT is average handle time expressed in the same time unit as λ.
The Erlang C Probability
The probability that an arriving contact must wait (all N agents are busy):
This is valid only when (traffic intensity is less than the number of agents — otherwise the queue grows without bound).
Deriving Service Level
Once the Erlang C probability is known, service level (the probability of being answered within time t) is:
where t is the target answer time (threshold).
Deriving Other Metrics
From the Erlang C probability, several related metrics can be calculated:
| Metric | Formula |
|---|---|
| Average Speed of Answer (ASA) | |
| Occupancy | |
| Average queue length |
Queueing Theory Classification
In Kendall's notation, the Erlang C model describes an M/M/c queue:
- M — Markovian (Poisson) arrival process
- M — Markovian (exponential) service time distribution
- c — Multiple parallel servers (agents)
With infinite queue capacity and FIFO (first-in, first-out) service discipline.[2]
Assumptions and Limitations
The Erlang C model makes several assumptions that are frequently violated in real contact centers:
| Assumption | Reality | Impact |
|---|---|---|
| Poisson arrivals | Arrivals are roughly Poisson at the interval level but may cluster during events or outages | Generally reasonable for 30-minute intervals; breaks down during spikes |
| Exponential service times | Handle times are typically right-skewed but not exponential; they have a minimum floor and a long tail | Erlang C may over- or under-estimate depending on the actual distribution shape |
| Infinite patience | Callers abandon; abandonment rates of 3-8% are common | Erlang C overstaffs because it assumes all callers wait. This is conservative (safe) for planning. |
| Single queue, FIFO | Skill-based routing creates multiple virtual queues with priority rules | Multi-skill environments require more complex models |
| Homogeneous agents | Agents differ in handle time, skills, and experience | Individual agent variation is averaged; acceptable for planning, not for real-time optimization |
| Steady state | Contact centers rarely reach steady state within a 30-minute interval | Transient effects (start-of-interval ramp, queue carry-over) are not captured |
| No retrials | Callers who abandon may retry, inflating apparent volume | Erlang C does not model retrial behavior |
Despite these limitations, Erlang C's conservative bias (overstaffing due to the infinite patience assumption) makes it a safe planning tool — it will rarely recommend too few agents. This is one reason it has remained the industry standard despite the availability of more accurate models.
Erlang B vs. Erlang C
| Erlang B | Erlang C | |
|---|---|---|
| System type | Loss system (no queue) | Delay system (queue with waiting) |
| What happens when all servers busy | Contact is blocked (lost) | Contact waits in queue |
| Calculates | Probability of blocking | Probability of waiting |
| Application | Trunk line sizing, IVR port planning | Agent staffing |
| Queue assumption | No queue exists | Infinite queue, infinite patience |
Erlang B is used for dimensioning resources where queueing is impossible (e.g., how many phone lines are needed to avoid busy signals). Erlang C is used for dimensioning resources where queueing is expected (e.g., how many agents are needed to keep wait times acceptable).
Extended Erlang C (Erlang A)
Extended Erlang C (sometimes called Erlang A for "abandonment") relaxes the infinite patience assumption by modeling caller abandonment. In this model, each caller has a patience threshold drawn from an exponential distribution; callers who wait longer than their threshold abandon the queue.
Erlang A provides more realistic staffing estimates for centers with non-trivial abandonment rates, typically recommending fewer agents than standard Erlang C for the same service level target. However, it requires an additional input — the average patience time — which is more difficult to estimate accurately.[3]
When Erlang C Breaks Down
Several common contact center scenarios render Erlang C inadequate:
- Skill-based routing: Multiple agent groups, overflow rules, and priority tiers create a network of queues that cannot be modeled as a single M/M/c system
- Multi-channel: Chat concurrency, email backlogs, and asynchronous channels violate the assumptions of single-server sequential processing
- High occupancy: At very high occupancy (>93%), the infinite patience assumption causes Erlang C to significantly overstate wait times
- Small teams: Teams of fewer than 10-15 agents exhibit high variance that the steady-state assumption does not capture well
- AI agent blending: When AI agents handle a variable share of contacts, the effective arrival rate to human agents becomes dependent on AI routing decisions
In these cases, simulation models (discrete-event or Monte Carlo) provide more accurate results by explicitly modeling the mechanics of routing, abandonment, and agent heterogeneity.
Erlang C in Practice
The Standard Staffing Process
Most contact center WFM follows this sequence:
- Forecast contact volume (λ) and AHT (1/μ) per interval
- Apply Erlang C to determine base staff needed to meet the service level target
- Add shrinkage (breaks, training, meetings, absence) to get scheduled staff
- Build schedules that deploy the required number of agents per interval
Failed to parse (syntax error): {\displaystyle \text{Scheduled Staff} = \frac{\text{Base Staff (from Erlang C)}}{1 - \text{Shrinkage \%}}}
WFM Software Implementation
All major WFM platforms (NICE, Verint, Calabrio, Genesys, Aspect) implement Erlang C as their default staffing engine. Some offer Extended Erlang C or simulation as alternatives for more complex environments. The WFM Labs Erlang-O™ extends the classical model with optimization-based staffing for multi-objective environments.
Maturity Model Position
Use of Erlang C and alternatives evolves across maturity levels:
- Level 1 (Reactive): Staffing based on rules of thumb or historical headcount. Erlang C not used.
- Level 2 (Foundational): Erlang C used for interval-level staffing. Standard model with default assumptions.
- Level 3 (Integrated): Extended Erlang C or simulation supplements standard model. Multi-skill effects considered.
- Level 4 (Optimized): Simulation-based staffing for complex routing environments. Erlang C used for quick estimates and validation.
- Level 5 (Adaptive): Dynamic staffing models that account for AI agent capacity, real-time demand shifts, and multi-objective optimization.
See Also
- Workforce Management — Overview of the WFM discipline
- Service Level — Primary output metric of Erlang C staffing
- Occupancy — Efficiency metric derived from Erlang C
- Average Handle Time — Key input to Erlang C calculations
- Shrinkage — Added to Erlang C base staff to get scheduled staff
- Forecasting Methods — Upstream process providing Erlang C inputs
- Discrete-Event vs. Monte Carlo Simulation Models — Alternative staffing models
- Pooling Theory — Mathematical basis for the team-size effect in staffing
- WFM Labs Erlang-O™ — WFM Labs extension of the Erlang framework
- Demand Calculation — Translating forecast to staffing requirements
References
- ↑ Erlang, A.K. (1917). "Solution of some Problems in the Theory of Probabilities of Significance in Automatic Telephone Exchanges." Elektroteknikeren, 13.
- ↑ Gross, Donald; Shortle, John F.; Thompson, James M.; Harris, Carl M. (2008). Fundamentals of Queueing Theory. 4th edition. Wiley.
- ↑ Garnett, O.; Mandelbaum, A.; Reiman, M.I. (2002). "Designing a Call Center with Impatient Customers." Manufacturing & Service Operations Management, 4(3), 208-227.
