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

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