Français Deutsch Italiano Português Español


How do I get a key for my free trial?

You don't need one. The trial will start, and request a registration key. If you don't have one, just press 'Run Trial'.

How do I print the calculated results?

1) In V4.03 and higher, printing is supported directly.

2) In earlier versions, there is no print functionality. However, the results can be printed (e.g.. for inclusion into a report) as follows.

Method 1: Print via a screen capture
  1. Select the Erlang Window with the results.
  2. Press Alt-PrtSc (Alt PrintScreen) PrtSc is a key on the top right of my keyboard
  3. Open the Paint program that comes with MS-Windows (or MW-Word would probably also work
  4. Edit->Paste
  5. Print from the Paint program
Method 2: Use DLL and your favorite Application
  1. Use your favorite program that supports printing and Visual Basic (e.g. MS-Excel)
  2. Integrate the Erlang DDL's you need, and print as normal

Does it work with Windows 2000?

Yes. The following have been confirmed to work perfectly with Windows 2000. You may need to be logged in as Administrator when you enter the Windows program registration key, as the registry is modified.

  • Erlang-G V4.xx
  • Plug-Ins (DLLs, Demo, Personal, and Unlimited)

Can I use the Erlang software to support combined queues (eg. phone + chat + email, ...) supported by common agents?

No. This is a special case. You really have a number of separate for voice; one for chat; one for email; ... This is NOT directly supported by the standard Erlang formulas, and not supported by this Erlang software. I have checked my most 'heavy' text book on queuing theory...and this case is not discussed. will have to estimate. I would consider SEPARATE SYSTEMS - one for voice calls; one for chats; etc.. Then estimate the number of required agents to service each queue. Then add these agent numbers - knowing you have OVER-ESTIMATED the real number of required agents.

In what language is Erlang written?


Do you have an MS Excel add-in rather than a standalone program?

Yes. See DLLs.

Why does the Poisson model have a limit of 708 erlangs?

This limit is fixed in Versions 4.x.

What equations are behind the Erlang B (Erlang C, Etc.) models?

See the Equations page.

Does the program handle call center apps?

1) In V4.03 and above, there is a built-in Call Center tool.

2) In Earlier versions; A call center is modeled using either the Erlang C or Delay model. If caller population >= (20 x attendant population) can assume 'Infinite' sources, and hence use the Erlang C model. (Otherwise...use the Delay model).

Lets work an example. Lets say......

  • Infinite sources (=> Use Erlang C model)
  • 230 calls per hour
  • Ave holding time (i.e. operator speaking to a caller) = 100 sec
  • Requirement: Ave delay (on the queue) <= 30 sec (i.e.. 30/100 = 0.3 'Ave. Holding Times')


  • Traffic = 230x100/3600 = 6.3 Erlangs. Enter this in Traffic Carried in the Erlang C model
  • Try different numbers of servers until Delay - all calls < 0.3
    • If Servers = 7, Delay-all calls = 1.03 (no good)
    • If Servers = 8, Delay-all calls = 0.254 (Good! < 0.3)
  • The answer is 8 servers (operators)

Can I call the DLL functions from:

  • Visual Basic (VB)?

    Yes. This is described by Microsoft on the following page.

    Also, download the free Erlang DLL Help file to see examples of how to call the Erlang DLL functions from Visual Basic.

  • MS-Visual Studio V6.0

    Yes. Here are some notes from a customer:

      1. Determine exported functions: dumpbin /EXPORTS poisson.dll 
      2. Manually create a .def file to import by ordinal number:
         POIS_CalcNumServ@16 @1 ;
      3. Create .lib using .def file: 
         lib /def:poisson.def /out:poisson.lib 
      4. Declare function: 
         int FAR pascal _export POIS_CalcNumServ (double dErlangs, double dADA_AHT);
         (see list of all function prototypes in the "Header/Include Files" 
         section of the Erlang DLL Help File.
      1. Using "lib /def:poisson.dll /out:poisson.lib" didn't work. I got the
         following link error: 
         "error LNK2001: unresolved external symbol _POIS_CalcNumServ@16".
         The only workaround was to use a .def file (lib /def:poisson.def /out:poisson.lib).
      2. I wasn't able to use 
         "__declspec(dllimport) int POIS_CalcNumServ (double dErlangs, double dADA_AHT);" 
         but had to use 
         "int FAR pascal _export POIS_CalcNumServ (double dErlangs, double dADA_AHT);" 
         to declare the function.
  • VB.NET

    Yes. As a windows form app ( the DLLs can be called directly.

  • ASP.NET Application?

    Yes. If the DLLs are UNLIMITED, no special precautions are needed. But if the DLLs are Personal DLLs, problems have been seen related to the DLLs being able to check the registry for the existence of a valid Erlang-G license key. One solution has been found to be: initiate a separate thread to handle the processing of the Erlang functions.

  • C++?

    Yes. See the DLL Help file for information on how to turn off name-mangling in your function prototypes.

  • Lotus 1-2-3?

    Yes. You can call the DLL functions using the LotusScript language, which is very similar to Microsoft VisualBasic. See this page on the Lotus web site. (Or visit, and Search for "How do I call DLL functions").
    Yes. You can call the DLL functions using the LotusScript language, which is very similar to Microsoft VisualBasic. See this page on the Lotus web site. (Or visit, and Search for "How do I call DLL functions").

  • .NET?

    Yes. But, the because the size of a "Long" in .NET is 8 bytes, the function declarations must change all "LONG" declarations to "INT". 

Will any of these produce the number of trunks needed to support peak volumes?

The answer is very much YES. The way to use these (any) erlang product is as follows:

1) Calculate your PEAK traffic load offered to the system. This is often called the 'Busy-Hour' traffic. This would be:

    (Calls per Hour - in BUSY HOUR) * (Minutes Occupied by each caller)

2) Decide what your system will do with 'blocked' calls:

    a) Drop them, or
    b) Put them on a queue

If (a) decide what percentage of this PEAK offered traffic you are prepared to 'loose' - ie. the caller gets a 'busy' or goes into a queue. This might be "1%" or "0.01%" or .... 0.01% or 0.05% are common numbers for telephony.

If (b) decide how long you want your callers to wait on the queue.

3) Use the erlang product to calculate the number of trunks (lines) required to service the PEAK load.

If you download the free demo of the Windows program from the WWW site, the included Help information includes some worked examples. The Erlang products on this site support 6 different 'models', including models for 'queues' and 'dropped calls'.

Why won't my free trial run?

If you have downloaded the free trial version of 4.04, and after installation the program it asks for a key and does not show the "Run Trial" button:

If you have previously downloaded and tried to run any other V4.xx copy of Erlang, and the trial of that copy has expired, then the V4.04 will be 'pre-expired'.

Of can always load V4.04 on another PC....and the free trial will start from the beginning on that PC.

Is the Erlang program for voice only, or can I use it to model data?

The Erlang-G program is for modeling ANY system with REQUESTS, SERVERS, (and QUEUES). It is obviously used for voice traffic, where

    REQUESTS = calls
SERVERS = phone trunks
QUEUES = phone queues

But, you can use the Erlang-G program for data as well - specially the 'Erlang-C' or 'Delay' models.   

    REQUESTS = data packets
SERVERS = data links (usually only one)
QUEUES = buffers built into things like routers or TCP/IP stacks on PCs

Do the "Call Center" and "Erlang C" models support 30 minute intervals or only 60 minute intervals ?

Yes. These models ask for a CALL RATE expressed in units of 'Calls per hour', but that does not mean this call rate must be maintained for exactly one hour. 

For example;
If you drive a car for 10 km in 30 minutes, the speed is 20 km-per-hr.
If you receive 10 calls in 30 minutes, the call rate is 20 calls-per-hour

In what language is VoIP written?


Should I use Erlang-B or Poisson models?

I am trying to determine the best traffic modeling formula to use for VoIP, such that we wish to know necessary bandwidth when converting to VoIP.


1) Decide if your source population is

  • (F) FINITE (e.g. an office with a known number of phones/employees) or
  • (I) INFINITE (e.g. a call center receiving VoIP calls from a 1-800 number).

2) Decide what happens to calls that cannot get 'service' (e.g. talk) immediately. Do they

  • (A) Just disappear and don't try again. [eg overflow from VoIP network to PSTN]
  • (B) Keep trying or go onto a HOLD queue, but if the wait is too long...hang up
  • (C) Go onto a queue and NEVER leave until they get service.

3) Choose model:

  • (I) + (A) = Erlang B
  • (I) + (B) = Poisson
  • (I) + (C) = Erlang C
  • (F) + (A) = Engset
  • (F) + (B) = Binomial
  • (F) + (C) = Delay

4) Use a tool (such as our Erlang-G program) to decide how many voice trunks you need. At this point - it is irrelevant if they are VoIP or non-VoIP trunks.

5) Take the result from step (4) and use the VoIP too to calculate the required bandwidth for your VoIP network.

Generally - Erlang-B is often used in VoIP calculations for infinite populations (or Engset for finite populations) BECAUSE there is often an overflow path (to PSTN?) so loosing a call is not critical; just a little more expensive.

But if there is no overflow path, then the Poisson model (infinite populations) or the Binomial model (finite populations) should be used.


This site best viewed with Internet Explorer 4 (or greater) or Netscape 4 (or greater) Get Internet Explorer Now!  Get Netscape Now!
Send mail to with questions or comments about this web site.
Last modified: November 06, 2003