Class Lossn_manjunath

java.lang.Object
jline.api.lossn.Lossn_manjunath

public final class Lossn_manjunath extends Object
Exact normalization constant, carried load and blocking of a loss network by the transform technique of Manjunath and Sikdar. Calls on route r arrive Poisson at rate nu_r with unit mean holding time, so nu_r is the offered load, and a call is admitted only while every constraint holds, sum_r A(j,r) n_r <= C(j). The admissible set is coordinate convex, so Kelly's truncation theorem gives the truncated product form p(n) = nu^n / n! / g(C) and every metric is a ratio of normalization constants:
     g(C)   = sum_{A n <= C} prod_r nu_r^{n_r} / n_r!
     E[n_r] = nu_r g(C - A e_r) / g(C)
     Loss_r = 1 - g(C - A e_r) / g(C)
 
because a class r call is blocked exactly when the state cannot absorb one more unit of its own requirement vector. WHY IT IS A COEFFICIENT COMPUTATION AND NOT A QUADRATURE. Writing each indicator as a contour integral turns g(C) into a J-fold integral over the unit circle whose integrand factorizes into the per-route z-transforms. Inside the circle the only pole in z_j sits at the origin with order C_j+1, so each integration is a residue, i.e. a Taylor coefficient. The routine therefore never evaluates an integral: it builds the generating function as a multivariate power series truncated at degree C_j in z_j, one shift-and-accumulate convolution per route, and discharges each '<=' constraint by summing the coefficients of degrees 0..C_j along that dimension. Truncation is exact because A is nonnegative, so a monomial above degree C_j can never contribute to an extracted coefficient. THE ELIMINATION ORDER IS THE MEMORY BOUND. Contour integrations are interleaved with the product rather than deferred: variable z_j is created when the first route with A(j,r) != 0 is multiplied in and integrated out immediately after the last one. Peak memory is therefore the product of (C_j+1) over the SIMULTANEOUSLY LIVE links, an induced width of the route-link incidence, not over all J links. That product is bounded by DEFAULT_MAX_LIVE_STATES and a region above it is refused by name rather than allowed to exhaust the heap: the algorithm is exact but not unconditionally cheap, and Lossn_mci answers the same question at any size. Unlike Lossn_erlangfp this is exact rather than a reduced-load approximation, and unlike Lossn_mci it carries no sampling error, which is what matters for rare blocking: a loss probability of 1e-4 recovered from a sampled throughput is dominated by the estimator variance. Reference: D. Manjunath and B. Sikdar, Integral Expressions for the Numerical Evaluation of Product Form Expressions Over Irregular Multidimensional Integer Spaces.
  • Field Details

    • DEFAULT_MAX_LIVE_STATES

      public static final long DEFAULT_MAX_LIVE_STATES
      Cap on the product of (C_j+1) over the simultaneously live links, i.e. on the number of series coefficients held at once. 2^26 coefficients is half a gigabyte of double, which no region a FiniteCapacityRegion can express reaches by accident. Raise it deliberately.
      See Also:
  • Method Details

    • lossn_manjunath

      public static Ret.lossnManjunath lossn_manjunath(Matrix nuVec, Matrix Amat, Matrix cVec)
      Exact normalization constant, carried load and blocking of a loss network.
      Parameters:
      nuVec - Offered load of route r, nonnegative (1xR).
      Amat - Capacity requirement of link j for route r (JxR nonnegative integers).
      cVec - Available capacity of link j (Jx1 nonnegative integers).
    • lossn_manjunath

      public static Ret.lossnManjunath lossn_manjunath(Matrix nuVec, Matrix Amat, Matrix cVec, long maxLiveStates)
      Exact normalization constant, carried load and blocking of a loss network.
      Parameters:
      nuVec - Offered load of route r, nonnegative (1xR).
      Amat - Capacity requirement of link j for route r (JxR).
      cVec - Available capacity of link j (Jx1).
      maxLiveStates - Cap on the simultaneously live series coefficients.