Class DiffusionAnalyzer

java.lang.Object
jline.solvers.fluid.analyzers.DiffusionAnalyzer
All Implemented Interfaces:
FluidAnalyzer

public class DiffusionAnalyzer extends Object implements FluidAnalyzer
Diffusion approximation for closed multiclass BCMP networks.

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.