![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Exact per-station queue-length variances and covariances of a closed product-form network, by the MVA-like moment recursion of de Souza e Silva and Muntz (IEEE TC 37(9):1125-1129, 1988, Corollary 1). 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::SensMvaResult< T > |
Namespaces | |
| namespace | line |
| namespace | line::pfqn |
Functions | |
| std::vector< std::size_t > | line::pfqn::sens_lattice_radix (const std::vector< int > &N) |
| Radix weights of the MVA population lattice, class R-1 varying fastest. | |
| std::vector< int > | line::pfqn::sens_lattice_decode (std::size_t k, const std::vector< int > &N, const std::vector< std::size_t > &radix) |
| Decode a lattice index back into a population vector. | |
| template<class T> | |
| SensMvaResult< T > | line::pfqn::pfqn_sens_mva (const Matrix< T > &L, const std::vector< int > &N, const std::vector< T > &Z, const std::vector< int > &mi) |
| Exact per-station queue-length variances and covariances of a closed product-form network, by the MVA-like moment recursion of de Souza e Silva and Muntz (IEEE TC 37(9):1125-1129, 1988, Corollary 1). | |
| template<class T> | |
| SensMvaResult< T > | line::pfqn::pfqn_sens_mva (const Matrix< T > &L, const std::vector< int > &N, const std::vector< T > &Z) |
| pfqn_sens_mva with unit multiplicities. | |
Exact per-station queue-length variances and covariances of a closed product-form network, by the MVA-like moment recursion of de Souza e Silva and Muntz (IEEE TC 37(9):1125-1129, 1988, Corollary 1).
Templated port of matlab/src/api/pfqn/pfqn_sens_mva.m. Writing W(k,i;v,j|n) = Cov[n(i,k),n(j,v)], differentiating the Reiser-Lavenberg equation and rescaling gives
W(k,i;v,j|n) = Q(j,v|n) (Q(i,k|n-e_v) - Q(i,k|n))
with W(.|0) = 0. Only the same-station case i==j is evaluated, because only then does the inner sum stay at the station and close on the single scalar Ssum(j,k|n) = sum_t W(k,j;t,j|n) carried along the lattice. The cross-station blocks are not self-contained and are left to pfqn_sens.
Arithmetic. Every operation is an addition, a multiplication or a division by a lattice quantity, so the recursion stays in the field of the inputs and instantiates at line::Rational with no reformulation: the covariances of a rational model are exact rationals. There is deliberately no static_assert(has_transcendental) here.
Definition in file pfqn_sens_mva.h.