![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
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> | |
| 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> | |
| 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. | |
| 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.
| 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.
| S | S[i][p], the minimal-support S-invariants, one row per invariant |
| V | the load vector S m0, one entry per invariant |
| g | g[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().
| 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.
| sn | a NetworkStruct holding Places and Transitions, single class |
| options | the relaxation options |
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().
| 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.
| sn | a NetworkStruct holding Places and Transitions |
| options | translation 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().
| SpnMetrics< T > line::spn::spn_metrics | ( | const mdd::MddStruct & | mdds, |
| const std::vector< std::vector< T > > & | g, | ||
| const SpnInfo< T > & | info ) |
Every measure of Sec.
3.1 from one diagram and one product form.
| mdds | the reachable set built by spn_mdd |
| g | per-level product-form factors g_l(v) |
| info | the metadata spn_mdd returned alongside the diagram |
Definition at line 78 of file spn_metrics.h.
References line::spn::SpnMode< T >::D1, line::spn::SpnMode< T >::dep, line::spn::SpnMode< T >::enab, line::spn::SpnEnabling< T >::eq, line::spn::SpnMetrics< T >::G, line::spn::SpnEnabling< T >::ge, line::spn::SpnMetrics< T >::marginal, line::mdd::mdd_rec(), line::mdd::mdd_rec_marginal(), line::spn::SpnMode< T >::mode, line::spn::SpnMetrics< T >::mode_tput, line::spn::SpnMetrics< T >::mode_util, line::spn::SpnInfo< T >::modes, line::spn::SpnMode< T >::nph, line::spn::SpnInfo< T >::nplacelevels, line::NumericError::NumericError(), line::spn::SpnMetrics< T >::place_tput, line::spn::SpnMetrics< T >::place_util, spn_metrics(), spn_rec_enabled(), line::spn::SpnMode< T >::srv, line::spn::SpnMetrics< T >::tokens, line::spn::SpnMode< T >::trans, and line::UnsupportedError::UnsupportedError().
Referenced by line::nc::solver_nc_spn_analyzer(), and spn_metrics().
| SpnPfResult< T > line::spn::spn_pf | ( | const qn::NetworkStruct< T > & | sn, |
| const SpnPfOptions & | options = SpnPfOptions() ) |
Derive the product form of a stochastic Petri net.
| sn | the network structure of a net holding Places and Transitions |
| options | tolerances and bounds |
Definition at line 209 of file spn_pf.h.
References line::spn::SpnOptions::bound, line::spn::SpnPfResult< T >::complexes, line::mc::ctmc_solve(), line::spn::SpnPfResult< T >::deficiency, line::spn::SpnOptions::descriptor, line::spn::SpnInfo< T >::diagram, line::mdd::MDD::enumerate(), line::spn::SpnPfResult< T >::g, line::lang::INF, line::InputError::InputError(), line::spn::SpnPfResult< T >::kind, line::spn::SpnPfResult< T >::linkage, line::lstsq(), line::spn::SpnInfo< T >::modes, line::spn::SpnInfo< T >::nnodes, line::spn::SpnInfo< T >::nplacelevels, line::spn::SpnInfo< T >::placenames, line::spn::SpnInfo< T >::places, line::spn::SpnPfResult< T >::residual, line::rref(), line::spn::SpnPfResult< T >::spn, spn_mdd(), spn_pf(), line::spn::SpnPfResult< T >::srank, line::UnsupportedError::UnsupportedError(), line::spn::SpnPfResult< T >::weakly_reversible, line::LstsqResult< T >::x, and line::spn::SpnPfResult< T >::y.
Referenced by line::nc::solver_nc_spn_analyzer(), and spn_pf().
| 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.
| mdds | the reachable set built by spn_mdd |
| g | per-level product-form factors, one vector per level |
| mde | the mode, as returned in SpnInfo::modes |
| nplacelevels | how 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().
| 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.
| sn | a NetworkStruct holding Places and Transitions |
| init | initial 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().