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

Port of solver_nc_analyzer.m, solver_ncld_analyzer.m and @@SolverNC/ncDispatch.m: one inner solve, choosing the analyzer that fits. More...

Include dependency graph for nc_dispatch.h:

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::nc

Functions

template<class T>
NcSolution< T > line::nc::solver_ncld_analyzer (const qn::NetworkStruct< T > &sn, const NcSolverOptions &opt)
 Port of solver_ncld_analyzer.m: the load-dependent analyzer, which is solver_ncld plus the same fractional-population interpolation the load-independent one applies.
template<class T>
NcSolution< T > line::nc::solver_nc_analyzer (const qn::NetworkStruct< T > &sn, const NcSolverOptions &opt)
 Port of solver_nc_analyzer.m.
template<class T>
NcSolution< T > line::nc::nc_dispatch (const qn::NetworkStruct< T > &sn, const NcSolverOptions &opt)
 Port of @@SolverNC/ncDispatch.m: the inner solve of the fork-join fixed point, which is the load-dependence test and nothing else.

Detailed Description

Port of solver_nc_analyzer.m, solver_ncld_analyzer.m and @@SolverNC/ncDispatch.m: one inner solve, choosing the analyzer that fits.

THE ORDER IS THE CONTRACT. As in mva_dispatch.h, the branches are NOT disjoint – an order-independent station is also a multiserver, a pass-and-swap tandem is also a closed network – so the first match wins and reordering silently changes which algorithm a model gets. The sequence is the reference's, top to bottom:

0 discrete-time (slotted) model, on an explicit options.slotted 1 order-independent closed network, on 'default' or 'exact' 2 pass-and-swap importance sampling, on 'default', 'is' or 'sampling' 3 'is' on an open or mixed model -> rejected by name 4 Maximum Entropy Method, on an explicit 'mem' 5 'exact' on an open or mixed multiserver model -> rejected by name 6 fractional closed populations, by interpolation 7 everything else -> solver_nc / solver_ncld

Branch 1 is the EXACT balanced-fairness analyzer and branch 2 the sampler, so a pure-OI tandem on 'default' never reaches branch 2; only a genuine swap graph, or an explicit 'is' / 'sampling', does. A station carrying a service rate function that satisfies NEITHER predicate is refused by name rather than sent down the ordinary normalizing-constant path, where its rate function would simply be ignored.

ncDispatch (the fork-join inner solve) is the load-dependence test alone: the MMT transformation returns a plain mixed queueing network, so none of the specialised routes can apply to it.

Definition in file nc_dispatch.h.