Friday, April 26, 2013

Book Review: Botched Erlang B and C Functions

As a consequence of looking into a question on the GCaP google group about the telecom performance metric known as the busy hour, I came across this book.

A new copy comes with a $267.44 price tag!!! Here is my review; slightly enhanced from the version I wrote on Amazon.

Referring specifically to Ch. 5, I was shocked to see such a botched presentation of both the Erlang B and C equations. The Erlang B formula for the grade of service is presented incorrectly in eqn. (5.2) on p. 301 for n channels and traffic intensity E in Erlangs. \begin{equation*} \text{Grade of service} = \sum_{n=0}^n \; \dfrac{E^n}{n!} \quad\quad\quad (5.2) \end{equation*} First, the summation is wrong. They have written it as a sum over $n = 0, \ldots, n$. But n is a constant, not an index. It should be written using a separate index variable $k = 0, \ldots, n$ with n replaced appropriately by k in the formula. Second, Erlang B represents the probability of finding all n channels busy (i.e., call blocked), so its value must lie between 0 and 1. Since eqn. (5.2) is actually a truncated exponential series, this won't be true, in general. The problem lies in the fact that eqn. (5.2) is—ignoring the incorrect index notation—the denominator only of the Erlang B formula.

Next, rather than proceeding to discuss the Erlang C function (as might reasonably be anticipated), eqn. (5.3) represents the grade of service using the Poisson equation [sic]. \begin{equation*} \text{Grade of service} = e^{-a} \; \sum_{n=c}^\infty \; \dfrac{a^n}{n!} \quad\quad\quad (5.3) \end{equation*} Once again, there is the same kind of index sloppiness, viz., $n = c, \ldots \infty$, where n is now the "number of arriving cells" and c is now the "number of servers" in the system. Quite apart from this unnecessary additional and distracting change in notation, eqn. (5.3) is certainly not the Erlang C function—it's not even close!

Moreover, it's not clear what a "Poisson equation" is, in this context.$^\dagger$ A Poisson distribution of incoming calls is assumed in both the Erlang B and C models. It could be an attempt to sum over the Poisson probability mass distribution (pmf) to produce the cumulative probability distribution (CDF), but for that to be correct the indexing would have to start at 0, not c, in eqn. (5.3). Even more confusing is the fact that Erlang B is the ratio of the Poisson pmf and its CDF (although this fact is never mentioned). Nonetheless, the authors claim that the difference between eqns. (5.2) and (5.3) is that in the latter: "blocked calls get put into a queue instead of being discarded," which is highly suggestive of Erlang C (i.e., call waiting).

I don't know about the remainder of the book, but this section is a mess. It's even more appalling given both the historical and technical significance of Erlang's equations for telecommunications. For such an expensive book, one would expect that all these errors should have been caught either by the authors or the copy-editor.

The correct Erlang formulae are presented in Chapter 4 of my Perl::PDQ book.


$\dagger$ There is something called the Poisson traffic model. \begin{equation*} P(m,a) = 1 - e^{-a} \; \sum_{k=0}^{m-1} \; \dfrac{a^k}{k!} \end{equation*} But eqn. (5.3) is not correct for that, either. And, even if it were correct, it comes entirely out of the blue without any introduction while the Erlang C formula would still be absent, although it was previously introduced.

No comments: