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

Exact per-class throughput and loss ratio of an MMAP[K]/G/1/K tail-drop queue. More...

#include <cstddef>
#include <vector>
#include "line/api/mam/map_moment.h"
#include "line/api/qsys/qsys_mapg1k.h"
#include "line/num/number.h"
#include "line/util/error.h"
#include "line/util/linalg.h"
#include "line/util/matrix.h"
Include dependency graph for qsys_mmapg1k.h:

Go to the source code of this file.

Classes

struct  line::qsys::MmapG1kResult< T >
 Return value of qsys_mmapg1k, mirroring the MATLAB result struct. More...

Namespaces

namespace  line
namespace  line::qsys

Functions

template<class T>
MmapG1kResult< T > line::qsys::qsys_mmapg1k (const Matrix< T > &D0, const std::vector< Matrix< T > > &D1c, const ServiceLaw< T > &svc, std::size_t K, const T &tol, std::size_t nmaxCap)
 MMAP[K]/G/1/K with tail drop.
template<class T>
MmapG1kResult< T > line::qsys::qsys_mmapg1k (const Matrix< T > &D0, const std::vector< Matrix< T > > &D1c, const ServiceLaw< T > &svc, std::size_t K)
 qsys_mmapg1k with the qsys_mapg1k defaults tol = 1e-12, nmax = 200000.

Detailed Description

Exact per-class throughput and loss ratio of an MMAP[K]/G/1/K tail-drop queue.

Port of matlab/src/api/qsys/qsys_mmapg1k.m.

Two classes of equal arrival rate but different interarrival variability or autocorrelation receive different loss ratios. An aggregate-only finite buffer analysis cannot express that: it returns one blocking probability p and sets T_k = lambda_k (1 - p), making the loss ratio identical across classes BY CONSTRUCTION. What breaks the tie here is the phase resolution of the full-buffer probability. A class-k arrival leaves phase i at rate (D1c_k e)_i, so

lambda_k = pi D1c_k e,    L_k = (pKvec D1c_k e)/lambda_k,
T_k      = lambda_k (1 - L_k),

with pi the stationary phase law of the aggregate MAP and pKvec the joint law of (level = K, phase) that qsys_mapg1k returns. No independence between classes is assumed and no PASTA argument is used.

This is exact whenever the joint MMAP is available, which it is inside a solver that propagates MMAPs between stations. Use qsys_mapg1k_perflow for the setting where the flows are given as separate MAPs and the joint process would cost prod_n M_n phases.

The model assumes a single server and a service law that is iid and independent of class: per-class service would make the departure rate depend on which class holds the server, which this state space does not represent.

ARITHMETIC. Inherits the transcendental gate from qsys_mapg1k; the per-class layer on top is finite exact linear algebra.

Reference: Chydzinski, A. Per-Flow Throughput of a FIFO Buffer. Applied System Innovation 2026, 9, 112.

Definition in file qsys_mmapg1k.h.