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

The state-probability half of the SolverMVA class surface. More...

Include dependency graph for solver_mva_prob.h:

Go to the source code of this file.

Classes

struct  line::mva::MargResult< T >
 A marginal distribution and its logarithm, over the states asked for. More...
struct  line::mva::AggrResult< T >
 Port of @@SolverMVA/getProbAggr.m: P(n1 jobs of class 1, n2 of class 2, ...) at station ist for the model's state, a scalar in [0,1] with its log. More...

Namespaces

namespace  line
namespace  line::mva

Functions

template<class T>
MargResult< T > line::mva::solver_mva_get_prob_marg (const qn::NetworkStruct< T > &L, const AvgResult< T > &avg, std::size_t ist, std::size_t r, const std::vector< long > &states, const std::string &method="default")
 Port of @@SolverMVA/getProbMarg.m: P(n jobs of class r at station i) for the states in states (or the reference's own default range when empty).
template<class T>
line::mva::solver_mva_get_prob_norm_const_aggr (const qn::NetworkStruct< T > &L, const MvaOptions &opt)
 Port of @@SolverMVA/getProbNormConstAggr.m: log G.
template<class T>
AggrResult< T > line::mva::solver_mva_get_prob_aggr (const qn::NetworkStruct< T > &L, const AvgResult< T > &avg, std::size_t ist, const std::string &method="default")
template<class T>
AggrResult< T > line::mva::solver_mva_get_prob_sys_aggr (const qn::NetworkStruct< T > &L, const AvgResult< T > &avg, const std::string &method="default")
 Port of @@SolverMVA/getProbSysAggr.m: the joint probability of the model's whole state across all stations, a scalar in [0,1] with its log.

Detailed Description

The state-probability half of the SolverMVA class surface.

MVA computes means, not distributions, so every member of this family is an approximation FITTED to the means the analyzer returned, and the reference says which one:

closed classes a binomial with mean Q(i,r) over N(r) trials, from R. Schmidt, "An approximate MVA algorithm for exponential, class-dependent multiple servers", PEVA 29:245-254, 1997 open classes the exact BCMP product form of the station: independent Poisson at an infinite server, multinomial-geometric at a queue

Ported here: getProbMarg (a single class's queue-length distribution), getProbNormConstAggr (log G, by re-entering the analyzer at method='exact'), and getProbAggr / getProbSysAggr (the per-class joint at one station, and the whole-system joint). The last two read the per-class occupancy nir of the model's state through State.toMarginal; this port carries the DEFAULT initial state – every closed class's population sits at its reference station, open classes hold no jobs – for which toMarginal reduces to that same reference-station allocation, so nir is computed directly. A custom initial state (there is no setState in the builder) would need the full state encoding; when one exists it must be refused rather than silently reported against the default.

Everything is computed in logs and exponentiated once, as the reference does, so a large population does not underflow before it is normalized.

Definition in file solver_mva_prob.h.