![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
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 <cstddef>#include <string>#include <vector>#include "line/api/mam/m3pp22_fitc_cov.h"#include "line/api/mam/m3pp2m_fitc.h"#include "line/api/mam/m3pp2m_fitc_approx.h"#include "line/api/mam/m3pp_superpos_fitc.h"#include "line/api/mam/map_count_mean.h"#include "line/api/mam/map_count_moment.h"#include "line/api/mam/map_count_var.h"#include "line/api/mam/mmap_count_var.h"#include "line/api/mam/mmap_lambda.h"#include "line/api/mam/mmap_stats.h"#include "line/api/mam/mmpp2_fitc.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"#include "line/util/simplex.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). | |
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.