![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The QRF load-dependent rate scaling alpha(i,n), derived from an sn. More...
#include <algorithm>#include <cmath>#include <cstddef>#include <limits>#include <sstream>#include <string>#include <vector>#include "line/lang/distribution.h"#include "line/lang/qn/network_struct.h"#include "line/num/number.h"Go to the source code of this file.
Classes | |
| struct | line::sn::QrfAlpha |
| The scaling, the utilization normalizer, and why they may not exist. More... | |
Namespaces | |
| namespace | line |
| namespace | line::sn |
Functions | |
| template<class T> | |
| QrfAlpha | line::sn::sn_to_qrf_alpha (const qn::NetworkStruct< T > &L) |
| ld stays TRUE through a refusal: the model IS load dependent, and the caller has to tell "no arm serves this" from "the arm you asked for does
not". | |
The QRF load-dependent rate scaling alpha(i,n), derived from an sn.
Port of matlab/src/api/sn/sn_to_qrf_alpha.m.
The load-dependent QRF arms carry a scaling alpha(i,n) that multiplies EVERY rate out of station i while it holds n jobs, completions mu and background phase changes v alike – see the q construction in qrf_noblo_mmi_ld. That is exactly the rate law of
an infinite server alpha(i,n) = n a c-server station alpha(i,n) = min(n, c_i) limited load dependence alpha(i,n) = sn.lldscaling(i,n)
so the three COMPOSE BY MULTIPLICATION and not one of them is an approximation: the relaxed chain is the model's own, and the QRF answer keeps whatever status it had on a single-server model.
WHERE IT STOPS BEING THE MODEL'S OWN IS PHASE-TYPE SERVICE AT A STATION THAT SERVES SEVERAL JOBS AT ONCE. The QRF local state carries ONE phase per station, a faithful description of one job in service and of nothing else: min(n,c) jobs served in parallel each advance through a phase of their own, and no scaling of a single-phase process reproduces that joint motion. A multiserver or delay station must therefore be exponential – scaling a PH server by min(n,c) would answer a DIFFERENT chain, so the relaxation would stop containing the model's stationary distribution and the number would bound nothing. Limited load dependence at a SINGLE server is exempt and admits PH freely: one job is in service whatever the rate.
THE UTILIZATION NORMALIZER IS THE DECLARED PEAK, NOT max(alpha). LINE reports U = T*S/peak at every station whose rate scales with the population, one convention shared by multiserver, lld and class dependence. peak is therefore nservers(i) times the largest lld scaling the model can REACH, and not max(alpha(i,:)): at c = 3 with N = 2 the reachable alpha peaks at 2 while the station still has three servers, and normalizing by 2 would report a utilization the model never attains. Infinite at a delay, where LINE reports U = QN instead.
Definition in file sn_to_qrf_alpha.h.