![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Exact Mean Value Analysis for closed product-form networks (Reiser and Lavenberg 1980). More...
#include <cstddef>#include <vector>#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"#include "line/util/population.h"Go to the source code of this file.
Classes | |
| struct | line::pfqn::MvaResult< T > |
Namespaces | |
| namespace | line |
| namespace | line::pfqn |
Functions | |
| template<class T> | |
| MvaResult< T > | line::pfqn::pfqn_mva (const Matrix< T > &L, const std::vector< int > &N, const Matrix< T > &Z, const std::vector< int > &mi) |
| Exact Mean Value Analysis for closed product-form networks (Reiser and Lavenberg 1980). | |
| template<class T> | |
| MvaResult< T > | line::pfqn::pfqn_mva_ilock (const Matrix< T > &L, const std::vector< int > &N, const Matrix< T > &Z, const std::vector< int > &mi, const Matrix< T > &IL) |
| Exact MVA recursion carrying the interlocked-flow correction. | |
| template<class T> | |
| MvaResult< T > | line::pfqn::pfqn_mva (const Matrix< T > &L, const std::vector< int > &N, const Matrix< T > &Z) |
| template<class T> | |
| MvaResult< T > | line::pfqn::pfqn_mva (const Matrix< T > &L, const std::vector< int > &N) |
Exact Mean Value Analysis for closed product-form networks (Reiser and Lavenberg 1980).
Templated port of matlab/src/api/pfqn/pfqn_mva.m, cross-checked against mp_pfqn's mva/mva-multi.c for the exact path. The recursion over the population lattice is
C(i,r|n) = L(i,r) (mi(i) + Q(i|n - e_r)) X(r|n) = n_r / (Z_r + sum_i C(i,r|n)) Q(i,r|n) = X(r|n) C(i,r|n)
every operation of which stays in the field of the inputs, so the algorithm is exact in rational arithmetic with no reformulation.
Normalizing constant: MATLAB accumulates lG as -sum log X along the lattice path (0 -> N) that fills one class at a time. Logs do not exist in an exact field, so the port accumulates the product of the reciprocals instead and takes the log once at the end, of a value that is still exact. The two agree to rounding in double.
Definition in file pfqn_mva.h.