![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
MVABLO: approximate MVA for closed networks with Blocking-After-Service (BAS). 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::MvabloResult< T > |
| Return value of pfqn_mvablo, mirroring [X,Q,U,R,BT,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> | |
| MvabloResult< T > | line::pfqn::pfqn_mvablo (long N, const std::vector< T > &S, const Matrix< T > &P, const std::vector< double > &K, std::vector< bool > isdelay, double tol=1e-4, int iter_max=1000) |
| Runs MVABLO. | |
MVABLO: approximate MVA for closed networks with Blocking-After-Service (BAS).
Templated port of matlab/src/api/pfqn/pfqn_mvablo.m, i.e. MVABLO of I. F. Akyildiz, "Mean Value Analysis for Blocking Queueing Networks", IEEE TSE 14(4):418-428, 1988 (Sec. III-IV).
Closed single-class network of M stations with exponential service. A queue is a single server with total capacity K[i] (waiting plus in service). Blocking is Blocking-After-Service (BAS): a job completing service at j whose next station i is full stays at j, and j's server stops, until i releases a job. Delay (infinite-server) stations are a LINE extension: no queueing term, never full, but they can be blocked.
The population recursion is exact MVA until a mean queue length exceeds its capacity, Q[i] > K[i]+tol. The pass is then repeated with station i marked full (its arriving job's own "+1" term is dropped, eq. 15) and each upstream station j charged the blocking time S[i]*P(j,i)*e[j]/e[i] (eq. 14). Passes repeat until no capacity is exceeded; the full marks and blocking times carry over to the next population, as in the paper.
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_mvablo.h.