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

The marking coefficients of a canonical AMAP(2), for the sigma fitters. More...

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

Go to the source code of this file.

Classes

struct  line::mam::Mamap2mCoefficients< T >
 The three coefficient tables of one canonical form. More...

Namespaces

namespace  line
namespace  line::mam

Functions

template<class T>
Mamap2mCoefficients< T > line::mam::mamap2m_can1_coefficients (const T &h1, const T &h2, const T &r1, const T &r2)
 First canonical form, a positive autocorrelation decay.
template<class T>
Mamap2mCoefficients< T > line::mam::mamap2m_can2_coefficients (const T &h1, const T &h2, const T &r1, const T &r2)
 Second canonical form, a negative autocorrelation decay (E, V, Z).

Detailed Description

The marking coefficients of a canonical AMAP(2), for the sigma fitters.

Templated port of matlab/lib/m3a/m3a/mamap2m/mamap2m_can1_coefficients.m and mamap2m_can2_coefficients.m, cross-checked against jar/src/main/java/jline/api/mam/Mamap2m_coefficients.java.

mamap22_fit_fs_multiclass and mamap22_fit_bs_multiclass match the class TRANSITION probabilities (sigma) alongside a forward or backward moment, and the relation between the marking and those characteristics is not the simple affine one the F+B fitter uses. These two tables carry it: G (or E) holds the per-flow contributions to the class probability, the sigma and the moment; U (or V) the quadratic terms; and Y (or Z) three determinants of G that decide whether the system is solvable.

REFERENCE TYPO, corrected here and already corrected in the JAR. MATLAB's mamap2m_can1_coefficients.m assigns G(10) TWICE in consecutive lines:

G(10) = (r1*r2^2)/(r1*r2 - r2 + 1);      % this is G(9)
G(10) = h1 - (h1*r1)/(r2*(r1 - 1) + 1);

so the first value is discarded and G(9) is left at zero. The JAR writes them to indices 9 and 10 respectively, which is the only reading under which the table has no hole, and that is what is done here. Y does not read G(9), so the three determinants are unaffected; a consumer that reads the ninth coefficient gets zero from MATLAB and the intended value here.

ARITHMETIC: field. Rational expressions only, so this instantiates exactly.

Definition in file mamap2m_coefficients.h.