![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
A node of the network. More...
#include <line/lang/qn/network_struct.h>
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< RoutingStrategy > | routing |
| 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 |
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.
| LoggerParam line::qn::NodeDef::logger |
Definition at line 240 of file network_struct.h.
Referenced by line::io::network_to_json().
| std::string line::qn::NodeDef::name |
Definition at line 175 of file network_struct.h.
Referenced by line::qn::NetworkStruct< T >::add_node(), line::qn::NetworkStruct< T >::add_station(), line::qn::after_event(), line::ctmc::ctmc_check_waitq_support(), line::io::network_to_json(), line::io::qn2lqn(), line::qn::NetworkStruct< T >::refresh_routing(), line::api::sn_aggregate_chains(), and line::qn::sn_fj_validate().
| NodeType line::qn::NodeDef::nodetype = NodeType::Queue |
Definition at line 176 of file network_struct.h.
Referenced by line::qn::NetworkStruct< T >::add_node(), line::qn::NetworkStruct< T >::add_station(), line::qn::after_event(), line::fluid::aoi_is_aoi(), line::autosolver::auto_find_solver(), line::autosolver::auto_traits(), line::qn::binding_capacity_reason(), line::mva::filter_metric(), line::qn::from_marginal_node(), line::qn::from_marginal_node_and_started(), line::qn::from_marginal_node_first(), line::io::jmt_sections(), line::mva::mva_single_class_open_reason(), line::nc::nc_is_cacheqn(), line::nc::nc_is_noreentrant_cache(), line::io::network_to_json(), line::io::qn2lqn(), line::qn::NetworkStruct< T >::refresh_router_stateful(), line::qn::NetworkStruct< T >::refresh_routing(), line::qn::refresh_sync(), line::api::sn_aggregate_chains(), line::mva::sn_is_mm1k_loss(), line::mam::solver_mam_basic(), line::nc::solver_nc_mem_supports(), line::nc::solver_nc_retrieval_analyzer(), line::qn::space_capacity_c(), line::qn::to_marginal_aggr(), and line::qn::used_lang_features().
| 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().
| 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().
| 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().
| bool line::qn::NodeDef::stateful = true |
Definition at line 177 of file network_struct.h.
Referenced by line::qn::NetworkStruct< T >::add_node(), line::qn::NetworkStruct< T >::add_station(), line::qn::after_event(), line::qn::from_marginal_node(), line::qn::from_marginal_node_and_started(), line::qn::from_marginal_node_first(), line::qn::NetworkStruct< T >::refresh_router_stateful(), line::qn::refresh_sync(), and line::qn::space_capacity_c().
| std::size_t line::qn::NodeDef::station = 0 |
Definition at line 178 of file network_struct.h.
Referenced by line::qn::NetworkStruct< T >::add_node(), line::qn::NetworkStruct< T >::add_station(), line::qn::after_event(), line::qn::from_marg_node(), line::qn::from_marg_node_started(), line::qn::from_marginal_node(), line::qn::from_marginal_node_and_started(), line::qn::from_marginal_node_first(), line::io::jmt_sections(), line::io::network_to_json(), line::io::qn2lqn(), line::qn::refresh_sync(), line::api::sn_aggregate_chains(), line::mam::solver_mam_basic(), line::nc::solver_nc_retrieval_analyzer(), line::qn::space_capacity_c(), line::qn::to_marginal_aggr(), and line::qn::used_lang_features().
| 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().