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

AMVA joint-dependence function for non-product-form scaling. 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_jdfun.h:

Go to the source code of this file.

Namespaces

namespace  line
namespace  line::pfqn

Typedefs

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

Functions

template<class T>
std::vector< T > line::pfqn::pfqn_jdfun (const Matrix< T > &nvec, const std::vector< JdScaling< T > > &jdscaling, std::size_t classIdx)
 AMVA joint-dependence function for non-product-form scaling.
template<class T>
std::vector< T > line::pfqn::pfqn_jdfun (const Matrix< T > &nvec, const std::vector< JdScaling< T > > &jdscaling)
 MATLAB default: classIdx = 1, i.e.

Detailed Description

AMVA joint-dependence function for non-product-form scaling.

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

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

jdscaling[i] is a callable of that row. It may return a single value, i.e. a scaling eta_i(n) shared by every class (broadcast, as in the flagship min(n_i1, c)), or R values, i.e. the per-class scalings eta_{i,r}(n), of which element classIdx is taken (Sauer chain-dependent rate mu_{r,i}(n)).

Unlike pfqn_cdfun – whose beta_{i,r} is a product-form scaling reading only the own-class marginal n_{i,r} – eta may read the joint vector arbitrarily and is therefore NON-product-form: the AMVA result is an approximation with no exactness or uniqueness guarantee. The numerical evaluation is identical to pfqn_cdfun; the distinction is semantic and is carried by the separate sn.jdscaling field.

Arithmetic: EXACT-CAPABLE. One reciprocal per station and nothing else, so no transcendental gate; exactness is a property of the supplied callables.

Definition in file pfqn_jdfun.h.