Class Qsys_mtgs0_mol

java.lang.Object
jline.api.qsys.Qsys_mtgs0_mol

public final class Qsys_mtgs0_mol extends Object
Modified-offered-load and pointwise-stationary approximations for a time-varying multiserver system.

THE ONE IDEA. A stationary loss system with offered load a blocks with probability B(s,a). In a time-varying system the question is WHICH LOAD goes into that formula. PSA uses the instantaneous one, lambda(t)E[S]. MOL uses the offered load of the corresponding INFINITE-SERVER system, m(t) = int_0^Inf lambda(t-x)P(S>x)dx, which is EXACT there and therefore carries the time lag and the smoothing the finite-server system also has. The difference between the two is precisely the lag: PSA peaks when the arrival rate peaks, MOL peaks later, and the real system peaks later too.

WHAT TO EXPECT. Against the exact time-varying birth-death chain on a sinusoidal rate, MOL cuts the mean RELATIVE error roughly threefold (0.13 against 0.44 at s = 100); it does not always win on ABSOLUTE error, which is dominated by the peak of the cycle. Under constant input MOL is exact.

Port of MATLAB qsys_mtgs0_mol.m.

Reference: W. A. Massey, W. Whitt (1994). An analysis of the modified offered load approximation for the nonstationary Erlang loss model. Annals of Applied Probability 4(4), 1145-1160; W. Whitt (1991). Management Science 37(3), 307-314.

Since:
LINE 3.1.0
  • Method Details

    • erlangB

      public static double erlangB(int s, double a)
      Erlang B by the recursion B_j = a B_(j-1)/(j + a B_(j-1)), which never forms a^s/s! and so never overflows.
      Parameters:
      s - number of servers
      a - offered load in erlangs
      Returns:
      the probability that all servers are busy
    • erlangC

      public static double erlangC(int s, double a)
      Erlang C from the same recursion; 1 when the load saturates the servers.
      Parameters:
      s - number of servers
      a - offered load in erlangs
      Returns:
      the probability that an arrival waits
    • qsys_mtgs0_mol

      public static Map<String,double[]> qsys_mtgs0_mol(DoubleUnaryOperator lambdaFun, DoubleUnaryOperator serviceCcdf, double ES, int s, double[] tvals, double startTime, boolean delay)
      Parameters:
      lambdaFun - the arrival rate
      serviceCcdf - G^c(x) = P(S > x)
      ES - the mean service time
      s - number of servers
      tvals - times at which to evaluate
      startTime - time the system started empty; -Inf assumes an infinite past
      delay - use Erlang C rather than Erlang B
      Returns:
      map with times, offeredLoad, instantLoad, probBlockMOL, probBlockPSA, meanBusyMOL and arrivalRate, all double[]