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

The common corrected asymptotic expansion (LE-KT), computed on the cheaper side. More...

#include <cmath>
#include <cstddef>
#include <string>
#include <vector>
#include "line/api/pfqn/pfqn_asympt_common.h"
#include "line/api/pfqn/pfqn_bkt.h"
#include "line/api/pfqn/pfqn_ble.h"
#include "line/lang/lang_types.h"
#include "line/num/number.h"
#include "line/util/matrix.h"
Include dependency graph for pfqn_lekt.h:

Go to the source code of this file.

Classes

struct  line::pfqn::LektResult< T >
 Return value of pfqn_lekt, mirroring [Gn, lGn, route]. More...

Namespaces

namespace  line
namespace  line::pfqn

Functions

template<class T>
std::string line::pfqn::pfqn_lekt_route (const Matrix< T > &L, const std::vector< T > &N, const std::vector< T > &Z)
 "kt" when R <= M or a class self-loops, "le" otherwise.
template<class T>
LektResult< T > line::pfqn::pfqn_lekt (const Matrix< T > &L, const std::vector< T > &N, const std::vector< T > &Z)
 The common corrected asymptotic expansion (LE-KT), computed on the cheaper side.
template<class T>
LektResult< T > line::pfqn::pfqn_lekt (const Matrix< T > &L, const std::vector< T > &N)

Detailed Description

The common corrected asymptotic expansion (LE-KT), computed on the cheaper side.

Templated port of matlab/src/api/pfqn/pfqn_lekt.m. The corrected logistic expansion (pfqn_ble) and the corrected Knessl-Tier expansion (pfqn_bkt) are ONE estimator, evaluated in M-1 and in R dimensions. With a think time their stationary points are one point in dual coordinates,

xi_r = N_r / (Z_r + v u'L_r) (the class throughputs of the LE fixed point) v u_k = 1 / (1 - U_k) (the M/M/1 factor of the KT saddle)

and Sylvester's identity det(I_R + C'C) = det(I_M + CC') exchanges the R x R Hessian determinant for the M x M one, after which every 2 pi cancels on both sides; the two agree to the accuracy of the saddle-point solvers. Without a think time the LE branch integrates the radius exactly as Gamma(N+M) while KT Laplaces it, so they differ by the constant (1 - log(2 pi)/2) - r(N+M), r the Stirling remainder of a Gamma direction; the common estimator is defined as the KT value, and the LE side here carries M (1 - log(2 pi)/2) - r(N+M) in place of pfqn_ble's (M-1)(1 - log(2 pi)/2). See _kb/03-api-layer.md.

ROUTE. The KT side is an R-dimensional convex solve and an R x R determinant, the LE side an M-dimensional fixed point and an (M-1) x (M-1) one, so the KT side is taken when R <= M, and whenever a class self-loops (one nonzero demand and no think time), which pfqn_kt extracts exactly.

ARITHMETIC. Inherited from both sides: gated on has_transcendental.

Definition in file pfqn_lekt.h.