Class Pfqn_qdamva

java.lang.Object
jline.api.pfqn.ld.Pfqn_qdamva

public final class Pfqn_qdamva extends Object
QD-AMVA on a closed multiclass product-form network.

A Schweitzer/Bard core in which the class-r demand at station k is scaled by the queue-dependence term g_k evaluated at the ARRIVAL-INSTANT total queue length, g = pfqn_lldfun(1 + delta * rowsum(Q), mu).

SETTING mu TO A CONSTANT ROW RECOVERS PLAIN SCHWEITZER AMVA ONLY FOR A SINGLE CLASS. Pfqn_lldfun does skip a constant row, so g == 1 there, but the residence time that remains is 1 + delta * rowsum(Q) with ONE aggregate delta = (sum(N)-1)/sum(N) applied to the whole arrival-instant queue, where Bard-Schweitzer shrinks the TAGGED class alone: 1 + sum_{s != r} Q(k,s) + (N(r)-1)/N(r) * Q(k,r). The two coincide iff K == 1. Measured over 40 random three-class instances, pfqn_qdamva(L,N,Z,ones) departs from pfqn_bs by up to 0.217 in absolute queue length, and is the LESS accurate of the two on single-server multiclass models (mean relative error on Q 0.069 against 0.056 at R = 3), the aggregate delta buying nothing once g == 1. This is the QD-AMVA closure, not a defect of the port, but do not use the function as a Schweitzer oracle for K > 1.

MU IS A DIMENSIONLESS RATE MULTIPLIER, NOT A RATE. mu(k,n) is the factor by which station k serves faster when it holds n jobs. Two traps follow from Pfqn_lldfun and are the reference's, not this port's:

  • it SKIPS a station whose mu row is constant, so a single-server station must be a row of ones and a c-server station min(1..smax, c). Passing a c-server station a constant row silently returns g = 1, i.e. a single server.
  • smax = mu.getNumCols() must be at least ceil(sum(N)) or the interpolation clamps the population and the top of the rate curve is never reached.

Delay stations are carried in Z, not as rows of L. Closed classes only: an infinite N(r) is not supported.

  • Method Details

    • pfqn_qdamva

      public static Pfqn_qdamva.Result pfqn_qdamva(Matrix L, Matrix N, Matrix Z, Matrix mu)
      QD-AMVA with the reference's default tolerance and iteration cap.
      Parameters:
      L - (M x R) service demand matrix
      N - (1 x R) population vector, finite
      Z - (1 x R) think time vector, or null for none
      mu - (M x smax) queue-dependent rate multipliers, or null for none
      Returns:
      the fixed point
    • pfqn_qdamva

      public static Pfqn_qdamva.Result pfqn_qdamva(Matrix L, Matrix N, Matrix Z, Matrix mu, Matrix Q0, double tol, int maxiter)
      QD-AMVA.
      Parameters:
      L - (M x R) service demand matrix
      N - (1 x R) population vector, finite
      Z - (1 x R) think time vector, or null for none
      mu - (M x smax) queue-dependent rate multipliers, or null for none
      Q0 - (M x R) initial guess, or null for the reference's demand split
      tol - convergence tolerance on the queue lengths
      maxiter - maximum number of iterations
      Returns:
      the fixed point