![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Port of @@SolverNC/getCdfRespT.m, and of its two aliases getSjrnT and sjrnT. More...
#include <algorithm>#include <cmath>#include <cstddef>#include <string>#include <vector>#include "line/api/mam/map_cdf.h"#include "line/api/pfqn/pfqn_stdf.h"#include "line/api/pfqn/pfqn_stdf_heur.h"#include "line/lang/distribution.h"#include "line/lang/qn/network_struct.h"#include "line/solvers/nc/nc_types.h"#include "line/solvers/nc/sn_pf_params.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::nc::CdfRespTResult< T > |
| The response-time distributions, station by class. More... | |
Namespaces | |
| namespace | line |
| Conservation laws of a layered queueing network, enumerated from its structure. | |
| namespace | line::nc |
Functions | |
| template<class T> | |
| CdfRespTResult< T > | line::nc::solver_nc_cdf_respt (const qn::NetworkStruct< T > &sn, const NcSolverOptions &opt) |
| Port of @@SolverNC/getCdfRespT.m. | |
| template<class T> | |
| CdfRespTResult< T > | line::nc::solver_nc_sjrnt (const qn::NetworkStruct< T > &sn, const NcSolverOptions &opt) |
| Port of @@SolverNC/getSjrnT.m: an alias of getCdfRespT. | |
Port of @@SolverNC/getCdfRespT.m, and of its two aliases getSjrnT and sjrnT.
WHAT IT ADDS OVER THE AVERAGE TABLE. getAvg reports E[R]; this reports the whole law Pr[R <= t], which is what a percentile or a service-level target needs. The two are not interchangeable: a product-form response time is not exponential, so E[R] does not determine its tail.
TWO KINDS OF STATION, TWO DIFFERENT LAWS. At an FCFS queue the sojourn time is the tagged-job passage time through a closed network and comes from pfqn_stdf (exact) or pfqn_stdf_heur (the rd heuristic). At a delay station there is no queueing at all, so the sojourn time IS the service time and the law is the distribution's own CDF, taken through map_cdf. The reference computes both and returns them in one station-indexed table.
WHY THE TIME GRID IS WHAT IT IS. The reference builds logspace(log10 T - 2, log10 T + 1, 100), where T is sum(N) times the mean service time (averaged over the classes a station serves) at the slowest FCFS station, or a Delay's longest mean service time when that is longer. It is reproduced exactly, because the grid is part of the answer – the CDF is reported AT these points. The former logspace(0, 2 log10 T, 100) started at t = 1 whatever the scale, so a fast system was at CDF ~ 1 on its first point; for T < 1 it ran DOWN to T^2 and at T = 1 it collapsed to a hundred identical points. See _kb/06-solver-catalog.md (NC, getCdfRespT).
REFUSED, as the reference refuses it: a model with no FCFS station. MATLAB warns and returns an empty cell array, which reads as a completed analysis with no data; this throws instead.
ARITHMETIC. pfqn_stdf and map_cdf are transcendental, and the grid itself is a logspace, so a non-transcendental backend is refused by name.
Definition in file solver_nc_cdf.h.