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

Marked MMPP(2) with m classes, fitted to counting-process characteristics (matlab/lib/m3a/m3a/m3pp/m3pp2m_fitc.m). More...

Include dependency graph for m3pp2m_fitc.h:

Go to the source code of this file.

Classes

struct  line::mam::M3pp2mFitcResult< T >
 Result of m3pp2m_fitc. More...

Namespaces

namespace  line
namespace  line::mam

Functions

template<class T>
M3pp2mFitcResult< T > line::mam::m3pp2m_fitc (const T &a, const T &bt1, const T &bt2, const T &binf, const T &m3t2, const T &t1, const T &t2, const std::vector< T > &ai, const std::vector< T > &dvt3, const T &t3)
 Fit an M3PP(2, m).

Detailed Description

Marked MMPP(2) with m classes, fitted to counting-process characteristics (matlab/lib/m3a/m3a/m3pp/m3pp2m_fitc.m).

The underlying MMPP(2) comes from mmpp2_fitc; the per-class split is then closed form. For each of the first m-1 classes the pair (q1i, q2i) of per-phase marking probabilities follows from the class rate a_i and dvt3(i), the difference between the variance of class i and that of all other classes combined at resolution t3. The last class absorbs the remainder, Dm = diag(1 - sum_i q1i, 1 - sum_i q2i) .* D1.

The reference expressions contain sinh(u) exp(-u) with u = (r1 + r2) t / 2 nine times each; that product is (1 - exp(-(r1 + r2) t))/2 exactly, and is evaluated in that form here – algebraically identical, and free of the cancellation that sinh times a decaying exponential suffers at large t.

Not ported: m3pp2m_fitc_approx and m3pp2m_fitc_approx_ag, which wrap this split in a quadratic program (quadprog) over the per-class variances, and mmpp2_fitc_approx, whose MMPP(2) stage is an optimproblem/solve call rather than a closed form.

Gated on transcendental arithmetic: through mmpp2_fitc, and through the exponential in SH.

Definition in file m3pp2m_fitc.h.