Class Mam_bgchain_ctmc
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classSolved background chain. -
Method Summary
Modifier and TypeMethodDescriptionstatic Mam_bgchain_ctmc.Resultmam_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.
-
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 classPb- row-stochastic (Mc x Mc) routing matrix per background classsched- discipline of each station of the chain's supportnservers- servers of each station of the chain's supportcshare- cshare[i][e]: mean number of servers of station i that its e closed jobs hold once the open work has taken its sharesupp- 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 failsoptions- solver options; reads config.bgstates_max- Returns:
- the solved chain
-