Buzen's algorithm
In queueing theory, a discipline within the mathematical theory of probability, Buzen's algorithm (or convolution algorithm) is an algorithm for calculating the normalization constant G(N) in the Gordon–Newell theorem. This method was first proposed by Jeffrey P. Buzen in 1973.[1] Computing G(N) is required to compute the stationary probability distribution of a closed queueing network.[2]
Performing a naïve computation of the normalising constant requires enumeration of all states. For a system with N jobs and M states there are states. Buzen's algorithm "computes G(1), G(2), ..., G(N) using a total of NM multiplications and NM additions." This is a significant improvement and allows for computations to be performed with much larger networks.[1]
Problem setup
Consider a closed queueing network with M service facilities and N circulating customers. Write ni(t) for the number of customers present at the ith facility at time t, such that . We assume that the service time for a customer at the ith facility is given by an exponentially distributed random variable with parameter μi and that after completing service at the ith facility a customer will proceed to the jth facility with probability pij.
It follows from the Gordon–Newell theorem that the equilibrium distribution of this model is
where the Xi are found by solving
and G(N) is a normalizing constant chosen that the above probabilities sum to 1.[1]
Buzen's algorithm is an efficient method to compute G(N).[1]
Marginal distributions, expected number of customers
The general G-N distribution given above is mainly of theoretical interest. However, expressions for a number of useful performance measures can be derived from it. Buzen showed that the probability that there are exactly k customers at facility i is given by:
and the expected number of customers at facility i by
Note that these expressions also involve G. It is in the evaluation of these expressions that the algorithm is useful.
Derivation
The algorithm computes not just G but a two-dimensional function
- .
Once the calculation ends the values we are interested in are found by
- .
The definition of g and a recursive method of calculating it are as follows
Also
and
This recursive relationship allows for the calculation of all G(N) up to any value of N in order O(MN) time.
Implementation
It will be assumed that the Xm have been computed by solving the relevant equations and are available as an input to our routine. Although g is in principle a two dimensional matrix, it can be computed in a column by column fashion starting from the leftmost column. The routine uses a single column vector C to represent the current column of g.
C[0] := 1
for n := 1 step 1 until N do
C[n] := 0;
for m := 1 step 1 until M do
for n := 1 step 1 until N do
C[n] := C[n] + X[m]*C[n-1];
At completion, C contains the desired values G(0), G(1) to G(N). [1]
References
- ^ a b c d e Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi: 10.1145/362342.362345, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi= 10.1145/362342.362345
instead. - ^ Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi:10.1287/opre.15.2.254, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi=10.1287/opre.15.2.254
instead.