![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Uniformization (randomization) of a CTMC: the embedded DTMC P = I + Q/q. More...
#include <cstddef>#include "line/api/mc/dtmc_makestochastic.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::mc::RandomizationResult< T > |
Namespaces | |
| namespace | line |
| namespace | line::mc |
Functions | |
| template<class T> | |
| T | line::mc::ctmc_maxabs (const Matrix< T > &Q) |
| Largest magnitude of any entry of Q; equals max_i |q_ii| for a generator. | |
| template<class T> | |
| RandomizationResult< T > | line::mc::ctmc_randomization (const Matrix< T > &Q, const T &q) |
| Uniformization (randomization) of a CTMC: the embedded DTMC P = I + Q/q. | |
| template<class T> | |
| RandomizationResult< T > | line::mc::ctmc_randomization (const Matrix< T > &Q) |
| Deterministic default rate (21/20) max|Q|; see the defect note above. | |
Uniformization (randomization) of a CTMC: the embedded DTMC P = I + Q/q.
Templated port of matlab/lib/kpctoolbox/mc/ctmc_randomization.m and jar/src/main/java/jline/api/mc/Ctmc_randomization.java. The rate q must dominate max_i |q_ii| or P is not stochastic; the result is then passed through dtmc_makestochastic, which repairs the rounding of the division.
REFERENCE DEFECT. The MATLAB default rate is max|Q| + rand, drawn from the global unseeded stream, so two calls on the same generator return different matrices and nothing downstream of it is reproducible. The default here is the deterministic q = (21/20) max|Q|, which is the same rate ctmc_courtois derives explicitly and which strictly exceeds max_i |q_ii| (so P stays stochastic and aperiodic). Every quantity the callers in this port take from P – stationary vectors, SCC structure, aggregation matrices – is invariant to q, so the substitution changes no result, only its reproducibility.
Every operation is a field operation, so this is exact at Rational.
Definition in file ctmc_randomization.h.