![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Classes | |
| struct | BaBounds |
| Port of SolverBA.getBounds: the {lower,upper} bracket of a family. More... | |
| struct | BaOptions |
| The options SolverBA reads. More... | |
| struct | BaSolution |
| Class-level results, the [Q,U,R,T,C,X] of solver_ba_analyzer. More... | |
| struct | GlobalConstants |
| The MATLAB GlobalConstants, as reported by lineStart at its defaults. More... | |
| struct | SncEnvelopes |
| The per-pair envelopes the analyzer built, keyed by (station, class). More... | |
| struct | SncPercentiles |
| The response-time and queue-length QUANTILES of the 'snc' family. More... | |
Enumerations | |
| enum class | SchedStrategy |
| Scheduling disciplines, with the values of MATLAB SchedStrategy. More... | |
Functions | |
| template<class T> | |
| std::string | method_refusal (const qn::NetworkStruct< T > &L, const std::string &method) |
| The STRUCTURAL premises of the SolverBA bound families, in one place: the reason METHOD cannot bound the model L, or "" when it can. | |
| template<class T> | |
| std::string | method_degenerate (const qn::NetworkStruct< T > &L, const std::string &method) |
| Whether METHOD APPLIES to L but its bound carries no information there, and why. | |
| template<class T> | |
| BaSolution< T > | solver_ba_analyzer (const qn::NetworkStruct< T > &L, const BaOptions &opt) |
| Port of solver_ba_analyzer. | |
| template<class T, class Solution> | |
| void | solver_ba_bgt (const qn::NetworkStruct< T > &L, Solution &out) |
| template<class T, class Solution> | |
| void | solver_ba_bpt (const qn::NetworkStruct< T > &L, Solution &out) |
| template<class T> | |
| BaSolution< T > | solver_ba_qrf_analyzer (const qn::NetworkStruct< T > &L, const BaOptions &opt) |
| Port of solver_ba_qrf_analyzer. | |
| std::string | resolve_method (const std::string &method) |
| Port of runAnalyzer's method aliases: default is the geometric upper bound, bare auto is the AUTO composite's upper side, and qr/lr are the friendly names of two QRF sub-methods. | |
| bool | ignores_blocking (const std::string &method) |
| Whether METHOD bounds a model as if its buffers were unbounded. | |
| std::vector< std::string > | list_valid_methods () |
| Port of SolverBA.listValidMethods. | |
| template<class T> | |
| std::pair< std::string, std::string > | blocking_default (const qn::NetworkStruct< T > &L) |
| The same list, narrowed to what THIS model can run. | |
| bool | is_default_request (const std::string &method) |
| True for the aliases whose meaning a blocked model is allowed to change. | |
| template<class T> | |
| std::vector< std::string > | list_valid_methods (const qn::NetworkStruct< T > &L) |
| void | check_method (const std::string &method) |
| Port of runAnalyzer's method gate: an unlisted name is refused by name. | |
| template<class T> | |
| mva::AvgResult< T > | solver_ba_run_analyzer (const qn::NetworkStruct< T > &L, const BaOptions &opt_in) |
| Port of @@SolverBA/runAnalyzer.m for the lang='matlab' path. | |
| template<class T> | |
| BaBounds< T > | ba_bounds (const qn::NetworkStruct< T > &L, const BaOptions &opt) |
| Port of SolverBA.getBounds. | |
| template<class T> | |
| SncEnvelopes | solver_ba_snc_envelopes (const qn::NetworkStruct< T > &L) |
| Builds the per-pair (arrival, service) envelopes of a feed-forward model. | |
| template<class T, class Solution> | |
| void | solver_ba_snc (const qn::NetworkStruct< T > &L, Solution &out) |
| template<class T> | |
| SncPercentiles | solver_ba_snc_perc (const qn::NetworkStruct< T > &L, double eps) |
| Both quantile matrices from one envelope propagation. | |
| bool | is_spnlp_method (const std::string &method) |
| Whether a resolved method name belongs to the Petri-net LP family. | |
| template<class T> | |
| BaSolution< T > | solver_ba_spnlp_analyzer (const qn::NetworkStruct< T > &L, const BaOptions &opt) |
| Moment-relaxation LP bounds for a stochastic Petri net. | |
|
strong |
Scheduling disciplines, with the values of MATLAB SchedStrategy.
Definition at line 181 of file lang_types.h.
| BaBounds< T > line::ba::ba_bounds | ( | const qn::NetworkStruct< T > & | L, |
| const BaOptions & | opt ) |
Port of SolverBA.getBounds.
The family is the method's prefix before the first dot, and BOTH sides are re-run with the caller's full option set: constructing the re-run with only the method would reset level to its default and a hierarchical family would never tighten as the level is raised. A one-sided family (cub upper-only, mbjb/ldbcmp lower-only) leaves its missing side as NaN, never as zero.
Definition at line 491 of file solver_ba_runner.h.
References ba_bounds(), blocking_default(), line::ba::BaBounds< T >::has_lower, line::ba::BaBounds< T >::has_upper, ignores_blocking(), is_default_request(), line::ba::BaBounds< T >::keep, list_valid_methods(), line::Matrix< T >::Matrix(), line::ba::BaOptions::method, line::qn::NetworkStruct< T >::nclasses, line::qn::NetworkStruct< T >::nstations, line::ba::BaBounds< T >::Qlower, line::mva::AvgResult< T >::QN, line::ba::BaBounds< T >::Qupper, resolve_method(), line::api::sn_has_blocking(), solver_ba_run_analyzer(), line::ba::BaBounds< T >::Tlower, line::mva::AvgResult< T >::TN, line::ba::BaBounds< T >::Tupper, and line::UnsupportedError::UnsupportedError().
Referenced by ba_bounds(), and line::SolverBA::bounds_table().
| std::pair< std::string, std::string > line::ba::blocking_default | ( | const qn::NetworkStruct< T > & | L | ) |
The same list, narrowed to what THIS model can run.
The QR/LR/QRF reduction bounds share one premise – a single-class closed network of single-server stations – which solver_ba_qrf_analyzer enforces and the lr family shares. A listed name that always throws is a method a caller is invited to ask for and cannot have, so the model-aware overload drops them; SolverMVA gates sqni the same way. Mirrors SolverBA.m, SolverBA.java and the python list_valid_methods. What default/auto must mean on a model with finite buffers: the QRF BAS bound, or nothing.
default resolves to the geometric upper bound, which is parameterized by demands and a population alone and therefore bounds a blocked model as if its buffers were unbounded. ignores_blocking refuses that, which is right; but refusing is not the whole answer, because qrf.bas DOES model the finite buffer and sn_to_qrf_blocking derives its tables from the model, so there is nothing left for the caller to supply. A blocked model of the right shape therefore gets qrf.bas as its default, exactly as SolverMVA routes a BAS model to sqd.
The shape is the one list_valid_methods(L) calls "reducible" and the QRF analyzer gates on. On top of it the tables must actually derive, which is asked of sn_to_qrf_blocking rather than re-tested here – it owns the single-finite-buffer rule and the size guard, and a second copy of either is how the two drift apart.
Only the UPPER side is routed: the analyzer solves qrf.bas in the 'max' direction alone, so auto.lower has no blocking counterpart and keeps refusing rather than being answered with the wrong side.
Definition at line 173 of file solver_ba_runner.h.
References blocking_default(), line::qn::NetworkStruct< T >::classes, line::mam::Map< T >::D0, line::lang::dist_to_map(), line::Matrix< T >::empty(), line::qn::NetworkStruct< T >::nclasses, line::qn::NetworkStruct< T >::service, line::api::sn_has_blocking(), line::sn::sn_to_qrf_blocking(), and line::qn::NetworkStruct< T >::stations.
Referenced by ba_bounds(), blocking_default(), list_valid_methods(), and solver_ba_run_analyzer().
|
inline |
Port of runAnalyzer's method gate: an unlisted name is refused by name.
Definition at line 351 of file solver_ba_runner.h.
References check_method(), list_valid_methods(), resolve_method(), and line::UnsupportedError::UnsupportedError().
Referenced by check_method(), and solver_ba_run_analyzer().
|
inline |
Whether METHOD bounds a model as if its buffers were unbounded.
Every family but the QRF BLOCKING bounds is parameterized by demands (visits x service time) and a population alone, which is the BCMP parameterization: unbounded buffers, and an equilibrium distribution that factorizes. A finite buffer that BINDS breaks both premises, so the numbers do not bracket the blocked model – on cqn_bas_blocking (Queue2 capped at 1, N = 2) gb.upper reports QLen 1.28 at a station that can never hold more than one job. qrf.bas* and qrf.rsrd carry the blocking tables (MM, MM1, ZZ, ZM, BB, F) explicitly and are the exceptions.
METHOD must already be resolved through resolve_method.
Definition at line 82 of file solver_ba_runner.h.
References ignores_blocking().
Referenced by ba_bounds(), ignores_blocking(), list_valid_methods(), and solver_ba_run_analyzer().
|
inline |
True for the aliases whose meaning a blocked model is allowed to change.
Definition at line 204 of file solver_ba_runner.h.
References is_default_request().
Referenced by ba_bounds(), is_default_request(), and solver_ba_run_analyzer().
|
inline |
Whether a resolved method name belongs to the Petri-net LP family.
Definition at line 61 of file solver_ba_spnlp.h.
References is_spnlp_method().
Referenced by is_spnlp_method(), list_valid_methods(), and solver_ba_run_analyzer().
|
inline |
Port of SolverBA.listValidMethods.
A LISTED NAME MUST ACTUALLY RUN, OR BE REFUSED BY NAME. The lr family IS listed: its bound is a pure linear program, which lp::simplex_solve serves exactly. The four no-blocking qrf.* arms and the supported BAS-blocking bounds are listed too, served by solver_ba_qrf_analyzer.
qrf.bas.mmi was the one name here that used to be always refused, and it is listed because the reference lists it: SolverBA.listAllMethods names it and solver_ba_qrf_analyzer.m:119 then refuses it by name, having lost qrf_bas_mmi_simple.m on 2026-08-01. Omitting it here made the C++ answer "unsupported method" where the reference answers with the analyzer's own reason, so a caller could not tell a missing port from a retired bound.
Definition at line 106 of file solver_ba_runner.h.
References list_valid_methods().
Referenced by line::autosolver::auto_family_methods(), ba_bounds(), check_method(), list_valid_methods(), list_valid_methods(), and line::NetworkSolver::list_valid_methods().
| std::vector< std::string > line::ba::list_valid_methods | ( | const qn::NetworkStruct< T > & | L | ) |
Definition at line 209 of file solver_ba_runner.h.
References blocking_default(), line::qn::NetworkStruct< T >::classes, ignores_blocking(), is_spnlp_method(), list_valid_methods(), method_degenerate(), method_refusal(), line::sn::QrfAlpha::msg, line::qn::NetworkStruct< T >::nclasses, line::qn::NetworkStruct< T >::nodes, resolve_method(), line::api::sn_has_blocking(), line::sn::sn_to_qrf_alpha(), line::qn::NetworkStruct< T >::stations, and line::lang::Transition.
| std::string line::ba::method_degenerate | ( | const qn::NetworkStruct< T > & | L, |
| const std::string & | method ) |
Whether METHOD APPLIES to L but its bound carries no information there, and why.
Empty when the bound is informative, and empty for every method that has no such regime.
THIS IS A DIFFERENT QUESTION FROM method_refusal, which is why it is a different function. That one answers "is this model outside the method's domain", and its answer is what the analyzer throws. This one answers "inside the domain, does the formula still say anything", and its answer is NOT thrown: a degenerate bound is a VALID bound, just a vacuous one, so an analyzer asked for it by name is entitled to publish it – which is also what tests/test_ba.cpp pins at the regime boundary. What must not happen is OFFERING it: list_valid_methods(L) names the pairs a caller can act on, and a table of zeros over a network with jobs circulating in it is not one.
THE ONE METHOD WITH SUCH A REGIME IS 'ldbcmp.lower'. The Anselmi-Cremonesi bound is built from the population SURPLUS a = N - Qhat, where Qhat is the occupancy the non-bottleneck stations and the think time would hold in the open network fed at the bottleneck's saturation rate. pfqn_ldbcmp reports applicable = false below the regime, which the analyzer already throws on; AT the boundary a = 0 it returns Xlo = 0, which is formally the trivial bound X >= 0 and propagates into a table whose queue lengths, utilizations and throughputs are all zero. Every entry of that table is a true lower bound and none of them is usable, and a caller cannot tell it from a real answer of zero.
Mirrors matlab/src/solvers/BA/ba_method_degenerate.m and its JAR and native python twins.
Definition at line 490 of file solver_ba_analyzer.h.
References line::pfqn::LdBcmpBound< T >::applicable, line::qn::ba_resolve_method_name(), method_degenerate(), method_refusal(), line::pfqn::pfqn_ldbcmp(), line::pfqn::LdBcmpBound< T >::Qhat, and line::pfqn::LdBcmpBound< T >::Xlo.
Referenced by list_valid_methods(), and method_degenerate().
| std::string line::ba::method_refusal | ( | const qn::NetworkStruct< T > & | L, |
| const std::string & | method ) |
The STRUCTURAL premises of the SolverBA bound families, in one place: the reason METHOD cannot bound the model L, or "" when it can.
ONE PREDICATE, THREE CALLERS. solver_ba_analyzer asks it before dispatching and throws what it returns, solver_ba_run_analyzer asks it on the way in, and list_valid_methods(L) asks it so the name never reaches a report at all, which is the route auto_family_methods takes. A second copy of any rule below is how the report and the run drift apart: the report offers a pair that throws the moment it is run, which is the defect this function exists to remove.
WHAT BELONGS HERE AND WHAT DOES NOT. Only the rules the feature registry cannot name. qn::Feature has no entry for "one class", for a server count or for a station count, so those are structural and live here. Rules of the form "this family does not accept a delay station" ARE nameable and belong in qn::ba_feature_set, which unsets SchedStrategy_INF for the offending method instead: a feature set can refuse a model for HAVING a construct, never for lacking one.
METHOD is taken as the caller spells it and resolved through qn::ba_resolve_method_name, the copy of resolve_method that lives beside the feature set (this header is below the runner and cannot reach back into it), so 'default' is judged as the gb.upper it runs as and the reason names that. The marking-parameterized spnlp and the QRF reduction bounds carry no rule here: the QRF premise is the reducibility test list_valid_methods(L) already applies. Of the three OPEN families, 'bpt' and 'bgt' carry none either – a closed model is refused by their feature set and their analyzers walk the routing matrix for the rest – while 'snc' carries one, the SERVICE law.
WHY THE SNC SERVICE LAW IS HERE AND THE bpt/bgt ONE IS NOT. All three analyzers refuse a non-exponential law at a queueing station. For bpt and bgt that rule extends to the SOURCE and is registry-expressible, so it rides in qn::ba_feature_set as a dropped law: both are invariant to the arrival law beyond its mean, so a non-exponential source is not something they refuse, it is something they silently bound as if it were Poisson. snc is the opposite: it CONSUMES the arrival law and its analyzer branches on a non-exponential source deliberately. Its rule is about the SERVICE only, and no feature name can say "Erlang at a Queue but not at a Source", so it is structural.
Mirrors matlab/src/solvers/BA/ba_method_refusal.m and its JAR and native python twins.
Definition at line 410 of file solver_ba_analyzer.h.
References line::qn::ba_family_of(), line::qn::ba_resolve_method_name(), line::qn::NetworkStruct< T >::classes, line::lang::EXP, method_refusal(), line::qn::NetworkStruct< T >::nclasses, line::qn::NetworkStruct< T >::nclosedjobs(), line::qn::NetworkStruct< T >::nstations, line::qn::NetworkStruct< T >::procid(), line::qn::NetworkStruct< T >::rates, and line::qn::NetworkStruct< T >::stations.
Referenced by line::autosolver::auto_family_refusal(), list_valid_methods(), method_degenerate(), method_refusal(), and solver_ba_analyzer().
|
inline |
Port of runAnalyzer's method aliases: default is the geometric upper bound, bare auto is the AUTO composite's upper side, and qr/lr are the friendly names of two QRF sub-methods.
Definition at line 60 of file solver_ba_runner.h.
References resolve_method().
Referenced by ba_bounds(), check_method(), list_valid_methods(), resolve_method(), and solver_ba_run_analyzer().
| BaSolution< T > line::ba::solver_ba_analyzer | ( | const qn::NetworkStruct< T > & | L, |
| const BaOptions & | opt ) |
Port of solver_ba_analyzer.
| L | the refreshed struct of a closed model |
| opt | the method and, for a hierarchical family, the level |
Definition at line 536 of file solver_ba_analyzer.h.
References line::pfqn::LdBcmpBound< T >::applicable, line::ba::BaSolution< T >::C, line::mva::ClassResults< T >::C, line::qn::NetworkStruct< T >::classes, line::mam::Map< T >::D0, line::mam::Map< T >::D1, line::lang::dist_to_map(), line::qn::NetworkStruct< T >::inchain, line::mapqn::LrMvaParams< T >::K, line::pfqn::HarelBoundsResult< T >::LB, line::ba::BaSolution< T >::lG, line::mapqn::LrMvaParams< T >::M, line::mapqn::LrPfParams< T >::M, line::mam::map_mean(), line::mapqn::mapqn_bnd_lr_mva(), line::mapqn::mapqn_bnd_lr_pf(), line::Matrix< T >::Matrix(), line::mapqn::Max, line::ba::BaOptions::method, method_refusal(), line::mapqn::Min, line::mapqn::LrPfParams< T >::mu, line::mapqn::LrMvaParams< T >::muM, line::mapqn::LrMvaParams< T >::muMAP, line::mapqn::LrMvaParams< T >::N, line::mapqn::LrPfParams< T >::N, line::qn::NetworkStruct< T >::nchains, line::qn::NetworkStruct< T >::nstations, line::num_pow_int(), line::NumericError::NumericError(), line::mapqn::LrPfResult< T >::objective, line::mapqn::MapqnBndLrMvaResult< T >::objective, line::mapqn::LrPfResult< T >::ok, line::mapqn::MapqnBndLrMvaResult< T >::ok, line::pfqn::pfqn_bjbk(), line::pfqn::pfqn_cbh(), line::pfqn::pfqn_harel_bounds(), line::pfqn::pfqn_ldbcmp(), line::pfqn::pfqn_looping(), line::pfqn::pfqn_mcub(), line::pfqn::pfqn_mwrbb(), line::pfqn::pfqn_pbh(), line::pfqn::pfqn_pbk(), line::pfqn::pfqn_qzgblow(), line::pfqn::pfqn_qzgbup(), line::pfqn::pfqn_scb(), line::pfqn::pfqn_sib(), line::pfqn::pfqn_ssd(), line::pfqn::pfqn_xzgsblow(), line::pfqn::pfqn_xzgsbup(), line::ba::BaSolution< T >::Q, line::mva::ClassResults< T >::Q, line::mapqn::QN, line::ba::BaSolution< T >::R, line::mva::ClassResults< T >::R, line::mapqn::LrMvaParams< T >::r, line::mapqn::LrPfParams< T >::r, line::qn::NetworkStruct< T >::rates, line::qn::NetworkStruct< T >::refclass, line::qn::NetworkStruct< T >::rt, line::qn::NetworkStruct< T >::service, line::mva::sn_deaggregate_chain_results(), solver_ba_analyzer(), solver_ba_bgt(), solver_ba_bpt(), solver_ba_snc(), line::qn::NetworkStruct< T >::stations, line::mapqn::LrPfResult< T >::status, line::mapqn::MapqnBndLrMvaResult< T >::status, line::pfqn::HarelBoundsResult< T >::TH, line::ba::BaSolution< T >::Tp, line::mva::ClassResults< T >::Tp, line::ba::BaSolution< T >::U, line::mva::ClassResults< T >::U, line::pfqn::HarelBoundsResult< T >::UB, line::mapqn::UN, line::UnsupportedError::UnsupportedError(), line::mapqn::LrMvaParams< T >::v, line::ba::BaSolution< T >::X, line::mva::ClassResults< T >::X, line::pfqn::CbhBounds< T >::Xhi, line::pfqn::PbhBounds< T >::Xhi, line::pfqn::ScbBounds< T >::Xhi, line::pfqn::SibBounds< T >::Xhi, line::pfqn::SsdBounds< T >::Xhi, line::pfqn::McubBounds< T >::Xlb, line::pfqn::CbhBounds< T >::Xlo, line::pfqn::LdBcmpBound< T >::Xlo, line::pfqn::LoopingBounds< T >::Xlo, line::pfqn::MwrbbBounds< T >::Xlo, line::pfqn::PbhBounds< T >::Xlo, line::pfqn::ScbBounds< T >::Xlo, line::pfqn::SibBounds< T >::Xlo, line::pfqn::SsdBounds< T >::Xlo, line::pfqn::McubBounds< T >::Xub, line::pfqn::LoopingBounds< T >::Xup, and line::pfqn::MwrbbBounds< T >::Xup.
Referenced by solver_ba_analyzer(), and solver_ba_run_analyzer().
| void line::ba::solver_ba_bgt | ( | const qn::NetworkStruct< T > & | L, |
| Solution & | out ) |
| L | the model |
| out | the (Q,U,R,Tp,C,X) block to fill; shapes are set here |
Definition at line 105 of file solver_ba_bgt.h.
References line::qn::NetworkStruct< T >::classes, line::lang::EXP, line::lang::INF, line::Matrix< T >::Matrix(), line::qn::NetworkStruct< T >::nclasses, line::npfqn::npfqn_bnd_bgt(), line::qn::NetworkStruct< T >::nstations, line::qn::NetworkStruct< T >::procid(), line::npfqn::BndBgt< T >::Qub, line::qn::NetworkStruct< T >::rates, line::api::sn_rt_stations(), solver_ba_bgt(), line::qn::NetworkStruct< T >::stations, and line::UnsupportedError::UnsupportedError().
Referenced by solver_ba_analyzer(), and solver_ba_bgt().
| void line::ba::solver_ba_bpt | ( | const qn::NetworkStruct< T > & | L, |
| Solution & | out ) |
| L | the model |
| out | the (Q,U,R,Tp,C,X) block to fill; shapes are set here |
Definition at line 65 of file solver_ba_bpt.h.
References line::qn::NetworkStruct< T >::classes, line::lang::EXP, line::lang::INF, line::inverse(), line::npfqn::BndBpt< T >::lambda, line::matmul(), line::Matrix< T >::Matrix(), line::qn::NetworkStruct< T >::nclasses, line::npfqn::npfqn_bnd_bpt(), line::qn::NetworkStruct< T >::nstations, line::qn::NetworkStruct< T >::procid(), line::qn::NetworkStruct< T >::rates, line::npfqn::BndBpt< T >::rho, line::api::sn_rt_stations(), solver_ba_bpt(), line::qn::NetworkStruct< T >::stations, line::UnsupportedError::UnsupportedError(), and line::npfqn::BndBpt< T >::zlb.
Referenced by solver_ba_analyzer(), and solver_ba_bpt().
| BaSolution< T > line::ba::solver_ba_qrf_analyzer | ( | const qn::NetworkStruct< T > & | L, |
| const BaOptions & | opt ) |
Port of solver_ba_qrf_analyzer.
| L | the refreshed struct of a single-class closed model |
| opt | the method and, for the load-dependent arms, qrf_alpha |
Definition at line 258 of file solver_ba_qrf_analyzer.h.
References line::sn::QrfAlpha::alpha, line::mapqn::QrfMetrics< T >::BN, line::ba::BaSolution< T >::C, line::qn::NetworkStruct< T >::classes, line::mam::Map< T >::D0, line::mam::Map< T >::D1, line::lang::dist_to_map(), line::InputError::InputError(), line::sn::QrfAlpha::ld, line::ba::BaSolution< T >::lG, line::mam::map_mean(), line::mapqn::mapqn_qrf_bas_bethe(), line::mapqn::mapqn_qrf_bas_mem(), line::mapqn::mapqn_qrf_bas_mmi(), line::Matrix< T >::Matrix(), line::sn::QrfAlpha::msg, line::qn::NetworkStruct< T >::nchains, line::qn::NetworkStruct< T >::nclasses, line::qn::NetworkStruct< T >::nclosedjobs(), line::qn::NetworkStruct< T >::njobs(), line::qn::NetworkStruct< T >::nstations, line::sn::QrfAlpha::peak, line::ba::BaSolution< T >::Q, line::mapqn::QrfMetrics< T >::QN, line::mapqn::qrf_extract_mu_v(), line::mapqn::qrf_noblo_bethe(), line::mapqn::qrf_noblo_mem(), line::mapqn::qrf_noblo_mmi(), line::mapqn::qrf_noblo_mmi_ld(), line::mapqn::qrf_noblo_mmi_linear(), line::ba::BaSolution< T >::R, line::qn::NetworkStruct< T >::rt, line::qn::NetworkStruct< T >::service, line::sn::sn_to_qrf_alpha(), solver_ba_qrf_analyzer(), line::qn::NetworkStruct< T >::stateful_of_station(), line::ba::BaSolution< T >::Tp, line::ba::BaSolution< T >::U, line::mapqn::QrfMetrics< T >::UN, line::UnsupportedError::UnsupportedError(), line::qn::NetworkStruct< T >::visits, and line::ba::BaSolution< T >::X.
Referenced by solver_ba_qrf_analyzer(), and solver_ba_run_analyzer().
| mva::AvgResult< T > line::ba::solver_ba_run_analyzer | ( | const qn::NetworkStruct< T > & | L, |
| const BaOptions & | opt_in ) |
Port of @@SolverBA/runAnalyzer.m for the lang='matlab' path.
| L | the refreshed struct of a closed model |
| opt_in | the method and, for a hierarchical family, the level |
Definition at line 368 of file solver_ba_runner.h.
References line::mva::AvgResult< T >::actualmethod, line::mva::AvgResult< T >::AN, line::mva::ArvR, blocking_default(), line::ba::BaSolution< T >::C, check_method(), line::mva::AvgResult< T >::CN, line::mva::filter_metric(), line::ba::GlobalConstants::FineTol, ignores_blocking(), is_default_request(), is_spnlp_method(), line::ba::BaSolution< T >::iter, line::mva::AvgResult< T >::iter, line::Matrix< T >::Matrix(), line::ba::BaOptions::method, line::mva::AvgResult< T >::method, line::qn::NetworkStruct< T >::nclasses, line::qn::NetworkStruct< T >::nclosedjobs(), line::qn::NetworkStruct< T >::nstations, line::ba::BaSolution< T >::Q, line::mva::QLen, line::mva::AvgResult< T >::QN, line::ba::BaSolution< T >::R, resolve_method(), line::mva::RespT, line::mva::AvgResult< T >::RN, line::mva::sn_get_arvr_from_tput(), line::api::sn_has_blocking(), solver_ba_analyzer(), solver_ba_qrf_analyzer(), solver_ba_run_analyzer(), solver_ba_spnlp_analyzer(), line::qn::NetworkStruct< T >::stations, line::mva::AvgResult< T >::TN, line::ba::BaSolution< T >::Tp, line::mva::Tput, line::ba::BaSolution< T >::U, line::mva::AvgResult< T >::UN, line::UnsupportedError::UnsupportedError(), line::mva::Util, line::mva::AvgResult< T >::WN, line::ba::BaSolution< T >::X, and line::mva::AvgResult< T >::XN.
Referenced by line::NetworkSolver::avg_table(), ba_bounds(), solver_ba_run_analyzer(), and line::uq::uq_stage_solver().
| void line::ba::solver_ba_snc | ( | const qn::NetworkStruct< T > & | L, |
| Solution & | out ) |
| L | the model |
| out | the (Q,U,R,Tp,C,X) block to fill; shapes are set here |
Definition at line 388 of file solver_ba_snc.h.
References line::Matrix< T >::Matrix(), line::qn::NetworkStruct< T >::nclasses, line::qn::NetworkStruct< T >::nstations, line::qn::NetworkStruct< T >::rates, line::snc::snc_mean_delay(), solver_ba_snc(), solver_ba_snc_envelopes(), line::qn::NetworkStruct< T >::stations, and line::snc::SncResult::value.
Referenced by solver_ba_analyzer(), and solver_ba_snc().
| SncEnvelopes line::ba::solver_ba_snc_envelopes | ( | const qn::NetworkStruct< T > & | L | ) |
Builds the per-pair (arrival, service) envelopes of a feed-forward model.
Every gate of the family is checked here rather than in the caller, so that the quantile accessors refuse an unsupported model with the same reason as the mean columns.
| L | the model |
Definition at line 131 of file solver_ba_snc.h.
References line::qn::NetworkStruct< T >::classes, line::mam::Map< T >::D0, line::mam::Map< T >::D1, line::lang::dist_to_map(), line::lang::EXP, line::lang::INF, line::inverse(), line::matmul(), line::qn::NetworkStruct< T >::nclasses, line::qn::NetworkStruct< T >::nstations, line::qn::NetworkStruct< T >::procid(), line::qn::NetworkStruct< T >::rates, line::qn::NetworkStruct< T >::service, line::api::sn_rt_stations(), line::snc::snc_env_map_fn(), line::snc::snc_env_poisson_fn(), line::snc::snc_leftover(), line::snc::snc_output(), line::snc::snc_srv_exp(), solver_ba_snc_envelopes(), line::qn::NetworkStruct< T >::stations, and line::UnsupportedError::UnsupportedError().
Referenced by solver_ba_snc(), solver_ba_snc_envelopes(), and solver_ba_snc_perc().
| SncPercentiles line::ba::solver_ba_snc_perc | ( | const qn::NetworkStruct< T > & | L, |
| double | eps ) |
Both quantile matrices from one envelope propagation.
This is the native output of the family and has no counterpart in any other BA family, which bound means only. SolverBA.getDelayPerc / getBacklogPerc / getPercTable in MATLAB, the JAR and Python are the same call.
| L | the model |
| eps | violation probability, 0 < eps < 1 |
Definition at line 455 of file solver_ba_snc.h.
References line::ba::SncPercentiles::B, line::ba::SncPercentiles::D, line::qn::NetworkStruct< T >::nclasses, line::qn::NetworkStruct< T >::nstations, line::snc::snc_perc_backlog(), line::snc::snc_perc_delay(), solver_ba_snc_envelopes(), solver_ba_snc_perc(), and line::snc::SncResult::value.
Referenced by solver_ba_snc_perc().
| BaSolution< T > line::ba::solver_ba_spnlp_analyzer | ( | const qn::NetworkStruct< T > & | L, |
| const BaOptions & | opt ) |
Moment-relaxation LP bounds for a stochastic Petri net.
| L | the refreshed struct of a net holding Places and Transitions |
| opt | the method; every other gate belongs to spn_lpbnd |
Definition at line 72 of file solver_ba_spnlp.h.
References line::ba::BaSolution< T >::C, line::qn::NetworkStruct< T >::classes, line::ba::BaSolution< T >::iter, line::spn::SpnLpOptions::markovian, line::Matrix< T >::Matrix(), line::qn::NetworkStruct< T >::nclasses, line::qn::NetworkStruct< T >::nodes, line::qn::NetworkStruct< T >::nstations, line::lang::Place, line::spn::SpnLpBounds::place_tput_hi, line::spn::SpnLpBounds::place_tput_lo, line::spn::SpnLpBounds::places, line::ba::BaSolution< T >::Q, line::ba::BaSolution< T >::R, solver_ba_spnlp_analyzer(), line::spn::spn_lpbnd(), line::qn::NetworkStruct< T >::stations, line::spn::SpnLpBounds::tokens_hi, line::spn::SpnLpBounds::tokens_lo, line::ba::BaSolution< T >::Tp, line::lang::Transition, line::ba::BaSolution< T >::U, line::UnsupportedError::UnsupportedError(), and line::ba::BaSolution< T >::X.
Referenced by solver_ba_run_analyzer(), and solver_ba_spnlp_analyzer().