Class Pfqn_mvablo

java.lang.Object
jline.api.pfqn.mva.Pfqn_mvablo

public final class Pfqn_mvablo extends Object
MVABLO of I. F. Akyildiz, "Mean Value Analysis for Blocking Queueing Networks", IEEE TSE 14(4):418-428, 1988 (Sec. III-IV). Port of MATLAB pfqn_mvablo.m.

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.

  • Method Details

    • pfqn_mvablo

      public static Pfqn_mvablo.Result pfqn_mvablo(int N, Matrix S, Matrix P, Matrix K, boolean[] isdelay, double tol, int iter_max)
      Runs MVABLO.
      Parameters:
      N - population (positive integer)
      S - mean service time per visit at each station (M x 1)
      P - station routing matrix (M x M, row-stochastic, irreducible)
      K - station capacity (M x 1, Infinity for unbounded; ignored at delays)
      isdelay - true at infinite-server stations (length M), or null for none
      tol - slack on the capacity test Q(i) > K(i)+tol
      iter_max - maximum passes at one population
      Returns:
      the per-station measures, the blocking-time matrix and the convergence status