Class Pfqn_sens_mom

java.lang.Object
jline.api.pfqn.sens.Pfqn_sens_mom

public final class Pfqn_sens_mom extends Object
  • Method Details

    • pfqn_sens_mom

      public static Ret.pfqnSensMom pfqn_sens_mom(Matrix L, Matrix N, Matrix Z, Matrix mi, Matrix groups)
      Exact moments E[Q_i], E[Q_i^2], E[Q_i^3] and the covariances Cov[Q_i,Q_j] of the TOTAL queue lengths Q_i = sum_r n(i,r) of a closed product-form (BCMP) queueing network.

      The method is the moment analysis of Strelen. Its Theorem 3.1 states that one further factor Q_i in a moment costs one differentiation with respect to x_i, the reciprocal of the capacity of station i, i.e. a parameter that scales the service times of ALL classes at station i:

         E[Q_i^j] = m_i E[Q_i^(j-1)] + x_i d/dx_i E[Q_i^(j-1)],  Q_i^0 = 1
       

      Iterating from E[Q_i^0] = 1 gives, with m_i = E[Q_i] (equation (3.2)):

         Var[Q_i]     = x_i dm_i/dx_i
         Cov[Q_i,Q_j] = x_j dm_i/dx_j = x_i dm_j/dx_i
         E[Q_i^2]     = x_i dm_i/dx_i + m_i^2
         E[Q_i^3]     = x_i^2 d^2m_i/dx_i^2 + (x_i + 3 x_i m_i) dm_i/dx_i + m_i^3
       

      so the third moment requires the SECOND derivative of the MVA recursion, which is what this routine adds over Pfqn_sens_mva and Pfqn_sens (both first order only). The derivatives are obtained by second-order forward-mode differentiation of the Reiser-Lavenberg recursion, i.e. by carrying, for each parameter, the value together with its first and second derivative along the population lattice (Theorem 3.2 for one class, Theorem 3.5 for several).

      The parameter need not scale a whole column. Theorem 1 of Akyildiz and Strelen states the same recursion for a parameter that scales the service times of an arbitrary class subset T at station i, and the moments it generates are then those of Q_(i,T) = sum_(r in T) n(i,r). groups supplies that subset structure: it partitions the classes, and the routine reports the moments of each group's queue length at each station. The three useful settings are

      • groups = ones(1,R) -- the whole column: per-station TOTALS (the default, and Strelen's x_i);
      • groups = 1..R -- one class per group: PER-CLASS moments, so that even the third moment is per class (see perClassGroups(int));
      • groups = chain(r) -- one group per chain: PER-CHAIN moments.

      Strelen states only the first; the generalization is Akyildiz and Strelen's T. The per-class setting reproduces Pfqn_sens_mva's QVar exactly, and brute-force enumeration of the per-class moments including the third.

      Reference: J. C. Strelen, "Moment Analysis for Closed Queuing Networks and its Linearizer", Performance Evaluation 11:127-142, 1990, Theorems 2.1, 3.1, 3.2, 3.5 and equation (3.2); I. F. Akyildiz and J. C. Strelen, "Moment Analysis for Load-Dependent Mixed Product Form Queueing Networks", IEEE Trans. Communications 39(6):828-832, 1991, Theorem 1.

      Restricted to closed populations, as is the moment analysis of the reference. Mixed and load-dependent second moments are in Pfqn_sens_mvaldmx. Moments of the sojourn times at FCFS centers are built on top of these queue-length moments by Pfqn_sens_respt, following Theorem 4.1. The exact recursion costs O(prod(N+1)) lattice points; Pfqn_sens_linearizer approximates the same quantities in polynomial time.

      Parameters:
      L - service demand matrix (M x R), L(i,r) = visits_ir / rate_ir
      N - population vector (1 x R)
      Z - think time vector (1 x R), null or empty for zeros
      mi - station server multiplicity (1 x M), null for ones
      groups - class-to-group map (1 x R), a partition of the classes into G = max(groups) groups labelled consecutively 1..G with no empty group. The moments returned are those of each group's queue length at each station. Null selects ones(1,R), i.e. one group holding every class, which is the per-station total.
      Returns:
      the base measures together with the exact moments of each group's queue length at each station
    • pfqn_sens_mom

      public static Ret.pfqnSensMom pfqn_sens_mom(Matrix L, Matrix N, Matrix Z, Matrix mi)
      The per-station totals, i.e. the default single group holding every class.
      Parameters:
      L - service demand matrix (M x R)
      N - population vector (1 x R)
      Z - think time vector (1 x R), null or empty for zeros
      mi - station server multiplicity (1 x M), null for ones
      Returns:
      the base measures together with the exact moments of the total queue lengths
    • pfqn_sens_mom

      public static Ret.pfqnSensMom pfqn_sens_mom(Matrix L, Matrix N, Matrix Z)
    • pfqn_sens_mom

      public static Ret.pfqnSensMom pfqn_sens_mom(Matrix L, Matrix N)
    • perClassGroups

      public static Matrix perClassGroups(int R)
      The class-to-group map that puts one class per group, 1..R, which yields genuinely per-class moments (Akyildiz-Strelen Theorem 1 with T = {r}).
      Parameters:
      R - the number of classes
      Returns:
      a (1 x R) group map