![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Departure process of a MAP/MAP/1 queue: the ETAQA-truncated MAP descriptor under FCFS and under PS, and the joint moments of consecutive inter-departure times. More...
#include <cstddef>#include <utility>#include <vector>#include "line/api/mam/map_moment.h"#include "line/api/mam/mmap_lambda.h"#include "line/api/mam/qbd_mapmap1.h"#include "line/api/mam/qbd_r.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/linalg.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::mam |
Functions | |
| template<class T> | |
| Map< T > | line::mam::qbd_depproc_etaqa (const Map< T > &arrival, const Map< T > &service, std::size_t n) |
| MAP descriptor of the departure process of a MAP/MAP/1-FCFS queue, ETAQA-truncated at level n (qbd_depproc_etaqa.m). | |
| template<class T> | |
| Map< T > | line::mam::qbd_depproc_etaqa_ps (const Map< T > &arrival, const Map< T > &service, std::size_t n) |
| MAP descriptor of the departure process of a MAP/MAP/1-PS queue, ETAQA-truncated at level n (qbd_depproc_etaqa_ps.m). | |
| template<class T> | |
| T | line::mam::qbd_depproc_residual (const Map< T > &m) |
| ||(D0 + D1) e||_inf, zero for a genuine MAP. | |
| template<class T> | |
| std::vector< T > | line::mam::qbd_depproc_jointmom (const Map< T > &arrival, const Map< T > &service, const std::vector< std::pair< unsigned, unsigned > > &iset) |
| Joint moments E[X_0^i X_1^j] of consecutive inter-departure times of a MAP/MAP/1-FCFS queue (qbd_depproc_jointmom.m). | |
Departure process of a MAP/MAP/1 queue: the ETAQA-truncated MAP descriptor under FCFS and under PS, and the joint moments of consecutive inter-departure times.
Templated port of matlab/src/api/mam/qbd_depproc_etaqa.m, qbd_depproc_etaqa_ps.m and qbd_depproc_jointmom.m.
The queue is the usual MAP/MAP/1 QBD, level = number in system, phase = (arrival phase, service phase) with the arrival phase major:
F = D1^a (x) I_ns L = D0^a (+) D0^s B = I_na (x) D1^s L0 = D0^a (x) I_ns
ETAQA keeps levels 0..n-1 explicitly and lumps every level from n upwards into a single aggregate block, using G to describe how the aggregate returns to level n-1: Bbar = B + F G and Bhat = F G, with Lhat = F + L. The descriptor has (n+1) blocks of order na*ns; a transition that carries a departure goes into D1 and everything else into D0.
ARITHMETIC. All three entry points call qbd_fundmat for R and G, so they are gated on num_traits<T>::has_transcendental; see qbd_r.h for why cyclic reduction cannot be exact. Everything downstream of R and G is a finite sequence of matrix products and inverses.
REFERENCE DEFECTS (reproduced here verbatim, see the tests).
The port does NOT repair either: these functions are the reference for the JAR and Python ports and a silent divergence would be worse than a reproduced defect. qbd_depproc_etaqa_residual below measures ||(D0+D1)e||_inf so a caller can see it, and the tests pin the measured value.
Definition in file qbd_depproc.h.