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

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.

Enumeration Type Documentation

◆ SchedStrategy

enum class line::lang::SchedStrategy
strong

Scheduling disciplines, with the values of MATLAB SchedStrategy.

Definition at line 181 of file lang_types.h.

Function Documentation

◆ ba_bounds()

template<class T>
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().

◆ blocking_default()

template<class T>
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.

Returns
{method, why}; method is empty when the routing does not apply, and why then carries the reason (empty for an unblocked model).

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().

◆ check_method()

void line::ba::check_method ( const std::string & method)
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().

◆ ignores_blocking()

bool line::ba::ignores_blocking ( const std::string & method)
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().

◆ is_default_request()

bool line::ba::is_default_request ( const std::string & method)
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().

◆ is_spnlp_method()

bool line::ba::is_spnlp_method ( const std::string & method)
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().

◆ list_valid_methods() [1/2]

std::vector< std::string > line::ba::list_valid_methods ( )
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().

◆ list_valid_methods() [2/2]

◆ method_degenerate()

template<class T>
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().

◆ method_refusal()

template<class T>
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().

◆ resolve_method()

std::string line::ba::resolve_method ( const std::string & method)
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().

◆ solver_ba_analyzer()

template<class T>
BaSolution< T > line::ba::solver_ba_analyzer ( const qn::NetworkStruct< T > & L,
const BaOptions & opt )

Port of solver_ba_analyzer.

Parameters
Lthe refreshed struct of a closed model
optthe method and, for a hierarchical family, the level
Returns
the [Q,U,R,T,C,X] of the requested bound

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().

◆ solver_ba_bgt()

◆ solver_ba_bpt()

◆ solver_ba_qrf_analyzer()

template<class T>
BaSolution< T > line::ba::solver_ba_qrf_analyzer ( const qn::NetworkStruct< T > & L,
const BaOptions & opt )

Port of solver_ba_qrf_analyzer.

Parameters
Lthe refreshed struct of a single-class closed model
optthe method and, for the load-dependent arms, qrf_alpha
Returns
the [Q,U,R,T,C,X] implied by the QRF utilization bound

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().

◆ solver_ba_run_analyzer()

template<class T>
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.

Parameters
Lthe refreshed struct of a closed model
opt_inthe 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().

◆ solver_ba_snc()

template<class T, class Solution>
void line::ba::solver_ba_snc ( const qn::NetworkStruct< T > & L,
Solution & out )

◆ solver_ba_snc_envelopes()

◆ solver_ba_snc_perc()

template<class T>
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.

Parameters
Lthe model
epsviolation 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().

◆ solver_ba_spnlp_analyzer()