Class FluidStateRateMultiplier

java.lang.Object
jline.solvers.fluid.analyzers.FluidStateRateMultiplier

public class FluidStateRateMultiplier extends Object
Time-varying per-state rate multiplier of the matrix-method fluid ODE.

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 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 carrying config.rate_sched
      keep - indices of the retained states in the full state order
      stationOfStateFull - station owning each full-order state
      classOfStateFull - class owning each full-order state
      sn - network struct (for the nominal rates and the EXT check)
    • multAt

      public double[] multAt(double t)
      Per-state multiplier at time t, by clamped linear interpolation.