Class Mam_bgchain_ctmc

java.lang.Object
jline.solvers.mam.handlers.Mam_bgchain_ctmc

public final class Mam_bgchain_ctmc extends Object
Background modulating chain of a mixed network: the continuous-time Markov chain of the closed-class population vector, with the open classes present only through the server capacity they leave free.

The chain carries B = 1 or 2 background classes. B = 1 is the single closed chain of the model; B = 2 is the tagged/aggregate pair built by Solver_mam_bgchain when the model has several closed chains (class 1 is the tagged chain, class 2 the flow-equivalent aggregate of the rest).

A station holding n[i][1] + n[i][2] = e closed jobs serves background class b at rate n[i][b]/ST[i][b] when it is an infinite server, and cshare[i][e] * (n[i][b]/e) / ST[i][b] otherwise, splitting the capacity the closed jobs hold over the background classes in proportion to their counts. That is exact under PS and is the random-order surrogate under FCFS.

The open classes enter ONLY through cshare, which is what makes this a MODULATING chain rather than a joint model. The exchanged quantity is the SHARE, already averaged over the open occupancy, and not the mean open occupancy itself: e/(e+k) is convex in k, so rebuilding the share from a mean k would bias the closed service rate downwards by Jensen's inequality, and the closed throughput with it.

The block of one background class is State.spaceClosedSinglePublic(int, int), the lattice primitive the CTMC solver enumerates a closed population over, and the joint space is their cartesian product in class-major order. Only the SUPPORT differs: the columns are the class's own stations rather than every station. Keeping the reference primitive is what stops the enumeration, the size counter in mam_bgchain_states and the CTMC solver from drifting apart.

See Also:
  • Method Details

    • mam_bgchain_ctmc

      public static Mam_bgchain_ctmc.Result mam_bgchain_ctmc(int[] Nb, double[][] STb, List<Matrix> Pb, SchedStrategy[] sched, double[] nservers, double[][] cshare, boolean[][] supp, SolverOptions options)
      Builds and solves the background chain.
      Parameters:
      Nb - population of each background class, length B in {1,2}
      STb - STb[i][b], mean service time per station per background class
      Pb - row-stochastic (Mc x Mc) routing matrix per background class
      sched - discipline of each station of the chain's support
      nservers - servers of each station of the chain's support
      cshare - cshare[i][e]: mean number of servers of station i that its e closed jobs hold once the open work has taken its share
      supp - supp[i][b]: station i is on the route of background class b. NOT an optimization -- a chain that never visits a station cannot hold jobs there, and enumerating the union of every chain's stations puts probability on unreachable configurations that also ABSORB, because the chain's routing matrix has a zero row at an unvisited station which row-normalizes to a self-loop. The generator turns reducible and population conservation silently fails
      options - solver options; reads config.bgstates_max
      Returns:
      the solved chain