The
Erlang B formula (or
Erlang-B with a hyphen), also known as the
Erlang loss formula, is a formula for the
blocking probability that describes the probability of call losses for a group of identical parallel resources (telephone lines, circuits, traffic channels, or equivalent), sometimes referred to as an
M/M/c/c queue. It is, for example, used to dimension a telephone network's links. The formula was derived by
Agner Krarup Erlang and is not limited to telephone networks, since it describes a probability in a queuing system (albeit a special case with a number of servers but no queueing space for incoming calls to wait for a free server). Hence, the formula is also used in certain inventory systems with lost sales. The formula applies under the condition that an unsuccessful call, because the line is busy, is not queued or retried, but instead really vanishes forever. It is assumed that call attempts arrive following a
Poisson process, so call arrival instants are independent. Further, it is assumed that the message lengths (holding times) are exponentially distributed (Markovian system), although the formula turns out to apply under general holding time distributions. The Erlang B formula assumes an infinite population of sources (such as telephone subscribers), which jointly offer traffic to
N servers (such as telephone lines). The rate expressing the frequency at which new calls arrive, λ, (birth rate,
traffic intensity, etc.) is constant, and does
not depend on the number of active sources. The total number of sources is assumed to be infinite. The Erlang B formula calculates the blocking probability of a buffer-less loss system, where a request that is not served immediately is aborted, causing that no requests become queued. Blocking occurs when a new request arrives at a time where all available servers are currently busy. The formula also assumes that blocked traffic is cleared and does not return. The formula provides the GoS (
grade of service) which is the probability
Pb that a new call arriving to the resources group is rejected because all resources (servers, lines, circuits) are busy: where
E is the total offered traffic in erlang, offered to
m identical parallel resources (servers, communication channels, traffic lanes). : P_\text{b} = B(E,m) = \frac{\frac{E^m}{m!}} { \sum_{i=0}^m \frac{E^i}{i!}} where: •
Pb is the probability of blocking •
m is the number of identical parallel resources such as servers, telephone lines, etc. •
E =
λh is the normalised ingress load (offered traffic stated in erlang). The
erlang is a dimensionless load unit calculated as the mean arrival rate,
λ, multiplied by the mean call holding time,
h. The unit has to be dimensionless for
Little's Law to be dimensionally sane. This may be expressed recursively as follows, in a form that is used to simplify the calculation of tables of the Erlang B formula: : B(E,0) = 1. \, : B(E,j) = \frac{E B(E,j - 1)}{E B(E,j - 1) + j} \ \forall{j} = 1,2,\ldots,m. Typically, instead of
B(
E,
m) the inverse 1/
B(
E,
m) is calculated in numerical computation in order to ensure
numerical stability: : \frac{1}{B(E,0)} = 1 : \frac{1}{B(E,j)} = 1 + \frac{j}{E}\frac{1}{B(E,j - 1)} \ \forall{j} = 1,2,\ldots,m. The recursive form is derivable from the non-recursive form by repeated substitution. Function ErlangB (E As Double, m As Integer) As Double Dim InvB As Double Dim j As Integer InvB = 1.0 For j = 1 To m InvB = 1.0 + InvB * j / E Next j ErlangB = 1.0 / InvB End Function or a Python version: def erlang_b(E: float, m: int) -> float: """Calculate the probability of call losses.""" inv_b = 1.0 for j in range(1, m + 1): inv_b = 1.0 + inv_b * j / E return 1.0 / inv_b The Erlang B formula is decreasing and
convex in
m. It requires that call arrivals can be modeled by a
Poisson process, which is not always a good match, but is valid for any statistical distribution of call holding times with a finite mean. It applies to traffic transmission systems that do not buffer traffic. More modern examples compared to
POTS where Erlang B is still applicable, are
optical burst switching (OBS) and several current approaches to
optical packet switching (OPS). Erlang B was developed as a trunk sizing tool for telephone networks with holding times in the minutes range, but being a mathematical equation it applies on any time-scale. == Extended Erlang B ==