![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The map_env decision, as a predicate over a feature set. More...
Go to the source code of this file.
Classes | |
| struct | line::solvers::MapEnvConfig |
| The caller-facing map_env knobs, options.config.map_env and friends. More... | |
| struct | line::solvers::MapEnvDecision |
| What the gate decided, and what it decided it about. More... | |
Namespaces | |
| namespace | line |
| Conservation laws of a layered queueing network, enumerated from its structure. | |
| namespace | line::solvers |
Functions | |
| const std::vector< qn::Feature > & | line::solvers::map_env_tokens () |
| The four process names an environment image can represent; the order is the registry's. | |
| bool | line::solvers::is_map_env_token (qn::Feature f) |
| True when f is one of the four. | |
| template<class T> | |
| MapEnvDecision | line::solvers::needs_map_env (const qn::FeatureSet &declared, const qn::NetworkStruct< T > &sn, const MapEnvConfig &cfg=MapEnvConfig()) |
| needsMapEnv: does this model need the environment image, and would the image make it solvable? | |
| std::string | line::solvers::map_env_stage_backend (const std::string &solver) |
| Which ENV stage backend a solver's name maps to, or empty when it has none. | |
| bool | line::solvers::supports_transient_analysis (const std::string &solver) |
| supportsTransientAnalysis: does this solver produce transient averages? | |
The map_env decision, as a predicate over a feature set.
WHAT IT DECIDES. @NetworkSolver/needsMapEnv.m asks one question: are the ONLY features this solver cannot consume non-renewal arrival or service processes? If so the model becomes supported the moment each modulated process is frozen into an exponential environment stage, and map2renv plus SolverENV can answer it. If anything else is unsupported the environment image would not make the model solvable, so the original refusal stands and is raised by the runner in its own words.
WHY IT IS ITS OWN HEADER, and a small one. Two callers need it and they sit at opposite ends of the include graph: the driver in map_env.h, which pulls in env/ and therefore everything below it, and the AUTO / find_solver reporting layer, which only wants to know whether a solver would answer. This header depends on lang/qn/feature_set.h alone, so the reporting layer can ask the question without linking a single solver.
THE FOUR NAMES ARE THE REFERENCE'S OWN mapTokens and are a closed list: MAP, MMPP2, MMAP and MPH. DMAP, BMAP, MAPt, PHt, MMAPt, MPHt and BMMAPt are deliberately NOT here. map2renv freezes a stationary, continuous-time, single-arrival modulating chain into one exponential stage per phase; a discrete-time chain has no such stage, a batch process releases more than one job per epoch and so is not described by a rate, and a time-inhomogeneous one has no stationary phase to freeze at all. Adding a name here without adding the transform would send a model into an image that does not represent it.
Definition in file map_env_gate.h.