Class FluidRateMultiplier
Mirrors MATLAB solver_fluid_ratemult.m. The multiplier is a
trajectory m(t) of length numEvents: event e of the
closing machinery is scaled at time t by m(t)[e], evaluated
by clamped piecewise-linear interpolation (FluidInterp). The closing
rate is rate = rateBase .* theta(x) with rateBase linear in
the station-class service/arrival rate, so every time-varying source below
reduces to such a per-event multiplicative factor.
Three independent, composable channels are honoured, all read from
SolverOptions.Config under the same names as the MATLAB options:
rate_traj_tgrid/rate_traj_mmat: a caller-supplied event multiplier matrix (numEvents x ngrid), used by the coupled LN layer transient.nhpp_sched: non-homogeneous Poisson source intensities. The nominal (time-average) rate baked intorateBasefor the station-class ismu(i,c)(0); the multiplier isgetRateAt(t)/nominal, applied to every event sourced at that station and class.rate_sched: explicit per-(station,class) rate trajectories, reusing the same station-class to event expansion as the NHPP path.
build(int, boolean[][], jline.util.matrix.Matrix, jline.util.matrix.Matrix, java.util.Map<jline.lang.nodes.Station, java.util.Map<jline.lang.JobClass, jline.util.matrix.Matrix>>, java.util.List<jline.lang.nodes.Station>, java.util.List<jline.lang.JobClass>, jline.util.matrix.Matrix, jline.solvers.SolverOptions) returns null when no channel is configured, so the caller
keeps the legacy autonomous closure numerically unchanged.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAn NHPP source intensity attached to a (station, class) of the sn index space.static classAn explicit rate trajectory attached to a (station, class) of the sn index space. -
Method Summary
Modifier and TypeMethodDescriptionstatic FluidRateMultiplierbuild(int numEvents, boolean[][] enabled, Matrix qIndices, Matrix kic, Map<Station, Map<JobClass, Matrix>> mu, List<Station> stations, List<JobClass> jobclasses, Matrix eventIdx, SolverOptions options) Builds the multiplier for the closing machinery described by the given event mapping, or returns null when no time-varying channel is set.double[]evalAt(double t) The per-event multiplier in force at timet.double[]The time grid of the multiplier trajectory.
-
Method Details
-
build
public static FluidRateMultiplier build(int numEvents, boolean[][] enabled, Matrix qIndices, Matrix kic, Map<Station, Map<JobClass, Matrix>> mu, List<Station> stations, List<JobClass> jobclasses, Matrix eventIdx, SolverOptions options) Builds the multiplier for the closing machinery described by the given event mapping, or returns null when no time-varying channel is set.- Parameters:
numEvents- number of events of the (possibly immediate-eliminated) closing ODEenabled- per-(station,class) enabled flagsqIndices- per-(station,class) starting state indexkic- per-(station,class) phase countmu- per-(station,class) phase rate vectorsstations- station list of the sn station spacejobclasses- job class list of the sn class spaceeventIdx- per-event state index (numEvents x 1)options- solver options carrying the config channels and timespan
-
evalAt
public double[] evalAt(double t) The per-event multiplier in force at timet. -
getTimeGrid
public double[] getTimeGrid()The time grid of the multiplier trajectory.
-