Package jline.api.pfqn.mva
Class Pfqn_cntol
java.lang.Object
jline.api.pfqn.mva.Pfqn_cntol
Termination cutoff 1/(4000 + 16*sum(N)) of the Linearizer.
Published in K. M. Chandy, D. Neuse, "Linearizer: A Heuristic Algorithm for
Queuing Network Models of Computing Systems", Commun. ACM 25(2):126-134,
1982, p.129 and appendix. The iteration continues while
max_{i,r} |Q^I(i,r) - Q^{I-1}(i,r)| / N_r > 1/(4000 + 16*|N|),
|N| = sum(N). The paper motivates the scaling with |N|: at large populations
removing one job changes the queue lengths very little, so a fixed cutoff
would terminate the iteration prematurely. It also notes that the expression
stays below 0.00025 even at very small populations.
The same expression is what LQNS uses as its termination test, set in the
SchweitzerCommon constructor of libmva/src/mva.cc; that code carries no
citation, and the paper above is its source.
Passing NaN as the tol argument of pfqn_bs / pfqn_egflinearizer selects BOTH
this cutoff and the normalized-maximum metric of the paper, which is the
published test; passing pfqn_cntol(N) as a plain number selects only the
cutoff, with those methods' own convergence metric. NaN is the sentinel
because it cannot collide with any legitimate tolerance and it is the one
form the MATLAB, Python and C++ twins share (MATLAB and Python additionally
accept the string 'cn').
- Since:
- LINE 3.0
-
Method Summary
Modifier and TypeMethodDescriptionstatic booleanisCntol(double tol) True when tol is the sentinel requesting the Chandy-Neuse test.static doublepfqn_cntol(double totalPopulation) Termination cutoff at the given total population.static doublepfqn_cntol(Matrix N) Termination cutoff at the given population vector.
-
Method Details
-
pfqn_cntol
Termination cutoff at the given population vector. -
pfqn_cntol
public static double pfqn_cntol(double totalPopulation) Termination cutoff at the given total population. -
isCntol
public static boolean isCntol(double tol) True when tol is the sentinel requesting the Chandy-Neuse test.
-