![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The SolverCTMC probability family: solver_ctmc_joint, _jointaggr, _marg, _margaggr, and the gate @@SolverCTMC/assertPhaseTypeStates puts in front of all four. More...
#include <cstddef>#include <string>#include <vector>#include "line/lang/qn/network_struct.h"#include "line/lang/qn/state.h"#include "line/solvers/ctmc/solver_ctmc_analyzer.h"#include "line/util/error.h"#include "line/util/lu.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::ctmc |
Functions | |
| template<class T> | |
| void | line::ctmc::assert_phase_type_states (const NetworkStruct< T > &sn, const std::string &what) |
| Port of @@SolverCTMC/assertPhaseTypeStates: refuse a query whose answer would be a per-state probability under a matrix-exponential process. | |
| template<class T> | |
| T | line::ctmc::solver_ctmc_joint (const NetworkStruct< T > &sn, const CtmcSolution< T > &d, const NetState< T > &state) |
| Port of solver_ctmc_joint: P(the network is in exactly state). | |
| template<class T> | |
| T | line::ctmc::solver_ctmc_jointaggr (const NetworkStruct< T > &sn, const CtmcSolution< T > &d, const NetState< T > &state) |
| Port of solver_ctmc_jointaggr: P(the network holds exactly these per-class counts), summed over every phase and buffer arrangement that realizes them. | |
| template<class T> | |
| std::vector< T > | line::ctmc::solver_ctmc_marg (const NetworkStruct< T > &sn, const CtmcSolution< T > &d, const NetState< T > &state) |
| Port of solver_ctmc_marg: per STATION, P(that station is in exactly its local slice of state), marginalized over every other node. | |
| template<class T> | |
| std::vector< T > | line::ctmc::solver_ctmc_margaggr (const NetworkStruct< T > &sn, const CtmcSolution< T > &d, const NetState< T > &state) |
| Port of solver_ctmc_margaggr: per STATION, P(that station holds exactly these per-class counts). | |
| template<class T> | |
| std::vector< T > | line::ctmc::solver_ctmc_ratecomplement (const Matrix< T > &D, const std::vector< std::size_t > &nonimm, const std::vector< std::size_t > &imm, const Matrix< T > &Q12, const Matrix< T > &Q22) |
| Port of solver_ctmc_ratecomplement: the long-run rate of an action as seen from each TANGIBLE state, given the action's rate filter D. | |
The SolverCTMC probability family: solver_ctmc_joint, _jointaggr, _marg, _margaggr, and the gate @@SolverCTMC/assertPhaseTypeStates puts in front of all four.
THE DISTINCTION THE FOUR NAMES ENCODE, because it is easy to mix up:
joint P(the whole network is in exactly this state), phases included jointaggr P(the whole network holds exactly these per-class counts), summed over every phase and buffer arrangement that realizes them marg per STATION, P(that station is in exactly this local state) margaggr per STATION, P(that station holds exactly these per-class counts)
joint and marg are per-state answers and jointaggr and margaggr are aggregates of them, which is precisely why the ME gate below applies to all four and not only to the first two: an aggregate over PHASES is a probability under a matrix-exponential, but an aggregate over STATES sharing a marginal is not, because the sum still runs over signed terms.
Definition in file solver_ctmc_prob.h.