![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The DECLARED side of the gate: one feature set per solver. More...
Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::qn |
Functions | |
| std::string | line::qn::mva_base_method (const std::string &method) |
| SolverMVA.getFeatureSet, plus getMethodFeatureSet's per-method deltas. | |
| bool | line::qn::mva_is_closed_population_method (const std::string &method) |
| The AMVA algorithms whose recursion is over a CLOSED population vector. | |
| 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) |
| 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_feature_set (const std::string &) |
| SolverSSA.getFeatureSet, 98 MATLAB names. | |
| FeatureSet | line::qn::fluid_feature_set (const std::string &method) |
| SolverFLD.getFeatureSet, transcribed, MINUS what the requested method cannot evaluate – the port of @@SolverFLD/getMethodFeatureSet. | |
| 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, and NARROWED by one name no MAM path ever serves. | |
| 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) |
| Port of SolverJMT.getFeatureSet (@@SolverJMT/SolverJMT.m:180-290). | |
| FeatureSet | line::qn::jmt_feature_set (const std::string &method) |
| std::string | line::qn::ba_family_of (const std::string &method) |
| SolverBA.getFeatureSet, transcribed name for name. | |
| 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) |
| FeatureSet | line::qn::qns_feature_set (const std::string &) |
| SolverQNS.getFeatureSet, transcribed WHOLE. | |
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) QNS matlab/src/solvers/wrappers/QNS/@SolverQNS/SolverQNS.m (getFeatureSet)
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. MVA's five size-based disciplines were a second widening until they were removed; see mva_feature_set below. Verified by diffing each of the nine narrowed sets against its MATLAB declaration name by name, not by inspection.
LDES AND QNS ARE THE EXCEPTIONS TO THAT PARAGRAPH, and only because neither is an engine here: SolverLDES forwards the model document to the SSJ engine, and SolverQNS 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 qns_feature_set are the MATLAB declarations transcribed WHOLE; narrowing either would refuse models the reference answers with the very process this port is about to start.
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; qns_feature_set records why.
Definition in file solver_feature_sets.h.