Class DdppAnalyzer
- All Implemented Interfaces:
FluidAnalyzer
options.method="ddpp" (alias "fld.ddpp").
The model is read as a density-dependent population process whose size N is the total closed population: the state is the job count of every (station, class, phase) coordinate and a jump moving a job from a to b has rate theta_a(x)*W(a,b), with theta_a = x_a*min(1, c_i/X_i) (x_a at an infinite server). The family scales every population and finite server count together, so the fixed point x* and the correction V are N-independent in job counts. Gast and Van Houdt (POMACS 1(2), 2017) give E[X] = x* + V + O(1/N), with J*W + W*J' + Q = 0 and V = -J^{-1}*(1/2)*H:W, both solved on an orthonormal basis of the jump span. The rates are refined to the same order, so the corrected throughputs satisfy flow balance exactly.
The correction is nonzero only at a saturated MULTICLASS PS/FCFS share: a
single-class network gives V = 0 (piecewise-linear drift for exponential
service, vanishing Hessian contraction for phase-type service, so the result
is insensitive beyond the mean). MATLAB twin: solver_fluid_ddpp.m and
fluid_ddpp_admits.m; the fixed point is found by the same
pseudo-transient continuation, so the codebases agree.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classA refusal: the identifier and the message, or null when admitted. -
Field Summary
FieldsModifier and TypeFieldDescriptiondoubleTotal closed population N.Fluid metrics at x*, for comparison with the refined result.Fluid metrics at x*, for comparison with the refined result.Fluid metrics at x*, for comparison with the refined result.double[]The O(1/N) correction V in job counts.double[]The fluid fixed point x* (before the correction). -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic DdppAnalyzer.Refusaladmits(NetworkStruct sn, SolverOptions options) The model class of 'ddpp', decided statically.voidanalyze(NetworkStruct sn, SolverOptions options, SolverResult result) static DdppAnalyzer.Refusalhyperbolic(NetworkStruct sn, SolverOptions options) Does the fluid fixed point admit the 1/N expansion?admits(jline.lang.NetworkStruct, jline.solvers.SolverOptions)is static, but smoothness and exponential stability of the fixed point are a property of the numbers: a closed Delay -> FCFS repairman with N = 3, think rate 1 and service rate 2 puts exactly one job at the single server, on the kink of min(1, c/X).
-
Field Details
-
xFluid
public double[] xFluidThe fluid fixed point x* (before the correction). -
V
public double[] VThe O(1/N) correction V in job counts. -
QNfluid
Fluid metrics at x*, for comparison with the refined result. -
UNfluid
Fluid metrics at x*, for comparison with the refined result. -
TNfluid
Fluid metrics at x*, for comparison with the refined result. -
N
public double NTotal closed population N.
-
-
Constructor Details
-
DdppAnalyzer
public DdppAnalyzer()
-
-
Method Details
-
admits
The model class of 'ddpp', decided statically. Mirrorsfluid_ddpp_admits.m: closed classes only, INF/PS/FCFS stations (FCFS with exponential service at one rate for every class), renewal PH service, steady state, no load dependence, and the moment_maxstate cap.- Returns:
- null when admitted, otherwise the refusal
-
hyperbolic
Does the fluid fixed point admit the 1/N expansion?admits(jline.lang.NetworkStruct, jline.solvers.SolverOptions)is static, but smoothness and exponential stability of the fixed point are a property of the numbers: a closed Delay -> FCFS repairman with N = 3, think rate 1 and service rate 2 puts exactly one job at the single server, on the kink of min(1, c/X). The support gate asks this after the static predicate, so findSolver does not offer a run that would refuse. Runs the analysis up to its hyperbolicity checks. Call it only onceadmits(jline.lang.NetworkStruct, jline.solvers.SolverOptions)has accepted the model. MATLAB twin:fluid_ddpp_hyperbolic.m.- Returns:
- null when the fixed point is hyperbolic, otherwise the refusal
-
analyze
- Specified by:
analyzein interfaceFluidAnalyzer
-
getXVecIt
- Specified by:
getXVecItin interfaceFluidAnalyzer
-