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

Classes

struct  SpnEnabling
 Unnormalised enabling-degree masses of one mode. More...
struct  SpnInfo
 Everything the caller needs alongside the descriptor. More...
struct  SpnInvariants
 The invariant basis of a net, in place-level coordinates. More...
struct  SpnLpBounds
 The brackets; each vector pair holds the minimum then the maximum. More...
struct  SpnLpMode
 One (transition, mode) pair over place levels. More...
struct  SpnLpOptions
 Options of the relaxation. More...
struct  SpnMetrics
 The stationary measures of Sec. More...
struct  SpnMode
 One (transition, mode) pair of the net, in level coordinates. More...
struct  SpnOptions
 Options of the translation. More...
struct  SpnPfOptions
 Options of the product-form derivation. More...
struct  SpnPfResult
 The product form, and the certificate that it is one. More...
struct  SpnResult
 Descriptor, diagram and metadata returned together. More...

Functions

template<class T>
spn_conv (const std::vector< std::vector< long long > > &S, const std::vector< long long > &V, const std::vector< std::vector< T > > &g)
 The normalising constant by convolution over the invariant load vector.
template<class T>
spn_conv (const SpnInvariants &inv, const std::vector< std::vector< T > > &g)
 Convolve straight off the invariant basis spn_sinvariants returned.
template<class T>
SpnLpBounds spn_lpbnd (const qn::NetworkStruct< T > &sn, const SpnLpOptions &options=SpnLpOptions())
 Bracket the mean tokens and the throughputs of a stochastic Petri net.
template<class T>
SpnResult< T > spn_mdd (const qn::NetworkStruct< T > &sn, const SpnOptions &options=SpnOptions())
 Build the reachable set and Kronecker descriptor of a stochastic Petri net.
template<class T>
SpnMetrics< T > spn_metrics (const mdd::MddStruct &mdds, const std::vector< std::vector< T > > &g, const SpnInfo< T > &info)
 Every measure of Sec.
template<class T>
SpnPfResult< T > spn_pf (const qn::NetworkStruct< T > &sn, const SpnPfOptions &options=SpnPfOptions())
 Derive the product form of a stochastic Petri net.
template<class T>
SpnEnabling< T > spn_rec_enabled (const mdd::MddStruct &mdds, const std::vector< std::vector< T > > &g, const SpnMode< T > &mde, std::size_t nplacelevels)
 Enabling-degree masses of mode mde over the reachable set in mdds.
template<class T>
SpnInvariants spn_sinvariants (const qn::NetworkStruct< T > &sn, const std::vector< double > &init=std::vector< double >())
 Minimal-support S-invariants and the load vector of a net.

Function Documentation

◆ spn_conv() [1/2]

template<class T>
T line::spn::spn_conv ( const SpnInvariants & inv,
const std::vector< std::vector< T > > & g )

Convolve straight off the invariant basis spn_sinvariants returned.

Definition at line 125 of file spn_conv.h.

References line::spn::SpnInvariants::S, spn_conv(), and line::spn::SpnInvariants::V.

◆ spn_conv() [2/2]

template<class T>
T line::spn::spn_conv ( const std::vector< std::vector< long long > > & S,
const std::vector< long long > & V,
const std::vector< std::vector< T > > & g )

The normalising constant by convolution over the invariant load vector.

Parameters
SS[i][p], the minimal-support S-invariants, one row per invariant
Vthe load vector S m0, one entry per invariant
gg[p][i] is g_p(i), the product-form factor of i tokens in place p; its length bounds the marking of place p

Definition at line 105 of file spn_conv.h.

References line::InputError::InputError(), and spn_conv().

Referenced by spn_conv(), and spn_conv().

◆ spn_lpbnd()

template<class T>
SpnLpBounds line::spn::spn_lpbnd ( const qn::NetworkStruct< T > & sn,
const SpnLpOptions & options = SpnLpOptions() )

Bracket the mean tokens and the throughputs of a stochastic Petri net.

Parameters
sna NetworkStruct holding Places and Transitions, single class
optionsthe relaxation options
Returns
the brackets, per place level and per mode

Definition at line 157 of file spn_lpbnd.h.

References line::qn::TransitionParam< T >::arc_total(), line::spn::SpnLpBounds::bound, line::mam::Map< T >::D1, line::lang::dist_to_map(), line::lp::LpModel< T >::emit_eq(), line::lp::LpModel< T >::emit_ge(), line::lp::LpModel< T >::emit_le(), line::spn::SpnLpMode::enab, line::qn::TransitionParam< T >::enabling, line::spn::SpnLpMode::fire, line::qn::TransitionParam< T >::firing, line::qn::TransitionParam< T >::firingdep, line::qn::TransitionParam< T >::firingproc, line::lang::IMMEDIATE, line::spn::SpnLpMode::inhib, line::qn::TransitionParam< T >::inhibit_total(), line::qn::TransitionParam< T >::inhibiting, line::InputError::InputError(), line::spn::SpnLpBounds::levelname, line::spn::SpnInvariants::m0, line::mam::map_mean(), line::spn::SpnLpBounds::markovian, line::spn::SpnLpMode::mode, line::spn::SpnLpBounds::mode_tput_hi, line::spn::SpnLpBounds::mode_tput_lo, line::spn::SpnLpBounds::mode_util_hi, line::spn::SpnLpBounds::mode_util_lo, line::spn::SpnLpBounds::modes, line::qn::TransitionParam< T >::nmodes, line::qn::TransitionParam< T >::nmodeservers, line::spn::SpnLpBounds::nplacelevels, line::spn::SpnLpBounds::nrows, line::lp::LpModel< T >::num_rows(), line::spn::SpnLpBounds::nvars, line::mam::Map< T >::order(), line::lang::Place, line::spn::SpnLpBounds::place_tput_hi, line::spn::SpnLpBounds::place_tput_lo, line::spn::SpnLpBounds::places, line::spn::SpnLpMode::rate, line::lp::LpModel< T >::row_add(), line::lp::LpModel< T >::row_clear(), line::spn::SpnInvariants::S, line::lp::LpModel< T >::set_bounds(), spn_lpbnd(), spn_sinvariants(), line::qn::TransitionParam< T >::timing, line::spn::SpnLpBounds::tokens_hi, line::spn::SpnLpBounds::tokens_lo, line::spn::SpnLpMode::trans, line::lang::Transition, line::UnsupportedError::UnsupportedError(), and line::spn::SpnInvariants::V.

Referenced by line::ba::solver_ba_spnlp_analyzer(), and spn_lpbnd().

◆ spn_mdd()

template<class T>
SpnResult< T > line::spn::spn_mdd ( const qn::NetworkStruct< T > & sn,
const SpnOptions & options = SpnOptions() )

Build the reachable set and Kronecker descriptor of a stochastic Petri net.

Parameters
sna NetworkStruct holding Places and Transitions
optionstranslation options

Definition at line 394 of file spn_mdd.h.

References line::mdd::MddEvent< T >::a, line::mdd::MddLocalMatrix< T >::Builder::add(), line::qn::TransitionParam< T >::arc_total(), line::mdd::MddLocalMatrix< T >::Builder::build(), line::mdd::MDD::compact(), line::mam::Map< T >::D0, line::spn::SpnMode< T >::D0, line::mam::Map< T >::D1, line::spn::SpnMode< T >::D1, line::spn::SpnMode< T >::dep, line::spn::SpnResult< T >::desc, line::spn::SpnInfo< T >::descriptor, line::spn::SpnInfo< T >::diagram, line::lang::dist_to_map(), line::mdd::MddDescriptor< T >::domain, line::spn::SpnMode< T >::enab, line::qn::TransitionParam< T >::enabling, line::mdd::MddDescriptor< T >::events, line::spn::SpnInfo< T >::ever_disabled, line::spn::SpnMode< T >::fire, line::qn::TransitionParam< T >::firing, line::qn::TransitionParam< T >::firingdep, line::qn::TransitionParam< T >::firingproc, line::lang::IMMEDIATE, line::spn::SpnResult< T >::info, line::spn::SpnMode< T >::inhib, line::qn::TransitionParam< T >::inhibit_total(), line::qn::TransitionParam< T >::inhibiting, line::spn::SpnInfo< T >::init, line::InputError::InputError(), line::mdd::MDD::insert(), line::mdd::MddDescriptor< T >::invariant_value, line::mdd::MddDescriptor< T >::invariant_weights, line::mdd::MddDescriptor< T >::K, line::spn::SpnInfo< T >::levelkind, line::spn::SpnInfo< T >::levelname, line::mdd::mdd_entry_law(), line::spn::SpnResult< T >::mdds, line::mdd::MDD::member(), line::spn::SpnMode< T >::mode, line::spn::SpnInfo< T >::modes, line::mdd::MddDescriptor< T >::N, line::qn::TransitionParam< T >::nmodes, line::qn::TransitionParam< T >::nmodeservers, line::spn::SpnInfo< T >::nnodes, line::spn::SpnMode< T >::nph, line::spn::SpnInfo< T >::nplacelevels, line::mam::Map< T >::order(), line::spn::SpnInfo< T >::phaseof, line::spn::SpnMode< T >::pie, line::lang::Place, line::spn::SpnInfo< T >::placenames, line::spn::SpnInfo< T >::places, spn_mdd(), line::spn::SpnMode< T >::srv, line::qn::TransitionParam< T >::timing, line::mdd::MDD::to_struct(), line::spn::SpnMode< T >::trans, line::lang::Transition, and line::UnsupportedError::UnsupportedError().

Referenced by spn_mdd(), and spn_pf().

◆ spn_metrics()

◆ spn_pf()

◆ spn_rec_enabled()

template<class T>
SpnEnabling< T > line::spn::spn_rec_enabled ( const mdd::MddStruct & mdds,
const std::vector< std::vector< T > > & g,
const SpnMode< T > & mde,
std::size_t nplacelevels )

Enabling-degree masses of mode mde over the reachable set in mdds.

Parameters
mddsthe reachable set built by spn_mdd
gper-level product-form factors, one vector per level
mdethe mode, as returned in SpnInfo::modes
nplacelevelshow many leading levels are place levels

Definition at line 64 of file spn_rec_enabled.h.

References line::mdd::MddStruct::domain, line::spn::SpnMode< T >::enab, line::spn::SpnEnabling< T >::eq, line::spn::SpnEnabling< T >::ge, line::spn::SpnMode< T >::inhib, line::InputError::InputError(), line::mdd::MddStruct::K, line::spn::SpnEnabling< T >::max_degree, line::mdd::mdd_rec_masked(), and spn_rec_enabled().

Referenced by spn_metrics(), and spn_rec_enabled().

◆ spn_sinvariants()

template<class T>
SpnInvariants line::spn::spn_sinvariants ( const qn::NetworkStruct< T > & sn,
const std::vector< double > & init = std::vector<double>() )

Minimal-support S-invariants and the load vector of a net.

Parameters
sna NetworkStruct holding Places and Transitions
initinitial marking per place level; empty takes it from the reference station of each closed class, as spn_mdd does

Definition at line 110 of file spn_sinvariants.h.

References line::qn::TransitionParam< T >::arc_total(), line::qn::TransitionParam< T >::enabling, line::qn::TransitionParam< T >::firing, line::InputError::InputError(), line::spn::SpnInvariants::m0, line::qn::TransitionParam< T >::nmodes, line::lang::Place, line::spn::SpnInvariants::places, line::spn::SpnInvariants::S, spn_sinvariants(), and line::lang::Transition.

Referenced by spn_lpbnd(), and spn_sinvariants().