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

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

Detailed Description

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.