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

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"
Include dependency graph for env_generator.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.

Detailed Description

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.