Tutorials › Stochastic Processes › Sizing Erlang Loss Systems for Blocking Targets

Multi-Server and Finite Queues · Tutorial 663 of 994

Sizing Erlang Loss Systems for Blocking Targets

Use offered traffic and a blocking target to calculate the smallest Erlang loss capacity that meets the requirement.

Advanced 10 min read

What You'll Learn

  • Identify the assumptions behind an Erlang loss-system capacity calculation.
  • Convert arrival and service rates into offered traffic in Erlangs.
  • Compute blocking probabilities recursively using exact fractions.
  • Prove that blocking decreases with server count and eventually meets any positive target.
  • Verify that a selected server count is minimal by checking the preceding count.
  • Interpret the result as a trunk-capacity decision.

From a Blocking Target to a Server Count

In a loss system, an arriving customer is either admitted immediately or blocked because every server is busy. There is no waiting room. Capacity planning therefore asks a direct question: given the offered traffic and a maximum acceptable blocking probability, how many servers are needed? The answer is an integer, and the boundary matters: a count meets the requirement when its blocking probability is less than or equal to the target.

Consider a system with \(c\) servers, Poisson arrivals at rate \(\lambda>0\), and independent exponential service times with rate \(\mu>0\) per server. Arrivals finding all \(c\) servers busy are lost. The occupancy process \((X_t)_{t\ge0}\) is a continuous-time Markov chain on \(S=\{0,1,\ldots,c\}\). Its offered traffic is \(A=\lambda/\mu\), measured in Erlangs. By the Erlang loss formula, the stationary probability that all servers are busy, and hence the probability an arrival is blocked, is the Erlang B value below. This formula and the arrival-sees-time-averages property for Poisson arrivals were established in the earlier material on Erlang B.

Definition: For offered traffic \(A>0\) and an integer \(c\ge0\), the Erlang B blocking probability is $$ B_c(A)=\frac{A^c/c!}{\displaystyle\sum_{j=0}^{c} A^j/j!}. $$ In particular, \(B_0(A)=1\). For capacity planning with at least one server, the feasible counts are integers \(c\ge1\).

The sizing problem is to find the smallest feasible \(c\) such that \(B_c(A)\le\beta\), where the specified blocking target satisfies \(0<\beta<1\). The upper bound excludes a target that would be met by a system with no capacity; the positive lower bound ensures that a finite number of servers can meet the target when \(A\) is finite. The recursive computation from the earlier material on Erlang B avoids evaluating large factorials and sums.

Recursion: Start with \(B_0(A)=1\). For \(c\ge1\), calculate $$ B_c(A)=\frac{A B_{c-1}(A)}{c+A B_{c-1}(A)}. $$ Continue until the first value at or below \(\beta\).

This recurrence follows directly from the formula. If \(w_j=A^j/j!\) and \(Z_c=\sum_{j=0}^c w_j\), then \(B_{c-1}=w_{c-1}/Z_{c-1}\), \(w_c=(A/c)w_{c-1}\), and \(Z_c=Z_{c-1}+w_c\). Substitution gives \(B_c=(A B_{c-1}/c)/(1+A B_{c-1}/c)\), which is the stated recursion. Thus each step uses only the preceding blocking probability, the offered traffic, and the new server count.

Why the First Acceptable Count Is Minimal

Proposition: For fixed \(A>0\), the sequence \(B_c(A)\) is strictly decreasing in \(c\ge0\), and \(B_c(A)\to0\) as \(c\to\infty\).

Proof. Set \(w_j=A^j/j!\) and \(Z_c=\sum_{j=0}^c w_j\). For \(c\ge1\), consider the probability distribution on \(\{0,\ldots,c\}\) that assigns probability \(w_j/Z_c\) to \(j\). Its probability at \(c\) is \(B_c(A)\), so its mean is

$$ \frac{\sum_{j=0}^c j w_j}{Z_c} =\frac{A\sum_{j=0}^{c-1}w_j}{Z_c} =A\bigl(1-B_c(A)\bigr). $$

The first equality uses \(j w_j=A w_{j-1}\) for \(1\le j\le c\); the second uses \(Z_c-w_c=\sum_{j=0}^{c-1}w_j\). This distribution has positive probability at \(0\), and all its values are at most \(c\). Its mean is therefore strictly less than \(c\): the contribution from the probability at \(0\) is below what would result if all probability were at \(c\). Hence \(A(1-B_c(A))<c\). From the Erlang B formula,

$$ \frac{B_c(A)}{B_{c-1}(A)} =\frac{A}{c}\frac{Z_{c-1}}{Z_c} =\frac{A(1-B_c(A))}{c} <1. $$

All these blocking probabilities are positive, so this proves strict decrease, including the comparison with \(B_0(A)=1\). Also \(Z_c\ge w_{c-1}\) for \(c\ge1\), and consequently \(B_c(A)=w_c/Z_c\le w_c/w_{c-1}=A/c\). Since \(A\) is fixed, \(A/c\to0\); thus \(B_c(A)\to0\). \(\square\)

Theorem (Minimal-capacity search): Suppose \(A>0\) and \(0<\beta<1\). The recursive search that starts at \(c=1\) and stops at the first \(c\) with \(B_c(A)\le\beta\) terminates and returns the smallest positive integer server count meeting the target.

Proof. Since \(B_c(A)\to0\) and \(\beta>0\), there is a finite integer \(C\) with \(B_C(A)<\beta\). Therefore the sequential search must stop no later than \(C\). Let \(c_*\) be the count at which it stops. Its stopping rule gives \(B_{c_*}(A)\le\beta\), so \(c_*\) meets the target. Every positive integer \(k<c_*\) was tested earlier and did not stop the search, which means \(B_k(A)>\beta\). Thus no smaller positive count meets the target, and \(c_*\) is the minimum. Strict decrease also ensures that every larger count meets the target, although it is not needed to establish minimality. \(\square\)

The last comparison is an important part of a capacity result. Reporting a server count without checking the previous count gives no evidence that the capacity is minimal. In practice, use exact fractions where possible; for other traffic values, retain enough numerical precision to compare the computed probability reliably with the target.

Worked Capacity Calculations

Worked Example: Two Erlangs with a One-Fifth Blocking Target

A trunk group receives calls at rate \(\lambda=4\) per hour, and each occupied trunk has an exponential holding time with rate \(\mu=2\) per hour. Find the smallest number of trunks for which blocking is at most \(\tfrac15\).

The offered traffic is \(A=\lambda/\mu=4/2=2\) Erlangs. The recursive values, calculated in order, are

$$ \begin{aligned} B_0(2)&=1,\\ B_1(2)&=\frac{2(1)}{1+2(1)}=\frac23,\\ B_2(2)&=\frac{2(2/3)}{2+2(2/3)} =\frac{4/3}{10/3}=\frac25,\\ B_3(2)&=\frac{2(2/5)}{3+2(2/5)} =\frac{4/5}{19/5}=\frac4{19},\\ B_4(2)&=\frac{2(4/19)}{4+2(4/19)} =\frac{8/19}{84/19}=\frac2{21}. \end{aligned} $$

At three trunks, \(\tfrac4{19}>\tfrac15\), since \(20>19\) after cross-multiplication. At four trunks, \(\tfrac2{21}<\tfrac15\), since \(10<21\). The smallest capacity meeting the target is therefore four trunks.

Check: Substituting the result into the recursion gives \(B_4(2)=\frac{8/19}{4+8/19}=\frac{8}{84}=\frac2{21}\), as computed. The preceding count has blocking \(\frac4{19}>\frac15\), so the selected capacity is minimal.

Worked Example: Three Erlangs with a Ten-Percent Target

Suppose calls arrive at \(\lambda=9\) per hour and have exponential holding times with rate \(\mu=3\) per hour. Find the minimum number of trunks that limits blocking to at most \(\tfrac1{10}\).

Here \(A=9/3=3\) Erlangs. Applying the recurrence successively gives

$$ \begin{aligned} B_0(3)&=1,\\ B_1(3)&=\frac{3}{1+3}=\frac34,\\ B_2(3)&=\frac{3(3/4)}{2+3(3/4)} =\frac{9/4}{17/4}=\frac9{17},\\ B_3(3)&=\frac{3(9/17)}{3+3(9/17)} =\frac{27/17}{78/17}=\frac9{26},\\ B_4(3)&=\frac{3(9/26)}{4+3(9/26)} =\frac{27/26}{131/26}=\frac{27}{131},\\ B_5(3)&=\frac{3(27/131)}{5+3(27/131)} =\frac{81/131}{736/131}=\frac{81}{736},\\ B_6(3)&=\frac{3(81/736)}{6+3(81/736)} =\frac{243/736}{4659/736}=\frac{27}{517}. \end{aligned} $$

The five-trunk value exceeds the target because \(\tfrac{81}{736}>\tfrac1{10}\), or \(810>736\). The six-trunk value is below the target because \(\tfrac{27}{517}<\tfrac1{10}\), or \(270<517\). Thus six trunks are required.

Check: The last recursion step gives \(\frac{243}{4659}=\frac{27}{517}\), since dividing numerator and denominator by \(9\) yields that fraction. The five-trunk value fails the target, confirming that six is the minimum.

Worked Example: Four Erlangs with a Ten-Percent Target

A system has arrival rate \(\lambda=12\) per hour and service rate \(\mu=3\) per hour. Find the minimum trunk count for a blocking target of \(\tfrac1{10}\), and check the two counts around the threshold.

The offered traffic is \(A=12/3=4\) Erlangs. The recursive calculation through the threshold is

$$ \begin{aligned} B_0(4)&=1,\\ B_1(4)&=\frac4{1+4}=\frac45,\\ B_2(4)&=\frac{4(4/5)}{2+4(4/5)} =\frac{16/5}{26/5}=\frac8{13},\\ B_3(4)&=\frac{4(8/13)}{3+4(8/13)} =\frac{32/13}{71/13}=\frac{32}{71},\\ B_4(4)&=\frac{4(32/71)}{4+4(32/71)} =\frac{128/71}{412/71}=\frac{32}{103},\\ B_5(4)&=\frac{4(32/103)}{5+4(32/103)} =\frac{128/103}{643/103}=\frac{128}{643},\\ B_6(4)&=\frac{4(128/643)}{6+4(128/643)} =\frac{512/643}{4370/643}=\frac{256}{2185},\\ B_7(4)&=\frac{4(256/2185)}{7+4(256/2185)} =\frac{1024/2185}{16319/2185}=\frac{1024}{16319}. \end{aligned} $$

Six trunks do not meet the target: \(\frac{256}{2185}>\frac1{10}\), because \(2560>2185\). Seven do: \(\frac{1024}{16319}<\frac1{10}\), because \(10240<16319\). The minimum is seven trunks.

Check: In the final recursion step, the denominator is \(7+1024/2185=(15295+1024)/2185=16319/2185\), giving \(1024/16319\). The preceding value exceeds the target, so the boundary comparison confirms minimality.

Interpreting the Result and Avoiding Errors

The value \(A=\lambda/\mu\) is offered traffic, not the utilization of each server. In a loss system, some offered calls are blocked, so accepted traffic and offered traffic are not the same. The Erlang B calculation uses \(A\) and the proposed total number of servers \(c\) to determine the blocking probability. The answer is a trunk capacity under the stated arrival, service, and no-wait assumptions; it is not a guarantee that those assumptions describe every operational system.

Common mistake: treating a near miss as a pass. In the first example, it would be wrong to round \(B_3(2)=\frac4{19}\) to \(0.2\) and declare that three trunks meet a one-fifth target. The exact comparison is \(\frac4{19}>\frac15\), because \(20>19\). The target condition is \(B_c(A)\le\beta\), not “approximately equal to the target.” Use the unrounded value for the threshold decision, and check the immediately preceding integer when reporting the minimum.

The result also depends on the model. If blocked calls wait rather than leave, the system is not a loss system and Erlang B does not describe its delay. If the service-time or arrival assumptions differ materially, the model may need to change. Within the Erlang loss assumptions, the recursive search is simple: fix \(A\), choose the blocking target, calculate successive values, and stop at the first value at or below that target.

Check Your Understanding

For each calculation, distinguish the blocking threshold from the capacity decision.

  1. With \(A=1\), calculate \(B_1(A)\) and \(B_2(A)\) using the recursion. Does two servers meet a target of \(\tfrac15\)?
  2. For a fixed positive offered traffic, why does strict decrease of \(B_c(A)\) matter when identifying a minimum server count?
  3. A proposed capacity has blocking probability \(\tfrac{3}{20}\) and the target is \(\tfrac15\). Does it meet the target? State the comparison precisely.
  4. For \(\lambda=10\) calls per hour and \(\mu=2\) per hour, find the offered traffic in Erlangs. Explain why this number alone is not the blocking probability.
  5. What happens to the finite-capacity search if the blocking target is zero and offered traffic is positive?