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

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"
Include dependency graph for solver_ba_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.

Detailed Description

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.