Class DiffusionAnalyzer
- All Implemented Interfaces:
FluidAnalyzer
Euler-Maruyama simulation of the diffusion limit. Every routing arc a -> b carries the flux phi_a(x) P(a,b), with phi = mu*x at an INF station and mu*x/max(1,n_i) at a single server (n_i the station total), plus its own Brownian noise sqrt(phi_a P(a,b) dt) Z moved from a to b, so each step conserves the chain populations exactly. A transfer that would drive a coordinate below zero is scaled down until it lands there, which keeps the population exact without re-projecting the state.
QN is the time average over the second half of the trajectory (the first is
discarded as warm-up). TN is X_c * V(i,r) per chain, with X_c the mean departure
rate E[phi]/V at the chain's bottleneck (largest V/mu, single servers before INF
stations), so the throughputs are flow-balanced by construction; UN is TN/mu at a
single server and QN at an INF station. options.timestep is the step
(default 0.01); a finite options.timespan end sets the horizon, otherwise
100000 steps are taken. options.iter_max is the closing-iteration count
every FLD run carries a default for, so it is not read.
Supported models: closed multiclass networks, scheduling PS / FCFS / INF / SIRO, single-server or infinite-server stations only.
IT IS A STOCHASTIC METHOD. Like SSA and LDES it draws from a seeded stream,
so a run is reproducible for a fixed options.seed but agrees with MATLAB,
Python and C++ in distribution only.
Port of matlab/src/solvers/FLD/solver_fluid_diffusion.m.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidanalyze(NetworkStruct sn, SolverOptions options, SolverResult result)
-
Constructor Details
-
DiffusionAnalyzer
public DiffusionAnalyzer()
-
-
Method Details
-
analyze
- Specified by:
analyzein interfaceFluidAnalyzer
-
getXVecIt
- Specified by:
getXVecItin interfaceFluidAnalyzer
-