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

AMVA-QD class-dependence function. More...

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

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::pfqn

Typedefs

template<class T>
using line::pfqn::CdScaling = std::function<std::vector<T>(const std::vector<T>&)>
 A per-station class-dependence callable: the population row -> 1 or R rates.

Functions

template<class T>
std::vector< T > line::pfqn::pfqn_cdfun (const Matrix< T > &nvec, const std::vector< CdScaling< T > > &cdscaling, std::size_t classIdx)
 AMVA-QD class-dependence function.
template<class T>
std::vector< T > line::pfqn::pfqn_cdfun (const Matrix< T > &nvec, const std::vector< CdScaling< T > > &cdscaling)
 MATLAB default: classIdx = 1, i.e.

Detailed Description

AMVA-QD class-dependence function.

Templated port of matlab/src/api/pfqn/pfqn_cdfun.m, cross-checked against jar/src/main/java/jline/api/pfqn/ld/Pfqn_cdfun.java.

Returns, for every station i, the reciprocal of the class-dependent scaling beta_{i,r}(n_{i1}, ..., n_{iR}) evaluated at the per-class population row nvec(i,:), for the requested class r.

cdscaling[i] is a callable of that row. It may return a single value, i.e. a chain-independent scaling beta_i(n) shared by every class (the historical contract), or R values, i.e. the per-class scalings, of which element classIdx is taken. The per-class form expresses Sauer's chain-dependent service rates mu_{r,i}(n) (Sauer 1983, eq. (40)). An absent (empty) callable leaves the station at 1.

Arithmetic: EXACT-CAPABLE. The function itself performs one reciprocal per station and nothing else, so it carries no transcendental gate; whether the result is exact is entirely a property of the supplied callables.

Definition in file pfqn_cdfun.h.