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

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

Detailed Description

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.