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

Port of matlab/src/solvers/CTMC/solver_ctmc_chain.m and solver_ctmc_chain_transient.m: SolverCTMC applied to a USER-SUPPLIED Markov chain rather than to a queueing network. More...

#include <chrono>
#include <cmath>
#include <cstddef>
#include <string>
#include <vector>
#include "line/api/mc/ctmc_solve.h"
#include "line/api/mc/ctmc_solve_reducible.h"
#include "line/api/mc/ctmc_transient.h"
#include "line/api/mc/dtmc_makestochastic.h"
#include "line/api/mc/dtmc_solve.h"
#include "line/api/mc/dtmc_solve_reducible.h"
#include "line/lang/lang_types.h"
#include "line/lang/processes/markov_chain.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
#include "line/num/number.h"
Include dependency graph for solver_ctmc_chain.h:

Go to the source code of this file.

Classes

struct  line::ctmc::CtmcChainSolution< T >
struct  line::ctmc::CtmcChainTransientSolution< T >

Namespaces

namespace  line
namespace  line::ctmc

Typedefs

template<class T>
using line::ctmc::MarkovChainModel = lang::processes::MarkovChainModel<T>
 A user-supplied chain: a MarkovProcess when discrete is false, else a MarkovChain.

Functions

template<class T>
CtmcChainSolution< T > line::ctmc::solver_ctmc_chain (const MarkovChainModel< T > &chain)
 Steady-state analysis of a user-supplied Markov chain.
template<class T>
CtmcChainTransientSolution< T > line::ctmc::solver_ctmc_chain_transient (const MarkovChainModel< T > &chain, const std::vector< T > &pi0in, const T &t0in, const T &t1)
 Transient distribution of a user-supplied Markov chain over [t0,t1].

Detailed Description

Port of matlab/src/solvers/CTMC/solver_ctmc_chain.m and solver_ctmc_chain_transient.m: SolverCTMC applied to a USER-SUPPLIED Markov chain rather than to a queueing network.

The reference dispatches on the class of its argument, a MarkovProcess (CTMC, generator Q) or a MarkovChain (DTMC, transition matrix P).

These two functions read only getGenerator / getTransMat and stateSpace, so MarkovChainModel carries exactly that. The rest of the MarkovProcess / MarkovChain class surface – toEmbedded, toDTMC, aggregate, stochComp, timeAverage, sens, hittingTime, sample and the two constructors from a random draw or an observed trajectory – lives in lang/processes/markov_chain.h, which is where the model type is declared now; the alias below keeps the name this header introduced.

NOTE that solver_ctmc_chain and processes::chain_solve DELIBERATELY disagree on how to solve. This one ports solver_ctmc_chain.m, which tries the primary solver and falls back to the reducible one on a failed validity test; the class method ports MarkovProcess.solve, which takes the reducible one outright for a numeric matrix. Do not "align" them.

Definition in file solver_ctmc_chain.h.