![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Queue-Shift Approximation (QSA) for closed product-form networks. More...
#include <cmath>#include <cstddef>#include <vector>#include "line/api/pfqn/pfqn_bs.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/lu.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::pfqn |
Functions | |
| template<class T> | |
| AmvaResult< T > | line::pfqn::pfqn_qsa (const Matrix< T > &L, const std::vector< T > &N, const std::vector< T > &Z, const std::vector< AmvaSched > &type, double tol=1e-10, std::size_t maxiter=100, int levels=3) |
| Queue-Shift Approximation (QSA) for closed product-form networks. | |
| template<class T> | |
| AmvaResult< T > | line::pfqn::pfqn_qsa (const Matrix< T > &L, const std::vector< T > &N, const std::vector< T > &Z) |
| template<class T> | |
| AmvaResult< T > | line::pfqn::pfqn_qsa (const Matrix< T > &L, const std::vector< T > &N) |
Queue-Shift Approximation (QSA) for closed product-form networks.
Templated port of matlab/src/api/pfqn/pfqn_qsa.m. Schweitzer, Serazzi and Broglia, "A Queue-Shift Approximation Technique for Product-Form Queueing Networks", Tools'98, LNCS 1469, pp. 267-279.
Where Linearizer extrapolates the fractional deviation D_rit, QSA extrapolates the ABSOLUTE shift of the aggregate queue length, Y_ri(K) = 1 + Q_i(K - e_r) - Q_i(K) i in QC so the unknowns are one per station rather than one per station-class. The core equation (13a), Q_i(K) = sum_r K_r L_ri [Q_i(K) + Y_ri(K)] / C_r(K) is imposed at K, at every K - e_s and, in the three-level variant of eq. (16), at every K - e_s - e_t through the affine extrapolation of eq. (15).
The quintuple (16) is solved as ONE system by damped Newton, as Sect. 4 of the paper prescribes. The decomposed successive substitution that works for Linearizer must NOT be used here: it drifts to the degenerate root in which the bottleneck absorbs the whole population, and does so even when seeded at the exact solution, because the instability is a positive real eigenvalue rather than an oscillation that under-relaxation could damp.
Iterates to a residual tolerance, so exact arithmetic buys nothing: the static_assert records that.
Definition in file pfqn_qsa.h.