How to get control of Erlang B!
I have developed strategies and plans to migrate large wireless networks by using computer simulations to move the traffic in the virtual world and anticipate PSTN Trunk requirements and NSS Port requirements. Most of these simulations depended heavily on Erlang B.
ErlangB Generator:
Here is a Java Powered 8,000 Trunk ErlangB Table Generator applet:
Enter Blocking Probability or GOS as Px, e.g. P01, P001, P008, P009, etc.
Press the Calculate button. Wait a few Minutes.
Your requested ErlangB Table of 1 to 8,000 Trunks will appear in the Text Area. The ErlangB Table can be copied and pasted into other applications. Place your cursor in the Text Area under the 8000 Trunk line at the bottom of the Text Area. Press the Shift and Ctrl keys then press the Home key on the keyboard (holding them all down). This will highlight all text in the Text Area. Next press the Ctrl and C keys to Copy all selected text to the Windows Clipboard. Next place cursor in another application (such as Notepad ) and press the Ctrl and V keys to Paste.
Reload this ErlangB Web Page if you want to generate another ErlangB Table.
Your requested ErlangB Table will appear in the Text Area. You can copy and paste your ErlangB Table into other applications. You can set GOS to any value in range of P000000001 to P15.
P01 denotes GOS 1% or 0.01 (one out of one hundred calls blocked).
P001 denotes GOS 0.1% or 0.001 (one out of one thousand calls blocked).
ErlangB Table Generator
Enter GOS as P01, P02, P001, etc. and press the Calculate button. You can set GOS to any value in range of P000000001 to P15.
How to simplify Erlang B to avoid high exponential and factorial calculations.
A = Erlangs
N = Number of Trunks
GOS = Grade of Service ( Blocking Probability Percentage)
![]()
Pick a small value for N, such as 5.
The low number 5 will enable us to keep our exploration within reasonable boundaries.
The complete form is now:
(A^5)/5!
__________________________________________________________________
(A^0)/0! + (A^1)/1! + (A^2)/2! + (A^3)/3! + (A^4)/4! + (A^5)/5!
Take the reciprocal of the above to flip the series of terms over a common denominator.
(A^0)/0! + (A^1)/1! + (A^2)/2! + (A^3)/3! + (A^4)/4! + (A^5)/5!
_______________________________________________
(A^5)/5!
Remember, since we just fliped the terms, our result will now be expressed as 1/GOS.
The above expands to:
(A^0)/0!
-------- +(A^1)/1!
-------- +(A^2)/2!
------- +(A^3)/3!
------- +(A^4)/4!
------- +(A^5)/5!
-------(A^5)/5! (A^5)/5! (A^5)/5! (A^5)/5! (A^5)/5! (A^5)/5! Let's now move the Factorials to the numerator and Exponentials to the denominator:
5!/0!
-------- +5!/1!
-------- +5!/2!
------- +5!/3!
------- +5!/4!
------- +5!/5!
-------(A^5)/A^0 (A^5)/A^1 (A^5)/A^2 (A^5)/A^3 (A^5)/A^4 (A^5)/A^5! Which yields:
1/GOS = (5*4*3*2*1)/A^5 + (5*4*3*2)/A^4 + (5*4*3)/A^3 + (5*4)/A^2 + 5/A^1 + 1
Reading from right to left we can see a pattern develop that can be expressed in a Loop.
Set Temp to value to 1
Set Result to value of 1
Set A to ErlangsLoop with N decreasing in value from N to down to 1
Temp = Temp * (N/A)
Result = Result + TempNext
GOS = 1/Result
The loop above would produce:
1 + 5/A + (5*4)/(A*A) + (5*4*3)/(A*A*A) + (5*4*3*2)/(A*A*A*A) + (5*4*3*2*1)/(A*A*A*A*A)
Therefore the loop above is a simple algorithm that calculates Erlang B!
' Generic Visual Basic Code to calculate Erlang B
' Set A equal to the Erlang value.
A = 20.89' Set N equal to the number of trunks.
N = 30Temp = 1
Result = 1For I = N to 1 Step -1
Temp = Temp * (I/A)
Result = Result + TempNext
Print "GOS = " + Str$(1/Result)*100 + "%"
Notice that GOS = 1/Result because we flipped the original equation to gain multiple numerator terms over a common denominator. This Visual Basic algorithm will tell you the calculated Grade of Service for numerous Erlang and Trunk combinations.
New from QuantumPortal
QuantumPortal has just produced a CD-ROM that shows how to play Chords and Scales on the Piano or Synthesizer. Check it out at www.quantumportal.com