LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
pfqn_qsa.h File Reference

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"
Include dependency graph for pfqn_qsa.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)

Detailed Description

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.