Class Dpfqn_nc
Port of matlab/src/api/dpfqn/dpfqn_nc.m. With q_j = 1 - p_j the queue length vector has the product form of Daduna (2001), corollary 3.4,
pi(n_1,...,n_J) = prod_j (q_j/p_j)^n_j (1/q_j)^{1{n_j>0}} / G(N,J)
whose extra factor on the busy nodes is what separates it from the continuous-time Gordon-Newell form: a homogeneous cycle is uniform on the state space in continuous time and is not here. G obeys proposition 3.18,
G(k,j) = G(k,j-1) + (q_j/p_j) G(k-1,j) + G(k-1,j-1)
with G(0,j) = 1 and G(k,0) = 0 for k >= 1. Unlike the continuous-time convolution algorithm this recursion is not invariant to the numbering of the nodes. The arrival constants obey proposition 3.19,
G1(k,J) = G(k-1,J-1) + (q_J/p_J) G1(k-1,J), k >= 3
with G1(1,J) = 1 and G1(2,J) = q_1/p_1 + sum_{j>=2} 1/p_j. By lemma 7.3 the arrival constant is the same at every node, so one family suffices, and three consequences are what the discrete-time analyzer consumes:
throughput per slot X = G1(N,J) / G(N,J) (equal at every node)
utilization U_j = X / p_j
tail probability P(X_j >= k)
= (q_j/p_j)^k (1/q_j) G1(N-k+1,J) / G(N,J)
The last identity is corollary 3.20(a) with its index corrected: as printed there the right-hand side evaluates to P(X_j >= k+1). Corollary 3.20(c), which transfers the tail from node 1 to node j, holds for k >= 1 only; at k = 0 both tails are 1 while the stated ratio is q_1/q_j.
- See Also:
-
Method Summary
-
Method Details
-
dpfqn_nc
- Parameters:
p- per-slot service completion probabilities p_j in (0,1)N- number of customers cycling in the J nodes- Returns:
- the time-stationary and arrival normalizing constants
-