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

Bruell-Balbo-Afshari effective-capacity terms for a MIXED open/closed network with limited load dependence. More...

#include <cstddef>
#include <vector>
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/matrix.h"
Include dependency graph for pfqn_ldmx_ec.h:

Go to the source code of this file.

Classes

struct  line::pfqn::LdmxEcResult< T >

Namespaces

namespace  line
namespace  line::pfqn

Functions

template<class T>
LdmxEcResult< T > line::pfqn::pfqn_ldmx_ec (const std::vector< T > &lambda, const Matrix< T > &D, const Matrix< T > &mu)
 Bruell-Balbo-Afshari effective-capacity terms for a MIXED open/closed network with limited load dependence.

Detailed Description

Bruell-Balbo-Afshari effective-capacity terms for a MIXED open/closed network with limited load dependence.

Templated port of matlab/src/api/pfqn/pfqn_ldmx_ec.m.

Station i is limited load dependent: its rate lattice mu(i,.) is arbitrary up to the saturation level b_i, the first k with mu(i,k) = mu(i,end), and constant beyond it. Writing C(i,k) = 1/mu(i,k) and Lo_i = sum_r lambda_r D(i,r) for the open load, the E-function

E_i(n) = sum_{n0 >= 0} C(n+n0, n0) Lo_i^{n0} prod_{j=n+1}^{n+n0} C(i,j)

has the closed form E_i(n) = 1/(1 - Lo_i C(i,b_i))^{n+1} once n >= b_i, and below saturation is assembled from three finite pieces E1 + E2 - E3, with E1 the geometric tail, E2 the exact head, and E3 the head of the geometric that E1 double counts. Eprime is the same construction one index up, and the effective capacity is the ratio

EC_i(n) = C(i,n) E_i(n) / E_i(n-1), n = 1, ..., Nt.

Its reciprocal is the load-dependent rate that turns the mixed model into a purely closed one, which is what pfqn_ncldmx and pfqn_mvaldmx consume.

Arithmetic: EXACT-CAPABLE. Every term is a sum, product, quotient or integer power in the field of the inputs; the reference itself uses no transcendental function. The one thing the caller must respect is the stability condition Lo_i C(i,b_i) < 1: at Lo_i C(i,b_i) = 1 the geometric denominator vanishes and the routine throws, and above 1 the sum that E represents diverges even though the closed form still evaluates. That check is exact in rational arithmetic and is not a tolerance.

Definition in file pfqn_ldmx_ec.h.