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

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"
Include dependency graph for mmdp.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>
line::mmdp::mmdp_mean_rate (const Matrix< T > &Q, const Matrix< T > &R)
 Stationary mean flow rate, pi diag(R).
template<class 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>
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>
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.

Detailed Description

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.