![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Normalizing constant of a MIXED open/closed network with limited load dependence. More...
#include <cmath>#include <cstddef>#include <limits>#include <vector>#include "line/api/pfqn/pfqn_fnc.h"#include "line/api/pfqn/pfqn_ldmx_ec.h"#include "line/api/pfqn/pfqn_mushift.h"#include "line/api/pfqn/pfqn_ncld.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::pfqn::NcldmxResult< T > |
Namespaces | |
| namespace | line |
| namespace | line::pfqn |
Functions | |
| template<class T> | |
| NcldmxResult< T > | line::pfqn::pfqn_ncldmx (const std::vector< T > &lambda, const Matrix< T > &D, const std::vector< int > &N, const Matrix< T > &Z, const Matrix< T > &mu, NcldMethod method, const T &atol, const NcOptions &nopt) |
| Normalizing constant of a MIXED open/closed network with limited load dependence. | |
| template<class T> | |
| NcldmxResult< T > | line::pfqn::pfqn_ncldmx (const std::vector< T > &lambda, const Matrix< T > &D, const std::vector< int > &N, const Matrix< T > &Z, const Matrix< T > &mu) |
| Overload with the exact (zero-tolerance) filters and default sampling options. | |
Normalizing constant of a MIXED open/closed network with limited load dependence.
Templated port of matlab/src/api/pfqn/pfqn_ncldmx.m.
The closed-conditional constant of a mixed limited-load-dependent network is the constant of a purely CLOSED load-dependent network in which every station carries the Bruell-Balbo-Afshari effective-capacity rate
mu_i^eff(n) = 1 / EC_i(n),
with EC from pfqn_ldmx_ec folding the open classes into the closed subnetwork. The open classes contribute the separable prefactor
Gopen = prod_i E_i(0),
which reduces to prod_i 1/(1 - rho_i) in the load-independent limit. The two are returned separately, as in the reference, because callers use the closed one for the closed-class ratios G(N - e_r)/G(N) and the open one only for the joint state probabilities.
OPEN CLASSES are marked by a NEGATIVE population, as everywhere in this port (see pfqn_nc); MATLAB uses Inf, which has no counterpart in an exact field.
Arithmetic: EXACT-CAPABLE. pfqn_ldmx_ec and pfqn_ncld are both exact, and everything this routine adds is a reciprocal and a product. Gopen is returned as a value of T, not only as its logarithm, which is what lets the mixed constant stay in the rational field end to end.
MEAN MEASURES come out of the same identification, without ever enumerating the closed population lattice – which is what makes this the normalizing-constant counterpart of pfqn_mvaldmx rather than a rename of it:
open queue lengths are the Bruell-Balbo-Afshari sum Q_ir = lambda_r D_ir sum_n (n+1) EC_i(n+1) P_i(n) with its SATURATED TAIL FOLDED ONTO THE CLOSED MEAN. EC_i(n) is constant for n >= b_i, the level where the rate row stops growing, so writing EC_i(n) = EC_i^inf + delta_i(n) with delta_i(n) = 0 for n >= b_i leaves
Q_ir = lambda_r D_ir [ EC_i^inf (Q_i^closed + 1)
using sum_n P_i(n) = 1 and sum_n n P_i(n) = Q_i^closed. Only the first b_i-1 marginals survive, and b_i is the SERVER COUNT, not the population: a single-server station needs none at all and the formula collapses to the classical lambda_r D_ir (1 + Q_i^closed)/(1 - rho_i).
The ratios themselves are taken in the log domain and converted back with from_double, exactly as solver_ncld's closed branch does: a mean measure is a ratio of constants, not a constant, so it leaves the exact field there.
Definition in file pfqn_ncldmx.h.