![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
debeMVA: MVA-based approximation of closed networks with finite (BAS) buffers. More...
#include <cmath>#include <cstddef>#include <limits>#include <string>#include <utility>#include <vector>#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::pfqn::DebemvaResult< T > |
| Return value of pfqn_debemva, mirroring [X,Q,U,R,BT,z,theta,iter,converged]; vectors are (M). More... | |
Namespaces | |
| namespace | line |
| Conservation laws of a layered queueing network, enumerated from its structure. | |
| namespace | line::pfqn |
Functions | |
| template<class T> | |
| DebemvaResult< T > | line::pfqn::pfqn_debemva (long N, const std::vector< T > &S, const Matrix< T > &P, const std::vector< double > &K, std::vector< bool > isdelay, double tol=0.0, long iter_max=100000) |
| Runs debeMVA. | |
debeMVA: MVA-based approximation of closed networks with finite (BAS) buffers.
Templated port of matlab/src/api/pfqn/pfqn_debemva.m, i.e. debeMVA (Algorithms 1 and 2) of V. de Nitto Persone and A. Di Lonardo, "Approximating finite resources: An approach based on MVA", Performance Evaluation 131:1-21, 2019.
Closed single-class network of M stations. A queue is a single exponential server with total capacity K[i]; a delay is an infinite server of any distribution, never full. Blocking is Blocking-After-Service with first-blocked-first-unblocked release.
MVA on k = 1..N with residence time S*(z + n(k-1)) + BT at a queue and S + BT/k at a delay. The arrival job function z (start 1) and the blocking time BT (start 0) persist across populations. Algorithm 2 first adjusts them around the slowest finite stations once k > K[j]+1; each pass then moves the share 1-K[j]/k of z[j] upstream for every station with n[j] > K[j]+tol, charges the blocking time P(i,j)*S[j]^2/(S[i]+S[j]), and restores any queue that fell below its value at k-1 by taking the difference from its upstream stations. tol = 0 is the paper's strict test. A capacity K[i] >= N is treated as unbounded.
Results follow the paper, so a blocked job is counted at the SOURCE, whereas LINE's CTMC/JMT/LDES count it at the full destination.
ARITHMETIC. Only field operations and comparisons, so every T is admitted, Rational included. Capacities are doubles because an unbounded one is +inf.
Definition in file pfqn_debemva.h.