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

Chow Second Approximation (SA) approximate MVA. More...

#include <cmath>
#include <cstddef>
#include <limits>
#include <vector>
#include "line/api/pfqn/pfqn_bs.h"
#include "line/api/pfqn/pfqn_lcp.h"
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for pfqn_chow.h:

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::pfqn

Enumerations

enum class  line::pfqn::ChowVariant { line::pfqn::Forward , line::pfqn::Backward }
 Which finite difference of the LCP solution estimates the theta-terms. More...

Functions

template<class T>
AmvaResult< T > line::pfqn::pfqn_chow (const Matrix< T > &L, const std::vector< T > &N, const std::vector< T > &Z, const std::vector< AmvaSched > &type, double tol=1e-6, std::size_t maxiter=1000, const Matrix< T > &QN0=Matrix< T >(), ChowVariant variant=ChowVariant::Forward)
 Chow Second Approximation (SA) approximate MVA.
template<class T>
AmvaResult< T > line::pfqn::pfqn_chow (const Matrix< T > &L, const std::vector< T > &N, const std::vector< T > &Z)
template<class T>
AmvaResult< T > line::pfqn::pfqn_chow (const Matrix< T > &L, const std::vector< T > &N)

Detailed Description

Chow Second Approximation (SA) approximate MVA.

Templated port of matlab/src/api/pfqn/pfqn_chow.m, cross-checked against jar/src/main/java/jline/api/pfqn/mva/Pfqn_chow.java. W.-M. Chow, "Approximations for large scale closed queueing networks", Perform. Eval. 3(1), 1983. The arrival-instant queue length is written exactly as

A_k^(c)(N) = Q_k(N - 1_c) = Q_k(N) (1 + theta_ck), theta_ck = [Q_k(N - 1_c) - Q_k(N)] / Q_k(N),

and the theta-terms are estimated ONCE, off the Bard LCP solution, before the fixed point is run. Two estimators are given: the BACKWARD one uses Qhat(N - 1_c), the FORWARD one Qhat(N + 1_c). Chow reports the forward form to be the more accurate of the two, so it is the default here. Setting every theta to zero recovers pfqn_lcp.

Arithmetic: as pfqn_lcp, field operations only, with the same stopping-rule caveat.

Definition in file pfqn_chow.h.