Class FluidStateRateMultiplier
The matrix method integrates dx/dt = W' theta(x) + ALambda, where
the drift out of an ODE state is linear in the service rate of the
(station, class) that owns it. A time-varying rate rate(t) for a
(station, class) is therefore exactly a multiplicative factor
m(t) = rate(t)/nominal applied to that state's entry of
theta, and to its nominal-rate throughput contribution. This is the
state-space counterpart of the per-event factor the closing ODE applies
through FluidRateMultiplier (MATLAB solver_fluid_ratemult),
and it lets the matrix method honour options.config.rate_sched
without switching solution method.
Only the explicit rate_sched channel is expanded here. A schedule
on an EXT (Source) station modulates an open arrival stream, which enters the
matrix-method ODE through the constant ALambda inflow rather than
through theta; such an entry is rejected with a clear error pointing
at the closing ODE, which carries the arrival channel (and the NHPP path).
-
Method Summary
Modifier and TypeMethodDescriptionstatic FluidStateRateMultiplierbuild(SolverOptions options, List<Integer> keep, int[] stationOfStateFull, int[] classOfStateFull, NetworkStruct sn) Builds the multiplier for the kept ODE states, or returns null when no schedule is configured, so the caller keeps the legacy autonomous ODE numerically unchanged.double[]multAt(double t) Per-state multiplier at timet, by clamped linear interpolation.
-
Method Details
-
build
public static FluidStateRateMultiplier build(SolverOptions options, List<Integer> keep, int[] stationOfStateFull, int[] classOfStateFull, NetworkStruct sn) Builds the multiplier for the kept ODE states, or returns null when no schedule is configured, so the caller keeps the legacy autonomous ODE numerically unchanged.- Parameters:
options- solver options carryingconfig.rate_schedkeep- indices of the retained states in the full state orderstationOfStateFull- station owning each full-order stateclassOfStateFull- class owning each full-order statesn- network struct (for the nominal rates and the EXT check)
-
multAt
public double[] multAt(double t) Per-state multiplier at timet, by clamped linear interpolation.
-