![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Modulate a family of marked MAPs by an environment chain. More...
#include <cstddef>#include <string>#include <vector>#include "line/api/mam/aph2_fit.h"#include "line/api/mam/map_moment.h"#include "line/api/trace/mtrace_cross_moment.h"#include "line/api/trace/mtrace_sigma2.h"#include "line/api/mam/mmap_lambda.h"#include "line/api/mam/mmap_stats.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::mam |
Functions | |
| template<class T> | |
| Mmap< T > | line::mam::mmap_modulate (const Matrix< T > &P, const std::vector< Map< T > > &HT, const std::vector< Mmap< T > > &comps) |
| Modulate a family of marked MAPs by an environment chain. | |
| template<class T> | |
| Mmap< T > | line::mam::mmap_mixture_order2 (const std::vector< std::vector< Map< T > > > &PHs, const Matrix< T > &P2) |
| Second-order mixture: the state records the previous and the current class. | |
| template<class T> | |
| Mmap< T > | line::mam::mmap_mixture_fit (const Matrix< T > &P2, const Matrix< T > &M1, const Matrix< T > &M2, const Matrix< T > &M3) |
| Second-order mixture FITTED from cross moments and a triple sigma, the reference's mmap_mixture_fit. | |
| template<class T> | |
| Mmap< T > | line::mam::mmap_mixture_fit_trace (const std::vector< T > &Tv, const std::vector< int > &A) |
| mmap_mixture_fit driven from a marked trace: the triple sigma and the cross moments are measured on the trace itself. | |
Modulate a family of marked MAPs by an environment chain.
Templated port of matlab/lib/m3a/m3a/mmap/mmap_modulate.m and mmap_mixture_order2.m.
mmap_modulate(P, HT, MMAPs) builds the marked arrival process of a system that sits in environment j for a phase-type holding time HT[j], arriving according to MMAPs[j] while it does, and then jumps to environment i with probability P(j,i). The state is the pair (holding-time phase, arrival phase), so environment j contributes a block of order nh(j) nm(j) and the result has order sum_j nh(j) nm(j):
diagonal block j: krons(HT0[j], A0[j]), the two clocks running together; off-diagonal (j,i): P(j,i) (HT1[j] (x) I) 1 (pie(HT[i]) (x) pie(MMAP[i])), the holding time expiring and the new environment being entered in its own initial phase.
THE ENVIRONMENT SWITCH EMITS NO ARRIVAL. The off-diagonal blocks appear in D0 and in NO Dc, which is what makes the jump a hidden transition. The reference writes the per-class off-diagonal blocks explicitly as 0*P(j,i)*..., i.e. a zero of the right shape; that is reproduced by simply leaving them zero.
A PLAIN MAP IS AUTO-CONVERTED to a one-class MMAP, as the reference does, so a caller may pass either. All the components must then agree on the class count.
mmap_mixture_order2 is the second-order companion: given m^2 two-phase components PHs(i,j) and a second-order transition tensor P2, it builds the marked MAP whose state records the PREVIOUS and the current class, which is what lets a mixture reproduce a lag-1 class correlation that an order-1 mixture cannot.
ARITHMETIC: field. Kronecker products and block assembly only.
Definition in file mmap_modulate.h.