![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Normalizing constant of a multiclass LIMITED load-dependent closed model. More...
#include <cmath>#include <cstddef>#include <limits>#include <map>#include <vector>#include "line/api/pfqn/pfqn_amva_common.h"#include "line/api/pfqn/pfqn_ca.h"#include "line/api/pfqn/pfqn_lldsingle.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::LldResult< T > |
| Return value of pfqn_lld, mirroring [G, lG, s]. More... | |
Namespaces | |
| namespace | line |
| Conservation laws of a layered queueing network, enumerated from its structure. | |
| namespace | line::pfqn |
Functions | |
| template<class T> | |
| LldResult< T > | line::pfqn::pfqn_lld (const Matrix< T > &L, const std::vector< int > &N, const Matrix< T > &mu) |
| Normalizing constant of a multiclass LIMITED load-dependent closed model. | |
| template<class T> | |
| LldResult< T > | line::pfqn::pfqn_lld (const Matrix< T > &L, const std::vector< int > &N) |
| Overload with all rates equal to one, i.e. | |
Normalizing constant of a multiclass LIMITED load-dependent closed model.
Templated port of matlab/src/api/pfqn/pfqn_lld.m. Same recursion, same arithmetic and the same result as the reference's pfqn_gld, but with the rate shift saturated at the LIMITED LOAD-DEPENDENCE threshold, which turns the recursion's state space finite and lets it be memoised:
g(m,n,j) = g(m-1,n,0) + sum_r L(m,r)/alpha_m(j+1) * g(m,n-e_r,min(j+1,s_m-1))
with j the number of shifts row m has taken. Once j >= s_m-1, where s_m is the population past which alpha_m stays constant, a further shift leaves the row unchanged over the columns the recursion can still read, so the state (m,n,j) repeats and one memo answers what the unmemoised recursion recomputes down an exponential tree. The state space is M * prod_r(N_r+1) * max_k s_k.
Every shortcut of the reference's pfqn_gld cascade is kept and evaluated on the same materialised arguments: the single-station closed form, the single-class kernel (pfqn_lldsingle), and the exact fixed-rate constant (pfqn_ca, MATLAB's pfqn_nc 'exact') when no station of the block is load dependent. The third output s holds the detected per-station thresholds.
ARITHMETIC. Field operations only: the closed form at m = 1 is formed as a multinomial times integer powers rather than through exp/log, so the routine is EXACT in rational arithmetic, like pfqn_gld and pfqn_lldsingle here. The threshold scan tests exact equality first and then an eps-relative tie on FINITE pairs, as the reference does.
Definition in file pfqn_lld.h.