![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
One variate generator, holding whatever state its family needs. More...
#include <line/solvers/ldes/ldes_sampler.h>
Public Member Functions | |
| Sampler () | |
| template<class T> | |
| Sampler (const lang::Distrib< T > &d, const std::string &where) | |
| Build the generator of d; the (station, class) names are for diagnostics. | |
| bool | disabled () const |
| lang::ProcessType | type () const |
| double | mean () const |
| double | next_at (Rng &g, double from) |
| One variate from a TIME-INHOMOGENEOUS process, given the instant it starts at. | |
| bool | time_varying () const |
| double | next (Rng &g) |
| One variate. | |
| double | resolve_zero_atom (double v) const |
| The reference's resolveZeroAtom: the discrete laws supported on {0,1,...} can return a zero-length interval, and a zero-length service is an infinite rate no estimator carries. | |
| int | phase () const |
| The phase the process is in, for a caller that must carry it across a preemption or across successive executions of an LQN entry. | |
| int | last_mark () const |
| The 1-based mark of the interval last returned by next/next_at, or 0 when this process carries none. | |
| int | last_batch () const |
| How many jobs the epoch last returned by next/next_at releases, or 1 when this process carries no batch axis. | |
| bool | marked () const |
| bool | batched () const |
| True when the process carries its OWN batch sizes: a BMAP or a BMMAPt. | |
| void | set_phase (int p) |
One variate generator, holding whatever state its family needs.
Deliberately a tagged struct rather than a class hierarchy: the sampler is called once per event on the engine's hot path, and a virtual dispatch there costs more than the switch. The tag IS ProcessType, so a family added to the language shows up here as a missing case rather than as silence.
Definition at line 116 of file ldes_sampler.h.
|
inline |
Definition at line 118 of file ldes_sampler.h.
|
inline |
Build the generator of d; the (station, class) names are for diagnostics.
Definition at line 122 of file ldes_sampler.h.
References line::lang::APH, line::lang::BERNOULLI, line::lang::BINOMIAL, line::lang::BMAP, line::lang::BMMAPT, line::lang::COX2, line::lang::COXIAN, line::lang::DET, line::lang::DISABLED, line::lang::DMAP, line::lang::DUNIFORM, line::lang::ERLANG, line::lang::EXP, line::lang::GAMMA, line::lang::GEOMETRIC, line::lang::HYPEREXP, line::lang::IMMEDIATE, line::lang::GlobalConstants::Immediate, line::InputError::InputError(), line::lang::LOGNORMAL, line::lang::MAP, line::lang::MAPT, line::lang::ME, line::lang::Distrib< T >::mean, line::lang::MMAP, line::lang::MMAPT, line::lang::MMPP2, line::lang::MPH, line::lang::MPHT, line::lang::NHPP, line::lang::PARETO, line::lang::PH, line::lang::PHT, line::lang::POISSON, line::lang::RAP, line::lang::REPLAYER, line::lang::Distrib< T >::scv, line::lang::Distrib< T >::trace, line::lang::Distrib< T >::type, line::lang::UNIFORM, line::UnsupportedError::UnsupportedError(), and line::lang::WEIBULL.
|
inline |
True when the process carries its OWN batch sizes: a BMAP or a BMMAPt.
Definition at line 411 of file ldes_sampler.h.
|
inline |
Definition at line 269 of file ldes_sampler.h.
References line::lang::DISABLED.
|
inline |
How many jobs the epoch last returned by next/next_at releases, or 1 when this process carries no batch axis.
At a Source the engine reads it to release that many jobs at one instant, exactly as Solver_ssj consumes arrivalBatchSize; at a bulk server it is how many completions the firing clears.
Definition at line 408 of file ldes_sampler.h.
|
inline |
The 1-based mark of the interval last returned by next/next_at, or 0 when this process carries none.
At a Source the engine reads it to pick the class of the arriving job, exactly as Solver_ssj consumes arrivalPendingMark.
Definition at line 400 of file ldes_sampler.h.
|
inline |
Definition at line 409 of file ldes_sampler.h.
|
inline |
Definition at line 271 of file ldes_sampler.h.
|
inline |
One variate.
Advances whatever phase the family carries.
EVERY RENEWAL FAMILY BUT THE ERLANG COSTS EXACTLY ONE UNIFORM off the MRG stream, which is not an optimization but the reference's behaviour: SSJ's instance generators invert, and a family that drew twice would shift every later event in the run. The quantiles live in ldes_ssj_variates.h and are pinned there against SSJ's own output. The Erlang is the exception, and deliberately so: it costs k uniforms in both engines because the Gamma inversion SSJ used is not reproducible across JVM releases.
Definition at line 301 of file ldes_sampler.h.
References resolve_zero_atom().
Referenced by next_at().
|
inline |
One variate from a TIME-INHOMOGENEOUS process, given the instant it starts at.
The families whose parameters depend on absolute time cannot be sampled from a duration alone, so this overload takes from and every other family ignores it. The engine calls it wherever a duration is drawn; a homogeneous process is unaffected.
Definition at line 282 of file ldes_sampler.h.
References next().
|
inline |
The phase the process is in, for a caller that must carry it across a preemption or across successive executions of an LQN entry.
-1 when the family has no phase.
Definition at line 394 of file ldes_sampler.h.
|
inline |
The reference's resolveZeroAtom: the discrete laws supported on {0,1,...} can return a zero-length interval, and a zero-length service is an infinite rate no estimator carries.
Immediate is exactly what a zero-length interval denotes elsewhere in the engine, so the atom is served at that scale. Under SLOTTED mode 1/Immediate is not a lattice point, so slot_snap refuses the sample rather than inventing one, which is the refusal the reference raises in its own words.
Definition at line 312 of file ldes_sampler.h.
References line::lang::BERNOULLI, line::lang::BINOMIAL, line::lang::DUNIFORM, line::lang::GlobalConstants::Immediate, and line::lang::POISSON.
Referenced by next().
|
inline |
Definition at line 412 of file ldes_sampler.h.
|
inline |
Definition at line 287 of file ldes_sampler.h.
|
inline |
Definition at line 270 of file ldes_sampler.h.