Class QsysLimitAnalyzer

java.lang.Object
jline.solvers.fluid.analyzers.QsysLimitAnalyzer
All Implemented Interfaces:
FluidAnalyzer

public class QsysLimitAnalyzer extends Object implements FluidAnalyzer
The single-station fluid limits: a Source -> Queue -> Sink model with one class, answered by a closed-form fluid or Gaussian limit rather than by integrating the network drift.

WHY THESE ARE FLUID METHODS AND NOT MVA ONES. Each depends on the service or patience law BEYOND ITS MEAN -- the stationary point of the Liu-Whitt model is where the patience ccdf crosses 1/rho, the Mt/G/inf mean is a convolution with the service ccdf -- and each is the limit of a sequence of systems, not an approximation to a fixed one. That is the fluid solver's contract.

Methods: ggisgi.fluid (Liu and Whitt, Operations Research 60(5), 2012), ggingi.tga (Liu, Whitt and Yu, Naval Research Logistics 63(3), 2016), tvms at constant staffing (Liu and Whitt, INFORMS J. Computing 26(1), 2014), mtginf (Eick, Massey and Whitt, Management Science 39(2), 1993) and mol (Massey and Whitt, Annals of Applied Probability 4(4), 1994).

Java twin of matlab/src/solvers/FLD/solver_fluid_qsys_analyzer.m.

Since:
LINE 3.1.0
  • Constructor Details

    • QsysLimitAnalyzer

      public QsysLimitAnalyzer(String method)
      Parameters:
      method - the concrete single-station limit to run
  • Method Details

    • handles

      public static boolean handles(String method)
      The method names this analyzer answers.
    • canonical

      public static String canonical(String method)
      The canonical name of an alias.
    • analyze

      public void analyze(NetworkStruct sn, SolverOptions options, SolverResult result)
      Specified by:
      analyze in interface FluidAnalyzer
    • getXVecIt

      public Matrix getXVecIt()
      Specified by:
      getXVecIt in interface FluidAnalyzer
    • horizonReason

      public static String horizonReason(SolverOptions options)
      The integration window of a time-varying single-station fluid limit, asked as a predicate rather than thrown.

      The time-varying limits ("mol", "mtginf", "tvms") report a TRAJECTORY, so an infinite or absent upper end of options.timespan leaves them nothing to report.

      A horizon is a solver OPTION and not a model feature, so the feature registry has no name for it and SolverFluid.supportsModelMethod has to ask this predicate directly. horizon(jline.solvers.SolverOptions) asks the same one on the solve path, which is what keeps the report and the run from disagreeing about whether a method can be asked for.

      Parameters:
      options - solver options carrying the timespan
      Returns:
      empty string when the window is a finite non-empty interval, else the refusal