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

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"
Include dependency graph for pfqn_mvablo.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.

Detailed Description

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.