ErlangC

ErlangC(transactions, aht, asa, interval[, ...])

Computes the number of positions required to handle transactions in an Erlang C queue system.

ErlangC.waiting_probability(positions[, ...])

Returns the probability that a transaction waits in queue.

ErlangC.service_level(positions[, ...])

Returns the expected service level for a number of positions.

ErlangC.achieved_occupancy(positions[, ...])

Returns the expected occupancy of positions.

ErlangC.required_positions(service_level[, ...])

Computes the required positions for a target service level.

class pyworkforce.queuing.ErlangC(transactions: float, aht: float, asa: float, interval: int, shrinkage=0.0, **kwargs)[source]

Computes the number of positions required to handle transactions in an Erlang C queue system. Implementation inspired by: https://lucidmanager.org/data-science/call-centre-workforce-planning-erlang-c-in-r/

Parameters:
transactions: float,

Total number of transactions arriving in the interval.

aht: float,

Average handling time of a transaction (minutes).

asa: float,

The required average speed of answer (minutes).

interval: int,

Interval length, in minutes.

shrinkage: float,

Fraction of time that an operator unit is not available.

achieved_occupancy(positions: int, scale_positions: bool = False)[source]

Returns the expected occupancy of positions.

Parameters:
positions: int,

The number of raw positions. Productive positions must be greater than traffic intensity.

scale_positions: bool, default=False

Set to True when positions includes shrinkage.

required_positions(service_level: float, max_occupancy: float = 1.0)[source]

Computes the required positions for a target service level.

Parameters:
service_level: float,

Target service level.

max_occupancy: float,

The maximum fraction of time that a transaction can occupy a position. Must be greater than 0 and less than or equal to 1.

Returns:
raw_positions: int,

Required positions before applying shrinkage.

positions: int,

Positions needed after applying shrinkage.

service_level: float,

Fraction of transactions expected to reach a position before the target ASA.

occupancy: float,

Expected occupancy of positions.

waiting_probability: float,

Probability that a transaction waits in queue.

service_level(positions: int, scale_positions: bool = False)[source]

Returns the expected service level for a number of positions.

Parameters:
positions: int,

The number of positions available to handle transactions. Productive positions must be greater than traffic intensity.

scale_positions: bool, default = False

Set to True when positions includes shrinkage.

waiting_probability(positions: int, scale_positions: bool = False)[source]

Returns the probability that a transaction waits in queue.

Parameters:
positions: int,

The number of positions available to handle transactions. Productive positions must be greater than traffic intensity.

scale_positions: bool, default=False

Set to True when positions includes shrinkage.