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

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"
Include dependency graph for ctmc_randomization.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>
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.

Detailed Description

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.