![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
MGF arrival envelope of a MAP/MMPP flow with unit-size jobs. More...
#include <algorithm>#include <cmath>#include <cstddef>#include <limits>#include <vector>#include "line/api/snc/snc_types.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::snc |
Functions | |
| Env | line::snc::snc_env_map (const Matrix< double > &D0, const Matrix< double > &D1, double theta) |
| MGF arrival envelope of a MAP/MMPP flow with unit-size jobs. | |
| Envelope | line::snc::snc_env_map_fn (const Matrix< double > &D0, const Matrix< double > &D1) |
| The same envelope as a function of theta. | |
MGF arrival envelope of a MAP/MMPP flow with unit-size jobs.
For a Markovian arrival process (D0,D1) counting N(0,t) unit-work jobs, E[exp(theta*N(0,t))] = pi*expm((D0+D1*exp(theta))*t)*1. With lstar the eigenvalue of maximal real part of A(theta)=D0+D1*e^theta and v > 0 its right Perron eigenvector, bounding 1 <= v/min(v) entrywise gives
rho(theta) = lstar/theta, sigma(theta) = log(max(v)/min(v))/theta,
the standard exponential-form envelope of a Markov-modulated source. The burst term is what the modulating chain contributes: 0 for a one-phase MAP, where this reproduces snc_env_poisson exactly, and positive for an MMPP.
THE PERRON PAIR IS COMPUTED BY POWER ITERATION ON THE SHIFTED MATRIX A+cI, not by a general eigensolver. A(theta) is essentially nonnegative, so the shift makes it nonnegative with a positive diagonal, hence primitive whenever the MAP is irreducible, and the iteration converges to the pair the bound needs without asking a general solver which of its eigenvectors is the positive one. The MATLAB reference uses eig and agrees to machine precision; the JAR port iterates the same way.
Port of matlab/src/api/snc/snc_env_map.m. Reference: C.-S. Chang, Performance Guarantees in Communication Networks, Springer 2000, Ch. 7.
Definition in file snc_env_map.h.