LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
solver_feature_sets.h File Reference

The DECLARED side of the gate: one feature set per solver. More...

#include <cctype>
#include <string>
#include "line/lang/qn/feature_set.h"
Include dependency graph for solver_feature_sets.h:

Go to the source code of this file.

Namespaces

namespace  line
 Conservation laws of a layered queueing network, enumerated from its structure.
namespace  line::qn

Functions

std::string line::qn::mva_base_method (const std::string &method)
 The method name with any leading "amva." alias stripped.
bool line::qn::mva_is_closed_population_method (const std::string &method)
 The AMVA algorithms whose recursion is over a CLOSED population vector.
bool line::qn::mva_qsys_serves_method (const std::string &method)
 The method names solver_mva_qsys_analyzer has an arm for.
void line::qn::mva_unset_non_bcmp_sched (FeatureSet &f)
 Drops every scheduling name OUTSIDE the BCMP set {INF, PS, FCFS, SIRO, LCFS-PR} that the base MVA envelope declares.
FeatureSet line::qn::mva_feature_set (const std::string &raw_method)
 SolverMVA.getFeatureSet, plus getMethodFeatureSet's per-method deltas.
template<class T>
FeatureSet line::qn::mva_feature_set (const std::string &raw_method, const NetworkStruct< T > &sn)
 mva_feature_set on a MODEL, i.e.
FeatureSet line::qn::nc_feature_set (const std::string &method)
 SolverNC.getFeatureSet, 48 names, transcribed unchanged.
FeatureSet line::qn::ctmc_feature_set (const std::string &method)
 SolverCTMC.getFeatureSet, the reference's 104 MATLAB names in full.
FeatureSet line::qn::ssa_mlmc_feature_set ()
 SolverSSA.getFeatureSet, 98 MATLAB names.
bool line::qn::ssa_method_is_mlmc (const std::string &method)
 True when method names SSA's MLMC estimator, bare or family-qualified, in any case.
FeatureSet line::qn::ssa_feature_set (const std::string &method)
FeatureSet line::qn::fluid_class_feature_set ()
 SolverFLD.getFeatureSet, transcribed, MINUS what the requested method cannot evaluate – the port of @@SolverFLD/getMethodFeatureSet.
FeatureSet line::qn::fluid_feature_set (const std::string &method)
FeatureSet line::qn::mam_feature_set (const std::string &method)
 SolverMAM.getFeatureSet, the union of its four setTrue calls: 55 MATLAB names, WIDENED for 'default'/'ldqbd' only.
FeatureSet line::qn::ag_feature_set (const std::string &)
 SolverAG.getFeatureSet: what the RCAT decomposition can represent.
FeatureSet line::qn::env_feature_set (const std::string &)
 SolverENV.supports's inline set, 28 names, transcribed unchanged.
FeatureSet line::qn::ldes_feature_set (const std::string &)
 SolverLDES.getFeatureSet, transcribed WHOLE.
bool line::qn::jmva_is_closed_only (const std::string &method)
 True for the JMVA algorithms that solve a CLOSED product-form network only.
FeatureSet line::qn::jmt_feature_set (const std::string &method)
 Port of SolverJMT.getFeatureSet (@@SolverJMT/SolverJMT.m:180-290).
std::string line::qn::ba_family_of (const std::string &method)
 The family prefix of a bound method name: everything before the first dot.
std::string line::qn::ba_resolve_method_name (const std::string &method)
 The 'default'/'auto'/'qr'/'lr' aliases, duplicated from ba::resolve_method for the same reason ba_family_of sits here: this header is included BY the solver and cannot include it back.
FeatureSet line::qn::ba_feature_set (const std::string &method)
 SolverBA.getFeatureSet, transcribed name for name.
FeatureSet line::qn::lqns_network_feature_set (const std::string &)
 SolverLQNS.getFeatureSet on a flat Network (its qns methods), transcribed WHOLE.

Detailed Description

The DECLARED side of the gate: one feature set per solver.

SOURCE. Each function transcribes that solver's MATLAB declaration: MVA matlab/src/solvers/MVA/@SolverMVA/SolverMVA.m:188-217 per-method deltas SolverMVA.m:126-141 NC matlab/src/solvers/NC/@SolverNC/SolverNC.m:180-209 CTMC matlab/src/solvers/CTMC/@SolverCTMC/SolverCTMC.m:126-168 SSA matlab/src/solvers/SSA/@SolverSSA/SolverSSA.m:67-110 FLUID matlab/src/solvers/FLD/@SolverFLD/SolverFLD.m:88-119 MAM matlab/src/solvers/MAM/@SolverMAM/SolverMAM.m:141-184 (four setTrue calls, unioned) ENV matlab/src/solvers/@SolverENV/SolverENV.m:1399-1444 (inline, inside supports) LDES matlab/src/solvers/wrappers/LDES/@SolverLDES/SolverLDES.m:108-186 BA matlab/src/solvers/BA/@SolverBA/SolverBA.m (getFeatureSet) LQNS matlab/src/solvers/wrappers/LQNS/@SolverLQNS/SolverLQNS.m (getFeatureSet, flat Network)

WHY method. MATLAB's gate is METHOD-aware, not solver-aware: NetworkSolver.runAnalyzerChecks resolves the method first and then reads getMethodFeatureSet(method), which only SolverMVA specialises in the reference (SolverMVA.m:126-141). The other five take the argument and ignore it. MAM's C++ port is the one exception: mam_feature_set reads method because its LoadDependence declaration is a WIDENING over MATLAB (see below) and only holds for the methods that actually consume st.lldscaling; MATLAB itself has no such delta to transcribe.

WHY THE SETS ARE NOT ALWAYS THE MATLAB ONES. feature_set.h:30-33: a feature DECLARED but not implemented yields a wrong number, an undeclared one yields a clean refusal. So each divergence below narrows the MATLAB set to what the C++ code actually handles, and carries the C++ refusal site that proves it. The one WIDENING left is MAM's LoadDependence, method-gated as above, which is a false refusal otherwise.

LDES AND LQNS ARE THE EXCEPTIONS TO THAT PARAGRAPH, and only because neither is an engine here: SolverLDES forwards the model document to the SSJ engine, and SolverLQNS on a flat Network writes the JMVA document qnsolver reads or converts the model for lqns. In both the code that implements a declared feature is the external binary the reference ALSO drives, so ldes_feature_set and lqns_network_feature_set are the MATLAB declarations transcribed WHOLE; narrowing either would refuse models the reference answers with that binary.

MATLAB FEATURE NAMES WITH NO LINE_QN_FEATURE_LIST ENUMERATOR: none. Every name in all twelve declarations, and in the MVA per-method deltas, has an exact 1:1 registry entry, so the mapping is the identity and needs no alias. Normal is the one name dropped on purpose rather than for want of an enumerator; lqns_network_feature_set records why.

Definition in file solver_feature_sets.h.