![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
CoMoM for the MULTISERVER repairman model: one queueing station with S servers (optionally replicated m times), plus a delay. More...
#include <cstddef>#include <vector>#include "line/api/pfqn/pfqn_ca.h"#include "line/api/pfqn/pfqn_mu_ms.h"#include "line/api/pfqn/pfqn_nc_sanitize.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::pfqn::ComomRmResult< T > |
Namespaces | |
| namespace | line |
| namespace | line::pfqn |
Functions | |
| template<class T> | |
| ComomRmResult< T > | line::pfqn::pfqn_comomrm_ms (const Matrix< T > &L, const std::vector< int > &N, const Matrix< T > &Z, int m, int S) |
| CoMoM for the MULTISERVER repairman model: one queueing station with S servers (optionally replicated m times), plus a delay. | |
| template<class T> | |
| ComomRmResult< T > | line::pfqn::pfqn_comomrm_ms (const Matrix< T > &L, const std::vector< int > &N, const Matrix< T > &Z, int S) |
| Overload with the single-replica default. | |
CoMoM for the MULTISERVER repairman model: one queueing station with S servers (optionally replicated m times), plus a delay.
Templated port of matlab/src/api/pfqn/pfqn_comomrm_ms.m, and the home of the bidiagonal transfer-matrix recursion shared with pfqn_comomrm_ld.
The basis is the vector of normalizing constants indexed by the queue occupancy, h_k = G(k jobs at the queue), and adding one class-r job applies the bidiagonal transfer matrix
T_r = Z_r I + superdiag_k ( L_r (Nt+1-k) / mu(Nt+1-k) ), h <- T_r h / n_r,
once per job, for n_r = 1, ..., N_r. G(N) is the sum of the resulting vector and the queue-length marginal is its reversal, normalized.
SCALING. The reference renormalizes h to unit 1-norm after every step and accumulates the discarded factors in log space, because in IEEE double the unscaled vector underflows. That renormalization is a pure change of representation: the discarded factors multiply back to exactly the sum of the unscaled vector, so this port drops it and returns
G = Gremaind * sum_k h_k
with h_k the UNSCALED basis. In an exact field the two agree identically; in double they agree to rounding. The marginal is unaffected either way, since it is a ratio within one vector.
Arithmetic: EXACT-CAPABLE. Only additions, multiplications and divisions in the field of the inputs. The multiserver rate lattice comes from pfqn_mu_ms (m > 1) or is min(k, S) (m = 1), both exact.
Definition in file pfqn_comomrm_ms.h.