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

The multirate single-link loss system (stochastic knapsack): exact blocking by the Kaufman-Roberts recursion, dimensioning against per-class blocking targets, and the critical-loading normal approximation. More...

#include <algorithm>
#include <cmath>
#include <cstddef>
#include <string>
#include <vector>
#include "line/num/number.h"
#include "line/util/error.h"
Include dependency graph for lossn_kr.h:

Go to the source code of this file.

Classes

struct  line::lossn::KrResult< T >
 Result of lossn_kr. More...
struct  line::lossn::KrDimResult< T >
 Result of lossn_kr_dim. More...
struct  line::lossn::KrAsyResult< T >
 Result of lossn_kr_asy. More...

Namespaces

namespace  line
 Conservation laws of a layered queueing network, enumerated from its structure.
namespace  line::lossn

Functions

template<class T>
KrResult< T > line::lossn::lossn_kr (const std::vector< T > &rho, const std::vector< T > &b, const T &C)
 Exact occupancy distribution and per-class blocking of a stochastic knapsack.
template<class T>
KrResult< T > line::lossn::lossn_kr (const std::vector< T > &rho, const std::vector< T > &b, long C)
 lossn_kr with an integer capacity.
template<class T>
KrDimResult< T > line::lossn::lossn_kr_dim (const std::vector< T > &rho, const std::vector< T > &b, const std::vector< T > &Btarget)
 Smallest link capacity meeting per-class blocking targets.
template<class T>
KrDimResult< T > line::lossn::lossn_kr_dim (const std::vector< T > &rho, const std::vector< T > &b, const T &Btarget)
 lossn_kr_dim with one blocking target shared by every class.
template<class T>
KrAsyResult< T > line::lossn::lossn_kr_asy (const std::vector< T > &rho, const std::vector< T > &b, const T &C)
 Normal approximation of multirate single-link blocking for large C.

Detailed Description

The multirate single-link loss system (stochastic knapsack): exact blocking by the Kaufman-Roberts recursion, dimensioning against per-class blocking targets, and the critical-loading normal approximation.

Templated ports of matlab/src/api/lossn/lossn_kr.m, lossn_kr_dim.m and lossn_kr_asy.m.

A single link of C bandwidth units is offered K classes of calls. Class k arrives as a Poisson process with offered load rho_k (arrival rate times mean holding time) and holds b_k units for the whole call; a call that finds fewer than b_k free units is lost. The occupancy distribution q(n) = P(n units busy), n = 0..C, satisfies the Kaufman-Roberts recursion

 n q(n) = sum_k b_k rho_k q(n - b_k),   q(n) = 0 for n < 0,

and a class-k call is blocked when more than C - b_k units are busy, B_k = sum_{n = C-b_k+1}^{C} q(n).

ARITHMETIC. The recursion and the dimensioning search are rational (the 1e250 rescale only compares a double image of the running term), so lossn_kr and lossn_kr_dim instantiate at every arithmetic. The critical-loading approximation evaluates the normal density and distribution function and is gated on num_traits<T>::has_transcendental.

Reference: J. S. Kaufman, "Blocking in a Shared Resource Environment", IEEE Trans. Commun. 29(10), 1981. J. W. Roberts, "A Service System with Heterogeneous User Requirements", 1981. K. W. Ross, "Multiservice Loss Models for Broadband Telecommunication Networks", Springer, 1995, Sec. 2.2-2.7. M. I. Reiman, "A critically loaded multirate link with trunk reservation", Queueing Systems 9, 1991.

Definition in file lossn_kr.h.