Class Pfqn_oi_insvc

java.lang.Object
jline.api.pfqn.ld.Pfqn_oi_insvc

public class Pfqn_oi_insvc extends Object
Conditional mean number of in-service jobs per class at an OI station.

In an OI station the state is the ordered list c = (c_1,...,c_n) of job classes (position 1 = head) and the job in position p is served at the rank rate increment Delta_p(c) = mu(c_1..c_p) - mu(c_1..c_{p-1}), so that the total rate telescopes to mu(c). Position p is IN SERVICE when Delta_p(c) > 0, and sir_r(c) = #{p : c_p = r, Delta_p(c) > 0}. Note that sir_r counts JOBS, not servers: a single job served concurrently by several compatible servers counts once. This matches the definition used by the exact CTMC solver (State.toMarginal, PAS branch) and by LDES.

Because mu is permutation-invariant (a function of the count vector), the unnormalized weight of an ordering c of the multiset n factorizes over its prefixes as w(c) = prod_{p=1}^{|n|} 1/mu(n(c_1..c_p)), and the OI balance function Phi(n) = sum_{orderings c of n} w(c) obeys the standard balanced-fairness recursion (condition on the tail element c_{|n|}):

   Phi(0) = 1,   Phi(n) = (1/mu(n)) sum_{r: n_r>0} Phi(n - e_r).
 

Conditioning the same way on the tail element and using sir_r(c) = sir_r(c_1..c_{|n|-1}) + [c_{|n|} = r] * 1{mu(n) > mu(n - e_r)} gives the companion recursion for the sir-weighted balance Xi_r(n) = sum_{orderings c of n} w(c) sir_r(c):

   Xi_r(0) = 0,
   Xi_r(n) = (1/mu(n)) [ sum_{s: n_s>0} Xi_r(n - e_s)
                         + 1{n_r > 0} 1{mu(n) > mu(n - e_r)} Phi(n - e_r) ].
 

Given n, every ordering carries the same class-weight factor, so the conditional law of the ordering is w(c)/Phi(n) and E[sir_r | n] = Xi_r(n) / Phi(n) =: g_r(n), a function of the count vector alone. The station's in-service mean then follows from the count marginal pM by E[sir_r] = sum_n pM(n) g_r(n), or, in normalizing-constant form, from the functional-server identity of Pfqn_oi_fnc applied to f(n) = g_r(n) (note g_r(0) = 0, as required).

See Also:
  • Constructor Details

    • Pfqn_oi_insvc

      public Pfqn_oi_insvc()
  • Method Details

    • pfqn_oi_insvc

      public static Pfqn_oi_insvc.Result pfqn_oi_insvc(ToDoubleFunction<int[]> oirate, int[] N)
      Conditional mean number of in-service jobs per class over the population lattice 0 <= n <= N.
      Parameters:
      oirate - rank rate mu(n) on a per-class count vector; mu(0) is taken as 0
      N - (1 x R) closed population vector, finite and nonnegative
      Returns:
      the tables g, Xi and Phi, flat column-major over the lattice