Function File: [U, R, Q, X, G] = qncsconv (N, S, V)
Function File: [U, R, Q, X, G] = qncsconv (N, S, V, m)

Analyze product-form, single class closed networks with K service centers using the convolution algorithm.

Load-independent service centers, multiple servers (M/M/m queues) and IS nodes are supported. For general load-dependent service centers, use qncsconvld instead.

INPUTS

N

Number of requests in the system (N>0).

S(k)

average service time on center k (S(k) ≥ 0).

V(k)

visit count of service center k (V(k) ≥ 0).

m(k)

number of servers at center k. If m(k) < 1, center k is a delay center (IS); if m(k) ≥ 1, center k it is a regular M/M/m queueing center with m(k) identical servers. Default is m(k) = 1 for all k.

OUTPUT

U(k)

center k utilization. For IS nodes, U(k) is the traffic intensity X(k) * S(k).

R(k)

average response time of center k.

Q(k)

average number of customers at center k.

X(k)

throughput of center k.

G(n)

Vector of normalization constants. G(n+1) contains the value of the normalization constant with n requests G(n), n=0, …, N.

NOTE

For a network with K service centers and N requests, this implementation of the convolution algorithm has time and space complexity O(NK).

REFERENCES

  • Jeffrey P. Buzen, Computational Algorithms for Closed Queueing Networks with Exponential Servers, Communications of the ACM, volume 16, number 9, September 1973, pp. 527–531. 10.1145/362342.362345

This implementation is based on G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998, pp. 313–317.

See also: qncsconvld.

Demonstration 1

The following code

 n = [1 2 0];
 N = sum(n); # Total population size
 S = [ 1/0.8 1/0.6 1/0.4 ];
 m = [ 2 3 1 ];
 V = [ 1 .667 .2 ];
 [U R Q X G] = qncsconv( N, S, V, m );
 p = [0 0 0]; # initialize p
 # Compute the probability to have n(k) jobs at service center k
 for k=1:3
   p(k) = (V(k)*S(k))^n(k) / G(N+1) * ...
          (G(N-n(k)+1) - V(k)*S(k)*G(N-n(k)) );
   printf("Prob( n(%d) = %d )=%f\n", k, n(k), p(k) );
 endfor

Produces the following output

Prob( n(1) = 1 )=0.179750
Prob( n(2) = 2 )=0.484043
Prob( n(3) = 0 )=0.527791

Package: queueing