![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
The SolverBA class surface: @@SolverBA/runAnalyzer.m, listValidMethods, getBounds and getBoundsTable. More...
#include <algorithm>#include <cmath>#include <limits>#include <string>#include <vector>#include "line/api/sn/sn_predicates.h"#include "line/lang/qn/network_struct.h"#include "line/lang/qn/solver_feature_sets.h"#include "line/solvers/ba/solver_ba_analyzer.h"#include "line/api/sn/sn_to_qrf_blocking.h"#include "line/api/sn/sn_to_qrf_alpha.h"#include "line/solvers/ba/solver_ba_qrf_analyzer.h"#include "line/solvers/ba/solver_ba_spnlp.h"#include "line/solvers/mva/solver_mva_runner.h"Go to the source code of this file.
Classes | |
| struct | line::ba::BaBounds< T > |
| Port of SolverBA.getBounds: the {lower,upper} bracket of a family. More... | |
| struct | line::ba::GlobalConstants |
| The MATLAB GlobalConstants, as reported by lineStart at its defaults. More... | |
Namespaces | |
| namespace | line |
| namespace | line::ba |
Functions | |
| std::string | line::ba::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 | line::ba::ignores_blocking (const std::string &method) |
| Whether METHOD bounds a model as if its buffers were unbounded. | |
| std::vector< std::string > | line::ba::list_valid_methods () |
| Port of SolverBA.listValidMethods. | |
| 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. | |
| bool | line::ba::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 > | line::ba::list_valid_methods (const qn::NetworkStruct< T > &L) |
| void | line::ba::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 > | 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. | |
| template<class T> | |
| BaBounds< T > | line::ba::ba_bounds (const qn::NetworkStruct< T > &L, const BaOptions &opt) |
| Port of SolverBA.getBounds. | |
The SolverBA class surface: @@SolverBA/runAnalyzer.m, listValidMethods, getBounds and getBoundsTable.
What sits here rather than in the analyzer is everything around one bound evaluation: the closed-model gate, the method aliases, the whitelist, the arrival-rate conversion and the metric filter @@NetworkSolver/getAvg applies to every solver's output. The result shape is SolverMVA's AvgResult, so a bound and a point estimate are directly comparable – which is what a caller checking that a bracket contains the exact answer needs.
FINITE-BUFFER BLOCKING IS REFUSED, NOT BOUNDED. Needing only demands and a population is the BCMP parameterization, which presumes UNBOUNDED buffers; a buffer that binds couples the station occupancies and the resulting numbers do not bracket the blocked model. solver_ba_run_analyzer therefore gates on api::sn_has_blocking and list_valid_methods(L) drops every blocking-blind method. The exceptions are qrf.bas*/qrf.rsrd, which carry the blocking tables explicitly. Use SolverMVA method sqd for a point estimate.
THE RESIDENCE TIME IS ZERO BY CONSTRUCTION. runAnalyzer.m sets WN to a zero matrix and does not derive it from RN: the bound families define no per-station residence, and the reference declines to invent one.
Definition in file solver_ba_runner.h.