Class Pfqn_sens_linearizer

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

public final class Pfqn_sens_linearizer extends Object
  • Method Details

    • pfqn_sens_linearizer

      public static Ret.pfqnSensLinearizer pfqn_sens_linearizer(Matrix L, Matrix N, Matrix Z, double tol, int maxiter)
      Approximate moments E[Q_i], Var[Q_i], Cov[Q_i,Q_j], E[Q_i^2] and E[Q_i^3] of the per-station total queue lengths of a closed product-form queueing network, by the LINEARIZER-2 / LINEARIZER-3 algorithms of the reference (Section 5).

      Motivation. The exact moment analysis of Pfqn_sens_mom evaluates the MVA recursion on the whole population lattice, so it costs O(prod(N+1)) and is unusable once the populations are large. The Linearizer replaces that lattice by a fixed point over a handful of populations, and the reference observes that the same trick applies to the derivatives: differentiate the Linearizer equations, append the differentiated equations to the originals, and iterate all of them together. This routine does that, carrying both the first and the second derivative, so it returns everything (3.2) needs, including the third moment. Carrying only the first derivative is the reference's LINEARIZER-2; carrying the second as well is its LINEARIZER-3.

      The approximation. CORE (equations (5.1)-(5.2)) estimates the queue lengths at population n - 1_l from those at n by

         v_i(l)          = m_i^(n)(l) / n(l)
         m_i^(n-1_l')(l) = (n - 1_l')_l * ( v_i(l) + delta_i(l',l) )
       

      and substitutes them into the exact MVA equations. Setting the delta terms to zero gives Bard-Schweitzer; Linearizer instead estimates them from (5.3), delta_i^(N)(l',l) = v_i^(N-1_l')(l) - v_i^(N)(l), by running CORE at each of the N - 1_l populations, and holds them fixed across populations (the heuristic (5.4)). Differentiating (5.1)-(5.3) gives (5.5)-(5.8), which are carried alongside.

      Accuracy. The reference reports, over 51 networks including 34 stress cases, relative errors below 2.1% on E[Q], 4.1% on E[Q^2] and 6.2% on E[Q^3]. PfqnSensLinearizerTest measures the error against the exact Pfqn_sens_mom on models small enough for both, and asserts bands of that order rather than machine precision: this routine is an approximation and is expected to disagree with the exact answer.

      Reference: J. C. Strelen, "Moment Analysis for Closed Queuing Networks and its Linearizer", Performance Evaluation 11:127-142, 1990, Section 5, equations (5.1)-(5.8), the CORE-2 and LINEARIZER-2 algorithms. The delta definition follows the standard Chandy-Neuse Linearizer, v_i^(N-1_l')(l) - v_i^(N)(l), which is what LINE's pfqn_linearizer implements.

      Single-server stations plus an optional delay Z, matching pfqn_linearizer. The exact counterpart is Pfqn_sens_mom; the per-class exact second moments are in Pfqn_sens_mva.

      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
      tol - convergence tolerance of the CORE fixed point on the mean queue lengths; pass a non-positive value for the test of the reference, 1/(4000+16*sum(n)), which is also applied to the variances at 1e-3
      maxiter - maximum CORE iterations
      Returns:
      the approximate base measures together with the approximate moments
    • pfqn_sens_linearizer

      public static Ret.pfqnSensLinearizer pfqn_sens_linearizer(Matrix L, Matrix N, Matrix Z)
      Uses the termination test of the reference and 200 CORE iterations.
    • pfqn_sens_linearizer

      public static Ret.pfqnSensLinearizer pfqn_sens_linearizer(Matrix L, Matrix N)