Class Pfqn_clwoi
Unlike a load-dependent station, whose factor collapses to a function of the single argument sum_r rho_{ri} z_r, an OI station factor depends on the whole vector z, because mu_i(n) depends on the occupancy through its SUPPORT supp(n) = {r : n_r > 0}. It is nevertheless rational and available in closed form: splitting the count lattice by support, on which mu_i(n) = mu_{i,S} is constant, and writing F_{i,S} for the part of F_i carried by the states of support S, the balance recursion gives (mu_{i,S} - sum_{r in S} v_{i,r} z_r) F_{i,S}(z) = sum_{r in S} v_{i,r} z_r F_{i,S\{r}}(z), F_{i,{}} = 1, F_i(z) = sum_S F_{i,S}(z), since removing a class-r job from a state of support S lands on support S when n_r >= 2 and on S\{r} when n_r = 1. The singularities are the hyperplanes sum_{r in S} v_{i,r} z_r = mu_{i,S}, one per support, in place of the single pole x = c_i of the load-dependent case. A load-independent single-server queue (mu_{i,S} = 1) gives back 1/(1 - sum_r v_{i,r} z_r).
G(N) is the coefficient of prod_r z_r^{N_r}, recovered by R nested one-dimensional lattice-Poisson inversions (CLW eq. 2.3). The restrictive static scaling of eqs. 5.41-5.46 is applied to the expanded constraint matrix that lists one row per (station, nonempty support) pair with unit-pole intensities v_{i,r}/mu_{i,S}, after dropping the rows dominated by a superset of no larger rate; each surviving row is a binding singular hyperplane.
Rates must be support-only, mu_i(n) = mu_i(supp(n)); this is the defining
property of an OI station and what makes the transform a finite rational
function. Every rate handle is verified EXHAUSTIVELY on the count lattice
0 < n <= N before the inversion, at prod_r (N_r+1) evaluations per station
(below the contour points spent afterwards), and a state whose rate differs
from that of its support is rejected with that state named: a rate that
varies inside a support is a general balanced-fairness station and belongs to
Pfqn_ncoi. It is refused rather than warned-and-inverted because the
inversion would otherwise return a plausible but wrong G(N). Cost is prod_r 2 l_r N_r contour points, each costing
O(M R 2^R), against O(M prod_r (N_r+1)(N_r+2)/2) for the convolution of
Pfqn_ncoi: linear rather than quadratic in each population, and so
preferable on large populations with few chains.
-
Method Summary
Modifier and TypeMethodDescriptionstatic Ret.pfqnNcpfqn_clwoi(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu) static Ret.pfqnNcpfqn_clwoi(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, double[][] visits) static Ret.pfqnNcpfqn_clwoi(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, double[][] visits, int[] lpar, double[] gampar)
-
Method Details
-
pfqn_clwoi
-
pfqn_clwoi
public static Ret.pfqnNc pfqn_clwoi(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, double[][] visits) -
pfqn_clwoi
public static Ret.pfqnNc pfqn_clwoi(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, double[][] visits, int[] lpar, double[] gampar) - Parameters:
Z- (R) think-time demand of the aggregated delay node.N- (R) closed population, finite.mu- list of OI station rate handles; mu.get(i) maps a per-class count vector n (length R) to the total service rate of station i, and must depend on n only through its support. May be null/empty for a pure delay network.visits- (M x R) per-station class visit ratios weighting the balance recursion; null = unit visits.lpar- (R) inner lattice parameters l_j; null = 1,2,2,3,3,...gampar- (R) aliasing parameters gamma_j; null = 11,13,13,15,15,...- Returns:
- G(N) (Inf on overflow) and its natural logarithm.
-