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

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

Detailed Description

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.