![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
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"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]. | |
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.