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

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

Detailed Description

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.