Class Pfqn_cyclet_ofree

java.lang.Object
jline.api.pfqn.nc.Pfqn_cyclet_ofree

public final class Pfqn_cyclet_ofree extends Object
Exact passage-time density, distribution and moments along an OVERTAKE-FREE PATH of a closed single-chain tree-like product-form network.

Reference: P. G. Harrison and W. J. Knottenbelt, "Passage Time Distributions in Large Markov Chains", 2002, Sec. 7.1, Theorems 1 and 2, after P. G. Harrison, J. Appl. Prob. 27, 1990 and H. Duduna, Adv. Appl. Prob. 14, 1982. The underlying sojourn-time result for overtake-free paths is F. Kelly and P. Pollett, Adv. Appl. Prob. 15, 1983.

THE ONE FACT THAT MAKES ALL THREE ROUTES WORK. Conditional on the path,

     T | z  =  sum_{j in z} Erlang(u_{z_j} + 1, mu_{z_j})
 
with u distributed as the network's equilibrium population vector AT N-1 (the arrival theorem). Hence the transform of Theorem 1 collapses to
     L(s|z) = prod_{j in z} mu_j/(s+mu_j) * G(y(s), N-1) / G(x, N-1)
 
where x_i = v_i/mu_i and y_i(s) = x_i mu_i/(s+mu_i) on the path, x_i off it: one Buzen convolution per value of s.

MOMENTS ARE NEVER TAKEN FROM THE DENSITY. They come from running the same Buzen convolution in the ring of truncated power series in s, so they are exact to machine precision, are unaffected by the time grid, and stay valid when the rates coincide and Theorem 2 does not apply.

NOTE ON THE PAPER. The inner sum of Theorem 2 reads (v_j t)^(c-i)/(c-i)! and that is CORRECT as printed, however odd the visit ratio looks against a time: substituting the service rate instead returns negative densities. Verified against a direct mixture-of-Erlangs oracle to 1e-15, and at the paper's own N = 18 example against the transform route to 1e-11.

Node indices are 0-based here and 1-based in the MATLAB reference.

  • Field Details

    • DEFAULT_TOL

      public static final double DEFAULT_TOL
      Default separation below which two path rates count as coincident.
      See Also:
  • Method Details

    • pfqn_cyclet_ofree

      public static PfqnCycletResult pfqn_cyclet_ofree(double[] v, double[] mu, int N, List<int[]> paths, double[] tset)
    • pfqn_cyclet_ofree

      public static PfqnCycletResult pfqn_cyclet_ofree(double[] v, double[] mu, int N, List<int[]> paths, double[] tset, String method, int nmom, double[] pathprob, String ltiMethod, double tol)
      Parameters:
      method - "auto" (default) uses "exact" when the path rates are separated and "lt" otherwise; "exact" is Theorem 2 in closed form and REQUIRES DISTINCT RATES on the path, since its partial fractions divide by prod_{i!=j}(mu_i - mu_j)