LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
line::ctmc::CtmcStateSpace< T > Struct Template Reference

[stateSpace, localStateSpace] of @@SolverCTMC/getStateSpace.m. More...

#include <line/solvers/ctmc/solver_ctmc_getters.h>

Collaboration diagram for line::ctmc::CtmcStateSpace< T >:

Public Attributes

std::vector< NetState< T > > space
 The enumerated states.
Matrix< T > flat
 the blocks concatenated, as MATLAB returns them
std::vector< std::size_t > node_width
 column width of each stateful node's block
std::vector< Matrix< T > > local
 localStateSpace{f}: one matrix per stateful node, its DISTINCT local rows in first-appearance order.

Detailed Description

template<class T>
struct line::ctmc::CtmcStateSpace< T >

[stateSpace, localStateSpace] of @@SolverCTMC/getStateSpace.m.

Definition at line 79 of file solver_ctmc_getters.h.

Member Data Documentation

◆ flat

template<class T>
Matrix<T> line::ctmc::CtmcStateSpace< T >::flat

the blocks concatenated, as MATLAB returns them

Definition at line 87 of file solver_ctmc_getters.h.

Referenced by line::ctmc::ctmc_get_state_space().

◆ local

template<class T>
std::vector<Matrix<T> > line::ctmc::CtmcStateSpace< T >::local

localStateSpace{f}: one matrix per stateful node, its DISTINCT local rows in first-appearance order.

WITHOUT THIS THE SECOND RETURN VALUE CANNOT BE FORMED. getStateSpace.m under lang='cpp' returns {stateSpace} – a single cell holding the whole flat space – because the local decomposition was not on the wire, and a caller that indexes localStateSpace{f} per node then reads the global space for every node. node_width alone is not enough: it says where a block ENDS, not which rows a node admits.

IT IS THE ENUMERATED CHAIN'S DECOMPOSITION, not spaceGenerator's raw per-node enumeration. The reference's qnc.space{f} is built before the cartesian product and can hold a local row no global state uses; every row here appears in space. On a model whose lattice admits every combination the two coincide, and where they differ this one is the decomposition of the chain that was actually solved.

Definition at line 107 of file solver_ctmc_getters.h.

Referenced by line::ctmc::ctmc_get_state_space().

◆ node_width

template<class T>
std::vector<std::size_t> line::ctmc::CtmcStateSpace< T >::node_width

column width of each stateful node's block

Definition at line 88 of file solver_ctmc_getters.h.

Referenced by line::ctmc::ctmc_get_state_space().

◆ space

template<class T>
std::vector<NetState<T> > line::ctmc::CtmcStateSpace< T >::space

The enumerated states.

space[s].local[f] is already the reference's localStateSpace{f} row: this port keeps a state as its per-node blocks and never flattens it, so the local decomposition costs nothing to report and cannot disagree with the flat form.

Definition at line 86 of file solver_ctmc_getters.h.

Referenced by line::ctmc::ctmc_get_state_space().


The documentation for this struct was generated from the following file: