Class Pfqn_qdamva
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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classThe fixed pointpfqn_qdamva(jline.util.matrix.Matrix, jline.util.matrix.Matrix, jline.util.matrix.Matrix, jline.util.matrix.Matrix)reaches, and how many sweeps it took. -
Method Summary
Modifier and TypeMethodDescriptionstatic Pfqn_qdamva.Resultpfqn_qdamva(Matrix L, Matrix N, Matrix Z, Matrix mu) QD-AMVA with the reference's default tolerance and iteration cap.static Pfqn_qdamva.ResultQD-AMVA.
-
Method Details
-
pfqn_qdamva
QD-AMVA with the reference's default tolerance and iteration cap.- Parameters:
L- (M x R) service demand matrixN- (1 x R) population vector, finiteZ- (1 x R) think time vector, or null for nonemu- (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 matrixN- (1 x R) population vector, finiteZ- (1 x R) think time vector, or null for nonemu- (M x smax) queue-dependent rate multipliers, or null for noneQ0- (M x R) initial guess, or null for the reference's demand splittol- convergence tolerance on the queue lengthsmaxiter- maximum number of iterations- Returns:
- the fixed point
-