![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Sojourn-time distribution of a fluid queue whose SERVICE is itself a Markov-modulated fluid flow, as an ME or PH representation (alpha, A). More...
#include <cstddef>#include <vector>#include "line/api/mam/mfq_solve.h"#include "line/api/mam/mfq_sojourn.h"#include "line/api/mam/mmap_lambda.h"#include "line/api/mc/ctmc_solve.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> | |
| MeRepresentation< T > | line::mam::mfq_fluflu_sojourn (const Matrix< T > &Qin, const Matrix< T > &Rin, const Matrix< T > &Qout, const Matrix< T > &Rout, bool srv0stop, bool transToPH, const T &prec) |
| Sojourn time of a drop in a fluid queue with fluid-modulated service. | |
| template<class T> | |
| MeRepresentation< T > | line::mam::mfq_fluflu_sojourn (const Matrix< T > &Qin, const Matrix< T > &Rin, const Matrix< T > &Qout, const Matrix< T > &Rout, bool srv0stop) |
| mfq_fluflu_sojourn with an ME representation and prec = 1e-14. | |
Sojourn-time distribution of a fluid queue whose SERVICE is itself a Markov-modulated fluid flow, as an ME or PH representation (alpha, A).
Port of matlab/src/api/mam/mfq_fluflu_sojourn.m and the BUTools FluFluSTD it wraps. Arrivals are a fluid flow modulated by (Qin, Rin) and the server drains fluid at a rate modulated by an independent (Qout, Rout).
CONSTRUCTION. The two modulating chains are combined on the product space, but NOT as a plain Kronecker sum: because the two flows run on different clocks, the combined model is the TIME-CHANGED fluid queue
Rh = kron(Rin, I) - kron(I, Rout), Qh = kron(Qin, Rout) + kron(Rin, Qout),
in which each chain's generator is weighted by the OTHER flow's rate. Qh is therefore not a generator, and mfq_general_solve does not require it to be: its algebra is generic. Solving that fluid model gives the level law of the queue, and the sojourn-time representation follows from it exactly as in mfq_sojourn, with the closing vector weighted by kron(Rin, I) when service continues while the server's own fluid level is at zero, and by kron(Rin, Rout)/mu when service stops there. That is the srv0stop flag, and it is the only place where the two conventions differ.
ARITHMETIC. Gated on num_traits<T>::has_transcendental through mfq_general_solve.
Definition in file mfq_fluflu_sojourn.h.