Class Pfqn_clwjd
Pfqn_clwoi as Pfqn_clw_lld stands to
Pfqn_clw: a per-station cutoff beyond which the rate stops changing
turns an infinite series into a rational function of the same denominators.
Station i has a rate mu_i(n) that reads the whole per-class occupancy but saturates coordinatewise: with a cutoff vector l_i, mu_i(n) = c_{i,t}, t = (min(n_1,l_{i,1}), ..., min(n_R,l_{i,R})), so past l_{i,r} further class-r jobs no longer change the rate. Order independence is l_i = 1 (t is the support indicator); a multiserver station with c servers is l_i = c, min(sum n, c) being a function of the clipped vector once every l_{i,r} >= c.
Splitting the count lattice by clipped region, on which mu_i is constant, and writing F_{i,t} for the part of F_i carried by the states with t_i(n) = t, (mu_{i,t} - sum_{r: t_r = l_{i,r}} v_{i,r} z_r) F_{i,t}(z) = sum_{r: t_r >= 1} v_{i,r} z_r F_{i,t-e_r}(z), F_{i,0} = 1, F_i(z) = sum_t F_{i,t}(z), the two sides differing because removing a class-r job leaves the region only on an UNsaturated coordinate: for t_r < l_{i,r} the region pins n_r = t_r so n - e_r lands in t - e_r, while for t_r = l_{i,r} the region is n_r >= l and n - e_r lands in t or in t - e_r. The singularities are therefore the hyperplanes sum_{r in S} v_{i,r} z_r = mu_{i,t} over the SATURATED sets S = {r : t_r = l_{i,r}}: at most 2^R per station, however large the cutoffs.
The restrictive static scaling of CLW eqs. 5.41-5.46 runs on one row per (station, saturated set), carrying v_{i,r}/min{mu_{i,t} : saturated set of t is S}, the smallest rate over regions sharing a saturated set being the binding one; rows dominated by a superset of no larger rate are dropped.
The rate must be constant on each clipped region, which is checked on probe
states. Any rate is admissible with lcut = N (the default), the clipping being
vacuous on the reachable lattice. Cost is prod_r 2 l_r N_r contour points, each
costing O(M R prod_r (l_{i,r}+1)), against O(M prod_r (N_r+1)(N_r+2)/2) for
Pfqn_ncjd: the inversion pays off when the joint dependence saturates
early, and loses outright at lcut = N.
-
Method Summary
Modifier and TypeMethodDescriptionstatic Ret.pfqnNcpfqn_clwjd(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu) static Ret.pfqnNcpfqn_clwjd(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, double[][] visits) static Ret.pfqnNcpfqn_clwjd(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, double[][] visits, int[][] lcut) static Ret.pfqnNcpfqn_clwjd(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, double[][] visits, int[][] lcut, int[] lpar, double[] gampar)
-
Method Details
-
pfqn_clwjd
-
pfqn_clwjd
public static Ret.pfqnNc pfqn_clwjd(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, double[][] visits) -
pfqn_clwjd
public static Ret.pfqnNc pfqn_clwjd(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, double[][] visits, int[][] lcut) -
pfqn_clwjd
public static Ret.pfqnNc pfqn_clwjd(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, double[][] visits, int[][] lcut, int[] lpar, double[] gampar) - Parameters:
Z- (R) think-time demand of the aggregated delay node.N- (R) closed population, finite.mu- one rate handle per joint-dependent station, mapping a per-class count vector to the total service rate. 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.lcut- (M x R) per-station per-class saturation cutoffs l_{i,r} >= 1; entries are clipped to N_r, which is exact because a rate difference at n_r > N_r can only move coefficients with n_r > N_r. null = N (no truncation).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.
-