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

LUMPED interleaving of several M3PP(2, m), and the two fitters built on it (matlab/lib/m3a/m3a/m3pp/m3pp2m_interleave.m, matlab/lib/m3a/m3a/m3pp/m3pp2m_fitc_theoretical.m, matlab/lib/m3a/m3a/m3pp/m3pp22_interleave_fitc.m). More...

Include dependency graph for m3pp2m_interleave.h:

Go to the source code of this file.

Classes

struct  line::mam::M3pp22InterleaveResult< T >
 Result of m3pp22_interleave_fitc. More...

Namespaces

namespace  line
namespace  line::mam

Functions

template<class T>
Mmap< T > line::mam::m3pp2m_interleave (const std::vector< Mmap< T > > &parts)
 Interleave L M3PP(2, m_i) into one M3PP of order L + 1 whose class list is the concatenation of theirs.
template<class T>
Mmap< T > line::mam::m3pp2m_fitc_theoretical (const Mmap< T > &mm, const std::string &method, const T &t, const T &tinf)
 Fit the counting characteristics of a GIVEN MMAP with an M3PP(2, m).
template<class T>
Mmap< T > line::mam::m3pp2m_fitc_theoretical (const Mmap< T > &mm, const std::string &method)
 m3pp2m_fitc_theoretical with the reference's default scales t = 10, tinf = 1e4.
template<class T>
M3pp22InterleaveResult< T > line::mam::m3pp22_interleave_fitc (const Matrix< T > &av, const std::vector< T > &btv, const std::vector< T > &binfv, const std::vector< T > &stv, const T &t)
 Fit L PAIRS of classes into one MMAP by lumped interleaving of L M3PP(2, 2).

Detailed Description

LUMPED interleaving of several M3PP(2, m), and the two fitters built on it (matlab/lib/m3a/m3a/m3pp/m3pp2m_interleave.m, matlab/lib/m3a/m3a/m3pp/m3pp2m_fitc_theoretical.m, matlab/lib/m3a/m3a/m3pp/m3pp22_interleave_fitc.m).

Interleaving is the cheap alternative to superposition. Superposing L two-phase processes gives the PRODUCT chain, of order 2^L; interleaving instead lays the L phase processes on a single BIRTH-DEATH chain of order L + 1, where phase h means "the first h components are in their fast phase". The off-diagonal rates are recovered by DIFFERENCING: the upper rate out of level j is component j's r1 minus the rates already spent on levels above it, and symmetrically downwards. That differencing is only meaningful when the components' rates are ordered, which is what m3pp22_interleave_fitc's linear program arranges before it ever fits a component – it does not fit L processes and then hope they interleave, it SOLVES for off-diagonal rates that admit the interleaving and fits the components to those.

The class matrices carry no cross terms: class j of component i fires at its phase-1 rate on levels h <= i and at its phase-2 rate above, so sum_c Dc = D1 holds level by level.

THE LINEAR PROGRAM IS A FEASIBILITY PROBLEM. The reference passes a ZERO objective to linprog, so every feasible point is optimal and which vertex comes back is the solver's choice; different LP backends hand different MMPP(2)s to the per-pair covariance split, and a covariance one accepts another can report infeasible. That is a property of the reference, not of this port, and it is why m3pp22_interleave_fitc reports the realised covariance per pair rather than asserting the requested one.

Gated on transcendental arithmetic, and on double alone for the LP.

Definition in file m3pp2m_interleave.h.