![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Two-term heavy-usage asymptotic approximation for a closed queueing network with one infinite-server (think) station and one discriminatory processor-sharing (DPS) station. More...
#include <cstddef>#include <vector>#include "line/api/npfqn/npfqn_types.h"#include "line/num/number.h"#include "line/util/error.h"Go to the source code of this file.
Classes | |
| struct | line::npfqn::DpsMorrisonResult< T > |
| Mean queue lengths, sojourn times and throughputs, with Morrison's intermediate constants. More... | |
Namespaces | |
| namespace | line |
| namespace | line::npfqn |
Functions | |
| template<class T> | |
| DpsMorrisonResult< T > | line::npfqn::npfqn_dps_morrison (const std::vector< T > &N, const std::vector< T > &Z, const std::vector< T > &S, const std::vector< T > &w) |
| Evaluates Morrison's two-term approximation. | |
Two-term heavy-usage asymptotic approximation for a closed queueing network with one infinite-server (think) station and one discriminatory processor-sharing (DPS) station.
Templated port of matlab/src/api/npfqn/npfqn_dps_morrison.m, cross-checked against jar/src/main/java/jline/api/npfqn/Npfqn_dps_morrison.java (identical term for term, including the sigma solve and the W_m recursion).
Reference: J.A. Morrison, "Asymptotic analysis of a large closed queueing network with discriminatory processor sharing", Queueing Systems 9 (1991) 191-214.
The network is NOT product-form, so nothing here computes a normalizing constant: the method expands the GENERATING FUNCTION of the balance equations. The substitution P(n) = <w,n> f(n) clears the DPS denominator and turns the balance recursion into a linear PDE with affine coefficients (eq. 2.5); rescaling z = 1 - xi/sqrt(N) and expanding in powers of N^(-1/2) leaves a degenerate leading operator whose kernel is the functions of the similarity variable eta, and the solvability condition along its characteristic gives an ODE for the amplitude (eq. 2.20). RESULT 1 (eq. 4.11) and RESULT 2 (eq. 4.17) are the two-term approximations returned here.
Scaling. Morrison writes K_j = N b_j and lambda_j = N r_j g_j with usage rho = sum_j b_j/g_j = 1 - a/sqrt(N). N is bookkeeping only and the approximation is invariant to it, so this routine fixes N = 1: b = N_pop, g = Z/S, r = 1/Z, a = 1 - rho. Accuracy is governed by the PHYSICAL regime – large populations with rho near 1. rho > 1 is admissible, being the saturated regime of appendix A.
Arithmetic. The W_m of eq. (3.23) need an erfc and an exp, so this requires transcendental arithmetic and cannot be instantiated at T = Rational.
Definition in file npfqn_dps_morrison.h.