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

Variable forking levels, the twin of MATLAB sn.nodeparam{f}.fanOutLink / .fanOutProb / .fanOutDist. More...

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

Collaboration diagram for line::qn::ForkParam< T >:

Public Attributes

Matrix< T > fan_out_link
Matrix< T > fan_out_prob
std::vector< std::vector< lang::Distrib< T > > > fan_out_dist

Detailed Description

template<class T>
struct line::qn::ForkParam< T >

Variable forking levels, the twin of MATLAB sn.nodeparam{f}.fanOutLink / .fanOutProb / .fanOutDist.

All three are (nnodes x nclasses) and indexed by DESTINATION NODE rather than by link ordinal, because the link order is an artefact of connmatrix traversal and renumbers whenever the model is relinked.

fan_out_link(k,r): expected tasks sent to destination k for class r, zero on a link class r does not take. fan_out_prob(k,r): probability the branch fires at all, so the SIBLING COUNT is random even when each link carries a fixed number. fan_out_dist[k][r]: the jobs-per-link distribution, with an unset (DISABLED) entry meaning degenerate at fan_out_link(k,r).

This is a per-node BLOCK keyed by node index – the shape joindecl already uses, and the shape MATLAB's nodeparam{f} has – rather than three fields on NodeDef, because NodeDef is not templated on the arithmetic and a Matrix<T> cannot live there. A fork with no override has no entry at all, which is how a consumer tells the classic case from the variable one without inspecting a single number.

Definition at line 160 of file network_struct.h.

Member Data Documentation

◆ fan_out_dist

template<class T>
std::vector<std::vector<lang::Distrib<T> > > line::qn::ForkParam< T >::fan_out_dist

◆ fan_out_link

◆ fan_out_prob


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