![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The running per-(station, class) integrals and tallies. More...
#include <line/solvers/ldes/ldes_stats.h>
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 > > | held |
| Callers parked on their server awaiting a synchronous REPLY (sn.syncreply), per (station, class). | |
| 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. | |
The running per-(station, class) integrals and tallies.
Definition at line 46 of file ldes_stats.h.
|
inline |
|
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 91 of file ldes_stats.h.
References busy, busy_scale, and update_busy().
|
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 78 of file ldes_stats.h.
References busy, busy_scale, last_busy, and tot_busy.
Referenced by set_busy_scale().
|
inline |
| 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 129 of file ldes_stats.h.
Referenced by Accum().
| std::vector<std::vector<double> > line::ldes::engine::Accum::busy |
Definition at line 107 of file ldes_stats.h.
Referenced by Accum(), set_busy_scale(), and update_busy().
| 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 120 of file ldes_stats.h.
Referenced by Accum(), set_busy_scale(), and update_busy().
| std::vector<std::vector<double> > line::ldes::engine::Accum::completed |
Definition at line 121 of file ldes_stats.h.
Referenced by Accum(), line::ldes::engine::Observations::collect(), and line::ldes::engine::Convergence::finalize_batch().
| std::vector<std::vector<double> > line::ldes::engine::Accum::held |
Callers parked on their server awaiting a synchronous REPLY (sn.syncreply), per (station, class).
They are counted in the QLen INTEGRAL, as the reference counts currentBlockedServers in Solver_ssj.updateQueueStats, but kept OUT of qlen, which every decision reads: capacity, load-dependent rates, JSQ and setup all use currentQueueLength there, which excludes them. Written only after update_qlen, like qlen.
Definition at line 106 of file ldes_stats.h.
Referenced by Accum(), and update_qlen().
| 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 137 of file ldes_stats.h.
Referenced by Accum(), and line::ldes::engine::Observations::collect().
| std::vector<std::vector<double> > line::ldes::engine::Accum::last_busy |
Definition at line 109 of file ldes_stats.h.
Referenced by Accum(), and update_busy().
| std::vector<std::vector<double> > line::ldes::engine::Accum::last_qlen |
Definition at line 109 of file ldes_stats.h.
Referenced by Accum(), and update_qlen().
| std::vector<std::vector<double> > line::ldes::engine::Accum::qlen |
Definition at line 97 of file ldes_stats.h.
Referenced by Accum(), line::ldes::engine::Observations::collect(), and update_qlen().
| std::vector<std::vector<double> > line::ldes::engine::Accum::resp_cnt |
Definition at line 121 of file ldes_stats.h.
Referenced by Accum(), and line::ldes::engine::Convergence::finalize_batch().
| std::vector<std::vector<double> > line::ldes::engine::Accum::resp_sum |
Definition at line 121 of file ldes_stats.h.
Referenced by Accum(), and line::ldes::engine::Convergence::finalize_batch().
| std::vector<std::vector<double> > line::ldes::engine::Accum::tot_busy |
Definition at line 108 of file ldes_stats.h.
Referenced by Accum(), line::ldes::engine::Observations::collect(), line::ldes::engine::Convergence::finalize_batch(), and update_busy().
| std::vector<std::vector<double> > line::ldes::engine::Accum::tot_qlen |
Definition at line 108 of file ldes_stats.h.
Referenced by Accum(), line::ldes::engine::Observations::collect(), line::ldes::engine::Convergence::finalize_batch(), and update_qlen().
| std::vector<double> line::ldes::engine::Accum::util_peak |
Definition at line 120 of file ldes_stats.h.
Referenced by Accum(), and line::ldes::engine::Convergence::finalize_batch().