![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Xia's asymptotic approximation of the normalizing constant of a load-dependent (multiserver) closed network. More...
#include <cmath>#include <cstddef>#include <vector>#include "line/api/pfqn/pfqn_asympt_common.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::pfqn |
Functions | |
| template<class T> | |
| T | line::pfqn::pfqn_xia (const std::vector< T > &L, int N, const std::vector< T > &s) |
| Xia's asymptotic approximation of the normalizing constant of a load-dependent (multiserver) closed network. | |
Xia's asymptotic approximation of the normalizing constant of a load-dependent (multiserver) closed network.
Templated port of jar/src/main/java/jline/api/pfqn/ld/Pfqn_xia.java. MATLAB has no counterpart.
The demands are first rescaled so that the largest per-server utilization rho_i = L_i / s_i is one. The stations that attain it are the BOTTLENECK SET B; they saturate and contribute the M/M/s saturated term, while every other station contributes its finite-capacity Erlang-like partial sum
F(u, k) = sum_{j < k} u^j / j! + (u^k / k!) / (1 - u/k),
the closed form of the geometric tail beyond the k-th server. The result is
log G ~ -log((B-1)!) - N log(c) + sum_{b in B} [ s_b log L_b - log(s_b!) ]
c being the rescaling factor. Note the leading behaviour in N enters ONLY through -N log c: this is the large-population limit, so the approximation does not resolve the O(1) corrections that a finite population carries.
A NON-BOTTLENECK STATION WITH u > k GIVES A NEGATIVE F, whose logarithm is NaN and poisons the whole constant. The reference guards only against an INFINITE F (u == k exactly), not a negative one, so it propagates the NaN; that is reproduced rather than patched, because suppressing the term would quietly return a plausible number for a model the expansion does not cover. The condition cannot arise when every station has one server, but it can once s varies. Note that at Real precision Boost raises on log of a negative where double returns NaN, so the same input surfaces as an exception rather than a NaN; both are refusals and neither is a silent wrong number.
Arithmetic: TRANSCENDENTAL. Logs and factorials throughout.
Definition in file pfqn_xia.h.