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

Aggregate Queue Length (AQL) approximate MVA. More...

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

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::pfqn

Functions

template<class T>
AmvaResult< T > line::pfqn::pfqn_aql (const Matrix< T > &L, const std::vector< T > &N, const std::vector< T > &Z, double tol=1e-7, std::size_t maxiter=1000)
 Aggregate Queue Length (AQL) approximate MVA.
template<class T>
AmvaResult< T > line::pfqn::pfqn_aql (const Matrix< T > &L, const std::vector< T > &N)

Detailed Description

Aggregate Queue Length (AQL) approximate MVA.

Templated port of matlab/src/api/pfqn/pfqn_aql.m. AQL solves K+1 coupled populations at once: the full population N and each N - e_s. The arrival estimate is R(k,s|n) = L(k,s) [1 + (|n| - 1) (Q(k|n)/|n| - gamma(k,s))] with the correction gamma(k,s) = Q(k|N)/|N| - Q(k|N - e_s)/(|N| - 1) refreshed after every sweep. The aggregate queue length Q(k|n) is kept per population rather than per class, which is what distinguishes AQL from Linearizer and makes it cheaper by a factor of the class count.

Iterates to a relative tolerance, so exact arithmetic buys nothing: the static_assert records that.

Definition in file pfqn_aql.h.