Package jline.api.mam

Class LdqbdMphc

java.lang.Object
jline.api.mam.LdqbdMphc

public final class LdqbdMphc extends Object
Exact level-dependent QBD blocks of an M/PH/c queue.

Port of matlab/src/api/mam/ldqbd_mphc.m and ph_multisets.m. The level of the chain is the number of jobs at the station; the coordinate INSIDE a level is the MULTISET of the phases the min(n,c) busy servers sit in, which is what makes the construction exact for phase-type service at any number of servers.

The collapsed alternative -- one PH process run at min(n,c) times its speed -- gets the aggregate service rate right but forgets which phase each busy server is in, turning the c servers into one fast server whose remaining work is a single phase-type variable.

References: S. Asmussen and J.R. Moller, "Calculation of the steady state waiting time distribution in GI/PH/c and MAP/PH/c queues", Queueing Systems 37(1):9-29, 2001; M. F. Neuts, "Matrix-geometric solutions in stochastic models", Johns Hopkins University Press, 1981.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final class 
    The three block lists of a level-dependent QBD, in the order Ldqbd takes them.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    The repeating level is the widest one, so it is the size worth guarding: the LD-QBD recursion inverts one matrix of that order per level.
  • Method Summary

    Modifier and Type
    Method
    Description
    ldqbd_mphc(Matrix D0, Matrix D1, Matrix alpha, double c, double[] arrRate, double[] sf)
    Block-tridiagonal generator of an M/PH/c queue with level-dependent arrivals.
    static int[][]
    ph_multisets(int p, int k)
    Configurations of k identical servers over p service phases.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • MAX_CONFIGS

      public static final int MAX_CONFIGS
      The repeating level is the widest one, so it is the size worth guarding: the LD-QBD recursion inverts one matrix of that order per level.
      See Also:
  • Method Details

    • ph_multisets

      public static int[][] ph_multisets(int p, int k)
      Configurations of k identical servers over p service phases.

      Rows are the compositions of k into p nonnegative parts: entry (r,i) is the number of the k busy servers sitting in phase i. There are nchoosek(k+p-1, p-1) of them, the multiset count of Asmussen and Moller (2001) -- identical servers are exchangeable, so only the phase COUNTS carry information and the ordered space of size p^k collapses onto this.

      The order is fixed and shared by every caller, so a configuration index means the same thing in each of them: the first part descends. k == 1 therefore yields the identity rows e_1 ... e_p in phase order, which is what makes the c == 1 case of ldqbd_mphc(jline.util.matrix.Matrix, jline.util.matrix.Matrix, jline.util.matrix.Matrix, double, double[], double[]) coincide with plain phase indexing.

    • ldqbd_mphc

      public static LdqbdMphc.Blocks ldqbd_mphc(Matrix D0, Matrix D1, Matrix alpha, double c, double[] arrRate, double[] sf)
      Block-tridiagonal generator of an M/PH/c queue with level-dependent arrivals.
      Parameters:
      D0 - service sub-generator (p x p), phase changes without completion
      D1 - service completion block (p x p); D1 = (-D0*1)*alpha for a PH
      alpha - 1 x p vector a server starts each new job in
      c - number of identical servers (>= 1; capped at the top level)
      arrRate - length Nlev+1; arrRate[n] is the arrival rate out of level n
      sf - optional length-Nlev multiplier on the station's TOTAL service rate at level n (load dependence); each busy server then runs at sf[n-1]/min(n,c) of nominal, so sf[n-1] == min(n,c) reproduces the unscaled queue exactly. Pass null for no scaling.

      Level sizes grow over the boundary levels 0..c and repeat above them, so the blocks joining differently sized neighbours are rectangular; Ldqbd, its rate matrices and its stationary vector all accept that heterogeneity.