![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Logistic expansion with the eps->0 bias correction (BLE). More...
#include <cmath>#include <cstddef>#include <vector>#include "line/api/pfqn/pfqn_asympt_common.h"#include "line/api/pfqn/pfqn_le.h"#include "line/lang/lang_types.h"#include "line/num/number.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| Conservation laws of a layered queueing network, enumerated from its structure. | |
| namespace | line::pfqn |
Typedefs | |
| template<class T> | |
| using | line::pfqn::BleResult = LeResult<T> |
| Return value of pfqn_ble, mirroring [Gn, lGn]. | |
Functions | |
| template<class T> | |
| BleResult< T > | line::pfqn::pfqn_ble (const Matrix< T > &L, const std::vector< T > &N, const std::vector< T > &Z) |
| Logistic expansion estimate of the normalizing constant, bias-corrected. | |
| template<class T> | |
| BleResult< T > | line::pfqn::pfqn_ble (const Matrix< T > &L, const std::vector< T > &N) |
Logistic expansion with the eps->0 bias correction (BLE).
Templated port of matlab/src/api/pfqn/pfqn_ble.m. Cas17 Theorem 4.1 holds for eps >= eps_N > 0; the K(1+eps*N) self-looping populations are what make the integrand concentrate. Evaluated at eps->0, as pfqn_le does, the curvature at the saddle tends to 1 rather than growing with N, so Laplace's method has no asymptotic regime there and carries an O(1) relative bias per Laplaced direction. With kappa = r(1) = 1 - log(2 pi)/2 and r(a) the Stirling remainder r(a) = gammaln(a) - ((a - 1/2) log a - a + log(2 pi)/2), the two branch constants are (as in MATLAB pfqn_ble.m): Z = 0 : M*kappa - r(M), the M-1 simplex directions plus the Jacobian, the radial integral being exact as Gamma(N+M); Z > 0 : M*kappa, the radial direction is Laplaced in t = log(v) and contributes exactly +r(M), cancelling the -r(M). The published expansion is NOT in error; see _kb/03-api-layer.md.
ARITHMETIC. Inherited from pfqn_le: the correction is a logarithm, so the routine is gated on num_traits<T>::has_transcendental for the same reason.
DEGENERATE BRANCH. When there is no queueing station to expand around, pfqn_le returns the exact delay term and there is no Laplace step to correct, so pfqn_ble returns it unchanged; this is the MATLAB branching.
Definition in file pfqn_ble.h.