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

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

Detailed Description

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))

  • [i==j && k==v] Q(j,v|n)
  • X(v|n) L(j,v) sum_t W(k,i;t,j|n-e_v)

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.