Class Pfqn_pas_nc

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

public final class Pfqn_pas_nc extends Object
  • Method Details

    • pfqn_pas_nc

      public static Ret.pfqnOiNc pfqn_pas_nc(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu)
      Normalizing constant of a closed P&S network with no placement order, i.e. the plain OI constant. Prefer Pfqn_ncoi, which computes the same value on the count lattice at far lower cost.
      Parameters:
      Z - (R) think-time demand of the aggregated delay node.
      N - (R) closed population, finite.
      mu - list of P&S station rate handles.
      Returns:
      G(N) and log G(N).
    • pfqn_pas_nc

      public static Ret.pfqnOiNc pfqn_pas_nc(double[] Z, int[] N, List<ToDoubleFunction<int[]>> mu, List<boolean[][]> prec)
      Normalizing constant G_C of the communicating class selected by the placement order.

      Method: build station M's chain head-first; appending class r at chain position k = sum(occ)+1 is admissible iff no class already placed at that station must come after r, and contributes the reciprocal OI prefix rate 1/mu_M(occ+e_r); the chain may be finalized (recursing to station M-1) only when occ is a placement-order ideal at full multiplicity. When every P&S station has been peeled the residual population sits at the delay node with the multinomial weight prod_r Z_r^{N_r}/N_r!.

      This is a MICROSTATE routine: it walks the ordered chains position by position, because with a placement order the reachable set is a set of ORDERINGS that does not collapse onto the count lattice. Cost: one node per feasible ordered prefix, which with an empty order is sum_{b<=N} C(|b|+M-1,M-1) |b|!/prod_r b_r!, factorial in sum(N).

      Parameters:
      Z - (R) think-time demand of the aggregated delay node; null or empty for a network with no delay station.
      N - (R) closed population, finite.
      mu - list of P&S station rate handles; each maps a per-class count vector to the total service rate of that station.
      prec - placement order, one (R x R) matrix per station, with prec.get(m)[i][j] true iff class i must be placed before class j at station m (the closure of Pas_placement.pas_placement, fed by the global DAG of Pas_swap2order.pas_swap2order). A single-entry list is broadcast to every station; null or empty means no order, so G is the plain OI constant. NOTE the orientation: around a cycle each downstream station traverses its chain in the opposite direction, so downstream stations take the TRANSPOSE of the upstream order. Passing the same matrix to both stations of a cycle silently returns a smaller, wrong G.
      Returns:
      G_C and log G_C.