# Erlang B Formula Calculator

This script evaluates the blocking probability of a queueing system using the Erlang B formula. All new customers are blocked (and rejected) if all servers are busy at their time of arrival.
This script executes the Erlang B program implemented in the CCOptim Java library for call centers.

See the instructions for usage details.

## Program setup

yes no
5. Evaluate with number of servers (minimum is 1)
6. Find minimum servers for maximum blocking prob. (must be between 0 and 100 exclusively)

## Instructions

We assume the classic M/M/c queueing model with Poisson arrival process, exponential service time and no queueing capacity. That is, any new customer that sees all servers busy at their time of arrival will be blocked from the system and forced to abandon. The number of states in the system is equal to: number of servers + 1 (empty state). With a minimum of 1 server, this queueing system is always stable, because there is no waiting queue. All non-blocked customers are automatically served and their waiting time is 0.

### Blocking probability

This program computes a single performance measure, which is the blocking probability. This measure is defined as the probability that all servers are busy in the queueing system when a new customer arrives. This is also equal to the proportion of time that all servers are busy.

### Descriptions of the input parameters

The parameters for this program are:
1. Arrival rate: The average number of customers that arrive per time unit. For example, 5.7 customers per minute.
2. Average service time: The average time duration that a server takes to serve one customer. This is the inverse of the service rate. For example, an average service time of 10.5 minutes per customer.
3. Display graph output: Select "yes" to draw the blocking probabilities in a chart. This option requires browser support for HTML5 and Javascript. Use the parameter "Server range output" to control the number of points in the chart.
Note this feature is unstable for Internet Explorer 8 and older.
4. Server range output: Allows to evaluate the blocking probability for multiple number of servers. Let $$R$$ be this parameter and $$S$$ the given number of servers, then the program will evaluate the blocking probability for all servers between $$(S-R)$$ and $$(S+R)$$. Parameter $$S$$ can be given by the user (parameter #5) or found by minimizing the number of servers for a maximum blocking threshold (parameter #6). For example, if this range is set at 5 and the number of servers to evaluate is set at 10, then the program will evaluate the blocking probability for 5 to 15 servers.
This parameter must be a non-negative integer.
5. Evaluate: If this option is selected, then pressing the "Execute" button will compute the blocking probability using the Erlang B formula for the given number of servers. The blocking probabilities for nearby number of servers can also be computed by setting the parameter "Server range output". The number of servers must be integer and the minimum value is 1.
6. Find minimum servers: If this option is selected, then pressing the "Execute" button will order the program to find the minimum number of servers, let's say $$Y$$, required to have a blocking probability equal or less than the maximum blocking threshold. Let $$B(y)$$ be the blocking probability as a function of the number of servers $$y$$, and $$T$$ the maximum blocking threshold. Then, $$Y = \min \{ y : B(y) \le T, y \in \mathbb{N} \},$$ where $$\mathbb{N}$$ is the set of natural numbers. The program will evaluate the blocking probabilities at $$Y$$ and around $$Y$$, like with the "Evaluate" option. The maximum blocking probability threshold must be between 0 and 100%, exclusively.
For example, set this parameter to 5 to find the minimum number of servers needed to have a blocking probability of at most 5%.