![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Port of @@SolverENV/getGenerator.m: the infinitesimal generator of the joint (environment, network) chain, assembled from CTMC stage generators. More...
#include <cmath>#include <cstddef>#include <vector>#include "line/api/mam/map_moment.h"#include "line/lang/qn/environment.h"#include "line/solvers/ctmc/solver_ctmc.h"#include "line/solvers/ctmc/solver_ctmc_getters.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::env::EnvStageEvent |
| One environment transition event, the reference's Event(STAGE, node, NaN, NaN, [e,h]). More... | |
| struct | line::env::EnvGenerator< T > |
| The outputs of getGenerator, in the reference's order. More... | |
Namespaces | |
| namespace | line |
| Conservation laws of a layered queueing network, enumerated from its structure. | |
| namespace | line::env |
| namespace | line::env::gen_detail |
Functions | |
| template<class T> | |
| Matrix< T > | line::env::gen_detail::kron (const Matrix< T > &A, const Matrix< T > &B) |
| template<class T> | |
| Matrix< T > | line::env::gen_detail::eye (std::size_t n) |
| template<class T> | |
| Matrix< T > | line::env::gen_detail::krons (const Matrix< T > &A, const Matrix< T > &B) |
| krons(A,B) = kron(A, I) + kron(I, B). | |
| template<class T> | |
| void | line::env::gen_detail::arc_process (const Environment< T > &env, std::size_t e, std::size_t h, Matrix< T > &D0, Matrix< T > &D1) |
| The arc's (D0, D1), or Exp(0) when the arc is not declared. | |
| template<class T> | |
| Matrix< T > | line::env::gen_detail::arc_pie (const Environment< T > &env, std::size_t f, std::size_t h, std::size_t n) |
| map_pie of the arc as a row, or ones(1, n) when it is NaN (an Exp(0) arc). | |
| template<class T> | |
| EnvGenerator< T > | line::env::env_get_generator (const Environment< T > &env, const ctmc::CtmcOptions &opt) |
| Port of @@SolverENV/getGenerator.m. | |
Port of @@SolverENV/getGenerator.m: the infinitesimal generator of the joint (environment, network) chain, assembled from CTMC stage generators.
BLOCK LAYOUT, exactly as the reference builds it. Block (e,e) starts as stage e's generator and is Kronecker-summed with the D0 of every outgoing arc e -> h in increasing h. Block (e,h) starts as a reset matrix (identity on the first min(n_e, n_h) states) and, for each h' != e in increasing order, is Kronecker-multiplied by D1_(e,h) 1 pie_(h,e) when h' = h and by 1 pie_(h',h) otherwise. The flattened matrix is closed with ctmc_makeinfgen. The column factors of an off-diagonal block follow the reference's loop order, not the target block's; that is the reference's construction and is reproduced as is.
A MISSING ARC is Exp(0), as the SolverENV constructor substitutes for Disabled: one phase, D0 = D1 = [0], and a NaN map_pie read as ones. The stage solvers must be CTMC, which here is not a choice: the stage generator is always ctmc_get_generator on the stage struct.
Definition in file env_generator.h.