LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
line::qn::NodeDef Struct Reference

A node of the network. More...

#include <line/lang/qn/network_struct.h>

Collaboration diagram for line::qn::NodeDef:

Classes

struct  LoggerParam
 A Logger node's trace configuration, MATLAB's Logger properties and sn.nodeparam{ind} for a Logger. More...

Public Attributes

std::string name
NodeType nodetype = NodeType::Queue
bool stateful = true
std::size_t station = 0
std::vector< RoutingStrategyrouting
 sn.routing, per class.
std::vector< std::map< std::size_t, double > > routing_weights
 The per-destination weights of a WRROBIN dispatcher, per class: a map from 1-based destination NODE index to its weight.
std::vector< int > routing_param
 The scalar parameter of a parameterized dispatcher, per class: the d of a power-of-d (SQ) choice.
double tasks_per_link = 1.0
 Fork.output.tasksPerLink == MATLAB sn.nodeparam{f}.fanOut: how many tasks a fork emits per outgoing link.
LoggerParam logger

Detailed Description

A node of the network.

station is the 1-based station index when the node serves jobs and 0 when it does not (a Fork, a Router, a ClassSwitch, a Sink). stateful is false for the nodes that hold no jobs and are eliminated by the stochastic complement that builds rt.

Definition at line 174 of file network_struct.h.

Member Data Documentation

◆ logger

LoggerParam line::qn::NodeDef::logger

Definition at line 240 of file network_struct.h.

Referenced by line::io::network_to_json().

◆ name

◆ nodetype

◆ routing

std::vector<RoutingStrategy> line::qn::NodeDef::routing

sn.routing, per class.

PROB means the routing block P carries the probabilities as given; RAND and RROBIN mean the refresh spreads them uniformly over the nodes this one is connected to, which is the routing MATRIX of a round-robin dispatcher (its determinism lives in the higher moments, see refresh_routing). Anything else is state dependent, and the refresh refuses it by name: a state-dependent strategy silently treated as PROB returns a product-form answer for a model that has none.

Definition at line 188 of file network_struct.h.

Referenced by line::ctmc::ctmc_check_waitq_support(), line::qn::fj_tag(), line::qn::Network< double >::link(), line::io::network_to_json(), line::npfqn::npfqn_traffic_split_rr(), line::qn::NetworkStruct< T >::refresh_router_stateful(), line::qn::NetworkStruct< T >::refresh_routing(), line::qn::refresh_sync(), line::qn::rt_state(), line::qn::Network< double >::set_routing(), line::api::sn_remove_class(), line::qn::tag_chain(), and line::qn::used_lang_features().

◆ routing_param

std::vector<int> line::qn::NodeDef::routing_param

The scalar parameter of a parameterized dispatcher, per class: the d of a power-of-d (SQ) choice.

Zero means the strategy takes none. Carried for the same reason as routing_weights.

Definition at line 205 of file network_struct.h.

Referenced by line::io::network_to_json(), and line::api::sn_remove_class().

◆ routing_weights

std::vector<std::map<std::size_t, double> > line::qn::NodeDef::routing_weights

The per-destination weights of a WRROBIN dispatcher, per class: a map from 1-based destination NODE index to its weight.

MATLAB and the JAR keep these on the node object and the native Python struct calls the field sn.routingweights; this port carries them here so a WRROBIN model round-trips through model.json without loss. The refresh still refuses WRROBIN by name, because spreading the weights into a routing MATRIX would answer a state-independent model instead.

Definition at line 199 of file network_struct.h.

Referenced by line::io::network_to_json(), line::qn::NetworkStruct< T >::refresh_routing(), and line::api::sn_remove_class().

◆ stateful

◆ station

◆ tasks_per_link

double line::qn::NodeDef::tasks_per_link = 1.0

Fork.output.tasksPerLink == MATLAB sn.nodeparam{f}.fanOut: how many tasks a fork emits per outgoing link.

It scales both the MMT auxiliary arrival rate and the synchronisation delay; the default 1 leaves a plain fork unchanged.

For a fork whose degree is RANDOM this is the MEAN, so a consumer that only knows this field gets E[tasks per link] rather than a number the fork never emits.

Definition at line 216 of file network_struct.h.

Referenced by line::io::network_to_json(), and line::qn::sn_fj_validate().


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