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

Exact PH/M/c by Neuts' matrix-geometric method. More...

#include <cstddef>
#include <vector>
#include "line/api/qsys/qsys_types.h"
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/linalg.h"
#include "line/util/lu.h"
#include "line/util/matrix.h"
Include dependency graph for qsys_phmc.h:

Go to the source code of this file.

Classes

struct  line::qsys::PhMcResult< T >

Namespaces

namespace  line
namespace  line::qsys

Functions

template<class T>
PhMcResult< T > line::qsys::qsys_phmc (const std::vector< T > &alpha, const Matrix< T > &Tm, const T &mu, unsigned c, unsigned maxIter, const T &tol)
 Exact PH/M/c by Neuts' matrix-geometric method.
template<class T>
PhMcResult< T > line::qsys::qsys_phmc (const std::vector< T > &alpha, const Matrix< T > &Tm, const T &mu, unsigned c)
 qsys_phmc with the MATLAB defaults, 50000 iterations and tolerance 1e-14.

Detailed Description

Exact PH/M/c by Neuts' matrix-geometric method.

Templated port of matlab/src/api/qsys/qsys_phmc.m, cross-checked against jar/src/main/java/jline/api/qsys/Qsys_phmc.java.

The level is the number in system and the phase is the arrival PH phase. Above level c the QBD is level independent with

A0 = (-T e) alpha, A1 = T - c mu I, A2 = c mu I,

and pi_n = pi_c R^(n-c) for n >= c, R the minimal solution of R^2 A2 + R A1 + A0 = 0 reached by the fixed point R <- -A0 (A1 + R A2)^-1. The boundary vectors pi_0..pi_c come from the level balance equations with the last one replaced by the normalization

sum_{n<c} pi_n e + pi_c (I-R)^-1 e = 1,

after which Lq = pi_c R (I-R)^-2 e and L = sum_{n<c} n pi_n e + pi_c (c (I-R)^-1 + R (I-R)^-2) e.

ARITHMETIC. R is a fixed point driven to a tolerance and never terminates in a finite number of field operations, so the function is gated on transcendental arithmetic, for the same reason qbd_R is (see qbd_r.h).

At k = 1 with T = [-lambda] the arrival process is Poisson and every metric must collapse onto M/M/c, which is the check the tests apply.

Definition in file qsys_phmc.h.