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

Ports of matlab/src/api/mc/ctmc_ssg.m and ctmc_ssg_reachability.m: the state space of a network as SolverCTMC enumerates it, in the reference's three views. More...

#include <cstddef>
#include <map>
#include <vector>
#include "line/lang/qn/network_struct.h"
#include "line/lang/qn/state.h"
#include "line/lang/qn/state_events.h"
#include "line/num/number.h"
#include "line/solvers/ctmc/solver_ctmc.h"
#include "line/solvers/ctmc/solver_ctmc_analyzer.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for ctmc_ssg.h:

Go to the source code of this file.

Classes

struct  line::mc::CtmcSsgOptions
 The reference's options read here: options.cutoff and the state cap. More...
struct  line::mc::CtmcSsgResult< T >
 The reference's [stateSpace, stateSpaceAggr, stateSpaceHashed, nodeStateSpace]. More...

Namespaces

namespace  line
 Conservation laws of a layered queueing network, enumerated from its structure.
namespace  line::mc
namespace  line::mc::ssg_detail

Functions

template<class T>
CtmcSsgResult< T > line::mc::ssg_detail::assemble (const qn::NetworkStruct< T > &sn, std::vector< qn::NetState< T > > space)
 The three matrix views from an enumerated space.
std::vector< std::size_t > line::mc::ssg_detail::cutoff_or_closed (const std::vector< std::size_t > &cutoff, std::size_t R)
template<class T>
CtmcSsgResult< T > line::mc::ctmc_ssg (const qn::NetworkStruct< T > &sn, const CtmcSsgOptions &options=CtmcSsgOptions(), const std::vector< qn::FjSync< T > > &fjsync=std::vector< qn::FjSync< T > >())
 Port of ctmc_ssg: the FULL state space of the network.
template<class T>
CtmcSsgResult< T > line::mc::ctmc_ssg_reachability (const qn::NetworkStruct< T > &sn, const CtmcSsgOptions &options=CtmcSsgOptions(), const std::vector< qn::FjSync< T > > &fjsync=std::vector< qn::FjSync< T > >())
 Port of ctmc_ssg_reachability: the REACHABLE state space, walked from the model's initial state over the synchronizations refresh_sync and refresh_global_sync build.

Detailed Description

Ports of matlab/src/api/mc/ctmc_ssg.m and ctmc_ssg_reachability.m: the state space of a network as SolverCTMC enumerates it, in the reference's three views.

stateSpace one row per network state, the per-node local rows concatenated in stateful-node order stateSpaceAggr (nstates x nstations*nclasses), the per-station job counts of each state (State.toMarginal) stateSpaceHashed (nstates x nstateful), the 1-based row of each node's local space that the state occupies nodeStateSpace the per-node local spaces the hashes index into, the reference's sn.space

The reference writes nodeStateSpace back onto sn.space and returns the struct; this NetworkStruct carries no space member (the analyzer rebuilds it per solve), so the node spaces are returned on the result instead.

ctmc_ssg is the FULL enumeration (State.spaceGenerator): every state the encoding admits, reachable or not. The reference refuses a fork-join model here, because a Fork firing does not conserve the per-chain population the lattice walks; ctmc_ssg_reachability is the reachable walk (State.reachableSpaceGenerator) from the model's initial state, which is the one those models need.

The enumeration itself is qn::space_generator and ctmc::reachable_space_generator, shared with SolverCTMC, so a space listed here is the space the solver solves.

Definition in file ctmc_ssg.h.