LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
line::ldes::engine::Accum Struct Reference

The running per-(station, class) integrals and tallies. More...

#include <line/solvers/ldes/ldes_stats.h>

Collaboration diagram for line::ldes::engine::Accum:

Public Member Functions

 Accum (std::size_t M, std::size_t K)
void update_qlen (std::size_t i, std::size_t r, double now)
 Advance the queue-length integral of (i,r) to now.
void update_busy (std::size_t i, std::size_t r, double now)
 Advance the busy-server integral of (i,r) to now.
void set_busy_scale (std::size_t i, double v, double now)
 Install the load-dependent speed station i runs at from now on.

Public Attributes

std::vector< std::vector< double > > qlen
std::vector< std::vector< double > > busy
std::vector< std::vector< double > > tot_qlen
std::vector< std::vector< double > > tot_busy
std::vector< std::vector< double > > last_qlen
std::vector< std::vector< double > > last_busy
std::vector< double > busy_scale
 The speed each station is running at right now (load dependence only), and the peak capacity that normalizes its utilization, max(c, max(alpha)).
std::vector< double > util_peak
std::vector< std::vector< double > > resp_sum
std::vector< std::vector< double > > resp_cnt
std::vector< std::vector< double > > completed
std::vector< std::vector< double > > arrived
 Jobs that ARRIVED at each (station, class), which is not what completed counts: the reference reports AN as arrivedCustomers / simTime, and the two differ by whatever is still in the station at the end and by anything dropped, balked or reneged.
std::vector< std::vector< double > > join_dropped
 Siblings a QUORUM Join discarded, per (station, class): a sibling that reaches the Join after its parent already fired lost the race and is thrown away.

Detailed Description

The running per-(station, class) integrals and tallies.

Definition at line 46 of file ldes_stats.h.

Constructor & Destructor Documentation

◆ Accum()

line::ldes::engine::Accum::Accum ( std::size_t M,
std::size_t K )
inline

Member Function Documentation

◆ set_busy_scale()

void line::ldes::engine::Accum::set_busy_scale ( std::size_t i,
double v,
double now )
inline

Install the load-dependent speed station i runs at from now on.

Flushes every class FIRST, so the interval that just ended is credited at the scale that was actually in force over it. The engine calls this after the population is written, from the same chokepoint that re-times the departures.

Definition at line 90 of file ldes_stats.h.

References busy, busy_scale, and update_busy().

◆ update_busy()

void line::ldes::engine::Accum::update_busy ( std::size_t i,
std::size_t r,
double now )
inline

Advance the busy-server integral of (i,r) to now.

Call BEFORE writing busy.

The integrand is the WORK being delivered, busy * busy_scale, not the head count: a load-dependent server running alpha(n) times faster does the same work in less time, so plain busy TIME reads it as no busier than one at its nominal rate. busy_scale is 1 unless the station is load dependent, so this is the identity everywhere else.

Definition at line 77 of file ldes_stats.h.

References busy, busy_scale, last_busy, and tot_busy.

Referenced by set_busy_scale().

◆ update_qlen()

void line::ldes::engine::Accum::update_qlen ( std::size_t i,
std::size_t r,
double now )
inline

Advance the queue-length integral of (i,r) to now.

Call BEFORE writing qlen.

Definition at line 63 of file ldes_stats.h.

References last_qlen, qlen, and tot_qlen.

Member Data Documentation

◆ arrived

std::vector<std::vector<double> > line::ldes::engine::Accum::arrived

Jobs that ARRIVED at each (station, class), which is not what completed counts: the reference reports AN as arrivedCustomers / simTime, and the two differ by whatever is still in the station at the end and by anything dropped, balked or reneged.

Reporting completions as the arrival rate would hide exactly the loss those features exist to measure.

Definition at line 118 of file ldes_stats.h.

Referenced by Accum().

◆ busy

std::vector<std::vector<double> > line::ldes::engine::Accum::busy

Definition at line 96 of file ldes_stats.h.

Referenced by Accum(), set_busy_scale(), and update_busy().

◆ busy_scale

std::vector<double> line::ldes::engine::Accum::busy_scale

The speed each station is running at right now (load dependence only), and the peak capacity that normalizes its utilization, max(c, max(alpha)).

util_peak is CTMC's own ceff, which is what makes LDES report the same utilization as the analytic solvers on a load-dependent station. Both are 1 and c respectively when the station is not load dependent, leaving every other model's numbers untouched.

Definition at line 109 of file ldes_stats.h.

Referenced by Accum(), set_busy_scale(), and update_busy().

◆ completed

std::vector<std::vector<double> > line::ldes::engine::Accum::completed

◆ join_dropped

std::vector<std::vector<double> > line::ldes::engine::Accum::join_dropped

Siblings a QUORUM Join discarded, per (station, class): a sibling that reaches the Join after its parent already fired lost the race and is thrown away.

It is a completion of nothing, so it belongs neither in completed nor in arrived, and it is what a Join row's loss rate is. Cumulative, and differenced against the truncation point like completed.

Definition at line 126 of file ldes_stats.h.

Referenced by Accum(), and line::ldes::engine::Observations::collect().

◆ last_busy

std::vector<std::vector<double> > line::ldes::engine::Accum::last_busy

Definition at line 98 of file ldes_stats.h.

Referenced by Accum(), and update_busy().

◆ last_qlen

std::vector<std::vector<double> > line::ldes::engine::Accum::last_qlen

Definition at line 98 of file ldes_stats.h.

Referenced by Accum(), and update_qlen().

◆ qlen

std::vector<std::vector<double> > line::ldes::engine::Accum::qlen

Definition at line 96 of file ldes_stats.h.

Referenced by Accum(), line::ldes::engine::Observations::collect(), and update_qlen().

◆ resp_cnt

std::vector<std::vector<double> > line::ldes::engine::Accum::resp_cnt

Definition at line 110 of file ldes_stats.h.

Referenced by Accum(), and line::ldes::engine::Convergence::finalize_batch().

◆ resp_sum

std::vector<std::vector<double> > line::ldes::engine::Accum::resp_sum

Definition at line 110 of file ldes_stats.h.

Referenced by Accum(), and line::ldes::engine::Convergence::finalize_batch().

◆ tot_busy

std::vector<std::vector<double> > line::ldes::engine::Accum::tot_busy

◆ tot_qlen

std::vector<std::vector<double> > line::ldes::engine::Accum::tot_qlen

◆ util_peak

std::vector<double> line::ldes::engine::Accum::util_peak

Definition at line 109 of file ldes_stats.h.

Referenced by Accum(), and line::ldes::engine::Convergence::finalize_batch().


The documentation for this struct was generated from the following file: