Function File: [U, R, Q, X] = qnsolve ("closed", N, QQ, V)
Function File: [U, R, Q, X] = qnsolve ("closed", N, QQ, V, Z)
Function File: [U, R, Q, X] = qnsolve ("open", lambda, QQ, V)
Function File: [U, R, Q, X] = qnsolve ("mixed", lambda, N, QQ, V)

High-level function for analyzing QN models.

  • For closed networks, the following server types are supported: M/M/m–FCFS, -/G/\infty, -/G/1–LCFS-PR, -/G/1–PS and load-dependent variants.
  • For open networks, the following server types are supported: M/M/m–FCFS, -/G/\infty and -/G/1–PS. General load-dependent nodes are not supported. Multiclass open networks do not support multiple server M/M/m nodes, but only single server M/M/1–FCFS.
  • For mixed networks, the following server types are supported: M/M/1–FCFS, -/G/\infty and -/G/1–PS. General load-dependent nodes are not supported.

INPUTS

N
N(c)

Number of requests in the system for closed networks. For single-class networks, N must be a scalar. For multiclass networks, N(c) is the population size of closed class c.

lambda
lambda(c)

External arrival rate (scalar) for open networks. For single-class networks, lambda must be a scalar. For multiclass networks, lambda(c) is the class c overall arrival rate.

QQ{i}

List of queues in the network. This must be a cell array with N elements, such that QQ{i} is a struct produced by the qnmknode function.

Z

External delay ("think time") for closed networks. Default 0.

OUTPUTS

U(k)

If k is a FCFS node, then U(k) is the utilization of service center k. If k is an IS node, then U(k) is the traffic intensity defined as X(k)*S(k).

R(k)

average response time of service center k.

Q(k)

average number of customers in service center k.

X(k)

throughput of service center k.

Note that for multiclass networks, the computed results are per-class utilization, response time, number of customers and throughput: U(c,k), R(c,k), Q(c,k), X(c,k).

String literals are case-insensitive, so "closed", "Closed" and "CLoSEd" are all equivalent.

Demonstration 1

The following code

 QQ = { qnmknode( "m/m/m-fcfs", [0.2 0.1 0.1; 0.2 0.1 0.1] ), ...
        qnmknode( "-/g/1-ps", [0.4; 0.6] ), ...
        qnmknode( "-/g/inf", [1; 2] ) };
 V = [ 1 0.6 0.4; ...
       1 0.3 0.7 ];
 N = [ 2 1 ];
 [U R Q X] = qnsolve( "closed", N, QQ, V );

gives an example of how 'qnsolve' is used.

Package: queueing