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

Port of matlab/src/solvers/CTMC/ctmc_stationary.m: the single entry point for the stationary distribution of a CTMC generated from a NetworkStruct. More...

#include <cstddef>
#include <string>
#include <vector>
#include "line/api/mc/ctmc_solve_reducible_blkdecomp.h"
#include "line/api/mc/stronglyconncomp.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
#include "line/num/number.h"
Include dependency graph for ctmc_stationary.h:

Go to the source code of this file.

Classes

struct  line::ctmc::CtmcStationaryResult< T >

Namespaces

namespace  line
namespace  line::ctmc

Functions

template<class T>
CtmcStationaryResult< T > line::ctmc::ctmc_stationary (const Matrix< T > &Q, std::size_t init_index=static_cast< std::size_t >(-1))

Variables

static const double line::ctmc::kArcTol = 1e-12
 Magnitude above which an off-diagonal generator entry counts as an arc.

Detailed Description

Port of matlab/src/solvers/CTMC/ctmc_stationary.m: the single entry point for the stationary distribution of a CTMC generated from a NetworkStruct.

All the stationary mass of a reducible chain lives in its bottom strongly connected components, each weighted by the probability of being absorbed in it from the declared initial state; every other state is transient and carries zero. The block decomposition handles the irreducible case as the degenerate one BSCC / no transient states, so every solve goes through it and no dispatch can disagree with the algorithm about whether a chain is reducible.

The reference's local ctmc_initial_distribution turns (StateSpace, sn) into the row of the initial state; here that job already belongs to analyzer_detail::init_state_index, so this file takes the INDEX and stays free of any sn dependency. npos means the initial state is absent from the enumerated space – stochastic complementation may have removed it, an SPN whose immediate ENABLE states were eliminated being the usual case – and makes the block decomposition start in the SCCs with no incoming transition.

Definition in file ctmc_stationary.h.