![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Markov-modulated deterministic process (MMDP), for fluid queues. More...
#include <cmath>#include <cstddef>#include <limits>#include <vector>#include "line/api/mc/ctmc_solve.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::mmdp::MmdpPair< T > |
| The (Q, R) pair of an MMDP. More... | |
Namespaces | |
| namespace | line |
| namespace | line::mmdp |
Functions | |
| template<class T> | |
| bool | line::mmdp::mmdp_isfeasible (const Matrix< T > &Q, const Matrix< T > &R, double tol=1e-10) |
| True when (Q, R) is a valid MMDP. | |
| template<class T> | |
| std::vector< T > | line::mmdp::mmdp_rates (const Matrix< T > &R) |
| The per-state rates, i.e. | |
| template<class T> | |
| T | line::mmdp::mmdp_mean_rate (const Matrix< T > &Q, const Matrix< T > &R) |
| Stationary mean flow rate, pi diag(R). | |
| template<class T> | |
| T | line::mmdp::mmdp_scv (const Matrix< T > &Q, const Matrix< T > &R) |
| SCV of the RATE under the stationary law: Var[r] / E[r]^2. | |
| template<class T> | |
| MmdpPair< T > | line::mmdp::mmdp_from_map (const Matrix< T > &D0, const Matrix< T > &D1) |
| The MMDP of a MAP: Q = D0 + D1, R = diag(row sums of D1). | |
| template<class T> | |
| MmdpPair< T > | line::mmdp::mmdp2 (const T &r0, const T &r1, const T &sigma0, const T &sigma1) |
| The two-state MMDP, in the reference's own parameterization. | |
| template<class T> | |
| T | line::mmdp::mmdp2_mean_rate (const T &r0, const T &r1, const T &sigma0, const T &sigma1) |
| The closed-form mean rate of a two-state MMDP. | |
| template<class T> | |
| T | line::mmdp::mmdp2_scv (const T &r0, const T &r1, const T &sigma0, const T &sigma1) |
| The closed-form SCV of a two-state MMDP. | |
Markov-modulated deterministic process (MMDP), for fluid queues.
Port of python/line_solver/api/mmdp/__init__.py. PYTHON-ONLY: there is no MATLAB or JAR twin, so native Python is the reference.
MMDP is the DETERMINISTIC analogue of MMPP. An MMPP modulates a Poisson ARRIVAL RATE by a background chain; an MMDP modulates a deterministic FLUID FLOW RATE by one. The parameterization is BUTools': Q is the generator of the modulating chain (rows summing to zero) and R is the DIAGONAL matrix of per-state flow rates.
WHY THE SCV HERE IS NOT AN INTERARRIVAL SCV. In an MMPP the variability of interest is that of the interarrival time; in an MMDP the flow is deterministic within a state, so all the variability lives in WHICH state the chain occupies. mmdp_scv is therefore the SCV of the RATE under the stationary law, Var[r]/E[r]^2 with r the per-state rate – not of any holding time. A two-state process with equal rates has SCV zero however fast it switches, which is the tell that this is the rate's dispersion and not a time's.
ARITHMETIC: field. The stationary solve is the only numeric step and it goes through ctmc_solve, which is templated.
Definition in file mmdp.h.